5.005_54 (pod2html) Generate Relative URLs
[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 22:42:52 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_telldirproto=''
517 d_time=''
518 timetype=''
519 clocktype=''
520 d_times=''
521 d_truncate=''
522 d_tzname=''
523 d_umask=''
524 d_semctl_semid_ds=''
525 d_semctl_semun=''
526 d_union_semun=''
527 d_vfork=''
528 usevfork=''
529 d_voidsig=''
530 signal_t=''
531 d_volatile=''
532 d_charvspr=''
533 d_vprintf=''
534 d_wait4=''
535 d_waitpid=''
536 d_wcstombs=''
537 d_wctomb=''
538 d_writev=''
539 d_dbmclose64=''
540 d_dbminit64=''
541 d_delete64=''
542 d_fetch64=''
543 d_firstkey64=''
544 d_nextkey64=''
545 d_store64=''
546 dlext=''
547 cccdlflags=''
548 ccdlflags=''
549 dlsrc=''
550 ld=''
551 lddlflags=''
552 usedl=''
553 doublesize=''
554 ebcdic=''
555 fpostype=''
556 gidtype=''
557 groupstype=''
558 h_fcntl=''
559 h_sysfile=''
560 i_arpainet=''
561 db_hashtype=''
562 db_prefixtype=''
563 i_db=''
564 i_dbm=''
565 i_rpcsvcdbm=''
566 d_dirnamlen=''
567 direntrytype=''
568 i_dirent=''
569 i_dld=''
570 i_dlfcn=''
571 i_fcntl=''
572 i_float=''
573 i_gdbm=''
574 d_grpasswd=''
575 i_grp=''
576 d_int64t=''
577 i_inttypes=''
578 i_limits=''
579 i_locale=''
580 i_machcthr=''
581 i_malloc=''
582 i_math=''
583 i_memory=''
584 i_mntent=''
585 i_ndbm=''
586 i_netdb=''
587 i_neterrno=''
588 i_niin=''
589 i_sysin=''
590 i_poll=''
591 d_pwage=''
592 d_pwchange=''
593 d_pwclass=''
594 d_pwcomment=''
595 d_pwexpire=''
596 d_pwgecos=''
597 d_pwpasswd=''
598 d_pwquota=''
599 i_pwd=''
600 i_sfio=''
601 i_stddef=''
602 i_stdlib=''
603 i_string=''
604 strings=''
605 i_sysaccess=''
606 i_sysdir=''
607 i_sysfile=''
608 d_voidtty=''
609 i_bsdioctl=''
610 i_sysfilio=''
611 i_sysioctl=''
612 i_syssockio=''
613 i_sysmount=''
614 i_sysndir=''
615 i_sysparam=''
616 i_sysresrc=''
617 i_syssecrt=''
618 i_sysselct=''
619 i_sysstat=''
620 i_sysstatvfs=''
621 i_systimes=''
622 i_systypes=''
623 d_iovec_s=''
624 i_sysuio=''
625 i_sysun=''
626 i_syswait=''
627 i_sgtty=''
628 i_termio=''
629 i_termios=''
630 i_systime=''
631 i_systimek=''
632 i_time=''
633 timeincl=''
634 i_unistd=''
635 i_utime=''
636 i_values=''
637 i_stdarg=''
638 i_varargs=''
639 i_varhdr=''
640 i_vfork=''
641 installusrbinperl=''
642 intsize=''
643 longsize=''
644 shortsize=''
645 d_dirent64_s=''
646 d_flock64_s=''
647 d_fstat64=''
648 d_ftruncate64=''
649 d_ino64t=''
650 d_lockf64=''
651 d_lseek64=''
652 d_lstat64=''
653 d_off64t=''
654 d_open64=''
655 d_opendir64=''
656 d_readdir64=''
657 d_seekdir64=''
658 d_stat64=''
659 d_telldir64=''
660 d_truncate64=''
661 libc=''
662 libperl=''
663 shrpenv=''
664 useshrplib=''
665 glibpth=''
666 libpth=''
667 loclibpth=''
668 plibpth=''
669 xlibpth=''
670 ignore_versioned_solibs=''
671 libs=''
672 lns=''
673 lseeksize=''
674 lseektype=''
675 make_set_make=''
676 d_mymalloc=''
677 freetype=''
678 mallocobj=''
679 mallocsrc=''
680 malloctype=''
681 usemymalloc=''
682 installman1dir=''
683 man1dir=''
684 man1direxp=''
685 man1ext=''
686 installman3dir=''
687 man3dir=''
688 man3direxp=''
689 man3ext=''
690 huge=''
691 large=''
692 medium=''
693 models=''
694 small=''
695 split=''
696 modetype=''
697 mydomain=''
698 myhostname=''
699 phostname=''
700 c=''
701 n=''
702 d_eofnblk=''
703 eagain=''
704 o_nonblock=''
705 rd_nodata=''
706 netdb_hlen_type=''
707 netdb_host_type=''
708 netdb_name_type=''
709 netdb_net_type=''
710 groupcat=''
711 hostcat=''
712 passcat=''
713 orderlib=''
714 ranlib=''
715 package=''
716 spackage=''
717 pager=''
718 apiversion=''
719 patchlevel=''
720 subversion=''
721 version=''
722 perladmin=''
723 perlpath=''
724 pidtype=''
725 prefix=''
726 prefixexp=''
727 installprivlib=''
728 privlib=''
729 privlibexp=''
730 prototype=''
731 ptrsize=''
732 drand01=''
733 randbits=''
734 randfunc=''
735 randseedtype=''
736 seedfunc=''
737 installscript=''
738 scriptdir=''
739 scriptdirexp=''
740 selectminbits=''
741 selecttype=''
742 sh=''
743 sig_name=''
744 sig_name_init=''
745 sig_num=''
746 sig_num_init=''
747 installsitearch=''
748 sitearch=''
749 sitearchexp=''
750 installsitelib=''
751 sitelib=''
752 sitelibexp=''
753 sizetype=''
754 so=''
755 sharpbang=''
756 shsharp=''
757 spitshell=''
758 src=''
759 ssizetype=''
760 startperl=''
761 startsh=''
762 stdchar=''
763 d_fgetpos64=''
764 d_fopen64=''
765 d_freopen64=''
766 d_fseek64=''
767 d_fseeko64=''
768 d_fsetpos64=''
769 d_ftell64=''
770 d_ftello64=''
771 d_tmpfile64=''
772 sysman=''
773 trnl=''
774 uidtype=''
775 archname64=''
776 use64bits=''
777 usemultiplicity=''
778 nm_opt=''
779 nm_so_opt=''
780 runnm=''
781 usenm=''
782 useperlio=''
783 d_oldpthreads=''
784 usethreads=''
785 incpath=''
786 mips=''
787 mips_type=''
788 usrinc=''
789 defvoidused=''
790 voidflags=''
791 CONFIG=''
792
793 define='define'
794 undef='undef'
795 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
796 rmlist=''
797
798 : We must find out about Eunice early
799 eunicefix=':'
800 if test -f /etc/unixtovms; then
801         eunicefix=/etc/unixtovms
802 fi
803 if test -f /etc/unixtovms.exe; then
804         eunicefix=/etc/unixtovms.exe
805 fi
806
807 i_whoami=''
808 : change the next line if compiling for Xenix/286 on Xenix/386
809 xlibpth='/usr/lib/386 /lib/386'
810
811 : Possible local library directories to search.
812 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
813 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
814
815 : general looking path for locating libraries
816 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
817 glibpth="$glibpth /lib /usr/lib $xlibpth"
818 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
819 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
820
821 : Private path used by Configure to find libraries.  Its value
822 : is prepended to libpth. This variable takes care of special
823 : machines, like the mips.  Usually, it should be empty.
824 plibpth=''
825
826 : Possible local include directories to search.
827 : Set locincpth to "" in a hint file to defeat local include searches.
828 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
829 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
830 :
831 : no include file wanted by default
832 inclwanted=''
833
834 : list of known cpp symbols, sorted alphabetically
835 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
836 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
837 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
838 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
839 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
840 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
841 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
842 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
843 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
844 al="$al VMS Xenix286"
845 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
846 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
847 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
848 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
849 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
850 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
851 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
852 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
853 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
854 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
855 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
856 al="$al __SVR4_2__ __UMAXV__"
857 al="$al ____386BSD____ __alpha __alpha__ __amiga"
858 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
859 al="$al __host_mips__"
860 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
861 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
862 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
863 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
864 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
865 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
866 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
867 al="$al __mc88100 __mc88100__ __mips __mips__"
868 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
869 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
870 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
871 al="$al _host_mips _mips _unix"
872 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
873 al="$al apollo ardent att386 att3b"
874 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
875 al="$al cadmus clipper concurrent convex cray ctix"
876 al="$al dmert encore gcos gcx gimpel gould"
877 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
878 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
879 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
880 al="$al i186 i286 i386 i486 i8086"
881 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
882 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
883 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
884 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
885 al="$al mc88000 mc88100 merlin mert mips mvs n16"
886 al="$al ncl_el ncl_mr"
887 al="$al news1500 news1700 news1800 news1900 news3700"
888 al="$al news700 news800 news900 ns16000 ns32000"
889 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
890 al="$al parisc pc532 pdp11 plexus posix pyr"
891 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
892 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
893 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
894 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
895 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
896 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
897 al="$al xenix z8000"
898
899 : Trailing extension.  Override this in a hint file, if needed.
900 _exe=''
901 : Extra object files, if any, needed on this platform.
902 archobjs=''
903 groupstype=''
904 : default library list
905 libswanted=''
906 : some systems want to use only the non-versioned libso:s
907 ignore_versioned_solibs=''
908 : full support for void wanted by default
909 defvoidused=15
910
911 : set useposix=false in your hint file to disable the POSIX extension.
912 useposix=true
913 : set useopcode=false in your hint file to disable the Opcode extension.
914 useopcode=true
915 : set usemultiplicity on the Configure command line to enable multiplicity.
916 : set usethreads on the Configure command line to enable threads.
917 : List of libraries we want.
918 : If anyone needs -lnet, put it in a hint file.
919 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
920 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
921 libswanted="$libswanted ucb bsd BSD PW x"
922 : We probably want to search /usr/shlib before most other libraries.
923 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
924 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
925 glibpth="/usr/shlib $glibpth"
926 : Do not use vfork unless overridden by a hint file.
927 usevfork=false
928
929 : Find the basic shell for Bourne shell scripts
930 case "$sh" in
931 '')
932         case "$SYSTYPE" in
933         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
934         *) xxx='/bin/sh';;
935         esac
936         if test -f "$xxx"; then
937                 sh="$xxx"
938         else
939                 : Build up a list and do a single loop so we can 'break' out.
940                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
941                 for xxx in sh bash ksh pdksh ash; do
942                         for p in $pth; do
943                                 try="$try ${p}/${xxx}"
944                         done
945                 done
946                 for xxx in $try; do
947                         if test -f "$xxx"; then
948                                 sh="$xxx";
949                                 break
950                         elif test -f "$xxx.exe"; then
951                                 sh="$xxx";
952                                 break
953                         fi
954                 done
955         fi
956         ;;
957 esac
958
959 case "$sh" in
960 '')     cat <<EOM >&2
961 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
962
963 Usually it's in /bin/sh.  How did you even get this far?
964 Please contact me (Perl Maintainers) at perlbug@perl.com and 
965 we'll try to straighten this all out.
966 EOM
967         exit 1
968         ;;
969 esac
970
971 : see if sh knows # comments
972 if `$sh -c '#' >/dev/null 2>&1`; then
973         shsharp=true
974         spitshell=cat
975         xcat=/bin/cat
976         test -f $xcat || xcat=/usr/bin/cat
977         echo "#!$xcat" >try
978         $eunicefix try
979         chmod +x try
980         ./try > today
981         if test -s today; then
982                 sharpbang='#!'
983         else
984                 echo "#! $xcat" > try
985                 $eunicefix try
986                 chmod +x try
987                 ./try > today
988                 if test -s today; then
989                         sharpbang='#! '
990                 else
991                         sharpbang=': use '
992                 fi
993         fi
994 else
995         echo " "
996         echo "Your $sh doesn't grok # comments--I will strip them later on."
997         shsharp=false
998         cd ..
999         echo "exec grep -v '^[  ]*#'" >spitshell
1000         chmod +x spitshell
1001         $eunicefix spitshell
1002         spitshell=`pwd`/spitshell
1003         cd UU
1004         echo "I presume that if # doesn't work, #! won't work either!"
1005         sharpbang=': use '
1006 fi
1007 rm -f try today
1008
1009 : figure out how to guarantee sh startup
1010 case "$startsh" in
1011 '') startsh=${sharpbang}${sh} ;;
1012 *)
1013 esac
1014 cat >try <<EOSS
1015 $startsh
1016 set abc
1017 test "$?abc" != 1
1018 EOSS
1019
1020 chmod +x try
1021 $eunicefix try
1022 if ./try; then
1023         : echo "Yup, it does."
1024 else
1025         echo "Hmm... '$startsh' does not guarantee sh startup..."
1026         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1027 fi
1028 rm -f try
1029
1030
1031 : Save command line options in file UU/cmdline.opt for later use in
1032 : generating config.sh.
1033 cat > cmdline.opt <<EOSH
1034 # Configure command line arguments.
1035 config_arg0='$0'
1036 config_args='$*'
1037 config_argc=$#
1038 EOSH
1039 argn=1
1040 for arg in "$@"; do
1041         cat >>cmdline.opt <<EOSH
1042 config_arg$argn='$arg'
1043 EOSH
1044         argn=`expr $argn + 1`
1045 done
1046
1047 : produce awk script to parse command line options
1048 cat >options.awk <<'EOF'
1049 BEGIN {
1050         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1051
1052         len = length(optstr);
1053         for (i = 1; i <= len; i++) {
1054                 c = substr(optstr, i, 1);
1055                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1056                 if (a == ":") {
1057                         arg[c] = 1;
1058                         i++;
1059                 }
1060                 opt[c] = 1;
1061         }
1062 }
1063 {
1064         expect = 0;
1065         str = $0;
1066         if (substr(str, 1, 1) != "-") {
1067                 printf("'%s'\n", str);
1068                 next;
1069         }
1070         len = length($0);
1071         for (i = 2; i <= len; i++) {
1072                 c = substr(str, i, 1);
1073                 if (!opt[c]) {
1074                         printf("-%s\n", substr(str, i));
1075                         next;
1076                 }
1077                 printf("-%s\n", c);
1078                 if (arg[c]) {
1079                         if (i < len)
1080                                 printf("'%s'\n", substr(str, i + 1));
1081                         else
1082                                 expect = 1;
1083                         next;
1084                 }
1085         }
1086 }
1087 END {
1088         if (expect)
1089                 print "?";
1090 }
1091 EOF
1092
1093 : process the command line options
1094 set X `for arg in "$@"; do echo "X$arg"; done |
1095         sed -e s/X// | awk -f options.awk`
1096 eval "set $*"
1097 shift
1098 rm -f options.awk
1099
1100 : set up default values
1101 fastread=''
1102 reuseval=false
1103 config_sh=''
1104 alldone=''
1105 error=''
1106 silent=''
1107 extractsh=''
1108 override=''
1109 knowitall=''
1110 rm -f optdef.sh
1111 cat >optdef.sh <<EOS
1112 $startsh
1113 EOS
1114
1115
1116 : option parsing
1117 while test $# -gt 0; do
1118         case "$1" in
1119         -d) shift; fastread=yes;;
1120         -e) shift; alldone=cont;;
1121         -f)
1122                 shift
1123                 cd ..
1124                 if test -r "$1"; then
1125                         config_sh="$1"
1126                 else
1127                         echo "$me: cannot read config file $1." >&2
1128                         error=true
1129                 fi
1130                 cd UU
1131                 shift;;
1132         -h) shift; error=true;;
1133         -r) shift; reuseval=true;;
1134         -s) shift; silent=true; realsilent=true;;
1135         -E) shift; alldone=exit;;
1136         -K) shift; knowitall=true;;
1137         -O) shift; override=true;;
1138         -S) shift; silent=true; extractsh=true;;
1139         -D)
1140                 shift
1141                 case "$1" in
1142                 *=)
1143                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1144                         echo "$me: ignoring -D $1" >&2
1145                         ;;
1146                 *=*) echo "$1" | \
1147                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1148                 *) echo "$1='define'" >> optdef.sh;;
1149                 esac
1150                 shift
1151                 ;;
1152         -U)
1153                 shift
1154                 case "$1" in
1155                 *=) echo "$1" >> optdef.sh;;
1156                 *=*)
1157                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1158                         echo "$me: ignoring -U $1" >&2
1159                         ;;
1160                 *) echo "$1='undef'" >> optdef.sh;;
1161                 esac
1162                 shift
1163                 ;;
1164         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1165                 exit 0;;
1166         --) break;;
1167         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1168         *) break;;
1169         esac
1170 done
1171
1172 case "$error" in
1173 true)
1174         cat >&2 <<EOM
1175 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1176                  [-U symbol] [-U symbol=]
1177   -d : use defaults for all answers.
1178   -e : go on without questioning past the production of config.sh.
1179   -f : specify an alternate default configuration file.
1180   -h : print this help message and exit (with an error status).
1181   -r : reuse C symbols value if possible (skips costly nm extraction).
1182   -s : silent mode, only echoes questions and essential information.
1183   -D : define symbol to have some value:
1184          -D symbol         symbol gets the value 'define'
1185          -D symbol=value   symbol gets the value 'value'
1186   -E : stop at the end of questions, after having produced config.sh.
1187   -K : do not use unless you know what you are doing.
1188   -O : let -D and -U override definitions from loaded configuration file.
1189   -S : perform variable substitutions on all .SH files (can mix with -f)
1190   -U : undefine symbol:
1191          -U symbol    symbol gets the value 'undef'
1192          -U symbol=   symbol gets completely empty
1193   -V : print version number and exit (with a zero status).
1194 EOM
1195         exit 1
1196         ;;
1197 esac
1198
1199 : Sanity checks
1200 case "$fastread$alldone" in
1201 yescont|yesexit) ;;
1202 *)
1203         if test ! -t 0; then
1204                 echo "Say 'sh Configure', not 'sh <Configure'"
1205                 exit 1
1206         fi
1207         ;;
1208 esac
1209
1210 exec 4>&1
1211 case "$silent" in
1212 true) exec 1>/dev/null;;
1213 esac
1214
1215 : run the defines and the undefines, if any, but leave the file out there...
1216 touch optdef.sh
1217 . ./optdef.sh
1218
1219 : set package name
1220 package=perl5
1221 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1222 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1223 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1224 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1225 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1226 esac
1227
1228 : Some greps do not return status, grrr.
1229 echo "grimblepritz" >grimble
1230 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1231         contains=contains
1232 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1233         contains=grep
1234 else
1235         contains=contains
1236 fi
1237 rm -f grimble
1238 : the following should work in any shell
1239 case "$contains" in
1240 contains*)
1241         echo " "
1242         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1243         cat >contains <<'EOSS'
1244 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1245 EOSS
1246 chmod +x contains
1247 esac
1248
1249 : Find the path to the source tree
1250 case "$src" in
1251 '') case "$0" in
1252     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1253     *)   src='.';;
1254     esac;;
1255 esac
1256 case "$src" in
1257 '')     src=/
1258         rsrc=/
1259         ;;
1260 /*) rsrc="$src";;
1261 *) rsrc="../$src";;
1262 esac
1263 if test -f $rsrc/Configure && \
1264         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1265 then
1266    : found it, so we are ok.
1267 else
1268         rsrc=''
1269         for src in . .. ../.. ../../.. ../../../..; do
1270                 if test -f ../$src/Configure && \
1271                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1272                 then
1273                         rsrc=../$src
1274                         break
1275                 fi
1276         done
1277 fi
1278 case "$rsrc" in
1279 '')
1280         cat <<EOM >&4
1281
1282 Sorry, I can't seem to locate the source dir for $package.  Please start
1283 Configure with an explicit path -- i.e. /some/path/Configure.
1284
1285 EOM
1286         exit 1
1287         ;;
1288 ../.)   rsrc='..';;
1289 *)
1290         echo " "
1291         echo "Sources for $package found in \"$src\"." >&4
1292         ;;
1293 esac
1294
1295 : script used to extract .SH files with variable substitutions
1296 cat >extract <<'EOS'
1297 CONFIG=true
1298 echo "Doing variable substitutions on .SH files..."
1299 if test -f $src/MANIFEST; then
1300         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1301 else
1302         echo "(Looking for .SH files under the source directory.)"
1303         set x `(cd $src; find . -name "*.SH" -print)`
1304 fi
1305 shift
1306 case $# in
1307 0) set x `(cd $src; echo *.SH)`; shift;;
1308 esac
1309 if test ! -f $src/$1; then
1310         shift
1311 fi
1312 mkdir_p='
1313 name=$1;
1314 create="";
1315 while test $name; do
1316         if test ! -d "$name"; then
1317                 create="$name $create";
1318                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1319                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1320         else
1321                 name="";
1322         fi;
1323 done;
1324 for file in $create; do
1325         mkdir $file;
1326 done
1327 '
1328 for file in $*; do
1329         case "$src" in
1330         ".")
1331                 case "$file" in
1332                 */*)
1333                         dir=`expr X$file : 'X\(.*\)/'`
1334                         file=`expr X$file : 'X.*/\(.*\)'`
1335                         (cd $dir && . ./$file)
1336                         ;;
1337                 *)
1338                         . ./$file
1339                         ;;
1340                 esac
1341                 ;;
1342         *)
1343                 case "$file" in
1344                 */*)
1345                         dir=`expr X$file : 'X\(.*\)/'`
1346                         file=`expr X$file : 'X.*/\(.*\)'`
1347                         (set x $dir; shift; eval $mkdir_p)
1348                         sh <$src/$dir/$file
1349                         ;;
1350                 *)
1351                         sh <$src/$file
1352                         ;;
1353                 esac
1354                 ;;
1355         esac
1356 done
1357 if test -f $src/config_h.SH; then
1358         if test ! -f config.h; then
1359         : oops, they left it out of MANIFEST, probably, so do it anyway.
1360         . $src/config_h.SH
1361         fi
1362 fi
1363 EOS
1364
1365 : extract files and exit if asked to do so
1366 case "$extractsh" in
1367 true)
1368         case "$realsilent" in
1369         true) ;;
1370         *) exec 1>&4;;
1371         esac
1372         case "$config_sh" in
1373         '') config_sh='config.sh';;
1374         esac
1375         echo " "
1376         echo "Fetching answers from $config_sh..."
1377         cd ..
1378         . $config_sh
1379         test "$override" && . ./optdef.sh
1380         echo " "
1381         . UU/extract
1382         rm -rf UU
1383         echo "Done."
1384         exit 0
1385         ;;
1386 esac
1387
1388 : Eunice requires " " instead of "", can you believe it
1389 echo " "
1390 : Here we go...
1391 echo "Beginning of configuration questions for $package."
1392
1393 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1394
1395 : first determine how to suppress newline on echo command
1396 echo " "
1397 echo "Checking echo to see how to suppress newlines..."
1398 (echo "hi there\c" ; echo " ") >.echotmp
1399 if $contains c .echotmp >/dev/null 2>&1 ; then
1400         echo "...using -n."
1401         n='-n'
1402         c=''
1403 else
1404         cat <<'EOM'
1405 ...using \c
1406 EOM
1407         n=''
1408         c='\c'
1409 fi
1410 echo $n "The star should be here-->$c"
1411 echo '*'
1412 rm -f .echotmp
1413
1414 : Now test for existence of everything in MANIFEST
1415 echo " "
1416 if test -f $rsrc/MANIFEST; then
1417         echo "First let's make sure your kit is complete.  Checking..." >&4
1418         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1419         rm -f missing
1420         tmppwd=`pwd`
1421         for filelist in x??; do
1422                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1423         done
1424         if test -s missing; then
1425                 cat missing >&4
1426                 cat >&4 <<'EOM'
1427
1428 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1429
1430 You have the option of continuing the configuration process, despite the
1431 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1432 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1433 and contact the author (perlbug@perl.com).
1434
1435 EOM
1436                 echo $n "Continue? [n] $c" >&4
1437                 read ans
1438                 case "$ans" in
1439                 y*)
1440                         echo "Continuing..." >&4
1441                         rm -f missing
1442                         ;;
1443                 *)
1444                         echo "ABORTING..." >&4
1445                         kill $$
1446                         ;;
1447                 esac
1448         else
1449                 echo "Looks good..."
1450         fi
1451 else
1452         echo "There is no MANIFEST file.  I hope your kit is complete !"
1453 fi
1454 rm -f missing x??
1455
1456 echo " "
1457 : Find the appropriate value for a newline for tr
1458 if test -n "$DJGPP"; then
1459        trnl='\012'
1460 fi
1461 if test X"$trnl" = X; then
1462         case "`echo foo|tr '\n' x 2>/dev/null`" in
1463         foox) trnl='\n' ;;
1464         esac
1465 fi
1466 if test X"$trnl" = X; then
1467         case "`echo foo|tr '\012' x 2>/dev/null`" in
1468         foox) trnl='\012' ;;
1469         esac
1470 fi
1471 if test X"$trnl" = X; then
1472         cat <<EOM >&2
1473
1474 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1475
1476 EOM
1477         exit 1
1478 fi
1479
1480 : compute the number of columns on the terminal for proper question formatting
1481 case "$COLUMNS" in
1482 '') COLUMNS='80';;
1483 esac
1484
1485 : set up the echo used in my read
1486 myecho="case \"\$xxxm\" in
1487 '') echo $n \"\$rp $c\" >&4;;
1488 *) case \"\$rp\" in
1489         '') echo $n \"[\$xxxm] $c\";;
1490         *)
1491                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1492                         echo \"\$rp\" >&4
1493                         echo $n \"[\$xxxm] $c\" >&4
1494                 else
1495                         echo $n \"\$rp [\$xxxm] $c\" >&4
1496                 fi
1497                 ;;
1498         esac;;
1499 esac"
1500
1501 : now set up to do reads with possible shell escape and default assignment
1502 cat <<EOSC >myread
1503 $startsh
1504 xxxm=\$dflt
1505 $myecho
1506 ans='!'
1507 case "\$fastread" in
1508 yes) case "\$dflt" in
1509         '') ;;
1510         *) ans='';
1511                 case "\$silent-\$rp" in
1512                 true-) ;;
1513                 *) echo " " >&4;;
1514                 esac;;
1515         esac;;
1516 *) case "\$silent" in
1517         true) case "\$rp" in
1518                 '') ans='';;
1519                 esac;;
1520         esac;;
1521 esac
1522 while expr "X\$ans" : "X!" >/dev/null; do
1523         read answ
1524         set x \$xxxm
1525         shift
1526         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1527         case  "\$answ" in
1528         "!")
1529                 sh 1>&4
1530                 echo " "
1531                 $myecho
1532                 ;;
1533         !*)
1534                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1535                 shift
1536                 sh 1>&4 -c "\$*"
1537                 echo " "
1538                 $myecho
1539                 ;;
1540         "\$ans")
1541                 case "\$ans" in
1542                 \\&*)
1543                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1544                         shift
1545                         case "\$1" in
1546                         -d)
1547                                 fastread=yes
1548                                 echo "(OK, I'll run with -d after this question.)" >&4
1549                                 ;;
1550                         -*)
1551                                 echo "*** Sorry, \$1 not supported yet." >&4
1552                                 ;;
1553                         esac
1554                         $myecho
1555                         ans=!
1556                         ;;
1557                 esac;;
1558         *)
1559                 case "\$aok" in
1560                 y)
1561                         echo "*** Substitution done -- please confirm."
1562                         xxxm="\$ans"
1563                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1564                         xxxm="\$ans"
1565                         ans=!
1566                         ;;
1567                 *)
1568                         echo "*** Error -- try again."
1569                         ans=!
1570                         ;;
1571                 esac
1572                 $myecho
1573                 ;;
1574         esac
1575         case "\$ans\$xxxm\$nostick" in
1576         '')
1577                 ans=!
1578                 $myecho
1579                 ;;
1580         esac
1581 done
1582 case "\$ans" in
1583 '') ans="\$xxxm";;
1584 esac
1585 EOSC
1586
1587 : create .config dir to save info across Configure sessions
1588 test -d ../.config || mkdir ../.config
1589 cat >../.config/README <<EOF
1590 This directory created by Configure to save information that should
1591 persist across sessions for $package.
1592
1593 You may safely delete it if you wish.
1594 EOF
1595
1596 : general instructions
1597 needman=true
1598 firsttime=true
1599 user=`(logname) 2>/dev/null`
1600 case "$user" in
1601 '') user=`whoami 2>&1`;;
1602 esac
1603 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1604         firsttime=false
1605         echo " "
1606         rp='Would you like to see the instructions?'
1607         dflt=n
1608         . ./myread
1609         case "$ans" in
1610         [yY]*) ;;
1611         *) needman=false;;
1612         esac
1613 fi
1614 if $needman; then
1615         cat <<EOH
1616
1617 This installation shell script will examine your system and ask you questions
1618 to determine how the perl5 package should be installed. If you get
1619 stuck on a question, you may use a ! shell escape to start a subshell or
1620 execute a command.  Many of the questions will have default answers in square
1621 brackets; typing carriage return will give you the default.
1622
1623 On some of the questions which ask for file or directory names you are allowed
1624 to use the ~name construct to specify the login directory belonging to "name",
1625 even if you don't have a shell which knows about that.  Questions where this is
1626 allowed will be marked "(~name ok)".
1627
1628 EOH
1629         rp=''
1630         dflt='Type carriage return to continue'
1631         . ./myread
1632         cat <<'EOH'
1633
1634 The prompter used in this script allows you to use shell variables and
1635 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1636 in the default answer, as if the default line was a set of arguments given to a
1637 script shell.  This means you may also use $* to repeat the whole default line,
1638 so you do not have to re-type everything to add something to the default.
1639
1640 Everytime there is a substitution, you will have to confirm.  If there is an
1641 error (e.g. an unmatched backtick), the default answer will remain unchanged
1642 and you will be prompted again.
1643
1644 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1645 the questions and use the computed defaults (or the previous answers if there
1646 was already a config.sh file). Type 'Configure -h' for a list of options.
1647 You may also start interactively and then answer '& -d' at any prompt to turn
1648 on the non-interactive behaviour for the remainder of the execution.
1649
1650 EOH
1651         . ./myread
1652         cat <<EOH
1653
1654 Much effort has been expended to ensure that this shell script will run on any
1655 Unix system.  If despite that it blows up on yours, your best bet is to edit
1656 Configure and run it again.  If you can't run Configure for some reason,
1657 you'll have to generate a config.sh file by hand.  Whatever problems you
1658 have, let me (perlbug@perl.com) know how I blew it.
1659
1660 This installation script affects things in two ways:
1661
1662 1) it may do direct variable substitutions on some of the files included
1663    in this kit.
1664 2) it builds a config.h file for inclusion in C programs.  You may edit
1665    any of these files as the need arises after running this script.
1666
1667 If you make a mistake on a question, there is no easy way to back up to it
1668 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1669 files.  Configure will offer to let you do this before it runs the SH files.
1670
1671 EOH
1672         dflt='Type carriage return to continue'
1673         . ./myread
1674         case "$firsttime" in
1675         true) echo $user >>../.config/instruct;;
1676         esac
1677 fi
1678
1679 : find out where common programs are
1680 echo " "
1681 echo "Locating common programs..." >&4
1682 cat <<EOSC >loc
1683 $startsh
1684 case \$# in
1685 0) exit 1;;
1686 esac
1687 thing=\$1
1688 shift
1689 dflt=\$1
1690 shift
1691 for dir in \$*; do
1692         case "\$thing" in
1693         .)
1694         if test -d \$dir/\$thing; then
1695                 echo \$dir
1696                 exit 0
1697         fi
1698         ;;
1699         *)
1700         for thisthing in \$dir/\$thing; do
1701                 : just loop through to pick last item
1702         done
1703         if test -f \$thisthing; then
1704                 echo \$thisthing
1705                 exit 0
1706         elif test -f \$dir/\$thing.exe; then
1707                 if test -n "$DJGPP"; then
1708                         echo \$dir/\$thing.exe
1709                 else
1710                         : on Eunice apparently
1711                         echo \$dir/\$thing
1712                 fi
1713                 exit 0
1714         fi
1715         ;;
1716         esac
1717 done
1718 echo \$dflt
1719 exit 1
1720 EOSC
1721 chmod +x loc
1722 $eunicefix loc
1723 loclist="
1724 awk
1725 cat
1726 comm
1727 cp
1728 echo
1729 expr
1730 grep
1731 ls
1732 make
1733 mkdir
1734 rm
1735 sed
1736 sort
1737 touch
1738 tr
1739 uniq
1740 "
1741 trylist="
1742 Mcc
1743 ar
1744 byacc
1745 cpp
1746 csh
1747 date
1748 egrep
1749 gzip
1750 less
1751 ln
1752 more
1753 nm
1754 nroff
1755 pg
1756 tee
1757 test
1758 uname
1759 zip
1760 "
1761 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1762 pth="$pth /lib /usr/lib"
1763 for file in $loclist; do
1764         eval xxx=\$$file
1765         case "$xxx" in
1766         /*|?:[\\/]*)
1767                 if test -f "$xxx"; then
1768                         : ok
1769                 else
1770                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1771                         xxx=`./loc $file $file $pth`
1772                 fi
1773                 ;;
1774         '') xxx=`./loc $file $file $pth`;;
1775         *) xxx=`./loc $xxx $xxx $pth`;;
1776         esac
1777         eval $file=$xxx
1778         eval _$file=$xxx
1779         case "$xxx" in
1780         /*)
1781                 echo $file is in $xxx.
1782                 ;;
1783         ?:[\\/]*)
1784                 echo $file is in $xxx.
1785                 ;;
1786         *)
1787                 echo "I don't know where '$file' is, and my life depends on it." >&4
1788                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1789                 exit 1
1790                 ;;
1791         esac
1792 done
1793 echo " "
1794 echo "Don't worry if any of the following aren't found..."
1795 say=offhand
1796 for file in $trylist; do
1797         eval xxx=\$$file
1798         case "$xxx" in
1799         /*|?:[\\/]*)
1800                 if test -f "$xxx"; then
1801                         : ok
1802                 else
1803                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1804                         xxx=`./loc $file $file $pth`
1805                 fi
1806                 ;;
1807         '') xxx=`./loc $file $file $pth`;;
1808         *) xxx=`./loc $xxx $xxx $pth`;;
1809         esac
1810         eval $file=$xxx
1811         eval _$file=$xxx
1812         case "$xxx" in
1813         /*)
1814                 echo $file is in $xxx.
1815                 ;;
1816         ?:[\\/]*)
1817                 echo $file is in $xxx.
1818                 ;;
1819         *)
1820                 echo "I don't see $file out there, $say."
1821                 say=either
1822                 ;;
1823         esac
1824 done
1825 case "$egrep" in
1826 egrep)
1827         echo "Substituting grep for egrep."
1828         egrep=$grep
1829         ;;
1830 esac
1831 case "$ln" in
1832 ln)
1833         echo "Substituting cp for ln."
1834         ln=$cp
1835         ;;
1836 esac
1837 case "$test" in
1838 test)
1839         echo "Hopefully test is built into your sh."
1840         ;;
1841 *)
1842         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1843                 echo "Using the test built into your sh."
1844                 test=test
1845                 _test=test
1846         fi
1847         ;;
1848 esac
1849 case "$echo" in
1850 echo)
1851         echo "Hopefully echo is built into your sh."
1852         ;;
1853 '') ;;
1854 *)
1855         echo " "
1856 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1857         $echo $n "hi there$c" >foo1
1858         echo $n "hi there$c" >foo2
1859         if cmp foo1 foo2 >/dev/null 2>&1; then
1860                 echo "They are compatible.  In fact, they may be identical."
1861         else
1862                 case "$n" in
1863                 '-n') n='' c='\c';;
1864                 *) n='-n' c='';;
1865                 esac
1866                 cat <<FOO
1867 They are not compatible!  You are probably running ksh on a non-USG system.
1868 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1869 have echo built in and we may have to run some Bourne shell scripts.  That
1870 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1871
1872 FOO
1873                 $echo $n "The star should be here-->$c"
1874                 $echo "*"
1875         fi
1876         $rm -f foo1 foo2
1877         ;;
1878 esac
1879
1880 : determine whether symbolic links are supported
1881 echo " "
1882 $touch blurfl
1883 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1884         echo "Symbolic links are supported." >&4
1885         lns="$ln -s"
1886 else
1887         echo "Symbolic links are NOT supported." >&4
1888         lns="$ln"
1889 fi
1890 $rm -f blurfl sym
1891
1892 : see whether [:lower:] and [:upper:] are supported character classes
1893 echo " "
1894 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1895 ABYZ)
1896         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1897         up='[:upper:]'
1898         low='[:lower:]'
1899         ;;
1900 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1901         # (0xc9 and 0xd1), therefore that is a nice testing point.
1902         if test "X$up" = X -o "X$low" = X; then
1903             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1904             ij) up='[A-Z]'
1905                 low='[a-z]'
1906                 ;;
1907             esac
1908         fi
1909         if test "X$up" = X -o "X$low" = X; then
1910             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1911             ij) up='A-Z'
1912                 low='a-z'
1913                 ;;
1914             esac
1915         fi
1916         if test "X$up" = X -o "X$low" = X; then
1917             case "`echo IJ | od -x 2>/dev/null`" in
1918             *C9D1*|*c9d1*)
1919                 echo "Hey, this might be EBCDIC." >&4
1920                 if test "X$up" = X -o "X$low" = X; then
1921                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1922                     ij) up='[A-IJ-RS-Z]'
1923                         low='[a-ij-rs-z]'
1924                         ;;
1925                     esac
1926                 fi
1927                 if test "X$up" = X -o "X$low" = X; then
1928                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1929                     ij) up='A-IJ-RS-Z'
1930                         low='a-ij-rs-z'
1931                         ;;
1932                     esac
1933                 fi
1934                 ;;
1935             esac
1936         fi
1937 esac
1938 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1939 ij)
1940     echo "Using $up and $low to convert case." >&4
1941     ;;
1942 *)
1943     echo "I don't know how to translate letters from upper to lower case." >&4
1944     echo "Your tr is not acting any way I know of." >&4
1945     exit 1
1946     ;;
1947 esac
1948 : set up the translation script tr, must be called with ./tr of course
1949 cat >tr <<EOSC
1950 $startsh
1951 case "\$1\$2" in
1952 '[A-Z][a-z]') exec $tr '$up' '$low';;
1953 '[a-z][A-Z]') exec $tr '$low' '$up';;
1954 esac
1955 exec $tr "\$@"
1956 EOSC
1957 chmod +x tr
1958 $eunicefix tr
1959
1960 : Try to determine whether config.sh was made on this system
1961 case "$config_sh" in
1962 '')
1963 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1964 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1965 # because the A-Z/a-z are not consecutive.
1966 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1967         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1968 newmyuname="$myuname"
1969 dflt=n
1970 case "$knowitall" in
1971 '')
1972         if test -f ../config.sh; then
1973                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1974                         eval "`grep myuname= ../config.sh`"
1975                 fi
1976                 if test "X$myuname" = "X$newmyuname"; then
1977                         dflt=y
1978                 fi
1979         fi
1980         ;;
1981 *) dflt=y;;
1982 esac
1983
1984 : Get old answers from old config file if Configure was run on the
1985 : same system, otherwise use the hints.
1986 hint=default
1987 cd ..
1988 if test -f config.sh; then
1989         echo " "
1990         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1991         . UU/myread
1992         case "$ans" in
1993         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1994         *)  echo "Fetching default answers from your old config.sh file..." >&4
1995                 tmp_n="$n"
1996                 tmp_c="$c"
1997                 tmp_sh="$sh"
1998                 . ./config.sh
1999                 cp config.sh UU
2000                 n="$tmp_n"
2001                 c="$tmp_c"
2002                 : Older versions did not always set $sh.  Catch re-use of such
2003                 : an old config.sh.
2004                 case "$sh" in
2005                 '') sh="$tmp_sh" ;;
2006                 esac
2007                 hint=previous
2008                 ;;
2009         esac
2010 fi
2011 if test ! -f config.sh; then
2012         $cat <<EOM
2013
2014 First time through, eh?  I have some defaults handy for some systems
2015 that need some extra help getting the Configure answers right:
2016
2017 EOM
2018         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2019         dflt=''
2020         : Half the following guesses are probably wrong... If you have better
2021         : tests or hints, please send them to perlbug@perl.com
2022         : The metaconfig authors would also appreciate a copy...
2023         $test -f /irix && osname=irix
2024         $test -f /xenix && osname=sco_xenix
2025         $test -f /dynix && osname=dynix
2026         $test -f /dnix && osname=dnix
2027         $test -f /lynx.os && osname=lynxos
2028         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2029         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2030         $test -f /bin/mips && /bin/mips && osname=mips
2031         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2032                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2033         $test -d /usr/apollo/bin && osname=apollo
2034         $test -f /etc/saf/_sactab && osname=svr4
2035         $test -d /usr/include/minix && osname=minix
2036         if $test -d /MachTen -o -d /MachTen_Folder; then
2037                 osname=machten
2038                 if $test -x /sbin/version; then
2039                         osvers=`/sbin/version | $awk '{print $2}' |
2040                         $sed -e 's/[A-Za-z]$//'`
2041                 elif $test -x /usr/etc/version; then
2042                         osvers=`/usr/etc/version | $awk '{print $2}' |
2043                         $sed -e 's/[A-Za-z]$//'`
2044                 else
2045                         osvers="$2.$3"
2046                 fi
2047         fi
2048        $test -f /sys/posix.dll &&
2049                $test -f /usr/bin/what &&
2050                set X `/usr/bin/what /sys/posix.dll` &&
2051                $test "$3" = UWIN &&
2052                osname=uwin &&
2053                osvers="$5"
2054         if $test -f $uname; then
2055                 set X $myuname
2056                 shift
2057
2058                 case "$5" in
2059                 fps*) osname=fps ;;
2060                 mips*)
2061                         case "$4" in
2062                         umips) osname=umips ;;
2063                         *) osname=mips ;;
2064                         esac;;
2065                 [23]100) osname=mips ;;
2066                 next*) osname=next ;;
2067                 i386*)
2068                         if $test -f /etc/kconfig; then
2069                                 osname=isc
2070                                 if test "$lns" = "ln -s"; then
2071                                         osvers=4
2072                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2073                                         osvers=3
2074                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2075                                         osvers=2
2076                                 fi
2077                         fi
2078                         ;;
2079                 pc*)
2080                         if test -n "$DJGPP"; then
2081                                 osname=dos
2082                                 osvers=djgpp
2083                         fi
2084                         ;;
2085                 esac
2086
2087                 case "$1" in
2088                 aix) osname=aix
2089                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2090                         case "$tmp" in
2091                         'not found') osvers="$4"."$3" ;;
2092                         '<3240'|'<>3240') osvers=3.2.0 ;;
2093                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2094                         '=3250'|'>3250') osvers=3.2.5 ;;
2095                         *) osvers=$tmp;;
2096                         esac
2097                         ;;
2098                 *dc.osx) osname=dcosx
2099                         osvers="$3"
2100                         ;;
2101                 dnix) osname=dnix
2102                         osvers="$3"
2103                         ;;
2104                 domainos) osname=apollo
2105                         osvers="$3"
2106                         ;;
2107                 dgux) osname=dgux 
2108                         osvers="$3"
2109                         ;;
2110                 dynixptx*) osname=dynixptx
2111                         osvers=`echo "$4"|sed 's/^v//'`
2112                         ;;
2113                 freebsd) osname=freebsd 
2114                         osvers="$3" ;;
2115                 genix) osname=genix ;;
2116                 hp*) osname=hpux 
2117                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2118                         ;;
2119                 irix*) osname=irix
2120                         case "$3" in
2121                         4*) osvers=4 ;;
2122                         5*) osvers=5 ;;
2123                         *)      osvers="$3" ;;
2124                         esac
2125                         ;;
2126                 linux) osname=linux
2127                         case "$3" in
2128                         *)      osvers="$3" ;;
2129                         esac
2130                         ;;
2131                 MiNT) osname=mint
2132                         ;;
2133                 netbsd*) osname=netbsd
2134                         osvers="$3"
2135                         ;;
2136                 news-os) osvers="$3"
2137                         case "$3" in
2138                         4*) osname=newsos4 ;;
2139                         *) osname=newsos ;;
2140                         esac
2141                         ;;
2142                 bsd386) osname=bsd386
2143                         osvers=`$uname -r`
2144                         ;;
2145                 POSIX-BC | posix-bc ) osname=posix-bc
2146                         osvers="$3"
2147                         ;;
2148                 powerux | power_ux | powermax_os | powermaxos | \
2149                 powerunix | power_unix) osname=powerux
2150                         osvers="$3"
2151                         ;;
2152                 next*) osname=next ;;
2153                 solaris) osname=solaris
2154                         case "$3" in
2155                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2156                         *)      osvers="$3" ;;
2157                         esac
2158                         ;;
2159                 sunos) osname=sunos
2160                         case "$3" in
2161                         5*) osname=solaris
2162                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2163                         *)      osvers="$3" ;;
2164                         esac
2165                         ;;
2166                 titanos) osname=titanos
2167                         case "$3" in
2168                         1*) osvers=1 ;;
2169                         2*) osvers=2 ;;
2170                         3*) osvers=3 ;;
2171                         4*) osvers=4 ;;
2172                         *)      osvers="$3" ;;
2173                         esac
2174                         ;;
2175                 ultrix) osname=ultrix
2176                         osvers="$3"
2177                         ;;
2178                 osf1|mls+)      case "$5" in
2179                                 alpha)
2180                                         osname=dec_osf
2181                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2182                                         ;;
2183                         hp*)    osname=hp_osf1  ;;
2184                         mips)   osname=mips_osf1 ;;
2185                         esac
2186                         ;;
2187                 uts) osname=uts 
2188                         osvers="$3"
2189                         ;;
2190                 qnx) osname=qnx
2191                         osvers="$4"
2192                         ;;
2193                 $2) case "$osname" in
2194                         *isc*) ;;
2195                         *freebsd*) ;;
2196                         svr*)
2197                                 : svr4.x or possibly later
2198                                 case "svr$3" in 
2199                                 ${osname}*)
2200                                         osname=svr$3
2201                                         osvers=$4
2202                                         ;;
2203                                 esac
2204                                 case "$osname" in
2205                                 svr4.0)
2206                                         : Check for ESIX
2207                                         if test -f /stand/boot ; then
2208                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2209                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2210                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2211                                                         if test -n "$isesix"; then
2212                                                                 osname=esix4
2213                                                         fi
2214                                                 fi
2215                                         fi
2216                                         ;;
2217                                 esac
2218                                 ;;
2219                         *)      if test -f /etc/systemid; then
2220                                         osname=sco
2221                                         set `echo $3 | $sed 's/\./ /g'` $4
2222                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2223                                                 osvers=$1.$2.$3
2224                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2225                                                 osvers=$1.$2
2226                                         elif $test -f $src/hints/sco_$1.sh; then
2227                                                 osvers=$1
2228                                         fi
2229                                 else
2230                                         case "$osname" in
2231                                         '') : Still unknown.  Probably a generic Sys V.
2232                                                 osname="sysv"
2233                                                 osvers="$3"
2234                                                 ;;
2235                                         esac
2236                                 fi
2237                                 ;;
2238                         esac
2239                         ;;
2240                 *)      case "$osname" in
2241                         '') : Still unknown.  Probably a generic BSD.
2242                                 osname="$1"
2243                                 osvers="$3"
2244                                 ;;
2245                         esac
2246                         ;;
2247                 esac
2248         else
2249                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2250                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2251                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2252                                 osname=news_os
2253                         fi
2254                         $rm -f UU/kernel.what
2255                 elif test -d c:/.; then
2256                         set X $myuname
2257                         osname=os2
2258                         osvers="$5"
2259                 fi
2260         fi
2261         
2262         : Now look for a hint file osname_osvers, unless one has been
2263         : specified already.
2264         case "$hintfile" in
2265         ''|' ')
2266                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2267                 : Also try without trailing minor version numbers.
2268                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2269                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2270                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2271                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2272                 case "$file" in
2273                 '') dflt=none ;;
2274                 *)  case "$osvers" in
2275                         '') dflt=$file
2276                                 ;;
2277                         *)  if $test -f $src/hints/$file.sh ; then
2278                                         dflt=$file
2279                                 elif $test -f $src/hints/$xfile.sh ; then
2280                                         dflt=$xfile
2281                                 elif $test -f $src/hints/$xxfile.sh ; then
2282                                         dflt=$xxfile
2283                                 elif $test -f $src/hints/$xxxfile.sh ; then
2284                                         dflt=$xxxfile
2285                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2286                                         dflt=$xxxxfile
2287                                 elif $test -f "$src/hints/${osname}.sh" ; then
2288                                         dflt="${osname}"
2289                                 else
2290                                         dflt=none
2291                                 fi
2292                                 ;;
2293                         esac
2294                         ;;
2295                 esac
2296                 if $test -f Policy.sh ; then
2297                         case "$dflt" in
2298                         *Policy*) ;;
2299                         none) dflt="Policy" ;;
2300                         *) dflt="Policy $dflt" ;;
2301                         esac
2302                 fi
2303                 ;;
2304         *)
2305                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2306                 ;;
2307         esac
2308
2309         if $test -f Policy.sh ; then
2310                 $cat <<EOM
2311
2312 There's also a Policy hint file available, which should make the
2313 site-specific (policy) questions easier to answer.
2314 EOM
2315
2316         fi
2317
2318         $cat <<EOM
2319
2320 You may give one or more space-separated answers, or "none" if appropriate.
2321 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2322 is a good thing.  DO NOT give a wrong version.
2323
2324 EOM
2325
2326         rp="Which of these apply, if any?"
2327         . UU/myread
2328         tans=$ans
2329         for file in $tans; do
2330                 if $test X$file = XPolicy -a -f Policy.sh; then
2331                         . Policy.sh
2332                         $cat Policy.sh >> UU/config.sh
2333                 elif $test -f $src/hints/$file.sh; then
2334                         . $src/hints/$file.sh
2335                         $cat $src/hints/$file.sh >> UU/config.sh
2336                 elif $test X$tans = X -o X$tans = Xnone ; then
2337                         : nothing
2338                 else
2339                         : Give one chance to correct a possible typo.
2340                         echo "$file.sh does not exist"
2341                         dflt=$file
2342                         rp="hint to use instead?"
2343                         . UU/myread
2344                         for file in $ans; do
2345                                 if $test -f "$src/hints/$file.sh"; then
2346                                         . $src/hints/$file.sh
2347                                         $cat $src/hints/$file.sh >> UU/config.sh
2348                                 elif $test X$ans = X -o X$ans = Xnone ; then
2349                                         : nothing
2350                                 else
2351                                         echo "$file.sh does not exist -- ignored."
2352                                 fi
2353                         done
2354                 fi
2355         done
2356
2357         hint=recommended
2358         : Remember our hint file for later.
2359         if $test -f "$src/hints/$file.sh" ; then
2360                 hintfile="$file"
2361         else
2362                 hintfile=''
2363         fi
2364 fi
2365 cd UU
2366 ;;
2367 *)
2368         echo " "
2369         echo "Fetching default answers from $config_sh..." >&4
2370         tmp_n="$n"
2371         tmp_c="$c"
2372         cd ..
2373         cp $config_sh config.sh 2>/dev/null
2374         chmod +w config.sh
2375         . ./config.sh
2376         cd UU
2377         cp ../config.sh .
2378         n="$tmp_n"
2379         c="$tmp_c"
2380         hint=previous
2381         ;;
2382 esac
2383 test "$override" && . ./optdef.sh
2384 myuname="$newmyuname"
2385
2386 : Restore computed paths
2387 for file in $loclist $trylist; do
2388         eval $file="\$_$file"
2389 done
2390
2391 cat << EOM
2392
2393 Configure uses the operating system name and version to set some defaults.
2394 The default value is probably right if the name rings a bell. Otherwise,
2395 since spelling matters for me, either accept the default or answer "none"
2396 to leave it blank.
2397
2398 EOM
2399 case "$osname" in
2400         ''|' ')
2401                 case "$hintfile" in
2402                 ''|' '|none) dflt=none ;;
2403                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2404                 esac
2405                 ;;
2406         *) dflt="$osname" ;;
2407 esac
2408 rp="Operating system name?"
2409 . ./myread
2410 case "$ans" in
2411 none)  osname='' ;;
2412 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2413 esac
2414 echo " "
2415 case "$osvers" in
2416         ''|' ')
2417                 case "$hintfile" in
2418                 ''|' '|none) dflt=none ;;
2419                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2420                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2421                         case "$dflt" in
2422                         ''|' ') dflt=none ;;
2423                         esac
2424                         ;;
2425                 esac
2426                 ;;
2427         *) dflt="$osvers" ;;
2428 esac
2429 rp="Operating system version?"
2430 . ./myread
2431 case "$ans" in
2432 none)  osvers='' ;;
2433 *) osvers="$ans" ;;
2434 esac
2435
2436 : who configured the system
2437 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2438 cf_by=`(logname) 2>/dev/null`
2439 case "$cf_by" in
2440 "")
2441         cf_by=`(whoami) 2>/dev/null`
2442         case "$cf_by" in
2443         "") cf_by=unknown ;;
2444         esac ;;
2445 esac
2446
2447 : set up the script used to warn in case of inconsistency
2448 cat <<EOS >whoa
2449 $startsh
2450 EOS
2451 cat <<'EOSC' >>whoa
2452 dflt=y
2453 echo " "
2454 echo "*** WHOA THERE!!! ***" >&4
2455 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2456 rp="    Keep the $hint value?"
2457 . ./myread
2458 case "$ans" in
2459 y) td=$was; tu=$was;;
2460 esac
2461 EOSC
2462
2463 : function used to set $1 to $val
2464 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2465 case "$val$was" in
2466 $define$undef) . ./whoa; eval "$var=\$td";;
2467 $undef$define) . ./whoa; eval "$var=\$tu";;
2468 *) eval "$var=$val";;
2469 esac'
2470
2471 cat <<EOM
2472
2473 Perl can be built to take advantage of threads, on some systems.
2474 To do so, Configure must be run with -Dusethreads.
2475 (See README.threads for details.)
2476 EOM
2477 case "$usethreads" in
2478 $define|true|[yY]*)     dflt='y';;
2479 *) dflt='n';;
2480 esac
2481 rp='Build a threading Perl?'
2482 . ./myread
2483 case "$ans" in
2484 y|Y)    val="$define" ;;     
2485 *)      val="$undef" ;;
2486 esac
2487 set usethreads
2488 eval $setvar 
2489
2490 case "$d_oldpthreads" in
2491 '')     : Configure tests would be welcome here.  For now, assume undef.
2492         val="$undef" ;;
2493 *)      val="$d_oldpthreads" ;;
2494 esac
2495 set d_oldpthreads
2496 eval $setvar
2497
2498
2499 case "$usethreads" in
2500 "$define"|true|[yY]*)
2501 : Look for a hint-file generated 'call-back-unit'.  If the
2502 : user has specified that a threading perl is to be built,
2503 : we may need to set or change some other defaults.
2504         if $test -f usethreads.cbu; then
2505                 . ./usethreads.cbu
2506         fi
2507         case "$osname" in
2508         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|os2|solaris|vmesa)
2509                 # Known thread-capable platforms.
2510                 ;;
2511         *)
2512                 cat >&4 <<EOM
2513 $osname is not known to support threads.
2514 Please let perlbug@perl.com know how to do that.
2515
2516 Cannot continue, aborting.
2517 EOM
2518                 exit 1
2519         ;;
2520         esac # $osname
2521     ;;
2522 esac # $usethreads
2523
2524 cat <<EOM
2525
2526 Perl can be built so that multiple Perl interpreters can coexist
2527 within the same Perl executable.  To do so, Configure must be run with
2528 -Dusemultiplicity.
2529
2530 Normally you do not need this and you should answer no.
2531
2532 EOM
2533 case "$usemultiplicity" in
2534 $define|true|[yY]*)     dflt='y';;
2535 *) dflt='n';;
2536 esac
2537 rp='Build Perl for multiplicity?'
2538 . ./myread
2539 case "$ans" in
2540 y|Y)    val="$define" ;;     
2541 *)      val="$undef" ;;
2542 esac
2543 set usemultiplicity
2544 eval $setvar 
2545
2546 cat <<EOM
2547
2548 Perl can be built to take advantage of explicit 64-bit interfaces,
2549 on some systems.  To do so, Configure must be run with -Duse64bits.
2550
2551 If this doesn't make any sense to you, just accept the default 'n'.
2552 EOM
2553 case "$use64bits" in
2554 $define|true|[yY]*)     dflt='y';;
2555 *) dflt='n';;
2556 esac
2557 rp='Try to use explicit 64-bit interfaces, if available?'
2558 . ./myread
2559 case "$ans" in
2560 y|Y) 
2561         val="$define"
2562         ;;     
2563 *)      
2564         val="$undef"
2565         ;;
2566 esac
2567 set use64bits
2568 eval $setvar
2569
2570 case "$archname64" in
2571 '') archname64='' ;;    # not a typo
2572 esac
2573
2574 case "$use64bits" in
2575 "$define"|true|[yY]*)
2576 : Look for a hint-file generated 'call-back-unit'.  If the
2577 : user has specified that a threading perl is to be built,
2578 : we may need to set or change some other defaults.
2579         if $test -f use64bits.cbu; then
2580                 . ./use64bits.cbu
2581         fi
2582         case "$osname" in
2583         dec_osf|hpux|irix|solaris|unicos)
2584                 # Known 64-bit capable platforms.
2585                 ;;
2586         *)
2587                 cat >&4 <<EOM
2588 $osname is not known to support 64-bit interfaces.
2589 Please let perlbug@perl.com know how to do that.
2590
2591 Cannot continue, aborting.
2592 EOM
2593                 exit 1
2594                 ;;
2595         esac
2596         ;;
2597 esac
2598
2599 : determine the architecture name
2600 echo " "
2601 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2602         tarch=`arch`"-$osname"
2603 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2604         if uname -m > tmparch 2>&1 ; then
2605                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2606                         -e 's/$/'"-$osname/" tmparch`
2607         else
2608                 tarch="$osname"
2609         fi
2610         $rm -f tmparch
2611 else
2612         tarch="$osname"
2613 fi
2614 case "$myarchname" in
2615 ''|"$tarch") ;;
2616 *)
2617         echo "(Your architecture name used to be $myarchname.)"
2618         archname=''
2619         ;;
2620 esac
2621 myarchname="$tarch"
2622 case "$archname" in
2623 '') dflt="$tarch";;
2624 *) dflt="$archname";;
2625 esac
2626 rp='What is your architecture name'
2627 . ./myread
2628 archname="$ans"
2629 case "$usethreads" in
2630 $define)
2631         echo "Threads selected." >&4
2632         case "$archname" in
2633         *-thread*) echo "...and architecture name already has -thread." >&4
2634                 ;;
2635         *)      archname="$archname-thread"
2636                 echo "...setting architecture name to $archname." >&4
2637                 ;;
2638         esac
2639         ;;
2640 esac
2641 case "$usemultiplicity" in
2642 $define)
2643         echo "Multiplicity selected." >&4
2644         case "$archname" in
2645         *-multi*) echo "...and architecture name already has -multi." >&4
2646                 ;;
2647         *)      archname="$archname-multi"
2648                 echo "...setting architecture name to $archname." >&4
2649                 ;;
2650         esac
2651         ;;
2652 esac
2653 case "$use64bits" in
2654 $define)
2655         echo "Explicit 64-bitness selected." >&4
2656         case "$archname64" in
2657         '')
2658                 ;;
2659         *)
2660                 case "$archname" in
2661                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2662                         ;;
2663                 *)      archname="$archname-$archname64"
2664                         echo "...setting architecture name to $archname." >&4
2665                         ;;
2666                 esac
2667                 ;;
2668         esac
2669 esac
2670
2671 : is AFS running?
2672 echo " "
2673 case "$afs" in
2674 $define|true)   afs=true ;;
2675 $undef|false)   afs=false ;;
2676 *)      if test -d /afs; then
2677                 afs=true
2678         else
2679                 afs=false
2680         fi
2681         ;;
2682 esac
2683 if $afs; then
2684         echo "AFS may be running... I'll be extra cautious then..." >&4
2685 else
2686         echo "AFS does not seem to be running..." >&4
2687 fi
2688
2689 : decide how portable to be.  Allow command line overrides.
2690 case "$d_portable" in
2691 "$undef") ;;
2692 *)      d_portable="$define" ;;
2693 esac
2694
2695 : set up shell script to do ~ expansion
2696 cat >filexp <<EOSS
2697 $startsh
2698 : expand filename
2699 case "\$1" in
2700  ~/*|~)
2701         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2702         ;;
2703  ~*)
2704         if $test -f /bin/csh; then
2705                 /bin/csh -f -c "glob \$1"
2706                 failed=\$?
2707                 echo ""
2708                 exit \$failed
2709         else
2710                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2711                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2712                 if $test ! -d "\$dir"; then
2713                         me=\`basename \$0\`
2714                         echo "\$me: can't locate home directory for: \$name" >&2
2715                         exit 1
2716                 fi
2717                 case "\$1" in
2718                 */*)
2719                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2720                         ;;
2721                 *)
2722                         echo \$dir
2723                         ;;
2724                 esac
2725         fi
2726         ;;
2727 *)
2728         echo \$1
2729         ;;
2730 esac
2731 EOSS
2732 chmod +x filexp
2733 $eunicefix filexp
2734
2735 : now set up to get a file name
2736 cat <<EOS >getfile
2737 $startsh
2738 EOS
2739 cat <<'EOSC' >>getfile
2740 tilde=''
2741 fullpath=''
2742 already=''
2743 skip=''
2744 none_ok=''
2745 exp_file=''
2746 nopath_ok=''
2747 orig_rp="$rp"
2748 orig_dflt="$dflt"
2749
2750 case "$fn" in
2751 *\(*)
2752         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2753         fn=`echo $fn | sed 's/(.*)//'`
2754         ;;
2755 esac
2756
2757 case "$fn" in
2758 *:*)
2759         loc_file=`expr $fn : '.*:\(.*\)'`
2760         fn=`expr $fn : '\(.*\):.*'`
2761         ;;
2762 esac
2763
2764 case "$fn" in
2765 *~*) tilde=true;;
2766 esac
2767 case "$fn" in
2768 */*) fullpath=true;;
2769 esac
2770 case "$fn" in
2771 *+*) skip=true;;
2772 esac
2773 case "$fn" in
2774 *n*) none_ok=true;;
2775 esac
2776 case "$fn" in
2777 *e*) exp_file=true;;
2778 esac
2779 case "$fn" in
2780 *p*) nopath_ok=true;;
2781 esac
2782
2783 case "$fn" in
2784 *f*) type='File';;
2785 *d*) type='Directory';;
2786 *l*) type='Locate';;
2787 esac
2788
2789 what="$type"
2790 case "$what" in
2791 Locate) what='File';;
2792 esac
2793
2794 case "$exp_file" in
2795 '')
2796         case "$d_portable" in
2797         "$define") ;;
2798         *) exp_file=true;;
2799         esac
2800         ;;
2801 esac
2802
2803 cd ..
2804 while test "$type"; do
2805         redo=''
2806         rp="$orig_rp"
2807         dflt="$orig_dflt"
2808         case "$tilde" in
2809         true) rp="$rp (~name ok)";;
2810         esac
2811         . UU/myread
2812         if test -f UU/getfile.ok && \
2813                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2814         then
2815                 value="$ans"
2816                 ansexp="$ans"
2817                 break
2818         fi
2819         case "$ans" in
2820         none)
2821                 value=''
2822                 ansexp=''
2823                 case "$none_ok" in
2824                 true) type='';;
2825                 esac
2826                 ;;
2827         *)
2828                 case "$tilde" in
2829                 '') value="$ans"
2830                         ansexp="$ans";;
2831                 *)
2832                         value=`UU/filexp $ans`
2833                         case $? in
2834                         0)
2835                                 if test "$ans" != "$value"; then
2836                                         echo "(That expands to $value on this system.)"
2837                                 fi
2838                                 ;;
2839                         *) value="$ans";;
2840                         esac
2841                         ansexp="$value"
2842                         case "$exp_file" in
2843                         '') value="$ans";;
2844                         esac
2845                         ;;
2846                 esac
2847                 case "$fullpath" in
2848                 true)
2849                         case "$ansexp" in
2850                         /*) value="$ansexp" ;;
2851                         *)
2852                                 redo=true
2853                                 case "$already" in
2854                                 true)
2855                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2856                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2857                                         ;;
2858                                 *)
2859                                 echo "Please give a full path name, starting with slash." >&4
2860                                         case "$tilde" in
2861                                         true)
2862                                 echo "Note that using ~name is ok provided it expands well." >&4
2863                                                 already=true
2864                                                 ;;
2865                                         esac
2866                                 esac
2867                                 ;;
2868                         esac
2869                         ;;
2870                 esac
2871                 case "$redo" in
2872                 '')
2873                         case "$type" in
2874                         File)
2875                                 if test -f "$ansexp"; then
2876                                         type=''
2877                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2878                                 then
2879                                         echo "($value is not a plain file, but that's ok.)"
2880                                         type=''
2881                                 fi
2882                                 ;;
2883                         Directory)
2884                                 if test -d "$ansexp"; then
2885                                         type=''
2886                                 fi
2887                                 ;;
2888                         Locate)
2889                                 if test -d "$ansexp"; then
2890                                         echo "(Looking for $loc_file in directory $value.)"
2891                                         value="$value/$loc_file"
2892                                         ansexp="$ansexp/$loc_file"
2893                                 fi
2894                                 if test -f "$ansexp"; then
2895                                         type=''
2896                                 fi
2897                                 case "$nopath_ok" in
2898                                 true)   case "$value" in
2899                                         */*) ;;
2900                                         *)      echo "Assuming $value will be in people's path."
2901                                                 type=''
2902                                                 ;;
2903                                         esac
2904                                         ;;
2905                                 esac
2906                                 ;;
2907                         esac
2908
2909                         case "$skip" in
2910                         true) type='';
2911                         esac
2912
2913                         case "$type" in
2914                         '') ;;
2915                         *)
2916                                 if test "$fastread" = yes; then
2917                                         dflt=y
2918                                 else
2919                                         dflt=n
2920                                 fi
2921                                 rp="$what $value doesn't exist.  Use that name anyway?"
2922                                 . UU/myread
2923                                 dflt=''
2924                                 case "$ans" in
2925                                 y*) type='';;
2926                                 *) echo " ";;
2927                                 esac
2928                                 ;;
2929                         esac
2930                         ;;
2931                 esac
2932                 ;;
2933         esac
2934 done
2935 cd UU
2936 ans="$value"
2937 rp="$orig_rp"
2938 dflt="$orig_dflt"
2939 rm -f getfile.ok
2940 EOSC
2941
2942 : determine root of directory hierarchy where package will be installed.
2943 case "$prefix" in
2944 '')
2945         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2946         ;;
2947 *)
2948         dflt="$prefix"
2949         ;;
2950 esac
2951 $cat <<EOM
2952
2953 By default, $package will be installed in $dflt/bin, manual
2954 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2955 all installation directories. Typically set to /usr/local, but you
2956 may choose /usr if you wish to install $package among your system
2957 binaries. If you wish to have binaries under /bin but manual pages
2958 under /usr/local/man, that's ok: you will be prompted separately
2959 for each of the installation directories, the prefix being only used
2960 to set the defaults.
2961
2962 EOM
2963 fn=d~
2964 rp='Installation prefix to use?'
2965 . ./getfile
2966 oldprefix=''
2967 case "$prefix" in
2968 '') ;;
2969 *)
2970         case "$ans" in
2971         "$prefix") ;;
2972         *) oldprefix="$prefix";;
2973         esac
2974         ;;
2975 esac
2976 prefix="$ans"
2977 prefixexp="$ansexp"
2978
2979 : set the prefixit variable, to compute a suitable default value
2980 prefixit='case "$3" in
2981 ""|none)
2982         case "$oldprefix" in
2983         "") eval "$1=\"\$$2\"";;
2984         *)
2985                 case "$3" in
2986                 "") eval "$1=";;
2987                 none)
2988                         eval "tp=\"\$$2\"";
2989                         case "$tp" in
2990                         ""|" ") eval "$1=\"\$$2\"";;
2991                         *) eval "$1=";;
2992                         esac;;
2993                 esac;;
2994         esac;;
2995 *)
2996         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2997         case "$tp" in
2998         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2999         /*-$oldprefix/*|\~*-$oldprefix/*)
3000                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3001         *) eval "$1=\"\$$2\"";;
3002         esac;;
3003 esac'
3004
3005 : set the base revision
3006 baserev=5.0
3007
3008 : get the patchlevel
3009 echo " "
3010 echo "Getting the current patchlevel..." >&4
3011 if $test -r $rsrc/patchlevel.h;then
3012         patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
3013         subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3014 else
3015         patchlevel=0
3016         subversion=0
3017 fi
3018 $echo $n "(You have $package" $c
3019 case "$package" in
3020 "*$baserev")    ;;
3021 *)              $echo $n " $baserev" $c ;;
3022 esac
3023 $echo $n " patchlevel $patchlevel" $c
3024 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3025 echo ".)"
3026
3027 if test 0 -eq "$subversion"; then
3028         version=`LC_ALL=C; export LC_ALL; \
3029                  echo $baserev $patchlevel | \
3030                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3031 else
3032         version=`LC_ALL=C; export LC_ALL; \
3033                  echo $baserev $patchlevel $subversion | \
3034                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3035 fi
3036 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3037 if test "$subversion" -lt 50; then
3038         apiversion=`LC_ALL=C; export LC_ALL; \
3039                  LANGUAGE=C; export LANGUAGE; \
3040                  echo $baserev $patchlevel | \
3041                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3042 else
3043         apiversion="$version"
3044 fi
3045
3046 : determine where private library files go
3047 : Usual default is /usr/local/lib/perl5/$version.
3048 : Also allow things like /opt/perl/lib/$version, since 
3049 : /opt/perl/lib/perl5... would be redundant.
3050 case "$prefix" in
3051 *perl*) set dflt privlib lib/$version ;;
3052 *)       set dflt privlib lib/$package/$version ;;
3053 esac
3054 eval $prefixit
3055 $cat <<EOM
3056
3057 There are some auxiliary files for $package that need to be put into a
3058 private library directory that is accessible by everyone.
3059
3060 EOM
3061 fn=d~+
3062 rp='Pathname where the private library files will reside?'
3063 . ./getfile
3064 if $test "X$privlibexp" != "X$ansexp"; then
3065         installprivlib=''
3066 fi
3067 privlib="$ans"
3068 privlibexp="$ansexp"
3069 if $afs; then
3070         $cat <<EOM
3071
3072 Since you are running AFS, I need to distinguish the directory in which
3073 private files reside from the directory in which they are installed (and from
3074 which they are presumably copied to the former directory by occult means).
3075
3076 EOM
3077         case "$installprivlib" in
3078         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3079         *) dflt="$installprivlib";;
3080         esac
3081         fn=de~
3082         rp='Where will private files be installed?'
3083         . ./getfile
3084         installprivlib="$ans"
3085 else
3086         installprivlib="$privlibexp"
3087 fi
3088
3089 : set the prefixup variable, to restore leading tilda escape
3090 prefixup='case "$prefixexp" in
3091 "$prefix") ;;
3092 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3093 esac'
3094
3095 : determine where public architecture dependent libraries go
3096 set archlib archlib
3097 eval $prefixit
3098 : privlib default is /usr/local/lib/$package/$version
3099 : archlib default is /usr/local/lib/$package/$version/$archname
3100 : privlib may have an optional trailing /share.
3101 tdflt=`echo $privlib | $sed 's,/share$,,'`
3102 tdflt=$tdflt/$archname
3103 case "$archlib" in
3104 '')     dflt=$tdflt
3105         ;;
3106 *)      dflt="$archlib"
3107     ;;
3108 esac
3109 cat <<EOM
3110
3111 $spackage contains architecture-dependent library files.  If you are
3112 sharing libraries in a heterogeneous environment, you might store
3113 these files in a separate location.  Otherwise, you can just include
3114 them with the rest of the public library files.
3115
3116 EOM
3117 fn=d+~
3118 rp='Where do you want to put the public architecture-dependent libraries?'
3119 . ./getfile
3120 archlib="$ans"
3121 archlibexp="$ansexp"
3122
3123 if $afs; then
3124         $cat <<EOM
3125
3126 Since you are running AFS, I need to distinguish the directory in
3127 which architecture-dependent library files reside from the directory
3128 in which they are installed (and from which they are presumably copied
3129 to the former directory by occult means).
3130
3131 EOM
3132         case "$installarchlib" in
3133         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3134         *) dflt="$installarchlib";;
3135         esac
3136         fn=de~
3137         rp='Where will architecture-dependent library files be installed?'
3138         . ./getfile
3139         installarchlib="$ans"
3140 else
3141         installarchlib="$archlibexp"
3142 fi
3143 if $test X"$archlib" = X"$privlib"; then
3144         d_archlib="$undef"
3145 else
3146         d_archlib="$define"
3147 fi
3148
3149 : make some quick guesses about what we are up against
3150 echo " "
3151 $echo $n "Hmm...  $c"
3152 echo exit 1 >bsd
3153 echo exit 1 >usg
3154 echo exit 1 >v7
3155 echo exit 1 >osf1
3156 echo exit 1 >eunice
3157 echo exit 1 >xenix
3158 echo exit 1 >venix
3159 echo exit 1 >os2
3160 d_bsd="$undef"
3161 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3162 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3163 then
3164         echo "Looks kind of like an OSF/1 system, but we'll see..."
3165         echo exit 0 >osf1
3166 elif test `echo abc | tr a-z A-Z` = Abc ; then
3167         xxx=`./loc addbib blurfl $pth`
3168         if $test -f $xxx; then
3169         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3170                 echo exit 0 >bsd
3171                 echo exit 0 >usg
3172         else
3173                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3174                         echo "Looks kind of like an extended USG system, but we'll see..."
3175                 else
3176                         echo "Looks kind of like a USG system, but we'll see..."
3177                 fi
3178                 echo exit 0 >usg
3179         fi
3180 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3181         echo "Looks kind of like a BSD system, but we'll see..."
3182         d_bsd="$define"
3183         echo exit 0 >bsd
3184 else
3185         echo "Looks kind of like a Version 7 system, but we'll see..."
3186         echo exit 0 >v7
3187 fi
3188 case "$eunicefix" in
3189 *unixtovms*)
3190         $cat <<'EOI'
3191 There is, however, a strange, musty smell in the air that reminds me of
3192 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3193 EOI
3194         echo exit 0 >eunice
3195         d_eunice="$define"
3196 : it so happens the Eunice I know will not run shell scripts in Unix format
3197         ;;
3198 *)
3199         echo " "
3200         echo "Congratulations.  You aren't running Eunice."
3201         d_eunice="$undef"
3202         ;;
3203 esac
3204 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3205 case "$p_" in
3206 :) ;;
3207 *)
3208         $cat <<'EOI'
3209 I have the feeling something is not exactly right, however...don't tell me...
3210 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3211 EOI
3212         echo exit 0 >os2
3213         ;;
3214 esac
3215 if test -f /xenix; then
3216         echo "Actually, this looks more like a XENIX system..."
3217         echo exit 0 >xenix
3218         d_xenix="$define"
3219 else
3220         echo " "
3221         echo "It's not Xenix..."
3222         d_xenix="$undef"
3223 fi
3224 chmod +x xenix
3225 $eunicefix xenix
3226 if test -f /venix; then
3227         echo "Actually, this looks more like a VENIX system..."
3228         echo exit 0 >venix
3229 else
3230         echo " "
3231         if ./xenix; then
3232                 : null
3233         else
3234                 echo "Nor is it Venix..."
3235         fi
3236 fi
3237 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3238 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3239 $rm -f foo
3240
3241 : see if setuid scripts can be secure
3242 $cat <<EOM
3243
3244 Some kernels have a bug that prevents setuid #! scripts from being
3245 secure.  Some sites have disabled setuid #! scripts because of this.
3246
3247 First let's decide if your kernel supports secure setuid #! scripts.
3248 (If setuid #! scripts would be secure but have been disabled anyway,
3249 don't say that they are secure if asked.)
3250
3251 EOM
3252
3253 val="$undef"
3254 if $test -d /dev/fd; then
3255         echo "#!$ls" >reflect
3256         chmod +x,u+s reflect
3257         ./reflect >flect 2>&1
3258         if $contains "/dev/fd" flect >/dev/null; then
3259                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3260                 val="$define"
3261         else
3262                 $cat <<EOM
3263 If you are not sure if they are secure, I can check but I'll need a
3264 username and password different from the one you are using right now.
3265 If you don't have such a username or don't want me to test, simply
3266 enter 'none'.
3267
3268 EOM
3269                 rp='Other username to test security of setuid scripts with?'
3270                 dflt='none'
3271                 . ./myread
3272                 case "$ans" in
3273                 n|none)
3274                         case "$d_suidsafe" in
3275                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3276                                 dflt=n;;
3277                         "$undef")
3278                                 echo "Well, the $hint value is *not* secure." >&4
3279                                 dflt=n;;
3280                         *)      echo "Well, the $hint value *is* secure." >&4
3281                                 dflt=y;;
3282                         esac
3283                         ;;
3284                 *)
3285                         $rm -f reflect flect
3286                         echo "#!$ls" >reflect
3287                         chmod +x,u+s reflect
3288                         echo >flect
3289                         chmod a+w flect
3290                         echo '"su" will (probably) prompt you for '"$ans's password."
3291                         su $ans -c './reflect >flect'
3292                         if $contains "/dev/fd" flect >/dev/null; then
3293                                 echo "Okay, it looks like setuid scripts are secure." >&4
3294                                 dflt=y
3295                         else
3296                                 echo "I don't think setuid scripts are secure." >&4
3297                                 dflt=n
3298                         fi
3299                         ;;
3300                 esac
3301                 rp='Does your kernel have *secure* setuid scripts?'
3302                 . ./myread
3303                 case "$ans" in
3304                 [yY]*)  val="$define";;
3305                 *)      val="$undef";;
3306                 esac
3307         fi
3308 else
3309         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3310         echo "(That's for file descriptors, not floppy disks.)"
3311         val="$undef"
3312 fi
3313 set d_suidsafe
3314 eval $setvar
3315
3316 $rm -f reflect flect
3317
3318 : now see if they want to do setuid emulation
3319 echo " "
3320 val="$undef"
3321 case "$d_suidsafe" in
3322 "$define")
3323         val="$undef"
3324         echo "No need to emulate SUID scripts since they are secure here." >& 4
3325         ;;
3326 *)
3327         $cat <<EOM
3328 Some systems have disabled setuid scripts, especially systems where
3329 setuid scripts cannot be secure.  On systems where setuid scripts have
3330 been disabled, the setuid/setgid bits on scripts are currently
3331 useless.  It is possible for $package to detect those bits and emulate
3332 setuid/setgid in a secure fashion.  This emulation will only work if
3333 setuid scripts have been disabled in your kernel.
3334
3335 EOM
3336         case "$d_dosuid" in
3337         "$define") dflt=y ;;
3338         *) dflt=n ;;
3339         esac
3340         rp="Do you want to do setuid/setgid emulation?"
3341         . ./myread
3342         case "$ans" in
3343         [yY]*)  val="$define";;
3344         *)      val="$undef";;
3345         esac
3346         ;;
3347 esac
3348 set d_dosuid
3349 eval $setvar
3350
3351 : determine where manual pages are on this system
3352 echo " "
3353 case "$sysman" in
3354 '') 
3355         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3356         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3357         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3358         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3359         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3360         sysman=`./loc . /usr/man/man1 $syspath`
3361         ;;
3362 esac
3363 if $test -d "$sysman"; then
3364         echo "System manual is in $sysman." >&4
3365 else
3366         echo "Could not find manual pages in source form." >&4
3367 fi
3368
3369 : see what memory models we can support
3370 case "$models" in
3371 '')
3372         $cat >pdp11.c <<'EOP'
3373 int main() {
3374 #ifdef pdp11
3375         exit(0);
3376 #else
3377         exit(1);
3378 #endif
3379 }
3380 EOP
3381         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3382         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3383                 dflt='unsplit split'
3384         else
3385                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3386                 case "$tans" in
3387                 X) dflt='none';;
3388                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3389                                 dflt='small'
3390                         else
3391                                 dflt=''
3392                         fi
3393                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3394                                 dflt="$dflt medium"
3395                         fi
3396                         if $test -d /lib/large || $test -d /usr/lib/large; then
3397                                 dflt="$dflt large"
3398                         fi
3399                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3400                                 dflt="$dflt huge"
3401                         fi
3402                 esac
3403         fi;;
3404 *) dflt="$models";;
3405 esac
3406 $cat <<EOM
3407  
3408 Some systems have different model sizes.  On most systems they are called
3409 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3410 split.  If your system doesn't support different memory models, say "none".
3411 If you wish to force everything to one memory model, say "none" here and
3412 put the appropriate flags later when it asks you for other cc and ld flags.
3413 Venix systems may wish to put "none" and let the compiler figure things out.
3414 (In the following question multiple model names should be space separated.)
3415
3416 The default for most systems is "none".
3417
3418 EOM
3419 rp="Which memory models are supported?"
3420 . ./myread
3421 models="$ans"
3422
3423 case "$models" in
3424 none)
3425         small=''
3426         medium=''
3427         large=''
3428         huge=''
3429         unsplit=''
3430         split=''
3431         ;;
3432 *split)
3433         case "$split" in
3434         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3435                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3436                         dflt='-i'
3437                 else
3438                         dflt='none'
3439                 fi;;
3440         *) dflt="$split";;
3441         esac
3442         rp="What flag indicates separate I and D space?"
3443         . ./myread
3444         tans="$ans"
3445         case "$tans" in
3446         none) tans='';;
3447         esac
3448         split="$tans"
3449         unsplit='';;
3450 *large*|*small*|*medium*|*huge*)
3451         case "$models" in
3452         *large*)
3453                 case "$large" in
3454                 '') dflt='-Ml';;
3455                 *) dflt="$large";;
3456                 esac
3457         rp="What flag indicates large model?"
3458         . ./myread
3459         tans="$ans"
3460         case "$tans" in
3461         none) tans='';
3462         esac
3463         large="$tans";;
3464         *) large='';;
3465         esac
3466         case "$models" in
3467         *huge*) case "$huge" in
3468                 '') dflt='-Mh';;
3469                 *) dflt="$huge";;
3470                 esac
3471                 rp="What flag indicates huge model?"
3472                 . ./myread
3473                 tans="$ans"
3474                 case "$tans" in
3475                 none) tans='';
3476                 esac
3477                 huge="$tans";;
3478         *) huge="$large";;
3479         esac
3480         case "$models" in
3481         *medium*) case "$medium" in
3482                 '') dflt='-Mm';;
3483                 *) dflt="$medium";;
3484                 esac
3485                 rp="What flag indicates medium model?"
3486                 . ./myread
3487                 tans="$ans"
3488                 case "$tans" in
3489                 none) tans='';
3490                 esac
3491                 medium="$tans";;
3492         *) medium="$large";;
3493         esac
3494         case "$models" in
3495         *small*) case "$small" in
3496                 '') dflt='none';;
3497                 *) dflt="$small";;
3498                 esac
3499                 rp="What flag indicates small model?"
3500                 . ./myread
3501                 tans="$ans"
3502                 case "$tans" in
3503                 none) tans='';
3504                 esac
3505                 small="$tans";;
3506         *) small='';;
3507         esac
3508         ;;
3509 *)
3510         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3511         ;;
3512 esac
3513 $rm -f pdp11.* pdp11
3514
3515 : see if we need a special compiler
3516 echo " "
3517 if ./usg; then
3518         case "$cc" in
3519         '') case "$Mcc" in
3520                 /*) dflt='Mcc';;
3521                 *) case "$large" in
3522                         -M*) dflt='cc';;
3523                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3524                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3525                                                 dflt='cc'
3526                                         else
3527                                                 dflt='cc -M'
3528                                         fi
3529                                 else
3530                                         dflt='cc'
3531                                 fi;;
3532                         esac;;
3533                 esac;;
3534         *)  dflt="$cc";;
3535         esac
3536         case "$dflt" in
3537         *M*)    $cat <<'EOM'
3538 On some older systems the default C compiler will not resolve multiple global
3539 references that happen to have the same name.  On some such systems the "Mcc"
3540 command may be used to force these to be resolved.  On other systems a "cc -M"
3541 command is required.  (Note that the -M flag on other systems indicates a
3542 memory model to use!) If you have the Gnu C compiler, you might wish to use
3543 that instead.
3544
3545 EOM
3546         ;;
3547         esac
3548         rp="Use which C compiler?"
3549         . ./myread
3550         cc="$ans"
3551 else
3552         case "$cc" in
3553         '') dflt=cc;;
3554         *) dflt="$cc";;
3555         esac
3556         rp="Use which C compiler?"
3557         . ./myread
3558         cc="$ans"
3559 fi
3560 : Look for a hint-file generated 'call-back-unit'.  Now that the
3561 : user has specified the compiler, we may need to set or change some
3562 : other defaults.
3563 if $test -f cc.cbu; then
3564     . ./cc.cbu
3565 fi
3566 echo " "
3567 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3568 $cat >gccvers.c <<EOM
3569 #include <stdio.h>
3570 int main() {
3571 #ifdef __GNUC__
3572 #ifdef __VERSION__
3573         printf("%s\n", __VERSION__);
3574 #else
3575         printf("%s\n", "1");
3576 #endif
3577 #endif
3578         exit(0);
3579 }
3580 EOM
3581 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3582         gccversion=`./gccvers`
3583         case "$gccversion" in
3584         '') echo "You are not using GNU cc." ;;
3585         *)  echo "You are using GNU cc $gccversion." ;;
3586         esac
3587 else
3588         echo " "
3589         echo "*** WHOA THERE!!! ***" >&4
3590         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3591         case "$knowitall" in
3592         '')
3593         echo "    You'd better start hunting for one and let me know about it." >&4
3594                 exit 1
3595                 ;;
3596         esac
3597 fi
3598 $rm -f gccvers*
3599 case "$gccversion" in
3600 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3601 esac
3602
3603 : What should the include directory be ?
3604 echo " "
3605 $echo $n "Hmm...  $c"
3606 dflt='/usr/include'
3607 incpath=''
3608 mips_type=''
3609 if $test -f /bin/mips && /bin/mips; then
3610         echo "Looks like a MIPS system..."
3611         $cat >usr.c <<'EOCP'
3612 #ifdef SYSTYPE_BSD43
3613 /bsd43
3614 #endif
3615 EOCP
3616         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3617                 dflt='/bsd43/usr/include'
3618                 incpath='/bsd43'
3619                 mips_type='BSD 4.3'
3620         else
3621                 mips_type='System V'
3622         fi
3623         $rm -f usr.c usr.out
3624         echo "and you're compiling with the $mips_type compiler and libraries."
3625         xxx_prompt=y
3626         echo "exit 0" >mips
3627 else
3628         echo "Doesn't look like a MIPS system."
3629         xxx_prompt=n
3630         echo "exit 1" >mips
3631 fi
3632 chmod +x mips
3633 $eunicefix mips
3634 case "$usrinc" in
3635 '') ;;
3636 *) dflt="$usrinc";;
3637 esac
3638 case "$xxx_prompt" in
3639 y)      fn=d/
3640         echo " "
3641         rp='Where are the include files you want to use?'
3642         . ./getfile
3643         usrinc="$ans"
3644         ;;
3645 *)      usrinc="$dflt"
3646         ;;
3647 esac
3648
3649 : see how we invoke the C preprocessor
3650 echo " "
3651 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3652 cat <<'EOT' >testcpp.c
3653 #define ABC abc
3654 #define XYZ xyz
3655 ABC.XYZ
3656 EOT
3657 cd ..
3658 if test ! -f cppstdin; then
3659         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3660 else
3661         echo "Keeping your $hint cppstdin wrapper."
3662 fi
3663 chmod 755 cppstdin
3664 wrapper=`pwd`/cppstdin
3665 ok='false'
3666 cd UU
3667
3668 if $test "X$cppstdin" != "X" && \
3669         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3670         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3671 then
3672         echo "You used to use $cppstdin $cppminus so we'll use that again."
3673         case "$cpprun" in
3674         '') echo "But let's see if we can live without a wrapper..." ;;
3675         *)
3676                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3677                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3678                 then
3679                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3680                         ok='true'
3681                 else
3682                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3683                 fi
3684                 ;;
3685         esac
3686 else
3687         case "$cppstdin" in
3688         '') ;;
3689         *)
3690                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3691                 ;;
3692         esac
3693 fi
3694
3695 if $ok; then
3696         : nothing
3697 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3698         $cc -E <testcpp.c >testcpp.out 2>&1; \
3699         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3700         echo "Yup, it does."
3701         x_cpp="$cc -E"
3702         x_minus='';
3703 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3704         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3705         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3706         echo "Yup, it does."
3707         x_cpp="$cc -E"
3708         x_minus='-';
3709 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3710         $cc -P <testcpp.c >testcpp.out 2>&1; \
3711         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3712         echo "Yipee, that works!"
3713         x_cpp="$cc -P"
3714         x_minus='';
3715 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3716         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3717         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3718         echo "At long last!"
3719         x_cpp="$cc -P"
3720         x_minus='-';
3721 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3722         $cpp <testcpp.c >testcpp.out 2>&1; \
3723         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3724         echo "It works!"
3725         x_cpp="$cpp"
3726         x_minus='';
3727 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3728         $cpp - <testcpp.c >testcpp.out 2>&1; \
3729         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3730         echo "Hooray, it works!  I was beginning to wonder."
3731         x_cpp="$cpp"
3732         x_minus='-';
3733 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3734         $wrapper <testcpp.c >testcpp.out 2>&1; \
3735         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3736         x_cpp="$wrapper"
3737         x_minus=''
3738         echo "Eureka!"
3739 else
3740         dflt=''
3741         rp="No dice.  I can't find a C preprocessor.  Name one:"
3742         . ./myread
3743         x_cpp="$ans"
3744         x_minus=''
3745         $x_cpp <testcpp.c >testcpp.out 2>&1
3746         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3747                 echo "OK, that will do." >&4
3748         else
3749 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3750                 exit 1
3751         fi
3752 fi
3753
3754 case "$ok" in
3755 false)
3756         cppstdin="$x_cpp"
3757         cppminus="$x_minus"
3758         cpprun="$x_cpp"
3759         cpplast="$x_minus"
3760         set X $x_cpp
3761         shift
3762         case "$1" in
3763         "$cpp")
3764                 echo "Perhaps can we force $cc -E using a wrapper..."
3765                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3766                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3767                 then
3768                         echo "Yup, we can."
3769                         cppstdin="$wrapper"
3770                         cppminus='';
3771                 else
3772                         echo "Nope, we'll have to live without it..."
3773                 fi
3774                 ;;
3775         esac
3776         case "$cpprun" in
3777         "$wrapper")
3778                 cpprun=''
3779                 cpplast=''
3780                 ;;
3781         esac
3782         ;;
3783 esac
3784
3785 case "$cppstdin" in
3786 "$wrapper"|'cppstdin') ;;
3787 *) $rm -f $wrapper;;
3788 esac
3789 $rm -f testcpp.c testcpp.out
3790
3791 : Set private lib path
3792 case "$plibpth" in
3793 '') if ./mips; then
3794                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3795         fi;;
3796 esac
3797 case "$libpth" in
3798 ' ') dlist='';;
3799 '') dlist="$loclibpth $plibpth $glibpth";;
3800 *) dlist="$libpth";;
3801 esac
3802
3803 : Now check and see which directories actually exist, avoiding duplicates
3804 libpth=''
3805 for xxx in $dlist
3806 do
3807     if $test -d $xxx; then
3808                 case " $libpth " in
3809                 *" $xxx "*) ;;
3810                 *) libpth="$libpth $xxx";;
3811                 esac
3812     fi
3813 done
3814 $cat <<'EOM'
3815
3816 Some systems have incompatible or broken versions of libraries.  Among
3817 the directories listed in the question below, please remove any you
3818 know not to be holding relevant libraries, and add any that are needed.
3819 Say "none" for none.
3820
3821 EOM
3822 case "$libpth" in
3823 '') dflt='none';;
3824 *)
3825         set X $libpth
3826         shift
3827         dflt=${1+"$@"}
3828         ;;
3829 esac
3830 rp="Directories to use for library searches?"
3831 . ./myread
3832 case "$ans" in
3833 none) libpth=' ';;
3834 *) libpth="$ans";;
3835 esac
3836
3837 : compute shared library extension
3838 case "$so" in
3839 '')
3840         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3841                 dflt='sl'
3842         else
3843                 dflt='so'
3844         fi
3845         ;;
3846 *) dflt="$so";;
3847 esac
3848 $cat <<EOM
3849
3850 On some systems, shared libraries may be available.  Answer 'none' if
3851 you want to suppress searching of shared libraries for the remaining
3852 of this configuration.
3853
3854 EOM
3855 rp='What is the file extension used for shared libraries?'
3856 . ./myread
3857 so="$ans"
3858
3859 : Define several unixisms.
3860 : Hints files or command line option can be used to override them.
3861 : The convoluted testing is in case hints files set either the old
3862 : or the new name.
3863 case "$_exe" in
3864 '')     case "$exe_ext" in
3865     '') ;;
3866         *)      _exe="$exe_ext" ;;
3867         esac
3868         ;;
3869 esac
3870 case "$_a" in
3871 '')     case "$lib_ext" in
3872     '') _a='.a';;
3873         *)      _a="$lib_ext" ;;
3874         esac
3875         ;;
3876 esac
3877 case "$_o" in
3878 '') case "$obj_ext" in
3879         '')     _o='.o';;
3880         *)      _o="$obj_ext";;
3881         esac
3882         ;;
3883 esac
3884 case "$p_" in
3885 '') case "$path_sep" in
3886         '')     p_=':';;
3887         *)      p_="$path_sep";;
3888         esac
3889         ;;
3890 esac
3891 exe_ext=$_exe
3892 lib_ext=$_a
3893 obj_ext=$_o
3894 path_sep=$p_
3895
3896 : Which makefile gets called first.  This is used by make depend.
3897 case "$firstmakefile" in
3898 '') firstmakefile='makefile';;
3899 esac
3900
3901 : Looking for optional libraries
3902 echo " "
3903 echo "Checking for optional libraries..." >&4
3904 case "$libs" in
3905 ' '|'') dflt='';;
3906 *) dflt="$libs";;
3907 esac
3908 case "$libswanted" in
3909 '') libswanted='c_s';;
3910 esac
3911 for thislib in $libswanted; do
3912         
3913         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3914                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3915                 echo "Found -l$thislib (shared)."
3916                 case " $dflt " in
3917                 *"-l$thislib "*);;
3918                 *) dflt="$dflt -l$thislib";;
3919                 esac
3920         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3921                 echo "Found -l$thislib (shared)."
3922                 case " $dflt " in
3923                 *"-l$thislib "*);;
3924                 *) dflt="$dflt -l$thislib";;
3925                 esac
3926         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3927                 echo "Found -l$thislib."
3928                 case " $dflt " in
3929                 *"-l$thislib "*);;
3930                 *) dflt="$dflt -l$thislib";;
3931                 esac
3932         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3933                 echo "Found -l$thislib."
3934                 case " $dflt " in
3935                 *"-l$thislib "*);;
3936                 *) dflt="$dflt -l$thislib";;
3937                 esac
3938         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3939                 echo "Found -l${thislib}_s."
3940                 case " $dflt " in
3941                 *"-l$thislib "*);;
3942                 *) dflt="$dflt -l${thislib}_s";;
3943                 esac
3944         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3945                 echo "Found -l$thislib."
3946                 case " $dflt " in
3947                 *"-l$thislib "*);;
3948                 *) dflt="$dflt -l$thislib";;
3949                 esac
3950         else
3951                 echo "No -l$thislib."
3952         fi
3953 done
3954 set X $dflt
3955 shift
3956 dflt="$*"
3957 case "$libs" in
3958 '') dflt="$dflt";;
3959 *) dflt="$libs";;
3960 esac
3961 case "$dflt" in
3962 ' '|'') dflt='none';;
3963 esac
3964
3965 $cat <<EOM
3966  
3967 Some versions of Unix support shared libraries, which make executables smaller
3968 but make load time slightly longer.
3969
3970 On some systems, mostly System V Release 3's, the shared library is included
3971 by putting the option "-lc_s" as the last thing on the cc command line when
3972 linking.  Other systems use shared libraries by default.  There may be other
3973 libraries needed to compile $package on your machine as well.  If your system
3974 needs the "-lc_s" option, include it here.  Include any other special libraries
3975 here as well.  Say "none" for none.
3976 EOM
3977
3978 echo " "
3979 rp="Any additional libraries?"
3980 . ./myread
3981 case "$ans" in
3982 none) libs=' ';;
3983 *) libs="$ans";;
3984 esac
3985
3986 : determine optimize, if desired, or use for debug flag also
3987 case "$optimize" in
3988 ' '|$undef) dflt='none';;
3989 '') dflt='-O';;
3990 *) dflt="$optimize";;
3991 esac
3992 $cat <<EOH
3993
3994 Some C compilers have problems with their optimizers.  By default, $package
3995 compiles with the -O flag to use the optimizer.  Alternately, you might want
3996 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3997 systems).  Either flag can be specified here.  To use neither flag, specify
3998 the word "none".
3999
4000 EOH
4001 rp="What optimizer/debugger flag should be used?"
4002 . ./myread
4003 optimize="$ans"
4004 case "$optimize" in
4005 'none') optimize=" ";;
4006 esac
4007
4008 dflt=''
4009 : We will not override a previous value, but we might want to
4010 : augment a hint file
4011 case "$hint" in
4012 none|recommended)
4013         case "$gccversion" in
4014         1*) dflt='-fpcc-struct-return' ;;
4015         esac
4016         case "$optimize" in
4017         *-g*) dflt="$dflt -DDEBUGGING";;
4018         esac
4019         case "$gccversion" in
4020         2*) if test -d /etc/conf/kconfig.d &&
4021                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4022                 then
4023                         dflt="$dflt -posix"
4024                 fi
4025                 ;;
4026         esac
4027         ;;
4028 esac
4029
4030 case "$mips_type" in
4031 *BSD*|'') inclwanted="$locincpth $usrinc";;
4032 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4033 esac
4034 for thisincl in $inclwanted; do
4035         if $test -d $thisincl; then
4036                 if $test x$thisincl != x$usrinc; then
4037                         case "$dflt" in
4038                         *$thisincl*);;
4039                         *) dflt="$dflt -I$thisincl";;
4040                         esac
4041                 fi
4042         fi
4043 done
4044
4045 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4046         xxx=true;
4047 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4048         xxx=true;
4049 else
4050         xxx=false;
4051 fi;
4052 if $xxx; then
4053         case "$dflt" in
4054         *$2*);;
4055         *) dflt="$dflt -D$2";;
4056         esac;
4057 fi'
4058
4059 if ./osf1; then
4060         set signal.h __LANGUAGE_C__; eval $inctest
4061 else
4062         set signal.h LANGUAGE_C; eval $inctest
4063 fi
4064
4065 case "$hint" in
4066 none|recommended) dflt="$ccflags $dflt" ;;
4067 *) dflt="$ccflags";;
4068 esac
4069
4070 case "$dflt" in
4071 ''|' ') dflt=none;;
4072 esac
4073 $cat <<EOH
4074
4075 Your C compiler may want other flags.  For this question you should include
4076 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4077 but you should NOT include libraries or ld flags like -lwhatever.  If you
4078 want $package to honor its debug switch, you should include -DDEBUGGING here.
4079 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4080
4081 To use no flags, specify the word "none".
4082
4083 EOH
4084 set X $dflt
4085 shift
4086 dflt=${1+"$@"}
4087 rp="Any additional cc flags?"
4088 . ./myread
4089 case "$ans" in
4090 none) ccflags='';;
4091 *) ccflags="$ans";;
4092 esac
4093
4094 : the following weeds options from ccflags that are of no interest to cpp
4095 cppflags="$ccflags"
4096 case "$gccversion" in
4097 1*) cppflags="$cppflags -D__GNUC__"
4098 esac
4099 case "$mips_type" in
4100 '');;
4101 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4102 esac
4103 case "$cppflags" in
4104 '');;
4105 *)
4106         echo " "
4107         echo "Let me guess what the preprocessor flags are..." >&4
4108         set X $cppflags
4109         shift
4110         cppflags=''
4111         $cat >cpp.c <<'EOM'
4112 #define BLURFL foo
4113
4114 BLURFL xx LFRULB
4115 EOM
4116         previous=''
4117         for flag in $*
4118         do
4119                 case "$flag" in
4120                 -*) ftry="$flag";;
4121                 *) ftry="$previous $flag";;
4122                 esac
4123                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4124                         >cpp1.out 2>/dev/null && \
4125                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4126                         >cpp2.out 2>/dev/null && \
4127                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4128                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4129                 then
4130                         cppflags="$cppflags $ftry"
4131                         previous=''
4132                 else
4133                         previous="$flag"
4134                 fi
4135         done
4136         set X $cppflags
4137         shift
4138         cppflags=${1+"$@"}
4139         case "$cppflags" in
4140         *-*)  echo "They appear to be: $cppflags";;
4141         esac
4142         $rm -f cpp.c cpp?.out
4143         ;;
4144 esac
4145
4146 : flags used in final linking phase
4147 case "$ldflags" in
4148 '') if ./venix; then
4149                 dflt='-i -z'
4150         else
4151                 dflt=''
4152         fi
4153         case "$ccflags" in
4154         *-posix*) dflt="$dflt -posix" ;;
4155         esac
4156         ;;
4157 *) dflt="$ldflags";;
4158 esac
4159
4160 : Try to guess additional flags to pick up local libraries.
4161 for thislibdir in $libpth; do
4162         case " $loclibpth " in
4163         *" $thislibdir "*)
4164                 case "$dflt " in 
4165                 *"-L$thislibdir "*) ;;
4166                 *)  dflt="$dflt -L$thislibdir" ;;
4167                 esac
4168                 ;;
4169         esac
4170 done
4171
4172 case "$dflt" in
4173 '') dflt='none' ;;
4174 esac
4175
4176 $cat <<EOH
4177
4178 Your C linker may need flags.  For this question you should
4179 include -L/whatever and any other flags used by the C linker, but you
4180 should NOT include libraries like -lwhatever.
4181
4182 Make sure you include the appropriate -L/path flags if your C linker
4183 does not normally search all of the directories you specified above,
4184 namely
4185         $libpth
4186 To use no flags, specify the word "none".
4187
4188 EOH
4189
4190 rp="Any additional ld flags (NOT including libraries)?"
4191 . ./myread
4192 case "$ans" in
4193 none) ldflags='';;
4194 *) ldflags="$ans";;
4195 esac
4196 rmlist="$rmlist pdp11"
4197
4198 : coherency check
4199 echo " "
4200 echo "Checking your choice of C compiler and flags for coherency..." >&4
4201 $cat > try.c <<'EOF'
4202 #include <stdio.h>
4203 int main() { printf("Ok\n"); exit(0); }
4204 EOF
4205 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4206 shift
4207 $cat >try.msg <<'EOM'
4208 I've tried to compile and run the following simple program:
4209
4210 EOM
4211 $cat try.c >> try.msg
4212
4213 $cat >> try.msg <<EOM
4214
4215 I used the command:
4216
4217         $*
4218         ./try
4219
4220 and I got the following output:
4221
4222 EOM
4223 dflt=y
4224 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4225         if sh -c './try' >>try.msg 2>&1; then
4226                 xxx=`./try`
4227                 case "$xxx" in
4228                 "Ok") dflt=n ;;
4229                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4230                         case " $libs " in
4231                         *" -lsfio "*)
4232                                 cat >> try.msg <<'EOQS'
4233 If $libs contains -lsfio, and sfio is mis-configured, then it
4234 sometimes (apparently) runs and exits with a 0 status, but with no
4235 output!  It may have to do with sfio's use of _exit vs. exit.
4236
4237 EOQS
4238                                 rp="You have a big problem.  Shall I abort Configure"
4239                                 dflt=y
4240                                 ;;
4241                         esac
4242                         ;;
4243                 esac
4244         else
4245                 echo "The program compiled OK, but exited with status $?." >>try.msg
4246                 rp="You have a problem.  Shall I abort Configure"
4247                 dflt=y
4248         fi
4249 else
4250         echo "I can't compile the test program." >>try.msg
4251         rp="You have a BIG problem.  Shall I abort Configure"
4252         dflt=y
4253 fi
4254 case "$dflt" in
4255 y)
4256         $cat try.msg >&4
4257         case "$knowitall" in
4258         '')
4259                 echo "(The supplied flags or libraries might be incorrect.)"
4260                 ;;
4261         *) dflt=n;;
4262         esac
4263         echo " "
4264         . ./myread
4265         case "$ans" in
4266         n*|N*) ;;
4267         *)      echo "Ok.  Stopping Configure." >&4
4268                 exit 1
4269                 ;;
4270         esac
4271         ;;
4272 n) echo "OK, that should do.";;
4273 esac
4274 $rm -f try try.* core
4275
4276 : determine filename position in cpp output
4277 echo " "
4278 echo "Computing filename position in cpp output for #include directives..." >&4
4279 echo '#include <stdio.h>' > foo.c
4280 $cat >fieldn <<EOF
4281 $startsh
4282 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4283 $grep '^[       ]*#.*stdio\.h' | \
4284 while read cline; do
4285         pos=1
4286         set \$cline
4287         while $test \$# -gt 0; do
4288                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4289                         echo "\$pos"
4290                         exit 0
4291                 fi
4292                 shift
4293                 pos=\`expr \$pos + 1\`
4294         done
4295 done
4296 EOF
4297 chmod +x fieldn
4298 fieldn=`./fieldn`
4299 $rm -f foo.c fieldn
4300 case $fieldn in
4301 '') pos='???';;
4302 1) pos=first;;
4303 2) pos=second;;
4304 3) pos=third;;
4305 *) pos="${fieldn}th";;
4306 esac
4307 echo "Your cpp writes the filename in the $pos field of the line."
4308
4309 : locate header file
4310 $cat >findhdr <<EOF
4311 $startsh
4312 wanted=\$1
4313 name=''
4314 if test -f $usrinc/\$wanted; then
4315         echo "$usrinc/\$wanted"
4316         exit 0
4317 fi
4318 awkprg='{ print \$$fieldn }'
4319 echo "#include <\$wanted>" > foo\$\$.c
4320 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4321 $grep "^[       ]*#.*\$wanted" | \
4322 while read cline; do
4323         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4324         case "\$name" in
4325         */\$wanted) echo "\$name"; exit 0;;
4326         *) name='';;
4327         esac;
4328 done;
4329 $rm -f foo\$\$.c;
4330 case "\$name" in
4331 '') exit 1;;
4332 esac
4333 EOF
4334 chmod +x findhdr
4335
4336 : define an alternate in-header-list? function
4337 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4338 cont=true; xxf="echo \"<\$1> found.\" >&4";
4339 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4340 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4341 esac;
4342 case $# in 4) instead=instead;; *) instead="at last";; esac;
4343 while $test "$cont"; do
4344         xxx=`./findhdr $1`
4345         var=$2; eval "was=\$$2";
4346         if $test "$xxx" && $test -r "$xxx";
4347         then eval $xxf;
4348         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4349                 cont="";
4350         else eval $xxnf;
4351         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4352         set $yyy; shift; shift; yyy=$@;
4353         case $# in 0) cont="";;
4354         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4355                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4356         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4357                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4358         esac;
4359 done;
4360 while $test "$yyy";
4361 do set $yyy; var=$2; eval "was=\$$2";
4362         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4363         set $yyy; shift; shift; yyy=$@;
4364 done'
4365
4366 : see if this is a malloc.h system
4367 set malloc.h i_malloc
4368 eval $inhdr
4369
4370 : see if stdlib is available
4371 set stdlib.h i_stdlib
4372 eval $inhdr
4373
4374 : determine which malloc to compile in
4375 echo " "
4376 case "$usemymalloc" in
4377 ''|[yY]*|true|$define)  dflt='y' ;;
4378 *)      dflt='n' ;;
4379 esac
4380 rp="Do you wish to attempt to use the malloc that comes with $package?"
4381 . ./myread
4382 usemymalloc="$ans"
4383 case "$ans" in
4384 y*|true)
4385         usemymalloc='y'
4386         mallocsrc='malloc.c'
4387         mallocobj="malloc$_o"
4388         d_mymalloc="$define"
4389         case "$libs" in
4390         *-lmalloc*)
4391                 : Remove malloc from list of libraries to use
4392                 echo "Removing unneeded -lmalloc from library list" >&4
4393                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4394                 shift
4395                 libs="$*"
4396                 echo "libs = $libs" >&4
4397                 ;;
4398         esac
4399         ;;
4400 *)
4401         usemymalloc='n'
4402         mallocsrc=''
4403         mallocobj=''
4404         d_mymalloc="$undef"
4405         ;;
4406 esac
4407
4408 : compute the return types of malloc and free
4409 echo " "
4410 $cat >malloc.c <<END
4411 #$i_malloc I_MALLOC
4412 #$i_stdlib I_STDLIB
4413 #include <stdio.h>
4414 #include <sys/types.h>
4415 #ifdef I_MALLOC
4416 #include <malloc.h>
4417 #endif
4418 #ifdef I_STDLIB
4419 #include <stdlib.h>
4420 #endif
4421 #ifdef TRY_MALLOC
4422 void *malloc();
4423 #endif
4424 #ifdef TRY_FREE
4425 void free();
4426 #endif
4427 END
4428 case "$malloctype" in
4429 '')
4430         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4431                 malloctype='void *'
4432         else
4433                 malloctype='char *'
4434         fi
4435         ;;
4436 esac
4437 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4438
4439 case "$freetype" in
4440 '')
4441         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4442                 freetype='void'
4443         else
4444                 freetype='int'
4445         fi
4446         ;;
4447 esac
4448 echo "Your system uses $freetype free(), it would seem." >&4
4449 $rm -f malloc.[co]
4450 : Cruising for prototypes
4451 echo " "
4452 echo "Checking out function prototypes..." >&4
4453 $cat >prototype.c <<'EOCP'
4454 int main(int argc, char *argv[]) {
4455         exit(0);}
4456 EOCP
4457 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4458         echo "Your C compiler appears to support function prototypes."
4459         val="$define"
4460 else
4461         echo "Your C compiler doesn't seem to understand function prototypes."
4462         val="$undef"
4463 fi
4464 set prototype
4465 eval $setvar
4466 $rm -f prototype*
4467
4468 case "$prototype" in
4469 "$define") ;;
4470 *)      ansi2knr='ansi2knr'
4471         echo " "
4472         cat <<EOM >&4
4473
4474 $me:  FATAL ERROR:
4475 This version of $package can only be compiled by a compiler that 
4476 understands function prototypes.  Unfortunately, your C compiler 
4477         $cc $ccflags
4478 doesn't seem to understand them.  Sorry about that.
4479
4480 If GNU cc is available for your system, perhaps you could try that instead.  
4481
4482 Eventually, we hope to support building Perl with pre-ANSI compilers.
4483 If you would like to help in that effort, please contact <perlbug@perl.org>.
4484
4485 Aborting Configure now.
4486 EOM
4487         exit 2
4488         ;;
4489 esac
4490
4491 : determine where public executables go
4492 echo " "
4493 set dflt bin bin
4494 eval $prefixit
4495 fn=d~
4496 rp='Pathname where the public executables will reside?'
4497 . ./getfile
4498 if $test "X$ansexp" != "X$binexp"; then
4499         installbin=''
4500 fi
4501 bin="$ans"
4502 binexp="$ansexp"
4503 if $afs; then
4504         $cat <<EOM
4505
4506 Since you are running AFS, I need to distinguish the directory in which
4507 executables reside from the directory in which they are installed (and from
4508 which they are presumably copied to the former directory by occult means).
4509
4510 EOM
4511         case "$installbin" in
4512         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4513         *) dflt="$installbin";;
4514         esac
4515         fn=de~
4516         rp='Where will public executables be installed?'
4517         . ./getfile
4518         installbin="$ans"
4519 else
4520         installbin="$binexp"
4521 fi
4522
4523 : determine whether to install perl also as /usr/bin/perl
4524
4525 echo " "
4526 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4527         $cat <<EOM
4528 Many scripts expect to perl to be installed as /usr/bin/perl.
4529 I can install the perl you are about to compile also as /usr/bin/perl
4530 (in addition to $installbin/perl).
4531 EOM
4532         case "$installusrbinperl" in
4533         "$undef"|[nN]*) dflt='n';;
4534         *)              dflt='y';;
4535         esac
4536         rp="Do you want to install perl as /usr/bin/perl?"
4537         . ./myread
4538         case "$ans" in
4539         [yY]*)  val="$define";;
4540         *)      val="$undef" ;;
4541         esac
4542 else
4543         val="$undef"
4544 fi
4545 set installusrbinperl
4546 eval $setvar
4547
4548 : define a shorthand compile call
4549 compile='
4550 mc_file=$1;
4551 shift;
4552 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4553 : define a shorthand compile call for compilations that should be ok.
4554 compile_ok='
4555 mc_file=$1;
4556 shift;
4557 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4558
4559 echo " "
4560 echo "Checking for GNU C Library..." >&4
4561 cat >gnulibc.c <<EOM
4562 #include <stdio.h>
4563 int main()
4564 {
4565 #ifdef __GLIBC__
4566     exit(0);
4567 #else
4568     exit(1);
4569 #endif
4570 }
4571 EOM
4572 set gnulibc
4573 if eval $compile_ok && ./gnulibc; then
4574         val="$define"
4575         echo "You are using the GNU C Library"
4576 else
4577         val="$undef"
4578         echo "You are not using the GNU C Library"
4579 fi
4580 $rm -f gnulibc*
4581 set d_gnulibc
4582 eval $setvar
4583
4584 : see if nm is to be used to determine whether a symbol is defined or not
4585 case "$usenm" in
4586 '')
4587         dflt=''
4588         case "$d_gnulibc" in
4589         "$define")
4590                 echo " "
4591                 echo "nm probably won't work on the GNU C Library." >&4
4592                 dflt=n
4593                 ;;
4594         esac
4595         case "$dflt" in
4596         '') 
4597                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4598                         echo " "
4599                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4600                         echo "'nm' won't be sufficient on this sytem." >&4
4601                         dflt=n
4602                 fi
4603                 ;;
4604         esac
4605         case "$dflt" in
4606         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4607                 if $test $dflt -gt 20; then
4608                         dflt=y
4609                 else
4610                         dflt=n
4611                 fi
4612                 ;;
4613         esac
4614         ;;
4615 *)
4616         case "$usenm" in
4617         true|$define) dflt=y;;
4618         *) dflt=n;;
4619         esac
4620         ;;
4621 esac
4622 $cat <<EOM
4623
4624 I can use $nm to extract the symbols from your C libraries. This
4625 is a time consuming task which may generate huge output on the disk (up
4626 to 3 megabytes) but that should make the symbols extraction faster. The
4627 alternative is to skip the 'nm' extraction part and to compile a small
4628 test program instead to determine whether each symbol is present. If
4629 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4630 this may be the best solution.
4631
4632 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4633
4634 EOM
4635 rp="Shall I use $nm to extract C symbols from the libraries?"
4636 . ./myread
4637 case "$ans" in
4638 [Nn]*) usenm=false;;
4639 *) usenm=true;;
4640 esac
4641
4642 runnm=$usenm
4643 case "$reuseval" in
4644 true) runnm=false;;
4645 esac
4646
4647 : nm options which may be necessary
4648 case "$nm_opt" in
4649 '') if $test -f /mach_boot; then
4650                 nm_opt=''       # Mach
4651         elif $test -d /usr/ccs/lib; then
4652                 nm_opt='-p'     # Solaris (and SunOS?)
4653         elif $test -f /dgux; then
4654                 nm_opt='-p'     # DG-UX
4655         elif $test -f /lib64/rld; then
4656                 nm_opt='-p'     # 64-bit Irix
4657         else
4658                 nm_opt=''
4659         fi;;
4660 esac
4661
4662 : nm options which may be necessary for shared libraries but illegal
4663 : for archive libraries.  Thank you, Linux.
4664 case "$nm_so_opt" in
4665 '')     case "$myuname" in
4666         *linux*)
4667                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4668                         nm_so_opt='--dynamic'
4669                 fi
4670                 ;;
4671         esac
4672         ;;
4673 esac
4674
4675 case "$runnm" in
4676 true)
4677 : get list of predefined functions in a handy place
4678 echo " "
4679 case "$libc" in
4680 '') libc=unknown
4681         case "$libs" in
4682         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4683         esac
4684         ;;
4685 esac
4686 libnames='';
4687 case "$libs" in
4688 '') ;;
4689 *)  for thislib in $libs; do
4690         case "$thislib" in
4691         -lc|-lc_s)
4692                 : Handle C library specially below.
4693                 ;;
4694         -l*)
4695                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4696                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4697                         :
4698                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4699                         :
4700                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4701                         :
4702                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4703                         :
4704                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4705                         :
4706                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4707                         :
4708                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4709                         :
4710                 else
4711                         try=''
4712                 fi
4713                 libnames="$libnames $try"
4714                 ;;
4715         *) libnames="$libnames $thislib" ;;
4716         esac
4717         done
4718         ;;
4719 esac
4720 xxx=normal
4721 case "$libc" in
4722 unknown)
4723         set /lib/libc.$so
4724         for xxx in $libpth; do
4725                 $test -r $1 || set $xxx/libc.$so
4726                 : The messy sed command sorts on library version numbers.
4727                 $test -r $1 || \
4728                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4729                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4730                                 h
4731                                 s/[0-9][0-9]*/0000&/g
4732                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4733                                 G
4734                                 s/\n/ /' | \
4735                          sort | $sed -e 's/^.* //'`
4736                 eval set \$$#
4737         done
4738         $test -r $1 || set /usr/ccs/lib/libc.$so
4739         $test -r $1 || set /lib/libsys_s$_a
4740         ;;
4741 *)
4742         set blurfl
4743         ;;
4744 esac
4745 if $test -r "$1"; then
4746         echo "Your (shared) C library seems to be in $1."
4747         libc="$1"
4748 elif $test -r /lib/libc && $test -r /lib/clib; then
4749         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4750         xxx=apollo
4751         libc='/lib/clib /lib/libc'
4752         if $test -r /lib/syslib; then
4753                 echo "(Your math library is in /lib/syslib.)"
4754                 libc="$libc /lib/syslib"
4755         fi
4756 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4757         echo "Your C library seems to be in $libc, as you said before."
4758 elif $test -r $incpath/usr/lib/libc$_a; then
4759         libc=$incpath/usr/lib/libc$_a;
4760         echo "Your C library seems to be in $libc.  That's fine."
4761 elif $test -r /lib/libc$_a; then
4762         libc=/lib/libc$_a;
4763         echo "Your C library seems to be in $libc.  You're normal."
4764 else
4765         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4766                 :
4767         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4768                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4769         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4770                 :
4771         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4772                 :
4773         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4774                 :
4775         else
4776                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4777         fi
4778         if $test -r "$tans"; then
4779                 echo "Your C library seems to be in $tans, of all places."
4780                 libc=$tans
4781         else
4782                 libc='blurfl'
4783         fi
4784 fi
4785 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4786         dflt="$libc"
4787         cat <<EOM
4788
4789 If the guess above is wrong (which it might be if you're using a strange
4790 compiler, or your machine supports multiple models), you can override it here.
4791
4792 EOM
4793 else
4794         dflt=''
4795         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4796         cat >&4 <<EOM
4797 I can't seem to find your C library.  I've looked in the following places:
4798
4799 EOM
4800         $sed 's/^/      /' libpath
4801         cat <<EOM
4802
4803 None of these seems to contain your C library. I need to get its name...
4804
4805 EOM
4806 fi
4807 fn=f
4808 rp='Where is your C library?'
4809 . ./getfile
4810 libc="$ans"
4811
4812 echo " "
4813 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4814 set X `cat libnames`
4815 shift
4816 xxx=files
4817 case $# in 1) xxx=file; esac
4818 echo "Extracting names from the following $xxx for later perusal:" >&4
4819 echo " "
4820 $sed 's/^/      /' libnames >&4
4821 echo " "
4822 $echo $n "This may take a while...$c" >&4
4823
4824 for file in $*; do
4825         case $file in
4826         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4827         *) $nm $nm_opt $file 2>/dev/null;;
4828         esac
4829 done >libc.tmp
4830
4831 $echo $n ".$c"
4832 $grep fprintf libc.tmp > libc.ptf
4833 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4834 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4835 xxx='[ADTSIW]'
4836 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4837         eval $xscan;\
4838         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4839                 eval $xrun
4840 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4841         eval $xscan;\
4842         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4843                 eval $xrun
4844 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4845         eval $xscan;\
4846         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4847                 eval $xrun
4848 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4849         eval $xscan;\
4850         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4851                 eval $xrun
4852 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4853         eval $xscan;\
4854         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4855                 eval $xrun
4856 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4857         eval $xscan;\
4858         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4859                 eval $xrun
4860 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4861                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4862         eval $xscan;\
4863         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4864                 eval $xrun
4865 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4866         eval $xscan;\
4867         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4868                 eval $xrun
4869 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4870         eval $xscan;\
4871         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4872                 eval $xrun
4873 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4874         eval $xscan;\
4875         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4876                 eval $xrun
4877 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4878         eval $xscan;\
4879         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4880                 eval $xrun
4881 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4882         eval $xscan;\
4883         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4884                 eval $xrun
4885 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4886         eval $xscan;\
4887         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4888                 eval $xrun
4889 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4890         eval $xscan;\
4891         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4892                 eval $xrun
4893 else
4894         $nm -p $* 2>/dev/null >libc.tmp
4895         $grep fprintf libc.tmp > libc.ptf
4896         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4897                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4898         then
4899                 nm_opt='-p'
4900                 eval $xrun
4901         else
4902                 echo " "
4903                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4904                 com=''
4905                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4906                         for thisname in $libnames $libc; do
4907                                 $ar t $thisname >>libc.tmp
4908                         done
4909                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4910                         echo "Ok." >&4
4911                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4912                         # Repeat libc to extract forwarders to DLL entries too
4913                         for thisname in $libnames $libc; do
4914                                 $ar tv $thisname >>libc.tmp
4915                                 # Revision 50 of EMX has bug in $ar.
4916                                 # it will not extract forwarders to DLL entries
4917                                 # Use emximp which will extract exactly them.
4918                                 emximp -o tmp.imp $thisname \
4919                                     2>/dev/null && \
4920                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4921                                     < tmp.imp >>libc.tmp
4922                                 $rm tmp.imp
4923                         done
4924                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4925                         echo "Ok." >&4
4926                 else
4927                         echo "$ar didn't seem to work right." >&4
4928                         echo "Maybe this is a Cray...trying bld instead..." >&4
4929                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4930                         then
4931                                 for thisname in $libnames; do
4932                                         bld t $libnames | \
4933                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4934                                         $ar t $thisname >>libc.tmp
4935                                 done
4936                                 echo "Ok." >&4
4937                         else
4938                                 echo "That didn't work either.  Giving up." >&4
4939                                 exit 1
4940                         fi
4941                 fi
4942         fi
4943 fi
4944 nm_extract="$com"
4945 if $test -f /lib/syscalls.exp; then
4946         echo " "
4947         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4948         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4949 fi
4950 ;;
4951 esac
4952 $rm -f libnames libpath
4953
4954 : see if dld is available
4955 set dld.h i_dld
4956 eval $inhdr
4957
4958 : is a C symbol defined?
4959 csym='tlook=$1;
4960 case "$3" in
4961 -v) tf=libc.tmp; tc=""; tdc="";;
4962 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4963 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4964 esac;
4965 tx=yes;
4966 case "$reuseval-$4" in
4967 true-) ;;
4968 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4969 esac;
4970 case "$tx" in
4971 yes)
4972         case "$runnm" in
4973         true)
4974                 if $contains $tlook $tf >/dev/null 2>&1;
4975                 then tval=true;
4976                 else tval=false;
4977                 fi;;
4978         *)
4979                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4980                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4981                 then tval=true;
4982                 else tval=false;
4983                 fi;
4984                 $rm -f t t.c;;
4985         esac;;
4986 *)
4987         case "$tval" in
4988         $define) tval=true;;
4989         *) tval=false;;
4990         esac;;
4991 esac;
4992 eval "$2=$tval"'
4993
4994 : define an is-in-libc? function
4995 inlibc='echo " "; td=$define; tu=$undef;
4996 sym=$1; var=$2; eval "was=\$$2";
4997 tx=yes;
4998 case "$reuseval$was" in
4999 true) ;;
5000 true*) tx=no;;
5001 esac;
5002 case "$tx" in
5003 yes)
5004         set $sym tres -f;
5005         eval $csym;
5006         case "$tres" in
5007         true)
5008                 echo "$sym() found." >&4;
5009                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5010         *)
5011                 echo "$sym() NOT found." >&4;
5012                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5013         esac;;
5014 *)
5015         case "$was" in
5016         $define) echo "$sym() found." >&4;;
5017         *) echo "$sym() NOT found." >&4;;
5018         esac;;
5019 esac'
5020
5021 : see if dlopen exists
5022 xxx_runnm="$runnm"
5023 runnm=false
5024 set dlopen d_dlopen
5025 eval $inlibc
5026 runnm="$xxx_runnm"
5027
5028 : determine which dynamic loading, if any, to compile in
5029 echo " "
5030 dldir="ext/DynaLoader"
5031 case "$usedl" in
5032 $define|y|true)
5033         dflt='y'
5034         usedl="$define"
5035         ;;
5036 $undef|n|false)
5037         dflt='n'
5038         usedl="$undef"
5039         ;;
5040 *) 
5041         dflt='n'
5042         case "$d_dlopen" in
5043             $define) dflt='y' ;;
5044         esac
5045         case "$i_dld" in
5046             $define) dflt='y' ;;
5047         esac
5048         : Does a dl_xxx.xs file exist for this operating system
5049         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5050         ;;
5051 esac
5052 rp="Do you wish to use dynamic loading?"
5053 . ./myread
5054 usedl="$ans"
5055 case "$ans" in
5056 y*) usedl="$define"
5057         case "$dlsrc" in
5058         '')
5059                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5060                         dflt="$dldir/dl_${osname}.xs"
5061                 elif $test "$d_dlopen" = "$define" ; then
5062                         dflt="$dldir/dl_dlopen.xs"
5063                 elif $test "$i_dld" = "$define" ; then
5064                         dflt="$dldir/dl_dld.xs"
5065                 else
5066                         dflt=''
5067                 fi
5068                 ;;
5069         *)      dflt="$dldir/$dlsrc"
5070                 ;;
5071         esac
5072     echo "The following dynamic loading files are available:"
5073         : Can not go over to $dldir because getfile has path hard-coded in.
5074         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5075         rp="Source file to use for dynamic loading"
5076         fn="fne"
5077         # XXX This getfile call will fail the existence check if you try 
5078         # building away from $src (this is not supported yet).
5079         . ./getfile
5080         usedl="$define"
5081         : emulate basename
5082         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5083
5084         $cat << EOM
5085
5086 Some systems may require passing special flags to $cc -c to
5087 compile modules that will be used to create a shared library.
5088 To use no flags, say "none".
5089
5090 EOM
5091     case "$cccdlflags" in
5092     '') case "$gccversion" in
5093                 '') case "$osname" in
5094                         hpux)   dflt='+z' ;;
5095                         next)   dflt='none' ;;
5096                         irix*)  dflt='-KPIC' ;;
5097                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5098                         sunos)  dflt='-pic' ;;
5099                         *)      dflt='none' ;;
5100                     esac
5101                         ;;
5102                 *)  case "$osname" in
5103                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5104                         *)      dflt='-fpic' ;;
5105                     esac ;;
5106             esac ;;
5107         ' ') dflt='none' ;;
5108     *)  dflt="$cccdlflags" ;;
5109     esac
5110     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5111     . ./myread
5112     case "$ans" in
5113     none) cccdlflags=' ' ;;
5114     *) cccdlflags="$ans" ;;
5115     esac
5116
5117     cat << EOM
5118
5119 Some systems use ld to create libraries that can be dynamically loaded,
5120 while other systems (such as those using ELF) use $cc.
5121
5122 EOM
5123         case "$ld" in
5124         '')     $cat >try.c <<'EOM'
5125 /* Test for whether ELF binaries are produced */
5126 #include <fcntl.h>
5127 #include <stdlib.h>
5128 int main() {
5129         char b[4];
5130         int i = open("a.out",O_RDONLY);
5131         if(i == -1) 
5132                 exit(1); /* fail */
5133         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5134                 exit(0); /* succeed (yes, it's ELF) */
5135         else
5136                 exit(1); /* fail */
5137 }
5138 EOM
5139                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5140                         cat <<EOM
5141 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5142 EOM
5143                         dflt="$cc"
5144                 else
5145                         echo "I'll use ld to build dynamic libraries."
5146                         dflt='ld'
5147                 fi
5148                 rm -f try.c a.out
5149                 ;;
5150         *)      dflt="$ld"
5151                 ;;
5152         esac
5153
5154     rp="What command should be used to create dynamic libraries?"
5155     . ./myread
5156         ld="$ans"
5157
5158     cat << EOM
5159
5160 Some systems may require passing special flags to $ld to create a
5161 library that can be dynamically loaded.  If your ld flags include
5162 -L/other/path options to locate libraries outside your loader's normal
5163 search path, you may need to specify those -L options here as well.  To
5164 use no flags, say "none".
5165
5166 EOM
5167     case "$lddlflags" in
5168     '') case "$osname" in
5169                         beos) dflt='-nostart' ;;
5170                         hpux)  dflt='-b' ;;
5171                         linux|irix*)    dflt='-shared' ;;
5172                         next)  dflt='none' ;;
5173                         solaris) dflt='-G' ;;
5174                         sunos) dflt='-assert nodefinitions' ;;
5175                         svr4*|esix*) dflt="-G $ldflags" ;;
5176                 *)     dflt='none' ;;
5177                         esac
5178                         ;;
5179     *) dflt="$lddlflags" ;;
5180     esac
5181
5182         : Try to guess additional flags to pick up local libraries.
5183         : Be careful not to append to a plain 'none'
5184         case "$dflt" in
5185         none) dflt='' ;;
5186         esac
5187         for thisflag in $ldflags; do
5188                 case "$thisflag" in
5189                 -L*)
5190                         case " $dflt " in
5191                         *" $thisflag "*) ;;
5192                         *) dflt="$dflt $thisflag" ;;
5193                         esac
5194                         ;;
5195                 esac
5196         done
5197
5198         case "$dflt" in
5199         ''|' ') dflt='none' ;;
5200         esac
5201
5202     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5203     . ./myread
5204     case "$ans" in
5205     none) lddlflags=' ' ;;
5206     *) lddlflags="$ans" ;;
5207     esac
5208
5209         cat <<EOM
5210
5211 Some systems may require passing special flags to $cc to indicate that
5212 the resulting executable will use dynamic linking.  To use no flags,
5213 say "none".
5214
5215 EOM
5216     case "$ccdlflags" in
5217     '') case "$osname" in
5218                 hpux)   dflt='-Wl,-E' ;;
5219                 linux)  dflt='-rdynamic' ;;
5220                 next)   dflt='none' ;;
5221                 sunos)  dflt='none' ;;
5222                 *)      dflt='none' ;;
5223             esac ;;
5224     ' ')  dflt='none' ;;
5225     *)  dflt="$ccdlflags" ;;
5226     esac
5227     rp="Any special flags to pass to $cc to use dynamic loading?"
5228     . ./myread
5229     case "$ans" in
5230     none) ccdlflags=' ' ;;
5231     *) ccdlflags="$ans" ;;
5232     esac
5233     ;;
5234 *)  usedl="$undef"
5235         ld='ld'
5236     dlsrc='dl_none.xs'
5237     lddlflags=''
5238     ccdlflags=''
5239     ;;
5240 esac
5241
5242 also=''
5243 case "$usedl" in
5244 $undef)
5245         # No dynamic loading being used, so don't bother even to prompt.
5246         useshrplib='false'
5247         ;;
5248 *)      case "$useshrplib" in
5249         '')     case "$osname" in
5250                 svr4*|dgux|dynixptx|esix|powerux|beos)
5251                         dflt=y
5252                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5253                         ;;
5254                 next*)
5255                         case "$osvers" in
5256                         4*)     dflt=y
5257                                 also='Building a shared libperl is needed for MAB support.'
5258                                 ;;
5259                         *)      dflt=n
5260                                 ;;
5261                         esac
5262                         ;;
5263                 *)      dflt=n
5264                         ;;
5265                 esac
5266                 ;;
5267         $define|true|[Yy]*)
5268                 dflt=y
5269                 ;;
5270         *)      dflt=n
5271                 ;;
5272         esac
5273         $cat << EOM
5274
5275 The perl executable is normally obtained by linking perlmain.c with
5276 libperl${_a}, any static extensions (usually just DynaLoader), and
5277 any other libraries needed on this system (such as -lm, etc.).  Since
5278 your system supports dynamic loading, it is probably possible to build
5279 a shared libperl.$so.  If you will have more than one executable linked
5280 to libperl.$so, this will significantly reduce the size of each
5281 executable, but it may have a noticeable affect on performance.  The
5282 default is probably sensible for your system.
5283 $also
5284
5285 EOM
5286         rp="Build a shared libperl.$so (y/n)"
5287         . ./myread
5288         case "$ans" in
5289         true|$define|[Yy]*)
5290                 useshrplib='true'
5291                 # Why does next4 have to be so different?
5292                 case "${osname}${osvers}" in
5293                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5294                 os2*)   xxx='' ;; # Nothing special needed.
5295                 beos*)  xxx='' ;;
5296                 *)              xxx='LD_LIBRARY_PATH' ;;
5297                 esac
5298                 if test X"$xxx" != "X"; then
5299                         $cat <<EOM  | $tee -a ../config.msg >&4
5300
5301 To build perl, you must add the current working directory to your
5302 $xxx environment variable before running make.  You can do
5303 this with
5304    $xxx=\`pwd\`:\$$xxx; export $xxx
5305 for Bourne-style shells, or
5306    setenv $xxx \`pwd\`
5307 for Csh-style shells.  You *MUST* do this before running make.
5308
5309 EOM
5310                 fi
5311                 ;;
5312         *)      useshrplib='false' ;;
5313         esac
5314         ;;
5315 esac
5316
5317 case "$useshrplib" in
5318 true)
5319         case "$libperl" in
5320         '')
5321                 # Figure out a good name for libperl.so.  Since it gets stored in
5322                 # a version-specific architecture-dependent library, the version
5323                 # number isn't really that important, except for making cc/ld happy.
5324                 #
5325                 # A name such as libperl.so.3.1
5326                 majmin="libperl.$so.$patchlevel.$subversion"
5327                 # A name such as libperl.so.301
5328                 majonly=`echo $patchlevel $subversion |
5329                         $awk '{printf "%d%02d", $1, $2}'`
5330                 majonly=libperl.$so.$majonly
5331                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5332                 # rely on figuring it out from the naming of libc.
5333                 case "${osname}${osvers}" in
5334                 next4*)
5335                         dflt=libperl.5.$so
5336                         # XXX How handle the --version stuff for MAB?
5337                         ;;
5338                 linux*)  # ld won't link with a bare -lperl otherwise.
5339                         dflt=libperl.$so
5340                         ;;
5341                 *)      # Try to guess based on whether libc has major.minor.
5342                         case "$libc" in
5343                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5344                         *libc.$so.[0-9]*) dflt=$majonly ;;
5345                         *)      dflt=libperl.$so ;;
5346                         esac
5347                         ;;
5348                 esac
5349                 ;;
5350         *)      dflt=$libperl
5351                 ;;
5352         esac
5353         cat << EOM
5354
5355 I need to select a good name for the shared libperl.  If your system uses
5356 library names with major and minor numbers, then you might want something
5357 like $majmin.  Alternatively, if your system uses a single version
5358 number for shared libraries, then you might want to use $majonly.
5359 Or, your system might be quite happy with a simple libperl.$so.
5360
5361 Since the shared libperl will get installed into a version-specific
5362 architecture-dependent directory, the version number of the shared perl
5363 library probably isn't important, so the default should be o.k.
5364
5365 EOM
5366         rp='What name do you want to give to the shared libperl?'
5367         . ./myread
5368         libperl=$ans
5369         echo "Ok, I'll use $libperl"
5370         ;;
5371 *)
5372         libperl="libperl${_a}"
5373         ;;
5374 esac
5375
5376 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5377 case "$shrpdir" in
5378 '') ;;
5379 *)      $cat >&4 <<EOM
5380 WARNING:  Use of the shrpdir variable for the installation location of
5381 the shared $libperl is not supported.  It was never documented and
5382 will not work in this version.  Let me (perlbug@perl.com)
5383 know of any problems this may cause.
5384
5385 EOM
5386         case "$shrpdir" in
5387         "$archlibexp/CORE")
5388                 $cat >&4 <<EOM
5389 But your current setting of $shrpdir is
5390 the default anyway, so it's harmless.
5391 EOM
5392                 ;;
5393         *)
5394                 $cat >&4 <<EOM
5395 Further, your current attempted setting of $shrpdir
5396 conflicts with the value of $archlibexp/CORE
5397 that installperl will use.
5398 EOM
5399                 ;;
5400         esac
5401         ;;
5402 esac
5403
5404 # How will the perl executable find the installed shared $libperl?
5405 # Add $xxx to ccdlflags.
5406 # If we can't figure out a command-line option, use $shrpenv to
5407 # set env LD_RUN_PATH.  The main perl makefile uses this.
5408 shrpdir=$archlibexp/CORE
5409 xxx=''
5410 tmp_shrpenv=''
5411 if "$useshrplib"; then
5412     case "$osname" in 
5413         aix)
5414                 # We'll set it in Makefile.SH...
5415                 ;;
5416         solaris|netbsd)
5417                 xxx="-R $shrpdir"
5418                 ;;
5419         freebsd)
5420                 xxx="-Wl,-R$shrpdir"
5421                 ;;
5422         linux|irix*|dec_osf)
5423                 xxx="-Wl,-rpath,$shrpdir"
5424                 ;;
5425         next)
5426                 # next doesn't like the default...
5427                 ;;
5428         beos)
5429                 # beos doesn't like the default, either.
5430                 ;;
5431         *)
5432                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5433                 ;;
5434         esac
5435         case "$xxx" in
5436         '') ;;
5437         *)      
5438                 # Only add $xxx if it isn't already in ccdlflags.
5439                 case " $ccdlflags " in
5440                 *" $xxx "*)     ;;
5441                 *)      ccdlflags="$ccdlflags $xxx"
5442                         cat <<EOM >&4
5443
5444 Adding $xxx to the flags
5445 passed to $ld so that the perl executable will find the 
5446 installed shared $libperl.
5447
5448 EOM
5449                         ;;
5450                 esac
5451                 ;;
5452         esac
5453 fi
5454 # Respect a hint or command-line value.
5455 case "$shrpenv" in
5456 '') shrpenv="$tmp_shrpenv" ;;
5457 esac
5458
5459 : determine where manual pages go
5460 set man1dir man1dir none
5461 eval $prefixit
5462 $cat <<EOM
5463
5464 $spackage has manual pages available in source form.
5465 EOM
5466 case "$nroff" in
5467 nroff)
5468         echo "However, you don't have nroff, so they're probably useless to you."
5469         case "$man1dir" in
5470         '') man1dir="none";;
5471         esac;;
5472 esac
5473 echo "If you don't want the manual sources installed, answer 'none'."
5474 case "$man1dir" in
5475 ' ') dflt=none
5476         ;;
5477 '')
5478         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5479         lookpath="$lookpath $prefixexp/man/p_man/man1"
5480         lookpath="$lookpath $prefixexp/man/u_man/man1"
5481         lookpath="$lookpath $prefixexp/man/man.1"
5482         case "$sysman" in
5483         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5484         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5485         esac
5486         set dflt
5487         eval $prefixup
5488         ;;
5489 *)  dflt="$man1dir"
5490         ;;
5491 esac
5492 echo " "
5493 fn=dn+~
5494 rp="Where do the main $spackage manual pages (source) go?"
5495 . ./getfile
5496 if $test "X$man1direxp" != "X$ansexp"; then
5497         installman1dir=''
5498 fi
5499 man1dir="$ans"
5500 man1direxp="$ansexp"
5501 case "$man1dir" in
5502 '') man1dir=' '
5503         installman1dir='';;
5504 esac
5505 if $afs; then
5506         $cat <<EOM
5507
5508 Since you are running AFS, I need to distinguish the directory in which
5509 manual pages reside from the directory in which they are installed (and from
5510 which they are presumably copied to the former directory by occult means).
5511
5512 EOM
5513         case "$installman1dir" in
5514         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5515         *) dflt="$installman1dir";;
5516         esac
5517         fn=de~
5518         rp='Where will man pages be installed?'
5519         . ./getfile
5520         installman1dir="$ans"
5521 else
5522         installman1dir="$man1direxp"
5523 fi
5524
5525 : What suffix to use on installed man pages
5526
5527 case "$man1dir" in
5528 ' ')
5529         man1ext='0'
5530         ;;
5531 *)
5532         rp="What suffix should be used for the main $spackage man pages?"
5533         case "$man1ext" in
5534         '')     case "$man1dir" in
5535                 *1)  dflt=1 ;;
5536                 *1p) dflt=1p ;;
5537                 *1pm) dflt=1pm ;;
5538                 *l) dflt=l;;
5539                 *n) dflt=n;;
5540                 *o) dflt=o;;
5541                 *p) dflt=p;;
5542                 *C) dflt=C;;
5543                 *L) dflt=L;;
5544                 *L1) dflt=L1;;
5545                 *) dflt=1;;
5546                 esac
5547                 ;;
5548         *)      dflt="$man1ext";;
5549         esac
5550         . ./myread
5551         man1ext="$ans"
5552         ;;
5553 esac
5554
5555 : see if we can have long filenames
5556 echo " "
5557 rmlist="$rmlist /tmp/cf$$"
5558 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5559 first=123456789abcdef
5560 second=/tmp/cf$$/$first
5561 $rm -f $first $second
5562 if (echo hi >$first) 2>/dev/null; then
5563         if $test -f 123456789abcde; then
5564                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5565                 val="$undef"
5566         else
5567                 if (echo hi >$second) 2>/dev/null; then
5568                         if $test -f /tmp/cf$$/123456789abcde; then
5569                                 $cat <<'EOM'
5570 That's peculiar... You can have filenames longer than 14 characters, but only
5571 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5572 I shall consider your system cannot support long filenames at all.
5573 EOM
5574                                 val="$undef"
5575                         else
5576                                 echo 'You can have filenames longer than 14 characters.' >&4
5577                                 val="$define"
5578                         fi
5579                 else
5580                         $cat <<'EOM'
5581 How confusing! Some of your filesystems are sane enough to allow filenames
5582 longer than 14 characters but some others like /tmp can't even think about them.
5583 So, for now on, I shall assume your kernel does not allow them at all.
5584 EOM
5585                         val="$undef"
5586                 fi
5587         fi
5588 else
5589         $cat <<'EOM'
5590 You can't have filenames longer than 14 chars.  You can't even think about them!
5591 EOM
5592         val="$undef"
5593 fi 
5594 set d_flexfnam
5595 eval $setvar
5596 $rm -rf /tmp/cf$$ 123456789abcde*
5597
5598 : determine where library module manual pages go
5599 set man3dir man3dir none
5600 eval $prefixit
5601 $cat <<EOM
5602
5603 $spackage has manual pages for many of the library modules.
5604 EOM
5605
5606 case "$nroff" in
5607 nroff)
5608         $cat <<'EOM'
5609 However, you don't have nroff, so they're probably useless to you.
5610 EOM
5611         case "$man3dir" in
5612         '') man3dir="none";;
5613         esac;;
5614 esac
5615
5616 case "$d_flexfnam" in
5617 undef)
5618         $cat <<'EOM'
5619 However, your system can't handle the long file names like File::Basename.3. 
5620 EOM
5621         case "$man3dir" in
5622         '') man3dir="none";;
5623         esac;;
5624 esac
5625
5626 echo "If you don't want the manual sources installed, answer 'none'."
5627 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5628 case "$man3dir" in
5629 '')     case "$prefix" in 
5630         *$prog*) dflt=`echo $man1dir | 
5631                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5632         *)      dflt="$privlib/man/man3" ;;
5633         esac
5634         ;;
5635 ' ') dflt=none;;
5636 *)      dflt="$man3dir" ;;
5637 esac
5638 echo " "
5639
5640 fn=dn+~
5641 rp="Where do the $package library man pages (source) go?"
5642 . ./getfile
5643 if test "X$man3direxp" != "X$ansexp"; then
5644         installman3dir=''
5645 fi
5646
5647 man3dir="$ans"
5648 man3direxp="$ansexp"
5649 case "$man3dir" in
5650 '') man3dir=' '
5651         installman3dir='';;
5652 esac
5653 if $afs; then
5654         $cat <<EOM
5655
5656 Since you are running AFS, I need to distinguish the directory in which
5657 manual pages reside from the directory in which they are installed (and from
5658 which they are presumably copied to the former directory by occult means).
5659
5660 EOM
5661         case "$installman3dir" in
5662         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5663         *) dflt="$installman3dir";;
5664         esac
5665         fn=de~
5666         rp='Where will man pages be installed?'
5667         . ./getfile
5668         installman3dir="$ans"
5669 else
5670         installman3dir="$man3direxp"
5671 fi
5672
5673 : What suffix to use on installed man pages
5674
5675 case "$man3dir" in
5676 ' ')
5677         man3ext='0'
5678         ;;
5679 *)
5680         rp="What suffix should be used for the $package library man pages?"
5681         case "$man3ext" in
5682         '')     case "$man3dir" in
5683                 *3)  dflt=3 ;;
5684                 *3p) dflt=3p ;;
5685                 *3pm) dflt=3pm ;;
5686                 *l) dflt=l;;
5687                 *n) dflt=n;;
5688                 *o) dflt=o;;
5689                 *p) dflt=p;;
5690                 *C) dflt=C;;
5691                 *L) dflt=L;;
5692                 *L3) dflt=L3;;
5693                 *) dflt=3;;
5694                 esac
5695                 ;;
5696         *)      dflt="$man3ext";;
5697         esac
5698         . ./myread
5699         man3ext="$ans"
5700         ;;
5701 esac
5702
5703 : see if we have to deal with yellow pages, now NIS.
5704 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5705         if $test -f /usr/etc/nibindd; then
5706                 echo " "
5707                 echo "I'm fairly confident you're on a NeXT."
5708                 echo " "
5709                 rp='Do you get the hosts file via NetInfo?'
5710                 dflt=y
5711                 case "$hostcat" in
5712                 nidump*) ;;
5713                 '') ;;
5714                 *) dflt=n;;
5715                 esac
5716                 . ./myread
5717                 case "$ans" in
5718                 y*) hostcat='nidump hosts .';;
5719                 *)      case "$hostcat" in
5720                         nidump*) hostcat='';;
5721                         esac
5722                         ;;
5723                 esac
5724         fi
5725         case "$hostcat" in
5726         nidump*) ;;
5727         *)
5728                 case "$hostcat" in
5729                 *ypcat*) dflt=y;;
5730                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5731                                 dflt=y
5732                         else
5733                                 dflt=n
5734                         fi;;
5735                 *) dflt=n;;
5736                 esac
5737                 echo " "
5738                 rp='Are you getting the hosts file via yellow pages?'
5739                 . ./myread
5740                 case "$ans" in
5741                 y*) hostcat='ypcat hosts';;
5742                 *) hostcat='cat /etc/hosts';;
5743                 esac
5744                 ;;
5745         esac
5746 fi
5747 case "$hostcat" in
5748 '') hostcat='cat /etc/hosts';;
5749 esac
5750 case "$groupcat" in
5751 '') groupcat='cat /etc/group';;
5752 esac
5753 case "$passcat" in
5754 '') passcat='cat /etc/passwd';;
5755 esac
5756
5757 : now get the host name
5758 echo " "
5759 echo "Figuring out host name..." >&4
5760 case "$myhostname" in
5761 '') cont=true
5762         echo 'Maybe "hostname" will work...'
5763         if tans=`sh -c hostname 2>&1` ; then
5764                 myhostname=$tans
5765                 phostname=hostname
5766                 cont=''
5767         fi
5768         ;;
5769 *) cont='';;
5770 esac
5771 if $test "$cont"; then
5772         if ./xenix; then
5773                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5774                 if tans=`cat /etc/systemid 2>&1` ; then
5775                         myhostname=$tans
5776                         phostname='cat /etc/systemid'
5777                         echo "Whadyaknow.  Xenix always was a bit strange..."
5778                         cont=''
5779                 fi
5780         elif $test -r /etc/systemid; then
5781                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5782         fi
5783 fi
5784 if $test "$cont"; then
5785         echo 'No, maybe "uuname -l" will work...'
5786         if tans=`sh -c 'uuname -l' 2>&1` ; then
5787                 myhostname=$tans
5788                 phostname='uuname -l'
5789         else
5790                 echo 'Strange.  Maybe "uname -n" will work...'
5791                 if tans=`sh -c 'uname -n' 2>&1` ; then
5792                         myhostname=$tans
5793                         phostname='uname -n'
5794                 else
5795                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5796                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5797                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5798                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5799                         else
5800                                 case "$myhostname" in
5801                                 '') echo "Does this machine have an identity crisis or something?"
5802                                         phostname='';;
5803                                 *)
5804                                         echo "Well, you said $myhostname before..."
5805                                         phostname='echo $myhostname';;
5806                                 esac
5807                         fi
5808                 fi
5809         fi
5810 fi
5811 : you do not want to know about this
5812 set $myhostname
5813 myhostname=$1
5814
5815 : verify guess
5816 if $test "$myhostname" ; then
5817         dflt=y
5818         rp='Your host name appears to be "'$myhostname'".'" Right?"
5819         . ./myread
5820         case "$ans" in
5821         y*) ;;
5822         *) myhostname='';;
5823         esac
5824 fi
5825
5826 : bad guess or no guess
5827 while $test "X$myhostname" = X ; do
5828         dflt=''
5829         rp="Please type the (one word) name of your host:"
5830         . ./myread
5831         myhostname="$ans"
5832 done
5833
5834 : translate upper to lower if necessary
5835 case "$myhostname" in
5836 *[A-Z]*)
5837         echo "(Normalizing case in your host name)"
5838         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5839         ;;
5840 esac
5841
5842 case "$myhostname" in
5843 *.*)
5844         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5845         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5846         echo "(Trimming domain name from host name--host name is now $myhostname)"
5847         ;;
5848 *) case "$mydomain" in
5849         '')
5850                 {
5851                         test "X$hostcat" = "Xypcat hosts" &&
5852                         ypmatch "$myhostname" hosts 2>/dev/null |\
5853                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5854                         $test -s hosts
5855                 } || {
5856                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5857                                         /[       ]$myhostname[  . ]/p" > hosts
5858                 }
5859                 tmp_re="[       . ]"
5860                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5861                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5862                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5863                         hosts | $sort | $uniq | \
5864                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5865                 case `$echo X$dflt` in
5866                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5867                         dflt=.
5868                         ;;
5869                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5870                         ;;
5871                 esac
5872                 case "$dflt" in
5873                 .)
5874                         tans=`./loc resolv.conf X /etc /usr/etc`
5875                         if $test -f "$tans"; then
5876                                 echo "(Attempting domain name extraction from $tans)"
5877                                 dflt=.`$sed -n -e 's/   / /g' \
5878                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5879                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5880                                 case "$dflt" in
5881                                 .) dflt=.`$sed -n -e 's/        / /g' \
5882                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5883                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5884                                         ;;
5885                                 esac
5886                         fi
5887                         ;;
5888                 esac
5889                 case "$dflt" in
5890                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5891                         dflt=.`sh -c domainname 2>/dev/null`
5892                         case "$dflt" in
5893                         '') dflt='.';;
5894                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5895                         esac
5896                         ;;
5897                 esac
5898                 case "$dflt" in
5899                 .) echo "(Lost all hope -- silly guess then)"
5900                         dflt='.uucp'
5901                         ;;
5902                 esac
5903                 $rm -f hosts
5904                 ;;
5905         *) dflt="$mydomain";;
5906         esac;;
5907 esac
5908 echo " "
5909 rp="What is your domain name?"
5910 . ./myread
5911 tans="$ans"
5912 case "$ans" in
5913 '') ;;
5914 .*) ;;
5915 *) tans=".$tans";;
5916 esac
5917 mydomain="$tans"
5918
5919 : translate upper to lower if necessary
5920 case "$mydomain" in
5921 *[A-Z]*)
5922         echo "(Normalizing case in your domain name)"
5923         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5924         ;;
5925 esac
5926
5927 : a little sanity check here
5928 case "$phostname" in
5929 '') ;;
5930 *)
5931         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5932         $myhostname$mydomain|$myhostname) ;;
5933         *)
5934                 case "$phostname" in
5935                 sed*)
5936                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5937                         ;;
5938                 *)
5939                         echo "(That doesn't agree with your $phostname command, by the way.)"
5940                         ;;
5941                 esac
5942         ;;
5943         esac
5944         ;;
5945 esac
5946
5947 $cat <<EOM
5948
5949 I need to get your e-mail address in Internet format if possible, i.e.
5950 something like user@host.domain. Please answer accurately since I have
5951 no easy means to double check it. The default value provided below
5952 is most probably close to the reality but may not be valid from outside
5953 your organization...
5954
5955 EOM
5956 cont=x
5957 while test "$cont"; do
5958         case "$cf_email" in
5959         '') dflt="$cf_by@$myhostname$mydomain";;
5960         *) dflt="$cf_email";;
5961         esac
5962         rp='What is your e-mail address?'
5963         . ./myread
5964         cf_email="$ans"
5965         case "$cf_email" in
5966         *@*.*) cont='' ;;
5967         *)
5968                 rp='Address does not look like an Internet one.  Use it anyway?'
5969                 case "$fastread" in
5970                 yes) dflt=y ;;
5971                 *) dflt=n ;;
5972                 esac
5973                 . ./myread
5974                 case "$ans" in
5975                 y*) cont='' ;;
5976                 *) echo " " ;;
5977                 esac
5978                 ;;
5979         esac
5980 done
5981
5982 $cat <<EOM
5983
5984 If you or somebody else will be maintaining perl at your site, please
5985 fill in the correct e-mail address here so that they may be contacted
5986 if necessary. Currently, the "perlbug" program included with perl
5987 will send mail to this address in addition to perlbug@perl.com. You may
5988 enter "none" for no administrator.
5989
5990 EOM
5991 case "$perladmin" in
5992 '') dflt="$cf_email";;
5993 *) dflt="$perladmin";;
5994 esac
5995 rp='Perl administrator e-mail address'
5996 . ./myread
5997 perladmin="$ans"
5998
5999 : figure out how to guarantee perl startup
6000 case "$startperl" in
6001 '')
6002         case "$sharpbang" in
6003         *!)
6004                 $cat <<EOH
6005
6006 I can use the #! construct to start perl on your system. This will
6007 make startup of perl scripts faster, but may cause problems if you
6008 want to share those scripts and perl is not in a standard place
6009 ($binexp/perl) on all your platforms. The alternative is to force
6010 a shell by starting the script with a single ':' character.
6011
6012 EOH
6013                 dflt="$binexp/perl"
6014                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6015                 . ./myread
6016                 case "$ans" in
6017                 none)   startperl=": # use perl";;
6018                 *)      startperl="#!$ans"
6019                         if $test 30 -lt `echo "$ans" | wc -c`; then
6020                                 $cat >&4 <<EOM
6021
6022 WARNING:  Some systems limit the #! command to 32 characters.
6023 If you experience difficulty running Perl scripts with #!, try
6024 installing Perl in a directory with a shorter pathname.
6025
6026 EOM
6027                         fi ;;
6028                 esac
6029                 ;;
6030         *) startperl=": # use perl"
6031                 ;;
6032         esac
6033         ;;
6034 esac
6035 echo "I'll use $startperl to start perl scripts."
6036
6037 : figure best path for perl in scripts
6038 case "$perlpath" in
6039 '')
6040         perlpath="$binexp/perl"
6041         case "$startperl" in
6042         *!*) ;;
6043         *)
6044                 $cat <<EOH
6045
6046 I will use the "eval 'exec'" idiom to start Perl on your system.
6047 I can use the full path of your Perl binary for this purpose, but
6048 doing so may cause problems if you want to share those scripts and
6049 Perl is not always in a standard place ($binexp/perl).
6050
6051 EOH
6052                 dflt="$binexp/perl"
6053                 rp="What path shall I use in \"eval 'exec'\"?"
6054                 . ./myread
6055                 perlpath="$ans"
6056                 ;;
6057         esac
6058         ;;
6059 esac
6060 case "$startperl" in
6061 *!*)    ;;
6062 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6063 esac
6064
6065 : determine where public executable scripts go
6066 set scriptdir scriptdir
6067 eval $prefixit
6068 case "$scriptdir" in
6069 '')
6070         dflt="$bin"
6071         : guess some guesses
6072         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6073         $test -d /usr/share/bin && dflt=/usr/share/bin
6074         $test -d /usr/local/script && dflt=/usr/local/script
6075         $test -d $prefixexp/script && dflt=$prefixexp/script
6076         set dflt
6077         eval $prefixup
6078         ;;
6079 *)  dflt="$scriptdir"
6080         ;;
6081 esac
6082 $cat <<EOM
6083  
6084 Some installations have a separate directory just for executable scripts so
6085 that they can mount it across multiple architectures but keep the scripts in
6086 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6087 Or you might just lump your scripts in with all your other executables.
6088  
6089 EOM
6090 fn=d~
6091 rp='Where do you keep publicly executable scripts?'
6092 . ./getfile
6093 if $test "X$ansexp" != "X$scriptdirexp"; then
6094         installscript=''
6095 fi
6096 scriptdir="$ans"
6097 scriptdirexp="$ansexp"
6098 if $afs; then
6099         $cat <<EOM
6100
6101 Since you are running AFS, I need to distinguish the directory in which
6102 scripts reside from the directory in which they are installed (and from
6103 which they are presumably copied to the former directory by occult means).
6104
6105 EOM
6106         case "$installscript" in
6107         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6108         *) dflt="$installscript";;
6109         esac
6110         fn=de~
6111         rp='Where will public scripts be installed?'
6112         . ./getfile
6113         installscript="$ans"
6114 else
6115         installscript="$scriptdirexp"
6116 fi
6117
6118 : determine where site specific libraries go.
6119 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6120 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6121 case "$prefix" in
6122 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6123 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6124 esac
6125 eval $prefixit
6126 $cat <<EOM
6127
6128 The installation process will also create a directory for
6129 site-specific extensions and modules.  Some users find it convenient
6130 to place all local files in this directory rather than in the main
6131 distribution directory.
6132
6133 EOM
6134 fn=d~+
6135 rp='Pathname for the site-specific library files?'
6136 . ./getfile
6137 if $test "X$sitelibexp" != "X$ansexp"; then
6138         installsitelib=''
6139 fi
6140 sitelib="$ans"
6141 sitelibexp="$ansexp"
6142 if $afs; then
6143         $cat <<EOM
6144
6145 Since you are running AFS, I need to distinguish the directory in
6146 which site-specific files reside from the directory in which they are
6147 installed (and from which they are presumably copied to the former
6148 directory by occult means).
6149
6150 EOM
6151         case "$installsitelib" in
6152         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6153         *) dflt="$installsitelib";;
6154         esac
6155         fn=de~
6156         rp='Where will site-specific files be installed?'
6157         . ./getfile
6158         installsitelib="$ans"
6159 else
6160         installsitelib="$sitelibexp"
6161 fi
6162
6163 : determine where site specific architecture-dependent libraries go.
6164 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6165 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6166 : sitelib may have an optional trailing /share.
6167 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6168 tdflt="$tdflt/$archname"
6169 set sitearch sitearch none
6170 eval $prefixit
6171 case "$sitearch" in
6172 '')     dflt="$tdflt" ;;
6173 *)      dflt="$sitearch" ;;
6174 esac
6175 $cat <<EOM
6176
6177 The installation process will also create a directory for
6178 architecture-dependent site-specific extensions and modules.
6179
6180 EOM
6181 fn=nd~+
6182 rp='Pathname for the site-specific architecture-dependent library files?'
6183 . ./getfile
6184 if $test "X$sitearchexp" != "X$ansexp"; then
6185         installsitearch=''
6186 fi
6187 sitearch="$ans"
6188 sitearchexp="$ansexp"
6189 if $afs; then
6190         $cat <<EOM
6191
6192 Since you are running AFS, I need to distinguish the directory in
6193 which site-specific architecture-dependent library files reside from
6194 the directory in which they are installed (and from which they are
6195 presumably copied to the former directory by occult means).
6196
6197 EOM
6198         case "$installsitearch" in
6199         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6200         *) dflt="$installsitearch";;
6201         esac
6202         fn=de~
6203         rp='Where will site-specific architecture-dependent files be installed?'
6204         . ./getfile
6205         installsitearch="$ans"
6206 else
6207         installsitearch="$sitearchexp"
6208 fi
6209
6210 cat <<EOM
6211
6212 Previous version of $package used the standard IO mechanisms as defined
6213 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6214 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6215 the default.  This abstraction layer can use AT&T's sfio (if you already
6216 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6217 problems with some extension modules.  Using PerlIO with stdio is safe,
6218 but it is slower than plain stdio and therefore is not the default.
6219
6220 If this doesn't make any sense to you, just accept the default 'n'.
6221 EOM
6222 case "$useperlio" in
6223 $define|true|[yY]*)     dflt='y';;
6224 *) dflt='n';;
6225 esac
6226 rp='Use the experimental PerlIO abstraction layer?'
6227 . ./myread
6228 case "$ans" in
6229 y|Y) 
6230         val="$define"
6231         ;;     
6232 *)      
6233         echo "Ok, doing things the stdio way"
6234         val="$undef"
6235         ;;
6236 esac
6237 set useperlio
6238 eval $setvar 
6239
6240 : Check how to convert floats to strings.
6241 if test "X$d_Gconvert" = X; then
6242         echo " "
6243         echo "Checking for an efficient way to convert floats to strings."
6244         $cat >try.c <<'EOP'
6245 #ifdef TRY_gconvert
6246 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6247 char *myname = "gconvert";
6248 #endif
6249 #ifdef TRY_gcvt
6250 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6251 char *myname = "gcvt";
6252 #endif
6253 #ifdef TRY_sprintf
6254 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6255 char *myname = "sprintf";
6256 #endif
6257
6258 #include <stdio.h>
6259
6260 int
6261 checkit(expect, got)
6262 char *expect;
6263 char *got;
6264 {
6265     if (strcmp(expect, got)) {
6266                 printf("%s oddity:  Expected %s, got %s\n",
6267                         myname, expect, got);
6268                 exit(1);
6269         }
6270 }
6271
6272 int main()
6273
6274         char buf[64]; 
6275         buf[63] = '\0';
6276
6277         /* This must be 1st test on (which?) platform */
6278         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6279         Gconvert(0.1, 8, 0, buf);
6280         checkit("0.1", buf);
6281
6282         Gconvert(1.0, 8, 0, buf); 
6283         checkit("1", buf);
6284
6285         Gconvert(0.0, 8, 0, buf); 
6286         checkit("0", buf);
6287
6288         Gconvert(-1.0, 8, 0, buf); 
6289         checkit("-1", buf);
6290
6291         /* Some Linux gcvt's give 1.e+5 here. */
6292         Gconvert(100000.0, 8, 0, buf); 
6293         checkit("100000", buf);
6294         
6295         /* Some Linux gcvt's give -1.e+5 here. */
6296         Gconvert(-100000.0, 8, 0, buf); 
6297         checkit("-100000", buf);
6298
6299         exit(0);
6300 }
6301 EOP
6302         case "$d_Gconvert" in
6303         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6304         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6305         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6306         *) xxx_list='gconvert gcvt sprintf' ;;
6307         esac
6308
6309         for xxx_convert in $xxx_list; do
6310                 echo "Trying $xxx_convert"
6311                 $rm -f try try$_o
6312                 set try -DTRY_$xxx_convert
6313                 if eval $compile; then
6314                         echo "$xxx_convert" found. >&4
6315                         if ./try; then
6316                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6317                                 break;
6318                         else
6319                                 echo "...But $xxx_convert didn't work as I expected."
6320                         fi
6321                 else
6322                         echo "$xxx_convert NOT found." >&4
6323                 fi
6324         done
6325                 
6326         case "$xxx_convert" in
6327         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6328         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6329         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6330         esac
6331 fi
6332
6333 : Initialize h_fcntl
6334 h_fcntl=false
6335
6336 : Initialize h_sysfile
6337 h_sysfile=false
6338
6339 : access call always available on UNIX
6340 set access d_access
6341 eval $inlibc
6342
6343 : locate the flags for 'access()'
6344 case "$d_access" in
6345 "$define")
6346         echo " "
6347         $cat >access.c <<'EOCP'
6348 #include <sys/types.h>
6349 #ifdef I_FCNTL
6350 #include <fcntl.h>
6351 #endif
6352 #ifdef I_SYS_FILE
6353 #include <sys/file.h>
6354 #endif
6355 #ifdef I_UNISTD
6356 #include <unistd.h>
6357 #endif
6358 int main() {
6359         exit(R_OK);
6360 }
6361 EOCP
6362         : check sys/file.h first, no particular reason here
6363         if $test `./findhdr sys/file.h` && \
6364                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6365                 h_sysfile=true;
6366                 echo "<sys/file.h> defines the *_OK access constants." >&4
6367         elif $test `./findhdr fcntl.h` && \
6368                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6369                 h_fcntl=true;
6370                 echo "<fcntl.h> defines the *_OK access constants." >&4
6371         elif $test `./findhdr unistd.h` && \
6372                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6373                 echo "<unistd.h> defines the *_OK access constants." >&4
6374         else
6375                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6376         fi
6377         ;;
6378 esac
6379 $rm -f access*
6380
6381 : see if accessx exists
6382 set accessx d_accessx
6383 eval $inlibc
6384
6385 : see if alarm exists
6386 set alarm d_alarm
6387 eval $inlibc
6388
6389 : Look for GNU-cc style attribute checking
6390 echo " "
6391 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6392 $cat >attrib.c <<'EOCP'
6393 #include <stdio.h>
6394 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6395 EOCP
6396 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6397         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6398                 echo "Your C compiler doesn't fully support __attribute__."
6399                 val="$undef"
6400         else
6401                 echo "Your C compiler supports __attribute__."
6402                 val="$define"
6403         fi
6404 else
6405         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6406         val="$undef"
6407 fi
6408 set d_attribut
6409 eval $setvar
6410 $rm -f attrib*
6411
6412 : see if bcmp exists
6413 set bcmp d_bcmp
6414 eval $inlibc
6415
6416 : see if bcopy exists
6417 set bcopy d_bcopy
6418 eval $inlibc
6419
6420 : see if this is a unistd.h system
6421 set unistd.h i_unistd
6422 eval $inhdr
6423
6424 : see if getpgrp exists
6425 set getpgrp d_getpgrp
6426 eval $inlibc
6427
6428 case "$d_getpgrp" in
6429 "$define")
6430         echo " "
6431         echo "Checking to see which flavor of getpgrp is in use..."
6432         $cat >set.c <<EOP
6433 #$i_unistd I_UNISTD
6434 #include <sys/types.h>
6435 #ifdef I_UNISTD
6436 #  include <unistd.h>
6437 #endif
6438 int main()
6439 {
6440         if (getuid() == 0) {
6441                 printf("(I see you are running Configure as super-user...)\n");
6442                 setuid(1);
6443         }
6444 #ifdef TRY_BSD_PGRP
6445         if (getpgrp(1) == 0)
6446                 exit(0);
6447 #else
6448         if (getpgrp() > 0)
6449                 exit(0);
6450 #endif
6451         exit(1);
6452 }
6453 EOP
6454         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6455                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6456                 val="$define"
6457         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6458                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6459                 val="$undef"
6460         else
6461                 echo "I can't seem to compile and run the test program."
6462                 if ./usg; then
6463                         xxx="a USG one, i.e. you use getpgrp()."
6464                 else
6465                         # SVR4 systems can appear rather BSD-ish.
6466                         case "$i_unistd" in
6467                         $undef)
6468                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6469                                 val="$define"
6470                                 ;;
6471                         $define)
6472                                 xxx="probably a USG one, i.e. you use getpgrp()."
6473                                 val="$undef"
6474                                 ;;
6475                         esac
6476                 fi
6477                 echo "Assuming your getpgrp is $xxx" >&4
6478         fi
6479         ;;
6480 *) val="$undef";;
6481 esac
6482 set d_bsdgetpgrp
6483 eval $setvar
6484 $rm -f set set.c
6485
6486 : see if setpgrp exists
6487 set setpgrp d_setpgrp
6488 eval $inlibc
6489
6490 case "$d_setpgrp" in
6491 "$define")
6492         echo " "
6493         echo "Checking to see which flavor of setpgrp is in use..."
6494         $cat >set.c <<EOP
6495 #$i_unistd I_UNISTD
6496 #include <sys/types.h>
6497 #ifdef I_UNISTD
6498 #  include <unistd.h>
6499 #endif
6500 int main()
6501 {
6502         if (getuid() == 0) {
6503                 printf("(I see you are running Configure as super-user...)\n");
6504                 setuid(1);
6505         }
6506 #ifdef TRY_BSD_PGRP
6507         if (-1 == setpgrp(1, 1))
6508                 exit(0);
6509 #else
6510         if (setpgrp() != -1)
6511                 exit(0);
6512 #endif
6513         exit(1);
6514 }
6515 EOP
6516         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6517                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6518                 val="$define"
6519         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6520                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6521                 val="$undef"
6522         else
6523                 echo "(I can't seem to compile and run the test program.)"
6524                 if ./usg; then
6525                         xxx="a USG one, i.e. you use setpgrp()."
6526                 else
6527                         # SVR4 systems can appear rather BSD-ish.
6528                         case "$i_unistd" in
6529                         $undef)
6530                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6531                                 val="$define"
6532                                 ;;
6533                         $define)
6534                                 xxx="probably a USG one, i.e. you use setpgrp()."
6535                                 val="$undef"
6536                                 ;;
6537                         esac
6538                 fi
6539                 echo "Assuming your setpgrp is $xxx" >&4
6540         fi
6541         ;;
6542 *) val="$undef";;
6543 esac
6544 set d_bsdsetpgrp
6545 eval $setvar
6546 $rm -f set set.c
6547 : see if bzero exists
6548 set bzero d_bzero
6549 eval $inlibc
6550
6551 : check for lengths of integral types
6552 echo " "
6553 case "$intsize" in
6554 '')
6555         echo "Checking to see how big your integers are..." >&4
6556         $cat >intsize.c <<'EOCP'
6557 #include <stdio.h>
6558 int main()
6559 {
6560         printf("intsize=%d;\n", sizeof(int));
6561         printf("longsize=%d;\n", sizeof(long));
6562         printf("shortsize=%d;\n", sizeof(short));
6563         exit(0);
6564 }
6565 EOCP
6566         set intsize
6567         if eval $compile_ok && ./intsize > /dev/null; then
6568                 eval `./intsize`
6569                 echo "Your integers are $intsize bytes long."
6570                 echo "Your long integers are $longsize bytes long."
6571                 echo "Your short integers are $shortsize bytes long."
6572         else
6573                 $cat >&4 <<EOM
6574 !
6575 Help! I can't compile and run the intsize test program: please enlighten me!
6576 (This is probably a misconfiguration in your system or libraries, and
6577 you really ought to fix it.  Still, I'll try anyway.)
6578 !
6579 EOM
6580                 dflt=4
6581                 rp="What is the size of an integer (in bytes)?"
6582                 . ./myread
6583                 intsize="$ans"
6584                 dflt=$intsize
6585                 rp="What is the size of a long integer (in bytes)?"
6586                 . ./myread
6587                 longsize="$ans"
6588                 dflt=2
6589                 rp="What is the size of a short integer (in bytes)?"
6590                 . ./myread
6591                 shortsize="$ans"
6592         fi
6593         ;;
6594 esac
6595 $rm -f intsize intsize.*
6596
6597 : see if signal is declared as pointer to function returning int or void
6598 echo " "
6599 xxx=`./findhdr signal.h`
6600 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6601 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6602         echo "You have int (*signal())() instead of void." >&4
6603         val="$undef"
6604 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6605         echo "You have void (*signal())()." >&4
6606         val="$define"
6607 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6608         echo "You have int (*signal())() instead of void." >&4
6609         val="$undef"
6610 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6611         echo "You have void (*signal())()." >&4
6612         val="$define"
6613 else
6614         case "$d_voidsig" in
6615         '')
6616         echo "I can't determine whether signal handler returns void or int..." >&4
6617                 dflt=void
6618                 rp="What type does your signal handler return?"
6619                 . ./myread
6620                 case "$ans" in
6621                 v*) val="$define";;
6622                 *) val="$undef";;
6623                 esac;;
6624         "$define")
6625                 echo "As you already told me, signal handler returns void." >&4
6626                 val="$define"
6627                 ;;
6628         *)      echo "As you already told me, signal handler returns int." >&4
6629                 val="$undef"
6630                 ;;
6631         esac
6632 fi
6633 set d_voidsig
6634 eval $setvar
6635 case "$d_voidsig" in
6636 "$define") signal_t="void";;
6637 *) signal_t="int";;
6638 esac
6639 $rm -f $$.tmp
6640
6641 : check for ability to cast large floats to 32-bit ints.
6642 echo " "
6643 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6644 if $test "$intsize" -ge 4; then
6645         xxx=int
6646 else
6647         xxx=long
6648 fi
6649 $cat >try.c <<EOCP
6650 #include <stdio.h>
6651 #include <sys/types.h>
6652 #include <signal.h>
6653 $signal_t blech(s) int s; { exit(3); }
6654 int main()
6655 {
6656         $xxx i32;
6657         double f, g;
6658         int result = 0;
6659         char str[16];
6660         signal(SIGFPE, blech);
6661
6662         /* Don't let compiler optimize the test away.  Store the number 
6663            in a writable string for gcc to pass to sscanf under HP/UX.
6664         */
6665         sprintf(str, "2147483647");
6666         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6667         g = 10 * f;
6668         i32  = ($xxx) g;
6669
6670         /* x86 processors will probably give 0x8000 0000, which is a
6671        sign change.  We don't want that.  We want to mimic SPARC
6672            behavior here, which is to preserve the sign and give
6673            back 0x7fff ffff.
6674         */
6675         if (i32 != ($xxx) f)
6676                 result |= 1;
6677         exit(result);
6678 }
6679 EOCP
6680 set try
6681 if eval $compile_ok; then
6682         ./try
6683         yyy=$?
6684 else
6685         echo "(I can't seem to compile the test program--assuming it can't)"
6686         yyy=1
6687 fi
6688 case "$yyy" in
6689 0)      val="$define"
6690         echo "Yup, it can."
6691         ;;
6692 *)      val="$undef"
6693         echo "Nope, it can't."
6694         ;;
6695 esac
6696 set d_casti32
6697 eval $setvar
6698 $rm -f try try.*
6699
6700 : check for ability to cast negative floats to unsigned
6701 echo " "
6702 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6703 $cat >try.c <<EOCP
6704 #include <stdio.h>
6705 #include <sys/types.h>
6706 #include <signal.h>
6707 $signal_t blech(s) int s; { exit(7); }
6708 $signal_t blech_in_list(s) int s; { exit(4); }
6709 unsigned long dummy_long(p) unsigned long p; { return p; }
6710 unsigned int dummy_int(p) unsigned int p; { return p; }
6711 unsigned short dummy_short(p) unsigned short p; { return p; }
6712 int main()
6713 {
6714         double f;
6715         unsigned long along;
6716         unsigned int aint;
6717         unsigned short ashort;
6718         int result = 0;
6719         char str[16];
6720         
6721         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6722            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6723            optimized the whole file away
6724         */
6725         /* Store the number in a writable string for gcc to pass to 
6726            sscanf under HP/UX.
6727         */
6728         sprintf(str, "-123");
6729         sscanf(str, "%lf", &f);  /* f = -123.; */
6730
6731         signal(SIGFPE, blech);
6732         along = (unsigned long)f;
6733         aint = (unsigned int)f;
6734         ashort = (unsigned short)f;
6735         if (along != (unsigned long)-123)
6736                 result |= 1;
6737         if (aint != (unsigned int)-123)
6738                 result |= 1;
6739         if (ashort != (unsigned short)-123)
6740                 result |= 1;
6741         sprintf(str, "1073741824.");
6742         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6743         f = f + f;
6744         along = 0;
6745         along = (unsigned long)f;
6746         if (along != 0x80000000)
6747                 result |= 2;
6748         f -= 1.;
6749         along = 0;
6750         along = (unsigned long)f;
6751         if (along != 0x7fffffff)
6752                 result |= 1;
6753         f += 2.;
6754         along = 0;
6755         along = (unsigned long)f;
6756         if (along != 0x80000001)
6757                 result |= 2;
6758         if (result)
6759                 exit(result);
6760         signal(SIGFPE, blech_in_list);
6761         sprintf(str, "123.");
6762         sscanf(str, "%lf", &f);  /* f = 123.; */
6763         along = dummy_long((unsigned long)f);
6764         aint = dummy_int((unsigned int)f);
6765         ashort = dummy_short((unsigned short)f);
6766         if (along != (unsigned long)123)
6767                 result |= 4;
6768         if (aint != (unsigned int)123)
6769                 result |= 4;
6770         if (ashort != (unsigned short)123)
6771                 result |= 4;
6772         exit(result);
6773
6774 }
6775 EOCP
6776 set try
6777 if eval $compile_ok; then
6778         ./try
6779         castflags=$?
6780 else
6781         echo "(I can't seem to compile the test program--assuming it can't)"
6782         castflags=7
6783 fi
6784 case "$castflags" in
6785 0)      val="$define"
6786         echo "Yup, it can."
6787         ;;
6788 *)      val="$undef"
6789         echo "Nope, it can't."
6790         ;;
6791 esac
6792 set d_castneg
6793 eval $setvar
6794 $rm -f try.*
6795
6796 : see if vprintf exists
6797 echo " "
6798 if set vprintf val -f d_vprintf; eval $csym; $val; then
6799         echo 'vprintf() found.' >&4
6800         val="$define"
6801         $cat >vprintf.c <<'EOF'
6802 #include <varargs.h>
6803
6804 int main() { xxx("foo"); }
6805
6806 xxx(va_alist)
6807 va_dcl
6808 {
6809         va_list args;
6810         char buf[10];
6811
6812         va_start(args);
6813         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6814 }
6815 EOF
6816         set vprintf
6817         if eval $compile && ./vprintf; then
6818                 echo "Your vsprintf() returns (int)." >&4
6819                 val2="$undef"
6820         else
6821                 echo "Your vsprintf() returns (char*)." >&4
6822                 val2="$define"
6823         fi
6824 else
6825         echo 'vprintf() NOT found.' >&4
6826                 val="$undef"
6827                 val2="$undef"
6828 fi
6829 set d_vprintf
6830 eval $setvar
6831 val=$val2
6832 set d_charvspr
6833 eval $setvar
6834
6835 : see if chown exists
6836 set chown d_chown
6837 eval $inlibc
6838
6839 : see if chroot exists
6840 set chroot d_chroot
6841 eval $inlibc
6842
6843 : see if chsize exists
6844 set chsize d_chsize
6845 eval $inlibc
6846
6847 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6848 while $test $# -ge 2; do
6849         case "$1" in
6850         $define) echo "#include <$2>";;
6851         esac ;
6852     shift 2;
6853 done > try.c;
6854 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6855 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6856         val="$define";
6857 else
6858         val="$undef";
6859 fi;
6860 set $varname;
6861 eval $setvar;
6862 $rm -f try.c try.o'
6863
6864 : see if this is a sys/uio.h system
6865 set sys/uio.h i_sysuio
6866 eval $inhdr
6867
6868 echo "Checking to see if your system supports struct iovec..." >&4
6869 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6870 eval $hasfield
6871 case "$d_iovec_s" in
6872 "$define")      echo "Yup, it does." >&4
6873                 ;;
6874 *)              echo "Nope, it doesn't." >&4
6875                 ;;
6876 esac
6877
6878 socketlib=''
6879 sockethdr=''
6880 : see whether socket exists
6881 echo " "
6882 $echo $n "Hmm... $c" >&4
6883 if set socket val -f d_socket; eval $csym; $val; then
6884         echo "Looks like you have Berkeley networking support." >&4
6885         d_socket="$define"
6886         if set setsockopt val -f; eval $csym; $val; then
6887                 d_oldsock="$undef"
6888         else
6889                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6890                 d_oldsock="$define"
6891         fi
6892 else
6893         if $contains socklib libc.list >/dev/null 2>&1; then
6894                 echo "Looks like you have Berkeley networking support." >&4
6895                 d_socket="$define"
6896                 : we will have to assume that it supports the 4.2 BSD interface
6897                 d_oldsock="$undef"
6898         else
6899                 echo "You don't have Berkeley networking in libc$_a..." >&4
6900                 if test "X$d_socket" = "X$define"; then
6901                    echo "...but you seem to believe that you have sockets." >&4
6902                 else
6903                         for net in net socket
6904                         do
6905                                 if test -f /usr/lib/lib$net$_a; then
6906                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6907                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6908                                         if $contains socket libc.list >/dev/null 2>&1; then
6909                                                 d_socket="$define"
6910                                                 socketlib="-l$net"
6911                                                 case "$net" in
6912                                                 net)
6913                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6914                                                         sockethdr="-I/usr/netinclude"
6915                                                         ;;
6916                                                 esac
6917                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6918                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6919                                                         d_oldsock="$undef"
6920                                                 else
6921                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6922                                                         d_oldsock="$define"
6923                                                 fi
6924                                                 break
6925                                         fi
6926                                 fi
6927                         done
6928                         if test "X$d_socket" != "X$define"; then
6929                            echo "or anywhere else I see." >&4
6930                            d_socket="$undef"
6931                            d_oldsock="$undef"
6932                         fi
6933                 fi
6934         fi
6935 fi
6936
6937 : see if socketpair exists
6938 set socketpair d_sockpair
6939 eval $inlibc
6940
6941
6942 echo " "
6943 echo "Checking the availability of certain socket constants..." >& 4
6944 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6945         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6946         $cat >try.c <<EOF
6947 #include <sys/types.h>
6948 #include <sys/socket.h>
6949 int main() {
6950     int i = $ENUM;
6951 }
6952 EOF
6953         val="$undef"
6954         set try; if eval $compile; then
6955                 val="$define"
6956         fi
6957         set d_${enum}; eval $setvar
6958         $rm -f try.c try
6959 done
6960
6961 set sendmsg d_sendmsg
6962 eval $inlibc
6963
6964 set recvmsg d_recvmsg
6965 eval $inlibc
6966
6967 echo " "
6968 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6969 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6970 eval $hasfield
6971 case "$d_msghdr_s" in
6972 "$define")      echo "Yup, it does." >&4
6973                 ;;
6974 *)              echo "Nope, it doesn't." >&4
6975                 ;;
6976 esac
6977
6978 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6979 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6980 eval $hasfield
6981 case "$d_cmsghdr_s" in
6982 "$define")      echo "Yup, it does." >&4
6983                 ;;
6984 *)              echo "Nope, it doesn't." >&4
6985                 ;;
6986 esac
6987
6988 : check for const keyword
6989 echo " "
6990 echo 'Checking to see if your C compiler knows about "const"...' >&4
6991 $cat >const.c <<'EOCP'
6992 typedef struct spug { int drokk; } spug;
6993 int main()
6994 {
6995         const char *foo;
6996         const spug y;
6997 }
6998 EOCP
6999 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7000         val="$define"
7001         echo "Yup, it does."
7002 else
7003         val="$undef"
7004         echo "Nope, it doesn't."
7005 fi
7006 set d_const
7007 eval $setvar
7008
7009 : see if crypt exists
7010 echo " "
7011 if set crypt val -f d_crypt; eval $csym; $val; then
7012         echo 'crypt() found.' >&4
7013         val="$define"
7014         cryptlib=''
7015 else
7016         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7017         if $test -z "$cryptlib"; then
7018                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7019         else
7020                 cryptlib=-lcrypt
7021         fi
7022         if $test -z "$cryptlib"; then
7023                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7024         else
7025                 cryptlib=-lcrypt
7026         fi
7027         if $test -z "$cryptlib"; then
7028                 cryptlib=`./loc libcrypt$_a "" $libpth`
7029         else
7030                 cryptlib=-lcrypt
7031         fi
7032         if $test -z "$cryptlib"; then
7033                 echo 'crypt() NOT found.' >&4
7034                 val="$undef"
7035         else
7036                 val="$define"
7037         fi
7038 fi
7039 set d_crypt
7040 eval $setvar
7041
7042 : get csh whereabouts
7043 case "$csh" in
7044 'csh') val="$undef" ;;
7045 *) val="$define" ;;
7046 esac
7047 set d_csh
7048 eval $setvar
7049 : Respect a hint or command line value for full_csh.
7050 case "$full_csh" in
7051 '') full_csh=$csh ;;
7052 esac
7053
7054 : see if cuserid exists
7055 set cuserid d_cuserid
7056 eval $inlibc
7057
7058 : see if this is a limits.h system
7059 set limits.h i_limits
7060 eval $inhdr
7061
7062 : see if this is a float.h system
7063 set float.h i_float
7064 eval $inhdr
7065
7066 : See if number of significant digits in a double precision number is known
7067 echo " "
7068 $cat >dbl_dig.c <<EOM
7069 #$i_limits I_LIMITS
7070 #$i_float I_FLOAT
7071 #ifdef I_LIMITS
7072 #include <limits.h>
7073 #endif
7074 #ifdef I_FLOAT
7075 #include <float.h>
7076 #endif
7077 #ifdef DBL_DIG
7078 printf("Contains DBL_DIG");
7079 #endif
7080 EOM
7081 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7082 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7083         echo "DBL_DIG found." >&4
7084         val="$define"
7085 else
7086         echo "DBL_DIG NOT found." >&4
7087         val="$undef"
7088 fi
7089 $rm -f dbl_dig.?
7090 set d_dbl_dig
7091 eval $setvar
7092
7093
7094 if $test X"$use64bits" = X"$define"; then
7095         : see if dbminit64 exists
7096         set dbminit64 d_dbminit64
7097         eval $inlibc
7098
7099         : see if dbmclose64 exists
7100         set dbmclose64 d_dbmclose64
7101         eval $inlibc
7102
7103         : see if fetch64 exists
7104         set fetch64 d_fetch64
7105         eval $inlibc
7106
7107         : see if store64 exists
7108         set store64 d_store64
7109         eval $inlibc
7110
7111         : see if delete64 exists
7112         set delete64 d_delete64
7113         eval $inlibc
7114
7115         : see if firstkey64 exists
7116         set firstkey64 d_firstkey64
7117         eval $inlibc
7118
7119         : see if nextkey64 exists
7120         set nextkey64 d_nextkey64
7121         eval $inlibc
7122 else
7123         val="$undef"
7124         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7125         do
7126                 set $xxx
7127                 eval $setvar
7128         done
7129 fi
7130
7131 : see if difftime exists
7132 set difftime d_difftime
7133 eval $inlibc
7134
7135 : see if sys/stat.h is available
7136 set sys/stat.h i_sysstat
7137 eval $inhdr
7138
7139 : see if this is a dirent system
7140 echo " "
7141 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7142         val="$define"
7143         echo "<dirent.h> found." >&4
7144 else
7145         val="$undef"
7146         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7147                 echo "<sys/dir.h> found." >&4
7148                 echo " "
7149         else
7150                 xinc=`./findhdr sys/ndir.h`
7151         fi
7152         echo "<dirent.h> NOT found." >&4
7153 fi
7154 set i_dirent
7155 eval $setvar
7156
7157 : Look for type of directory structure.
7158 echo " "
7159 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7160
7161 case "$direntrytype" in
7162 ''|' ')
7163         case "$i_dirent" in
7164         $define) guess1='struct dirent' ;;
7165         *) guess1='struct direct'  ;;
7166         esac
7167         ;;
7168 *)      guess1="$direntrytype"
7169         ;;
7170 esac
7171
7172 case "$guess1" in
7173 'struct dirent') guess2='struct direct' ;;
7174 *) guess2='struct dirent' ;;
7175 esac
7176                 
7177 if $contains "$guess1" try.c >/dev/null 2>&1; then
7178         direntrytype="$guess1"
7179         echo "Your directory entries are $direntrytype." >&4
7180 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7181         direntrytype="$guess2"
7182         echo "Your directory entries seem to be $direntrytype." >&4
7183 else
7184         echo "I don't recognize your system's directory entries." >&4
7185         rp="What type is used for directory entries on this system?"
7186         dflt="$guess1"
7187         . ./myread
7188         direntrytype="$ans"
7189 fi
7190 $rm -f try.c
7191
7192
7193 : see if the directory entry stores field length
7194 echo " "
7195 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7196 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7197         echo "Good, your directory entry keeps length information in d_namlen." >&4
7198         val="$define"
7199 else
7200         echo "Your directory entry does not know about the d_namlen field." >&4
7201         val="$undef"
7202 fi
7203 set d_dirnamlen
7204 eval $setvar
7205 $rm -f try.c
7206
7207
7208 if $test X"$use64bits" = X"$define"; then
7209         : see if fstat64 exists
7210         set fstat64 d_fstat64
7211         eval $inlibc
7212
7213         : see if ftruncate64 exists
7214         set ftruncate64 d_ftruncate64
7215         eval $inlibc
7216
7217         : see if lockf64 exists
7218         set lockf64 d_lockf64
7219         eval $inlibc
7220
7221         : see if lseek64 exists
7222         set lseek64 d_lseek64
7223         eval $inlibc
7224
7225         : see if lstat64 exists
7226         set lstat64 d_lstat64
7227         eval $inlibc
7228
7229         : see if open64 exists
7230         set open64 d_open64
7231         eval $inlibc
7232
7233         : see if opendir64 exists
7234         set opendir64 d_opendir64
7235         eval $inlibc
7236
7237         : see if readdir64 exists
7238         set readdir64 d_readdir64
7239         eval $inlibc
7240
7241         : see if seekdir64 exists
7242         set seekdir64 d_seekdir64
7243         eval $inlibc
7244
7245         : see if stat64 exists
7246         set stat64 d_stat64
7247         eval $inlibc
7248
7249         : see if telldir64 exists
7250         set telldir64 d_telldir64
7251         eval $inlibc
7252
7253         : see if truncate64 exists
7254         set truncate64 d_truncate64
7255         eval $inlibc
7256
7257         : check for off64_t
7258         echo " "
7259         echo $n "Checking to see if your system supports off64_t...$c" >&4
7260         $cat >try.c <<EOCP
7261 #include <sys/types.h>
7262 off64_t foo() { off64_t x; x = 7; return x; }'
7263 EOCP
7264         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7265                 val="$define"
7266                 echo " Yup, it does." >&4
7267         else
7268                 val="$undef"
7269                 echo " Nope, it doesn't." >&4
7270         fi
7271         $rm -f try.*
7272         set d_off64t
7273         eval $setvar
7274
7275         : check for ino64_t
7276         echo " "
7277         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7278         val="$undef"
7279         case "$i_sysstat" in
7280         "$define" )
7281                 $cat >try.c <<EOCP
7282 #include <sys/types.h>
7283 #include <sys/stat.h>
7284 ino64_t foo() { ino64_t x; x = 7; return x; }'
7285 EOCP
7286                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7287                         val="$define"
7288                 fi
7289                 $rm -f try.*
7290                 ;;
7291         esac
7292         if $test "X$val" = X"$define"; then
7293                 echo " Yup, it does." >&4
7294         else
7295                 echo " Nope, it doesn't." >&4
7296         fi
7297         set d_ino64t
7298         eval $setvar
7299
7300         : check for struct flock64
7301         echo " "
7302         echo "Checking to see if your system supports struct flock64..." >&4
7303         if $h_fcntl; then
7304                 set d_flock64_s flock64 l_len define fcntl.h
7305                 eval $hasfield
7306         else
7307                 val="$undef"
7308                 set d_flock64_s
7309                 eval $setvar
7310         fi
7311         case "$d_flock64_s" in
7312         "$define")      echo "Yup, it does." >&4
7313                         ;;
7314         *)              echo "Nope, it doesn't." >&4
7315                         ;;
7316         esac
7317
7318         : check for struct dirent64
7319         echo " "
7320         echo "Checking to see if your system supports struct dirent64..." >&4
7321         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7322         eval $hasfield
7323         case "$d_dirent64_s" in
7324         "$define")      echo "Yup, it does." >&4
7325                         ;;
7326         *)              echo "Nope, it doesn't." >&4
7327                         ;;
7328         esac
7329
7330 else
7331         val="$undef"
7332         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
7333         do
7334                 set $xxx
7335                 eval $setvar
7336         done
7337 fi
7338
7339 : see if dlerror exists
7340 xxx_runnm="$runnm"
7341 runnm=false
7342 set dlerror d_dlerror
7343 eval $inlibc
7344 runnm="$xxx_runnm"
7345
7346 : see if dlfcn is available
7347 set dlfcn.h i_dlfcn
7348 eval $inhdr
7349
7350 case "$usedl" in
7351 $define|y|true)
7352         $cat << EOM
7353
7354 On a few systems, the dynamically loaded modules that perl generates and uses
7355 will need a different extension than shared libs. The default will probably
7356 be appropriate.
7357
7358 EOM
7359         case "$dlext" in
7360         '')     dflt="$so" ;;
7361         *)      dflt="$dlext" ;;
7362         esac
7363         rp='What is the extension of dynamically loaded modules'
7364         . ./myread
7365         dlext="$ans"
7366         ;;
7367 *)
7368         dlext="none"
7369         ;;
7370 esac
7371
7372 : Check if dlsym need a leading underscore
7373 echo " "
7374 val="$undef"
7375
7376 case "$dlsrc" in
7377 dl_dlopen.xs)
7378         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7379         $cat >dyna.c <<'EOM'
7380 fred () { }
7381 EOM
7382
7383 $cat >fred.c<<EOM
7384
7385 #include <stdio.h>
7386 #$i_dlfcn I_DLFCN
7387 #ifdef I_DLFCN
7388 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7389 #else
7390 #include <sys/types.h>
7391 #include <nlist.h>
7392 #include <link.h>
7393 #endif
7394
7395 extern int fred() ;
7396
7397 int main()
7398 {
7399     void * handle ;
7400     void * symbol ;
7401 #ifndef RTLD_LAZY
7402     int mode = 1 ;
7403 #else
7404     int mode = RTLD_LAZY ;
7405 #endif
7406     handle = dlopen("./dyna.$dlext", mode) ;
7407     if (handle == NULL) {
7408         printf ("1\n") ;
7409         fflush (stdout) ;
7410         exit(0);
7411     }
7412     symbol = dlsym(handle, "fred") ;
7413     if (symbol == NULL) {
7414         /* try putting a leading underscore */
7415         symbol = dlsym(handle, "_fred") ;
7416         if (symbol == NULL) {
7417             printf ("2\n") ;
7418             fflush (stdout) ;
7419             exit(0);
7420         }
7421         printf ("3\n") ;
7422     }
7423     else
7424         printf ("4\n") ;
7425     fflush (stdout) ;
7426     exit(0);
7427 }
7428 EOM
7429         : Call the object file tmp-dyna.o in case dlext=o.
7430         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7431                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7432                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7433                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7434                 xxx=`./fred`
7435                 case $xxx in
7436                 1)      echo "Test program failed using dlopen." >&4
7437                         echo "Perhaps you should not use dynamic loading." >&4;;
7438                 2)      echo "Test program failed using dlsym." >&4
7439                         echo "Perhaps you should not use dynamic loading." >&4;;
7440                 3)      echo "dlsym needs a leading underscore" >&4
7441                         val="$define" ;;
7442                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7443                 esac
7444         else
7445                 echo "I can't compile and run the test program." >&4
7446         fi
7447         ;;
7448 esac
7449                 
7450 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7451
7452 set d_dlsymun
7453 eval $setvar
7454
7455 hasproto='varname=$1; func=$2; shift; shift;
7456 while $test $# -ge 2; do
7457         case "$1" in
7458         $define) echo "#include <$2>";;
7459         esac ;
7460     shift 2;
7461 done > try.c;
7462 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7463 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7464         echo "$func() prototype found.";
7465         val="$define";
7466 else
7467         echo "$func() prototype NOT found.";
7468         val="$undef";
7469 fi;
7470 set $varname;
7471 eval $setvar;
7472 $rm -f try.c tryout.c'
7473
7474 : see if prototype for drand48 is available
7475 echo " "
7476 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7477 eval $hasproto
7478
7479 : see if dup2 exists
7480 set dup2 d_dup2
7481 eval $inlibc
7482
7483 : see if eaccess exists
7484 set eaccess d_eaccess
7485 eval $inlibc
7486
7487 : see if endgrent exists
7488 set endgrent d_endgrent
7489 eval $inlibc
7490
7491 : see if endhostent exists
7492 set endhostent d_endhent
7493 eval $inlibc
7494
7495 : see if endnetent exists
7496 set endnetent d_endnent
7497 eval $inlibc
7498
7499 : see if endprotoent exists
7500 set endprotoent d_endpent
7501 eval $inlibc
7502
7503 : see if endpwent exists
7504 set endpwent d_endpwent
7505 eval $inlibc
7506
7507 : see if endservent exists
7508 set endservent d_endsent
7509 eval $inlibc
7510
7511 : Locate the flags for 'open()'
7512 echo " "
7513 $cat >open3.c <<'EOCP'
7514 #include <sys/types.h>
7515 #ifdef I_FCNTL
7516 #include <fcntl.h>
7517 #endif
7518 #ifdef I_SYS_FILE
7519 #include <sys/file.h>
7520 #endif
7521 int main() {
7522         if(O_RDONLY);
7523 #ifdef O_TRUNC
7524         exit(0);
7525 #else
7526         exit(1);
7527 #endif
7528 }
7529 EOCP
7530 : check sys/file.h first to get FREAD on Sun
7531 if $test `./findhdr sys/file.h` && \
7532                 set open3 -DI_SYS_FILE && eval $compile; then
7533         h_sysfile=true;
7534         echo "<sys/file.h> defines the O_* constants..." >&4
7535         if ./open3; then
7536                 echo "and you have the 3 argument form of open()." >&4
7537                 val="$define"
7538         else
7539                 echo "but not the 3 argument form of open().  Oh, well." >&4
7540                 val="$undef"
7541         fi
7542 elif $test `./findhdr fcntl.h` && \
7543                 set open3 -DI_FCNTL && eval $compile; then
7544         h_fcntl=true;
7545         echo "<fcntl.h> defines the O_* constants..." >&4
7546         if ./open3; then
7547                 echo "and you have the 3 argument form of open()." >&4
7548                 val="$define"
7549         else
7550                 echo "but not the 3 argument form of open().  Oh, well." >&4
7551                 val="$undef"
7552         fi
7553 else
7554         val="$undef"
7555         echo "I can't find the O_* constant definitions!  You got problems." >&4
7556 fi
7557 set d_open3
7558 eval $setvar
7559 $rm -f open3*
7560
7561 : check for non-blocking I/O stuff
7562 case "$h_sysfile" in
7563 true) echo "#include <sys/file.h>" > head.c;;
7564 *)
7565         case "$h_fcntl" in
7566         true) echo "#include <fcntl.h>" > head.c;;
7567         *) echo "#include <sys/fcntl.h>" > head.c;;
7568         esac
7569         ;;
7570 esac
7571 echo " "
7572 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7573 case "$o_nonblock" in
7574 '')
7575         $cat head.c > try.c
7576         $cat >>try.c <<'EOCP'
7577 int main() {
7578 #ifdef O_NONBLOCK
7579         printf("O_NONBLOCK\n");
7580         exit(0);
7581 #endif
7582 #ifdef O_NDELAY
7583         printf("O_NDELAY\n");
7584         exit(0);
7585 #endif
7586 #ifdef FNDELAY
7587         printf("FNDELAY\n");
7588         exit(0);
7589 #endif
7590         exit(0);
7591 }
7592 EOCP
7593         set try
7594         if eval $compile_ok; then
7595                 o_nonblock=`./try`
7596                 case "$o_nonblock" in
7597                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7598                 *) echo "Seems like we can use $o_nonblock.";;
7599                 esac
7600         else
7601                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7602         fi
7603         ;;
7604 *) echo "Using $hint value $o_nonblock.";;
7605 esac
7606 $rm -f try try.* .out core
7607
7608 echo " "
7609 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7610 case "$eagain" in
7611 '')
7612         $cat head.c > try.c
7613         $cat >>try.c <<EOCP
7614 #include <errno.h>
7615 #include <sys/types.h>
7616 #include <signal.h>
7617 #define MY_O_NONBLOCK $o_nonblock
7618 #ifndef errno  /* XXX need better Configure test */
7619 extern int errno;
7620 #endif
7621 $signal_t blech(x) int x; { exit(3); }
7622 EOCP
7623         $cat >> try.c <<'EOCP'
7624 int main()
7625 {
7626         int pd[2];
7627         int pu[2];
7628         char buf[1];
7629         char string[100];
7630
7631         pipe(pd);       /* Down: child -> parent */
7632         pipe(pu);       /* Up: parent -> child */
7633         if (0 != fork()) {
7634                 int ret;
7635                 close(pd[1]);   /* Parent reads from pd[0] */
7636                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7637                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7638                         exit(1);
7639                 signal(SIGALRM, blech);
7640                 alarm(5);
7641                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7642                         exit(2);
7643                 sprintf(string, "%d\n", ret);
7644                 write(2, string, strlen(string));
7645                 alarm(0);
7646 #ifdef EAGAIN
7647                 if (errno == EAGAIN) {
7648                         printf("EAGAIN\n");
7649                         goto ok;
7650                 }
7651 #endif
7652 #ifdef EWOULDBLOCK
7653                 if (errno == EWOULDBLOCK)
7654                         printf("EWOULDBLOCK\n");
7655 #endif
7656         ok:
7657                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7658                 sleep(2);                               /* Give it time to close our pipe */
7659                 alarm(5);
7660                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7661                 alarm(0);
7662                 sprintf(string, "%d\n", ret);
7663                 write(3, string, strlen(string));
7664                 exit(0);
7665         }
7666
7667         close(pd[0]);                   /* We write to pd[1] */
7668         close(pu[1]);                   /* We read from pu[0] */
7669         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7670         close(pd[1]);                   /* Pipe pd is now fully closed! */
7671         exit(0);                                /* Bye bye, thank you for playing! */
7672 }
7673 EOCP
7674         set try
7675         if eval $compile_ok; then
7676                 echo "$startsh" >mtry
7677                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7678                 chmod +x mtry
7679                 ./mtry >/dev/null 2>&1
7680                 case $? in
7681                 0) eagain=`$cat try.out`;;
7682                 1) echo "Could not perform non-blocking setting!";;
7683                 2) echo "I did a successful read() for something that was not there!";;
7684                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7685                 *) echo "Something terribly wrong happened during testing.";;
7686                 esac
7687                 rd_nodata=`$cat try.ret`
7688                 echo "A read() system call with no data present returns $rd_nodata."
7689                 case "$rd_nodata" in
7690                 0|-1) ;;
7691                 *)
7692                         echo "(That's peculiar, fixing that to be -1.)"
7693                         rd_nodata=-1
7694                         ;;
7695                 esac
7696                 case "$eagain" in
7697                 '')
7698                         echo "Forcing errno EAGAIN on read() with no data available."
7699                         eagain=EAGAIN
7700                         ;;
7701                 *)
7702                         echo "Your read() sets errno to $eagain when no data is available."
7703                         ;;
7704                 esac
7705                 status=`$cat try.err`
7706                 case "$status" in
7707                 0) echo "And it correctly returns 0 to signal EOF.";;
7708                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7709                 *) echo "However, your read() returns '$status' on EOF??";;
7710                 esac
7711                 val="$define"
7712                 if test "$status" = "$rd_nodata"; then
7713                         echo "WARNING: you can't distinguish between EOF and no data!"
7714                         val="$undef"
7715                 fi
7716         else
7717                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7718                 eagain=EAGAIN
7719         fi
7720         set d_eofnblk
7721         eval $setvar
7722         ;;
7723 *)
7724         echo "Using $hint value $eagain."
7725         echo "Your read() returns $rd_nodata when no data is present."
7726         case "$d_eofnblk" in
7727         "$define") echo "And you can see EOF because read() returns 0.";;
7728         "$undef") echo "But you can't see EOF status from read() returned value.";;
7729         *)
7730                 echo "(Assuming you can't see EOF status from read anyway.)"
7731                 d_eofnblk=$undef
7732                 ;;
7733         esac
7734         ;;
7735 esac
7736 $rm -f try try.* .out core head.c mtry
7737
7738 : see if fchmod exists
7739 set fchmod d_fchmod
7740 eval $inlibc
7741
7742 : see if fchown exists
7743 set fchown d_fchown
7744 eval $inlibc
7745
7746 : see if this is an fcntl system
7747 set fcntl d_fcntl
7748 eval $inlibc
7749
7750 : see if sys/select.h has to be included
7751 set sys/select.h i_sysselct
7752 eval $inhdr
7753
7754 : see if we should include time.h, sys/time.h, or both
7755 echo " "
7756 if test "X$timeincl" = X; then
7757         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7758         $echo $n "I'm now running the test program...$c"
7759         $cat >try.c <<'EOCP'
7760 #include <sys/types.h>
7761 #ifdef I_TIME
7762 #include <time.h>
7763 #endif
7764 #ifdef I_SYSTIME
7765 #ifdef SYSTIMEKERNEL
7766 #define KERNEL
7767 #endif
7768 #include <sys/time.h>
7769 #endif
7770 #ifdef I_SYSSELECT
7771 #include <sys/select.h>
7772 #endif
7773 int main()
7774 {
7775         struct tm foo;
7776 #ifdef S_TIMEVAL
7777         struct timeval bar;
7778 #endif
7779 #ifdef S_TIMEZONE
7780         struct timezone tzp;
7781 #endif
7782         if (foo.tm_sec == foo.tm_sec)
7783                 exit(0);
7784 #ifdef S_TIMEVAL
7785         if (bar.tv_sec == bar.tv_sec)
7786                 exit(0);
7787 #endif
7788         exit(1);
7789 }
7790 EOCP
7791         flags=''
7792         for s_timezone in '-DS_TIMEZONE' ''; do
7793         sysselect=''
7794         for s_timeval in '-DS_TIMEVAL' ''; do
7795         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7796         for i_time in '' '-DI_TIME'; do
7797         for i_systime in '-DI_SYSTIME' ''; do
7798                 case "$flags" in
7799                 '') $echo $n ".$c"
7800                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7801                         if eval $compile; then
7802                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7803                                 shift
7804                                 flags="$*"
7805                                 echo " "
7806                                 $echo $n "Succeeded with $flags$c"
7807                         fi
7808                         ;;
7809                 esac
7810         done
7811         done
7812         done
7813         done
7814         done
7815         timeincl=''
7816         echo " "
7817         case "$flags" in
7818         *SYSTIMEKERNEL*) i_systimek="$define"
7819                 timeincl=`./findhdr sys/time.h`
7820                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7821         *) i_systimek="$undef";;
7822         esac
7823         case "$flags" in
7824         *I_TIME*) i_time="$define"
7825                 timeincl=`./findhdr time.h`" $timeincl"
7826                 echo "We'll include <time.h>." >&4;;
7827         *) i_time="$undef";;
7828         esac
7829         case "$flags" in
7830         *I_SYSTIME*) i_systime="$define"
7831                 timeincl=`./findhdr sys/time.h`" $timeincl"
7832                 echo "We'll include <sys/time.h>." >&4;;
7833         *) i_systime="$undef";;
7834         esac
7835         $rm -f try.c try
7836 fi
7837
7838 : check for fd_set items
7839 $cat <<EOM
7840
7841 Checking to see how well your C compiler handles fd_set and friends ...
7842 EOM
7843 $cat >fd_set.c <<EOCP
7844 #$i_systime I_SYS_TIME
7845 #$i_sysselct I_SYS_SELECT
7846 #$d_socket HAS_SOCKET
7847 #include <sys/types.h>
7848 #ifdef HAS_SOCKET
7849 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7850 #endif
7851 #ifdef I_SYS_TIME
7852 #include <sys/time.h>
7853 #endif
7854 #ifdef I_SYS_SELECT
7855 #include <sys/select.h>
7856 #endif
7857 int main() {
7858         fd_set fds;
7859
7860 #ifdef TRYBITS
7861         if(fds.fds_bits);
7862 #endif
7863
7864 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7865         exit(0);
7866 #else
7867         exit(1);
7868 #endif
7869 }
7870 EOCP
7871 set fd_set -DTRYBITS
7872 if eval $compile; then
7873         d_fds_bits="$define"
7874         d_fd_set="$define"
7875         echo "Well, your system knows about the normal fd_set typedef..." >&4
7876         if ./fd_set; then
7877                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7878                 d_fd_macros="$define"
7879         else
7880                 $cat >&4 <<'EOM'
7881 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7882 EOM
7883                 d_fd_macros="$undef"
7884         fi
7885 else
7886         $cat <<'EOM'
7887 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7888 EOM
7889         set fd_set
7890         if eval $compile; then
7891                 d_fds_bits="$undef"
7892                 d_fd_set="$define"
7893                 echo "Well, your system has some sort of fd_set available..." >&4
7894                 if ./fd_set; then
7895                         echo "and you have the normal fd_set macros." >&4
7896                         d_fd_macros="$define"
7897                 else
7898                         $cat <<'EOM'
7899 but not the normal fd_set macros!  Gross!  More work for me...
7900 EOM
7901                         d_fd_macros="$undef"
7902                 fi
7903         else
7904         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7905                 d_fd_set="$undef"
7906                 d_fds_bits="$undef"
7907                 d_fd_macros="$undef"
7908         fi
7909 fi
7910 $rm -f fd_set*
7911
7912 : see if fgetpos exists
7913 set fgetpos d_fgetpos
7914 eval $inlibc
7915
7916
7917 if $test X"$use64bits" = X"$define"; then
7918         : see if fgetpos64 exists
7919         set fgetpos64 d_fgetpos64
7920         eval $inlibc
7921
7922         : see if fopen64 exists
7923         set freopen64 d_fopen64
7924         eval $inlibc
7925
7926         : see if freopen64 exists
7927         set freopen64 d_freopen64
7928         eval $inlibc
7929
7930         : see if fseek64 exists
7931         set fseek64 d_fseek64
7932         eval $inlibc
7933
7934         : see if fseeko64 exists
7935         set fseeko64 d_fseeko64
7936         eval $inlibc
7937
7938         : see if fsetpos64 exists
7939         set fsetpos64 d_fsetpos64
7940         eval $inlibc
7941
7942         : see if ftell64 exists
7943         set ftell64 d_ftell64
7944         eval $inlibc
7945
7946         : see if ftello64 exists
7947         set ftello64 d_ftello64
7948         eval $inlibc
7949
7950         : see if tmpfile64 exists
7951         set tmpfile64 d_tmpfile64
7952         eval $inlibc
7953 else
7954         val="$undef"
7955         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7956         do
7957                 set $xxx
7958                 eval $setvar
7959         done
7960 fi
7961
7962 : see if flock exists
7963 set flock d_flock
7964 eval $inlibc
7965
7966 : see if fork exists
7967 set fork d_fork
7968 eval $inlibc
7969
7970 : see if pathconf exists
7971 set pathconf d_pathconf
7972 eval $inlibc
7973
7974 : see if fpathconf exists
7975 set fpathconf d_fpathconf
7976 eval $inlibc
7977
7978 : see if fseeko exists
7979 set fseeko d_fseeko
7980 eval $inlibc
7981
7982 : see if fsetpos exists
7983 set fsetpos d_fsetpos
7984 eval $inlibc
7985
7986 : see if this is a sys/param system
7987 set sys/param.h i_sysparam
7988 eval $inhdr
7989
7990 : see if this is a sys/mount.h system
7991 set sys/mount.h i_sysmount
7992 eval $inhdr
7993
7994
7995 : see if statfs exists
7996 set statfs d_statfs
7997 eval $inlibc
7998
7999 : see if fstatfs exists
8000 set fstatfs d_fstatfs
8001 eval $inlibc
8002
8003 : see if statfs knows about mount flags
8004 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8005 eval $hasfield
8006
8007
8008 : see if statvfs exists
8009 set statvfs d_statvfs
8010 eval $inlibc
8011
8012 : see if fstatvfs exists
8013 set fstatvfs d_fstatvfs
8014 eval $inlibc
8015
8016
8017 : see if ftello exists
8018 set ftello d_ftello
8019 eval $inlibc
8020
8021 : see if getgrent exists
8022 set getgrent d_getgrent
8023 eval $inlibc
8024
8025 : see if gethostbyaddr exists
8026 set gethostbyaddr d_gethbyaddr
8027 eval $inlibc
8028
8029 : see if gethostbyname exists
8030 set gethostbyname d_gethbyname
8031 eval $inlibc
8032
8033 : see if gethostent exists
8034 set gethostent d_gethent
8035 eval $inlibc
8036
8037 : see how we will look up host name
8038 echo " "
8039 if false; then
8040         : dummy stub to allow use of elif
8041 elif set gethostname val -f d_gethname; eval $csym; $val; then
8042         echo 'gethostname() found.' >&4
8043         d_gethname="$define"
8044         call=gethostname
8045 elif set uname val -f d_uname; eval $csym; $val; then
8046         if ./xenix; then
8047                 $cat <<'EOM'
8048 uname() was found, but you're running xenix, and older versions of xenix
8049 have a broken uname(). If you don't really know whether your xenix is old
8050 enough to have a broken system call, use the default answer.
8051
8052 EOM
8053                 dflt=y
8054                 case "$d_uname" in
8055                 "$define") dflt=n;;
8056                 esac
8057                 rp='Is your uname() broken?'
8058                 . ./myread
8059                 case "$ans" in
8060                 n*) d_uname="$define"; call=uname;;
8061                 esac
8062         else
8063                 echo 'uname() found.' >&4
8064                 d_uname="$define"
8065                 call=uname
8066         fi
8067 fi
8068 case "$d_gethname" in
8069 '') d_gethname="$undef";;
8070 esac
8071 case "$d_uname" in
8072 '') d_uname="$undef";;
8073 esac
8074 case "$d_uname$d_gethname" in
8075 *define*)
8076         dflt=n
8077         cat <<EOM
8078  
8079 Every now and then someone has a $call() that lies about the hostname
8080 but can't be fixed for political or economic reasons.  If you wish, I can
8081 pretend $call() isn't there and maybe compute hostname at run-time
8082 thanks to the '$phostname' command.
8083
8084 EOM
8085         rp="Shall I ignore $call() from now on?"
8086         . ./myread
8087         case "$ans" in
8088         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8089         esac;;
8090 esac
8091 case "$phostname" in
8092 '') aphostname='';;
8093 *) case "$aphostname" in
8094         /*) ;;
8095         *) set X $phostname
8096                 shift
8097                 file=$1
8098                 shift
8099                 file=`./loc $file $file $pth`
8100                 aphostname=`echo $file $*`
8101                 ;;
8102         esac
8103         ;;
8104 esac
8105 case "$d_uname$d_gethname" in
8106 *define*) ;;
8107 *)
8108         case "$phostname" in
8109         '')
8110                 echo "There will be no way for $package to get your hostname." >&4;;
8111         *)
8112         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8113                 ;;
8114         esac;;
8115 esac
8116 case "$d_phostname" in
8117 '') d_phostname="$undef";;
8118 esac
8119
8120 : see if this is a netdb.h system
8121 set netdb.h i_netdb
8122 eval $inhdr
8123
8124 : see if prototypes for various gethostxxx netdb.h functions are available
8125 echo " "
8126 set d_gethostprotos gethostent $i_netdb netdb.h
8127 eval $hasproto
8128
8129 : see if getlogin exists
8130 set getlogin d_getlogin
8131 eval $inlibc
8132
8133 : see if getnetbyaddr exists
8134 set getnetbyaddr d_getnbyaddr
8135 eval $inlibc
8136
8137 : see if getnetbyname exists
8138 set getnetbyname d_getnbyname
8139 eval $inlibc
8140
8141 : see if getnetent exists
8142 set getnetent d_getnent
8143 eval $inlibc
8144
8145 : see if prototypes for various getnetxxx netdb.h functions are available
8146 echo " "
8147 set d_getnetprotos getnetent $i_netdb netdb.h
8148 eval $hasproto
8149
8150
8151 : see if getprotobyname exists
8152 set getprotobyname d_getpbyname
8153 eval $inlibc
8154
8155 : see if getprotobynumber exists
8156 set getprotobynumber d_getpbynumber
8157 eval $inlibc
8158
8159 : see if getprotoent exists
8160 set getprotoent d_getpent
8161 eval $inlibc
8162
8163 : see if getpgid exists
8164 set getpgid d_getpgid
8165 eval $inlibc
8166
8167 : see if getpgrp2 exists
8168 set getpgrp2 d_getpgrp2
8169 eval $inlibc
8170
8171 : see if getppid exists
8172 set getppid d_getppid
8173 eval $inlibc
8174
8175 : see if getpriority exists
8176 set getpriority d_getprior
8177 eval $inlibc
8178
8179 : see if prototypes for various getprotoxxx netdb.h functions are available
8180 echo " "
8181 set d_getprotoprotos getprotoent $i_netdb netdb.h
8182 eval $hasproto
8183
8184 : see if getpwent exists
8185 set getpwent d_getpwent
8186 eval $inlibc
8187
8188
8189 : see if getservbyname exists
8190 set getservbyname d_getsbyname
8191 eval $inlibc
8192
8193 : see if getservbyport exists
8194 set getservbyport d_getsbyport
8195 eval $inlibc
8196
8197 : see if getservent exists
8198 set getservent d_getsent
8199 eval $inlibc
8200
8201 : see if prototypes for various getservxxx netdb.h functions are available
8202 echo " "
8203 set d_getservprotos getservent $i_netdb netdb.h
8204 eval $hasproto
8205
8206 : see if gettimeofday or ftime exists
8207 set gettimeofday d_gettimeod
8208 eval $inlibc
8209 case "$d_gettimeod" in
8210 "$undef")
8211         set ftime d_ftime 
8212         eval $inlibc
8213         ;;
8214 *)
8215         val="$undef"; set d_ftime; eval $setvar
8216         ;;
8217 esac
8218 case "$d_gettimeod$d_ftime" in
8219 "$undef$undef")
8220         echo " "
8221         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8222         ;;
8223 esac
8224
8225 : see if this is an grp system
8226 set grp.h i_grp
8227 eval $inhdr
8228
8229 case "$i_grp" in
8230 $define)
8231         xxx=`./findhdr grp.h`
8232         $cppstdin $cppflags $cppminus < $xxx >$$.h
8233
8234         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8235                 val="$define"
8236         else
8237                 val="$undef"
8238         fi
8239         set d_grpasswd
8240         eval $setvar
8241
8242         $rm -f $$.h
8243         ;;
8244 *)
8245         val="$undef";
8246         set d_grpasswd; eval $setvar
8247         ;;
8248 esac
8249
8250 : see if this is a netinet/in.h or sys/in.h system
8251 set netinet/in.h i_niin sys/in.h i_sysin
8252 eval $inhdr
8253
8254 : see if arpa/inet.h has to be included
8255 set arpa/inet.h i_arpainet
8256 eval $inhdr
8257
8258 : see if htonl --and friends-- exists
8259 val=''
8260 set htonl val
8261 eval $inlibc
8262
8263 : Maybe they are macros.
8264 case "$val" in
8265 $undef)
8266         $cat >htonl.c <<EOM
8267 #include <stdio.h>
8268 #include <sys/types.h>
8269 #$i_niin I_NETINET_IN
8270 #$i_sysin I_SYS_IN
8271 #$i_arpainet I_ARPA_INET
8272 #ifdef I_NETINET_IN
8273 #include <netinet/in.h>
8274 #endif
8275 #ifdef I_SYS_IN
8276 #include <sys/in.h>
8277 #endif
8278 #ifdef I_ARPA_INET
8279 #include <arpa/inet.h>
8280 #endif
8281 #ifdef htonl
8282 printf("Defined as a macro.");
8283 #endif
8284 EOM
8285         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8286         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8287                 val="$define"
8288                 echo "But it seems to be defined as a macro." >&4
8289         fi
8290         $rm -f htonl.?
8291         ;;
8292 esac
8293 set d_htonl
8294 eval $setvar
8295
8296 : see which of string.h or strings.h is needed
8297 echo " "
8298 strings=`./findhdr string.h`
8299 if $test "$strings" && $test -r "$strings"; then
8300         echo "Using <string.h> instead of <strings.h>." >&4
8301         val="$define"
8302 else
8303         val="$undef"
8304         strings=`./findhdr strings.h`
8305         if $test "$strings" && $test -r "$strings"; then
8306                 echo "Using <strings.h> instead of <string.h>." >&4
8307         else
8308                 echo "No string header found -- You'll surely have problems." >&4
8309         fi
8310 fi
8311 set i_string
8312 eval $setvar
8313 case "$i_string" in
8314 "$undef") strings=`./findhdr strings.h`;;
8315 *)        strings=`./findhdr string.h`;;
8316 esac
8317
8318 : index or strchr
8319 echo " "
8320 if set index val -f; eval $csym; $val; then
8321         if set strchr val -f d_strchr; eval $csym; $val; then
8322                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8323                         val="$define"
8324                         vali="$undef"
8325                         echo "strchr() found." >&4
8326                 else
8327                         val="$undef"
8328                         vali="$define"
8329                         echo "index() found." >&4
8330                 fi
8331         else
8332                 val="$undef"
8333                 vali="$define"
8334                 echo "index() found." >&4
8335         fi
8336 else
8337         if set strchr val -f d_strchr; eval $csym; $val; then
8338                 val="$define"
8339                 vali="$undef"
8340                 echo "strchr() found." >&4
8341         else
8342                 echo "No index() or strchr() found!" >&4
8343                 val="$undef"
8344                 vali="$undef"
8345         fi
8346 fi
8347 set d_strchr; eval $setvar
8348 val="$vali"
8349 set d_index; eval $setvar
8350
8351 : check whether inet_aton exists
8352 set inet_aton d_inetaton
8353 eval $inlibc
8354
8355 : see if inttypes.h is available
8356 : we want a real compile instead of Inhdr because some systems
8357 : have an inttypes.h which includes non-existent headers
8358 echo " "
8359 $cat >try.c <<EOCP
8360 #include <inttypes.h>
8361 int main() {
8362         static int32_t foo32 = 0x12345678;
8363 }
8364 EOCP
8365 set try
8366 if eval $compile; then
8367         echo "<inttypes.h> found." >&4
8368         val="$define"
8369 else
8370         echo "<inttypes.h> NOT found." >&4
8371         val="$undef"
8372 fi
8373 $rm -f try.c try
8374 set i_inttypes
8375 eval $setvar
8376
8377 : check for int64_t
8378 case "$use64bits" in
8379 "$define" )
8380         echo " "
8381         echo $n "Checking to see if your system supports int64_t...$c" >&4
8382         $cat >try.c <<EOCP
8383 #include <sys/types.h>
8384 #$i_inttypes I_INTTYPES
8385 #ifdef I_INTTYPES
8386 #include <inttypes.h>
8387 #endif
8388 int64_t foo() { int64_t x; x = 7; return x; }
8389 EOCP
8390         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8391                 val="$define"
8392                 echo " Yup, it does." >&4
8393         else
8394                 val="$undef"
8395                 echo " Nope, it doesn't." >&4
8396         fi
8397         $rm -f try.*
8398         ;;
8399 *)      val="$undef"
8400         ;;
8401 esac
8402 set d_int64t
8403 eval $setvar
8404
8405
8406 : Look for isascii
8407 echo " "
8408 $cat >isascii.c <<'EOCP'
8409 #include <stdio.h>
8410 #include <ctype.h>
8411 int main() {
8412         int c = 'A';
8413         if (isascii(c))
8414                 exit(0);
8415         else
8416                 exit(1);
8417 }
8418 EOCP
8419 set isascii
8420 if eval $compile; then
8421         echo "isascii() found." >&4
8422         val="$define"
8423 else
8424         echo "isascii() NOT found." >&4
8425         val="$undef"
8426 fi
8427 set d_isascii
8428 eval $setvar
8429 $rm -f isascii*
8430
8431 : see if killpg exists
8432 set killpg d_killpg
8433 eval $inlibc
8434
8435 : see if lchown exists
8436 echo " "
8437 $cat > try.c <<'EOCP'
8438 /* System header to define __stub macros and hopefully few prototypes,
8439     which can conflict with char lchown(); below.  */
8440 #include <assert.h>
8441 /* Override any gcc2 internal prototype to avoid an error.  */
8442 /* We use char because int might match the return type of a gcc2
8443    builtin and then its argument prototype would still apply.  */
8444 char lchown();
8445 int main() {
8446     /*  The GNU C library defines this for functions which it implements
8447         to always fail with ENOSYS.  Some functions are actually named
8448         something starting with __ and the normal name is an alias.  */
8449 #if defined (__stub_lchown) || defined (__stub___lchown)
8450 choke me
8451 #else
8452 lchown();
8453 #endif
8454 ; return 0; }
8455 EOCP
8456 set try
8457 if eval $compile; then
8458     $echo "lchown() found." >&4
8459     val="$define"
8460 else
8461     $echo "lchown() NOT found." >&4
8462     val="$undef"
8463 fi
8464 set d_lchown
8465 eval $setvar
8466
8467 : see if link exists
8468 set link d_link
8469 eval $inlibc
8470
8471 : see if localeconv exists
8472 set localeconv d_locconv
8473 eval $inlibc
8474
8475 : see if lockf exists
8476 set lockf d_lockf
8477 eval $inlibc
8478
8479 : check for length of double
8480 echo " "
8481 case "$doublesize" in
8482 '')
8483         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8484         $cat >try.c <<'EOCP'
8485 #include <stdio.h>
8486 int main()
8487 {
8488         printf("%d\n", sizeof(double));
8489 }
8490 EOCP
8491         set try
8492         if eval $compile_ok; then
8493                 doublesize=`./try`
8494                 $echo " $doublesize bytes." >&4
8495         else
8496                 dflt='8'
8497                 echo "(I can't seem to compile the test program.  Guessing...)"
8498                 rp="What is the size of a double precision number (in bytes)?"
8499                 . ./myread
8500                 doublesize="$ans"
8501         fi
8502         ;;
8503 esac
8504 $rm -f try.c try
8505
8506 : check for long doubles
8507 echo " "
8508 echo $n "Checking to see if your system supports long doubles...$c" >&4
8509 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8510 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8511         val="$define"
8512         echo " Yup, it does." >&4
8513 else
8514         val="$undef"
8515         echo " Nope, it doesn't." >&4
8516 fi
8517 $rm try.*
8518 set d_longdbl
8519 eval $setvar
8520
8521 : check for length of long double
8522 case "${d_longdbl}${longdblsize}" in
8523 $define)
8524         echo " "
8525         $echo $n "Checking to see how big your long doubles are...$c" >&4
8526         $cat >try.c <<'EOCP'
8527 #include <stdio.h>
8528 int main()
8529 {
8530         printf("%d\n", sizeof(long double));
8531 }
8532 EOCP
8533         set try
8534         if eval $compile; then
8535                 longdblsize=`./try`
8536                 $echo " $longdblsize bytes." >&4
8537         else
8538                 dflt='8'
8539                 echo " "
8540                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8541                 rp="What is the size of a long double (in bytes)?"
8542                 . ./myread
8543                 longdblsize="$ans"
8544         fi
8545         if $test "X$doublesize" = "X$longdblsize"; then
8546                 echo "(That isn't any different from an ordinary double.)"
8547         fi      
8548         ;;
8549 esac
8550 $rm -f try.c try
8551
8552 : check for long long
8553 echo " "
8554 echo $n "Checking to see if your system supports long long...$c" >&4
8555 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8556 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8557         val="$define"
8558         echo " Yup, it does." >&4
8559 else
8560         val="$undef"
8561         echo " Nope, it doesn't." >&4
8562 fi
8563 $rm try.*
8564 set d_longlong
8565 eval $setvar
8566
8567 : check for length of long long
8568 case "${d_longlong}${longlongsize}" in
8569 $define)
8570         echo " "
8571         $echo $n "Checking to see how big your long longs are...$c" >&4
8572         $cat >try.c <<'EOCP'
8573 #include <stdio.h>
8574 int main()
8575 {
8576         printf("%d\n", sizeof(long long));
8577 }
8578 EOCP
8579         set try
8580         if eval $compile_ok; then
8581                 longlongsize=`./try`
8582                 $echo " $longlongsize bytes." >&4
8583         else
8584                 dflt='8'
8585                 echo " "
8586                 echo "(I can't seem to compile the test program.  Guessing...)"
8587                 rp="What is the size of a long long (in bytes)?"
8588                 . ./myread
8589                 longlongsize="$ans"
8590         fi
8591         if $test "X$longsize" = "X$longlongsize"; then
8592                 echo "(That isn't any different from an ordinary long.)"
8593         fi      
8594         ;;
8595 esac
8596 $rm -f try.c try
8597
8598 : see if lstat exists
8599 set lstat d_lstat
8600 eval $inlibc
8601
8602 : see if mblen exists
8603 set mblen d_mblen
8604 eval $inlibc
8605
8606 : see if mbstowcs exists
8607 set mbstowcs d_mbstowcs
8608 eval $inlibc
8609
8610 : see if mbtowc exists
8611 set mbtowc d_mbtowc
8612 eval $inlibc
8613
8614 : see if memcmp exists
8615 set memcmp d_memcmp
8616 eval $inlibc
8617
8618 : see if memcpy exists
8619 set memcpy d_memcpy
8620 eval $inlibc
8621
8622 : see if memmove exists
8623 set memmove d_memmove
8624 eval $inlibc
8625
8626 : see if memset exists
8627 set memset d_memset
8628 eval $inlibc
8629
8630 : see if mkdir exists
8631 set mkdir d_mkdir
8632 eval $inlibc
8633
8634 : see if mkfifo exists
8635 set mkfifo d_mkfifo
8636 eval $inlibc
8637
8638 : see if mktime exists
8639 set mktime d_mktime
8640 eval $inlibc
8641
8642 : see if msgctl exists
8643 set msgctl d_msgctl
8644 eval $inlibc
8645
8646 : see if msgget exists
8647 set msgget d_msgget
8648 eval $inlibc
8649
8650 : see if msgsnd exists
8651 set msgsnd d_msgsnd
8652 eval $inlibc
8653
8654 : see if msgrcv exists
8655 set msgrcv d_msgrcv
8656 eval $inlibc
8657
8658 : see how much of the 'msg*(2)' library is present.
8659 h_msg=true
8660 echo " "
8661 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8662 *"$undef"*) h_msg=false;;
8663 esac
8664 case "$osname" in
8665 freebsd)
8666     case "`ipcs 2>&1`" in
8667     "SVID messages"*"not configured"*)
8668         echo "Your $osname does not have the msg*(2) configured." >&4
8669         h_msg=false
8670         val="$undef"
8671         set msgctl d_msgctl
8672         eval $setvar
8673         set msgget d_msgget
8674         eval $setvar
8675         set msgsnd d_msgsnd
8676         eval $setvar
8677         set msgrcv d_msgrcv
8678         eval $setvar
8679         ;;
8680     esac
8681     ;;
8682 esac
8683 : we could also check for sys/ipc.h ...
8684 if $h_msg && $test `./findhdr sys/msg.h`; then
8685         echo "You have the full msg*(2) library." >&4
8686         val="$define"
8687 else
8688         echo "You don't have the full msg*(2) library." >&4
8689         val="$undef"
8690 fi
8691 set d_msg
8692 eval $setvar
8693
8694 : see if nice exists
8695 set nice d_nice
8696 eval $inlibc
8697
8698 : how to create joinable pthreads
8699 if test "X$usethreads" = "X$define"; then
8700         echo " "
8701         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8702         $cat >try.c <<'EOCP'
8703 #include <pthread.h>
8704 int main() {
8705     int detachstate = JOINABLE;
8706 }
8707 EOCP
8708         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8709         if eval $compile; then
8710                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8711                 val="$undef" # Yes, undef.
8712                 set d_old_pthread_create_joinable
8713                 eval $setvar
8714                 val=""
8715                 set old_pthread_create_joinable
8716                 eval $setvar
8717         else
8718                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8719                 if eval $compile; then
8720                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8721                         val="$define"
8722                         set d_old_pthread_create_joinable
8723                         eval $setvar
8724                         val=PTHREAD_CREATE_UNDETACHED
8725                         set old_pthread_create_joinable
8726                         eval $setvar
8727                 else            
8728                         set try -DJOINABLE=__UNDETACHED
8729                         if eval $compile; then
8730                                 echo "You seem to use __UNDETACHED." >&2
8731                                 val="$define"
8732                                 set d_old_pthread_create_joinable
8733                                 eval $setvar
8734                                 val=__UNDETACHED
8735                                 set old_pthread_create_joinable
8736                                 eval $setvar
8737                         else
8738                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
8739                                 val="$define"
8740                                 set d_old_pthread_create_joinable
8741                                 eval $setvar
8742                                 val=0
8743                                 set old_pthread_create_joinable
8744                                 eval $setvar
8745                         fi
8746                 fi
8747         fi
8748         $rm -f try try.*
8749 else
8750     d_old_pthread_create_joinable="$undef"
8751     old_pthread_create_joinable=""
8752 fi
8753
8754 : see if pause exists
8755 set pause d_pause
8756 eval $inlibc
8757
8758 : see if pipe exists
8759 set pipe d_pipe
8760 eval $inlibc
8761
8762 : see if poll exists
8763 set poll d_poll
8764 eval $inlibc
8765
8766
8767 : see whether the various POSIXish _yields exist
8768 $cat >try.c <<EOP
8769 #include <pthread.h>
8770 #include <stdio.h>
8771 int main() {
8772 #ifdef SCHED_YIELD
8773         sched_yield();
8774 #else
8775 #ifdef PTHREAD_YIELD
8776         pthread_yield();
8777 #else
8778 #ifdef PTHREAD_YIELD_NULL
8779         pthread_yield(NULL);
8780 #endif
8781 #endif
8782 #endif
8783 }
8784 EOP
8785 : see if sched_yield exists
8786 set try -DSCHED_YIELD
8787 if eval $compile; then
8788     val="$define"
8789     sched_yield='sched_yield()'
8790 else
8791     val="$undef"
8792 fi
8793 case "$usethreads" in
8794 $define)
8795         case "$val" in
8796         $define) echo 'sched_yield() found.' >&4        ;;
8797         *)       echo 'sched_yield() NOT found.' >&4    ;;
8798         esac
8799 esac
8800 set d_sched_yield
8801 eval $setvar
8802
8803 : see if pthread_yield exists
8804 set try -DPTHREAD_YIELD
8805 if eval $compile; then
8806     val="$define"
8807     case "$sched_yield" in
8808     '') sched_yield='pthread_yield()' ;;
8809     esac
8810 else
8811     set try -DPTHREAD_YIELD_NULL
8812     if eval $compile; then
8813         val="$define"
8814         case "$sched_yield" in
8815         '') sched_yield='pthread_yield(NULL)' ;;
8816         esac
8817     else
8818         val="$undef"
8819     fi
8820 fi
8821 case "$usethreads" in
8822 $define)
8823         case "$val" in
8824         $define) echo 'pthread_yield() found.' >&4      ;;
8825         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8826         esac
8827         ;;
8828 esac
8829 set d_pthread_yield
8830 eval $setvar
8831
8832 case "$sched_yield" in
8833 '') sched_yield=undef ;;
8834 esac
8835
8836 $rm -f try try.*
8837
8838 : see if this is a pwd.h system
8839 set pwd.h i_pwd
8840 eval $inhdr
8841
8842 case "$i_pwd" in
8843 $define)
8844         xxx=`./findhdr pwd.h`
8845         $cppstdin $cppflags $cppminus < $xxx >$$.h
8846
8847         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8848                 val="$define"
8849         else
8850                 val="$undef"
8851         fi
8852         set d_pwquota
8853         eval $setvar
8854
8855         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8856                 val="$define"
8857         else
8858                 val="$undef"
8859         fi
8860         set d_pwage
8861         eval $setvar
8862
8863         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8864                 val="$define"
8865         else
8866                 val="$undef"
8867         fi
8868         set d_pwchange
8869         eval $setvar
8870
8871         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8872                 val="$define"
8873         else
8874                 val="$undef"
8875         fi
8876         set d_pwclass
8877         eval $setvar
8878
8879         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8880                 val="$define"
8881         else
8882                 val="$undef"
8883         fi
8884         set d_pwexpire
8885         eval $setvar
8886
8887         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8888                 val="$define"
8889         else
8890                 val="$undef"
8891         fi
8892         set d_pwcomment
8893         eval $setvar
8894
8895         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8896                 val="$define"
8897         else
8898                 val="$undef"
8899         fi
8900         set d_pwgecos
8901         eval $setvar
8902
8903         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8904                 val="$define"
8905         else
8906                 val="$undef"
8907         fi
8908         set d_pwpasswd
8909         eval $setvar
8910
8911         $rm -f $$.h
8912         ;;
8913 *)
8914         val="$undef"; 
8915         set d_pwquota; eval $setvar
8916         set d_pwage; eval $setvar
8917         set d_pwchange; eval $setvar
8918         set d_pwclass; eval $setvar
8919         set d_pwexpire; eval $setvar
8920         set d_pwcomment; eval $setvar
8921         set d_pwgecos; eval $setvar
8922         set d_pwpasswd; eval $setvar
8923         ;;
8924 esac
8925
8926 : see if readdir and friends exist
8927 set readdir d_readdir
8928 eval $inlibc
8929 set seekdir d_seekdir
8930 eval $inlibc
8931 set telldir d_telldir
8932 eval $inlibc
8933 set rewinddir d_rewinddir
8934 eval $inlibc
8935
8936 : see if readlink exists
8937 set readlink d_readlink
8938 eval $inlibc
8939
8940 : see if readv exists
8941 set readv d_readv
8942 eval $inlibc
8943
8944 : see if rename exists
8945 set rename d_rename
8946 eval $inlibc
8947
8948 : see if rmdir exists
8949 set rmdir d_rmdir
8950 eval $inlibc
8951
8952 : see if memory.h is available.
8953 val=''
8954 set memory.h val
8955 eval $inhdr
8956
8957 : See if it conflicts with string.h
8958 case "$val" in
8959 $define)
8960         case "$strings" in
8961         '') ;;
8962         *)
8963                 $cppstdin $cppflags $cppminus < $strings > mem.h
8964                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8965                         echo " "
8966                         echo "We won't be including <memory.h>."
8967                         val="$undef"
8968                 fi
8969                 $rm -f mem.h
8970                 ;;
8971         esac
8972 esac
8973 set i_memory
8974 eval $setvar
8975
8976 : can bcopy handle overlapping blocks?
8977 val="$undef"
8978 case "$d_bcopy" in
8979 "$define")
8980         echo " "
8981         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8982         $cat >try.c <<EOCP
8983 #$i_memory I_MEMORY
8984 #$i_stdlib I_STDLIB
8985 #$i_string I_STRING
8986 #$i_unistd I_UNISTD
8987 EOCP
8988         $cat >>try.c <<'EOCP'
8989 #include <stdio.h>
8990 #ifdef I_MEMORY
8991 #  include <memory.h>
8992 #endif
8993 #ifdef I_STDLIB
8994 #  include <stdlib.h>
8995 #endif
8996 #ifdef I_STRING
8997 #  include <string.h>
8998 #else
8999 #  include <strings.h>
9000 #endif
9001 #ifdef I_UNISTD
9002 #  include <unistd.h>  /* Needed for NetBSD */
9003 #endif
9004 int main()
9005 {
9006 char buf[128], abc[128];
9007 char *b;
9008 int len;
9009 int off;
9010 int align;
9011
9012 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9013
9014 for (align = 7; align >= 0; align--) {
9015         for (len = 36; len; len--) {
9016                 b = buf+align;
9017                 bcopy(abc, b, len);
9018                 for (off = 1; off <= len; off++) {
9019                         bcopy(b, b+off, len);
9020                         bcopy(b+off, b, len);
9021                         if (bcmp(b, abc, len))
9022                                 exit(1);
9023                 }
9024         }
9025 }
9026 exit(0);
9027 }
9028 EOCP
9029         set try
9030         if eval $compile_ok; then
9031                 if ./try 2>/dev/null; then
9032                         echo "Yes, it can."
9033                         val="$define"
9034                 else
9035                         echo "It can't, sorry."
9036                         case "$d_memmove" in
9037                         "$define") echo "But that's Ok since you have memmove()." ;;
9038                         esac
9039                 fi
9040         else
9041                 echo "(I can't compile the test program, so we'll assume not...)"
9042                 case "$d_memmove" in
9043                 "$define") echo "But that's Ok since you have memmove()." ;;
9044                 esac
9045         fi
9046         ;;
9047 esac
9048 $rm -f try.* try core
9049 set d_safebcpy
9050 eval $setvar
9051
9052 : can memcpy handle overlapping blocks?
9053 val="$undef"
9054 case "$d_memcpy" in
9055 "$define")
9056         echo " "
9057         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9058         $cat >try.c <<EOCP
9059 #$i_memory I_MEMORY
9060 #$i_stdlib I_STDLIB
9061 #$i_string I_STRING
9062 #$i_unistd I_UNISTD
9063 EOCP
9064         $cat >>try.c <<'EOCP'
9065 #include <stdio.h>
9066 #ifdef I_MEMORY
9067 #  include <memory.h>
9068 #endif
9069 #ifdef I_STDLIB
9070 #  include <stdlib.h>
9071 #endif
9072 #ifdef I_STRING
9073 #  include <string.h>
9074 #else
9075 #  include <strings.h>
9076 #endif
9077 #ifdef I_UNISTD
9078 #  include <unistd.h>  /* Needed for NetBSD */
9079 #endif
9080 int main()
9081 {
9082 char buf[128], abc[128];
9083 char *b;
9084 int len;
9085 int off;
9086 int align;
9087
9088 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9089    try to store the string in read-only memory. */
9090 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9091
9092 for (align = 7; align >= 0; align--) {
9093         for (len = 36; len; len--) {
9094                 b = buf+align;
9095                 memcpy(b, abc, len);
9096                 for (off = 1; off <= len; off++) {
9097                         memcpy(b+off, b, len);
9098                         memcpy(b, b+off, len);
9099                         if (memcmp(b, abc, len))
9100                                 exit(1);
9101                 }
9102         }
9103 }
9104 exit(0);
9105 }
9106 EOCP
9107         set try
9108         if eval $compile_ok; then
9109                 if ./try 2>/dev/null; then
9110                         echo "Yes, it can."
9111                         val="$define"
9112                 else
9113                         echo "It can't, sorry."
9114                         case "$d_memmove" in
9115                         "$define") echo "But that's Ok since you have memmove()." ;;
9116                         esac
9117                 fi
9118         else
9119                 echo "(I can't compile the test program, so we'll assume not...)"
9120                 case "$d_memmove" in
9121                 "$define") echo "But that's Ok since you have memmove()." ;;
9122                 esac
9123         fi
9124         ;;
9125 esac
9126 $rm -f try.* try core
9127 set d_safemcpy
9128 eval $setvar
9129
9130 : can memcmp be trusted to compare relative magnitude?
9131 val="$undef"
9132 case "$d_memcmp" in
9133 "$define")
9134         echo " "
9135         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9136         $cat >try.c <<EOCP
9137 #$i_memory I_MEMORY
9138 #$i_stdlib I_STDLIB
9139 #$i_string I_STRING
9140 #$i_unistd I_UNISTD
9141 EOCP
9142         $cat >>try.c <<'EOCP'
9143 #include <stdio.h>
9144 #ifdef I_MEMORY
9145 #  include <memory.h>
9146 #endif
9147 #ifdef I_STDLIB
9148 #  include <stdlib.h>
9149 #endif
9150 #ifdef I_STRING
9151 #  include <string.h>
9152 #else
9153 #  include <strings.h>
9154 #endif
9155 #ifdef I_UNISTD
9156 #  include <unistd.h>  /* Needed for NetBSD */
9157 #endif
9158 int main()
9159 {
9160 char a = -1;
9161 char b = 0;
9162 if ((a < b) && memcmp(&a, &b, 1) < 0)
9163         exit(1);
9164 exit(0);
9165 }
9166 EOCP
9167         set try
9168         if eval $compile_ok; then
9169                 if ./try 2>/dev/null; then
9170                         echo "Yes, it can."
9171                         val="$define"
9172                 else
9173                         echo "No, it can't (it uses signed chars)."
9174                 fi
9175         else
9176                 echo "(I can't compile the test program, so we'll assume not...)"
9177         fi
9178         ;;
9179 esac
9180 $rm -f try.* try core
9181 set d_sanemcmp
9182 eval $setvar
9183
9184 : see if select exists
9185 set select d_select
9186 eval $inlibc
9187
9188 : see if semctl exists
9189 set semctl d_semctl
9190 eval $inlibc
9191
9192 : see if semget exists
9193 set semget d_semget
9194 eval $inlibc
9195
9196 : see if semop exists
9197 set semop d_semop
9198 eval $inlibc
9199
9200 : see how much of the 'sem*(2)' library is present.
9201 h_sem=true
9202 echo " "
9203 case "$d_semctl$d_semget$d_semop" in
9204 *"$undef"*) h_sem=false;;
9205 esac
9206 case "$osname" in
9207 freebsd)
9208     case "`ipcs 2>&1`" in
9209     "SVID messages"*"not configured"*)
9210         echo "Your $osname does not have the sem*(2) configured." >&4
9211         h_sem=false
9212         val="$undef"
9213         set semctl d_semctl
9214         eval $setvar
9215         set semget d_semget
9216         eval $setvar
9217         set semop d_semop
9218         eval $setvar
9219         ;;
9220     esac
9221     ;;
9222 esac
9223 : we could also check for sys/ipc.h ...
9224 if $h_sem && $test `./findhdr sys/sem.h`; then
9225         echo "You have the full sem*(2) library." >&4
9226         val="$define"
9227 else
9228         echo "You don't have the full sem*(2) library." >&4
9229         val="$undef"
9230 fi
9231 set d_sem
9232 eval $setvar
9233
9234 : see whether sys/sem.h defines union semun
9235 echo " "
9236 $cat > try.c <<'END'
9237 #include <sys/types.h>
9238 #include <sys/ipc.h>
9239 #include <sys/sem.h>
9240 int main () { union semun semun; semun.buf = 0; }
9241 END
9242 set try
9243 if eval $compile; then
9244     echo "You have union semun in <sys/sem.h>." >&4
9245     val="$define"
9246 else
9247     echo "You do not have union semun in <sys/sem.h>." >&4
9248     val="$undef"
9249 fi
9250 $rm -f try try.c try.h
9251 set d_union_semun
9252 eval $setvar
9253
9254 : see how to do semctl IPC_STAT
9255 case "$d_sem" in
9256 $define)
9257     : see whether semctl IPC_STAT can use union semun
9258     echo " "
9259     $cat > try.h <<END
9260 #ifndef S_IRUSR
9261 #   ifdef S_IREAD
9262 #       define S_IRUSR S_IREAD
9263 #       define S_IWUSR S_IWRITE
9264 #       define S_IXUSR S_IEXEC
9265 #   else
9266 #       define S_IRUSR 0400
9267 #       define S_IWUSR 0200
9268 #       define S_IXUSR 0100
9269 #   endif
9270 #   define S_IRGRP (S_IRUSR>>3)
9271 #   define S_IWGRP (S_IWUSR>>3)
9272 #   define S_IXGRP (S_IXUSR>>3)
9273 #   define S_IROTH (S_IRUSR>>6)
9274 #   define S_IWOTH (S_IWUSR>>6)
9275 #   define S_IXOTH (S_IXUSR>>6)
9276 #endif
9277 #ifndef S_IRWXU
9278 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9279 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9280 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9281 #endif
9282 END
9283
9284     $cat > try.c <<END
9285 #include <sys/types.h>
9286 #include <sys/ipc.h>
9287 #include <sys/sem.h>
9288 #include <sys/stat.h>
9289 #include <stdio.h>
9290 #include <errno.h>
9291 #include "try.h"
9292 #ifndef errno
9293 extern int errno;
9294 #endif
9295 #$d_union_semun HAS_UNION_SEMUN
9296 int main() {
9297     union semun
9298 #ifndef HAS_UNION_SEMUN
9299     {
9300         int val;
9301         struct semid_ds *buf;
9302         unsigned short *array;
9303     }
9304 #endif
9305     arg;
9306     int sem, st;
9307
9308 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9309     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9310     if (sem > -1) {
9311         struct semid_ds argbuf;
9312         arg.buf = &argbuf;
9313 #       ifdef IPC_STAT
9314         st = semctl(sem, 0, IPC_STAT, arg);
9315         if (st == 0)
9316             printf("semun\n");
9317         else
9318 #       endif /* IPC_STAT */
9319             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9320 #       ifdef IPC_RMID
9321         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9322 #       endif /* IPC_RMID */
9323             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9324     } else
9325 #endif /* IPC_PRIVATE && ... */
9326         printf("semget failed: errno = %d\n", errno);
9327   return 0;
9328 }
9329 END
9330     val="$undef"
9331     set try
9332     if eval $compile; then
9333         xxx=`./try`
9334         case "$xxx" in
9335         semun) val="$define" ;;
9336         esac
9337     fi
9338     $rm -f try try.c
9339     set d_semctl_semun
9340     eval $setvar
9341     case "$d_semctl_semun" in
9342     $define)
9343         echo "You can use union semun for semctl IPC_STAT." >&4
9344         also='also'
9345         ;;
9346     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9347         also=''
9348         ;;
9349     esac
9350
9351     : see whether semctl IPC_STAT can use struct semid_ds pointer
9352     $cat > try.c <<'END'
9353 #include <sys/types.h>
9354 #include <sys/ipc.h>
9355 #include <sys/sem.h>
9356 #include <sys/stat.h>
9357 #include "try.h"
9358 #include <stdio.h>
9359 #include <errno.h>
9360 #ifndef errno
9361 extern int errno;
9362 #endif
9363 int main() {
9364     struct semid_ds arg;
9365     int sem, st;
9366
9367 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9368     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9369     if (sem > -1) {
9370 #       ifdef IPC_STAT
9371         st = semctl(sem, 0, IPC_STAT, &arg);
9372         if (st == 0)
9373             printf("semid_ds\n");
9374         else
9375 #       endif /* IPC_STAT */
9376             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9377 #       ifdef IPC_RMID
9378         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9379 #       endif /* IPC_RMID */
9380             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9381     } else
9382 #endif /* IPC_PRIVATE && ... */
9383         printf("semget failed: errno = %d\n", errno);
9384
9385     return 0;
9386 }
9387 END
9388     val="$undef"
9389     set try
9390     if eval $compile; then
9391         xxx=`./try`
9392         case "$xxx" in
9393         semid_ds) val="$define" ;;
9394         esac
9395     fi
9396     $rm -f try try.c
9397     set d_semctl_semid_ds
9398     eval $setvar
9399     case "$d_semctl_semid_ds" in
9400     $define)
9401         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9402         ;;
9403     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9404         ;;
9405     esac
9406     $rm -f try.h
9407     ;;
9408 *)  val="$undef"
9409
9410     # We do not have the full sem*(2) library, so assume we can not
9411     # use either.
9412
9413     set d_semctl_semun
9414     eval $setvar
9415
9416     set d_semctl_semid_ds
9417     eval $setvar
9418     ;;
9419 esac
9420
9421 : see if setegid exists
9422 set setegid d_setegid
9423 eval $inlibc
9424
9425 : see if seteuid exists
9426 set seteuid d_seteuid
9427 eval $inlibc
9428
9429 : see if setgrent exists
9430 set setgrent d_setgrent
9431 eval $inlibc
9432
9433 : see if sethostent exists
9434 set sethostent d_sethent
9435 eval $inlibc
9436
9437 : see if setlinebuf exists
9438 set setlinebuf d_setlinebuf
9439 eval $inlibc
9440
9441 : see if setlocale exists
9442 set setlocale d_setlocale
9443 eval $inlibc
9444
9445 : see if setnetent exists
9446 set setnetent d_setnent
9447 eval $inlibc
9448
9449 : see if setprotoent exists
9450 set setprotoent d_setpent
9451 eval $inlibc
9452
9453 : see if setpgid exists
9454 set setpgid d_setpgid
9455 eval $inlibc
9456
9457 : see if setpgrp2 exists
9458 set setpgrp2 d_setpgrp2
9459 eval $inlibc
9460
9461 : see if setpriority exists
9462 set setpriority d_setprior
9463 eval $inlibc
9464
9465 : see if setpwent exists
9466 set setpwent d_setpwent
9467 eval $inlibc
9468
9469 : see if setregid exists
9470 set setregid d_setregid
9471 eval $inlibc
9472 set setresgid d_setresgid
9473 eval $inlibc
9474
9475 : see if setreuid exists
9476 set setreuid d_setreuid
9477 eval $inlibc
9478 set setresuid d_setresuid
9479 eval $inlibc
9480
9481 : see if setrgid exists
9482 set setrgid d_setrgid
9483 eval $inlibc
9484
9485 : see if setruid exists
9486 set setruid d_setruid
9487 eval $inlibc
9488
9489 : see if setservent exists
9490 set setservent d_setsent
9491 eval $inlibc
9492
9493 : see if setsid exists
9494 set setsid d_setsid
9495 eval $inlibc
9496
9497 : see if setvbuf exists
9498 set setvbuf d_setvbuf
9499 eval $inlibc
9500
9501 : see if sfio.h is available
9502 set sfio.h i_sfio
9503 eval $inhdr
9504
9505
9506 : see if sfio library is available
9507 case "$i_sfio" in
9508 $define)
9509         val=''
9510         set sfreserve val
9511         eval $inlibc
9512         ;;
9513 *)
9514         val="$undef"
9515         ;;
9516 esac
9517 : Ok, but do we want to use it.
9518 case "$val" in
9519 $define)
9520         case "$usesfio" in
9521         true|$define|[yY]*) dflt='y';;
9522         *) dflt='n';;
9523         esac
9524         echo "$package can use the sfio library, but it is experimental."
9525         rp="You seem to have sfio available, do you want to try using it?"
9526         . ./myread
9527         case "$ans" in
9528         y|Y) ;;
9529         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9530                 val="$undef"
9531                 : Remove sfio from list of libraries to use
9532                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9533                 shift
9534                 libs="$*"
9535                 echo "libs = $libs" >&4
9536                 ;;
9537         esac
9538         ;;
9539 *)      case "$usesfio" in
9540         true|$define|[yY]*)
9541                 echo "Sorry, cannot find sfio on this machine" >&4
9542                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9543                 ;;
9544         esac
9545         ;;
9546 esac
9547 set d_sfio
9548 eval $setvar
9549 case "$d_sfio" in
9550 $define) usesfio='true';;
9551 *) usesfio='false';;
9552 esac
9553
9554 : see if shmctl exists
9555 set shmctl d_shmctl
9556 eval $inlibc
9557
9558 : see if shmget exists
9559 set shmget d_shmget
9560 eval $inlibc
9561
9562 : see if shmat exists
9563 set shmat d_shmat
9564 eval $inlibc
9565 : see what shmat returns
9566 case "$d_shmat" in
9567 "$define")
9568         $cat >shmat.c <<'END'
9569 #include <sys/shm.h>
9570 void *shmat();
9571 END
9572         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9573                 shmattype='void *'
9574         else
9575                 shmattype='char *'
9576         fi
9577         echo "and it returns ($shmattype)." >&4
9578         : see if a prototype for shmat is available
9579         xxx=`./findhdr sys/shm.h`
9580         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9581         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9582                 val="$define"
9583         else
9584                 val="$undef"
9585         fi
9586         $rm -f shmat.[co]
9587         ;;
9588 *)
9589         val="$undef"
9590         ;;
9591 esac
9592 set d_shmatprototype
9593 eval $setvar
9594
9595 : see if shmdt exists
9596 set shmdt d_shmdt
9597 eval $inlibc
9598
9599 : see how much of the 'shm*(2)' library is present.
9600 h_shm=true
9601 echo " "
9602 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9603 *"$undef"*) h_shm=false;;
9604 esac
9605 case "$osname" in
9606 freebsd)
9607     case "`ipcs 2>&1`" in
9608     "SVID shared memory"*"not configured"*)
9609         echo "Your $osname does not have the shm*(2) configured." >&4
9610         h_shm=false
9611         val="$undef"
9612         set shmctl d_shmctl
9613         evat $setvar
9614         set shmget d_shmget
9615         evat $setvar
9616         set shmat d_shmat
9617         evat $setvar
9618         set shmdt d_shmdt
9619         evat $setvar
9620         ;;
9621     esac
9622     ;;
9623 esac
9624 : we could also check for sys/ipc.h ...
9625 if $h_shm && $test `./findhdr sys/shm.h`; then
9626         echo "You have the full shm*(2) library." >&4
9627         val="$define"
9628 else
9629         echo "You don't have the full shm*(2) library." >&4
9630         val="$undef"
9631 fi
9632 set d_shm
9633 eval $setvar
9634
9635 echo " "
9636 : see if we have sigaction
9637 if set sigaction val -f d_sigaction; eval $csym; $val; then
9638         echo 'sigaction() found.' >&4
9639         $cat > try.c <<'EOP'
9640 #include <stdio.h>
9641 #include <sys/types.h>
9642 #include <signal.h>
9643 int main()
9644 {
9645     struct sigaction act, oact;
9646 }
9647 EOP
9648         set try
9649         if eval $compile_ok; then
9650                 val="$define"
9651         else
9652                 echo "But you don't seem to have a useable struct sigaction." >&4
9653                 val="$undef"
9654         fi
9655 else
9656         echo 'sigaction NOT found.' >&4
9657         val="$undef"
9658 fi
9659 set d_sigaction; eval $setvar
9660 $rm -f try try$_o try.c
9661
9662 : see if sigsetjmp exists
9663 echo " "
9664 case "$d_sigsetjmp" in
9665 '')
9666         $cat >try.c <<'EOP'
9667 #include <setjmp.h>
9668 sigjmp_buf env;
9669 int set = 1;
9670 int main()
9671 {
9672         if (sigsetjmp(env,1))
9673                 exit(set);
9674         set = 0;
9675         siglongjmp(env, 1);
9676         exit(1);
9677 }
9678 EOP
9679         set try
9680         if eval $compile; then
9681                 if ./try >/dev/null 2>&1; then
9682                         echo "POSIX sigsetjmp found." >&4
9683                         val="$define"
9684                 else
9685                         $cat >&4 <<EOM
9686 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9687 I'll ignore them.
9688 EOM
9689                         val="$undef"
9690                 fi
9691         else
9692                 echo "sigsetjmp not found." >&4
9693                 val="$undef"
9694         fi
9695         ;;
9696 *) val="$d_sigsetjmp"
9697         case "$d_sigsetjmp" in
9698         $define) echo "POSIX sigsetjmp found." >&4;;
9699         $undef) echo "sigsetjmp not found." >&4;;
9700         esac
9701         ;;
9702 esac
9703 set d_sigsetjmp
9704 eval $setvar
9705 $rm -f try.c try
9706
9707 : see if stat knows about block sizes
9708 echo " "
9709 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9710 eval $hasfield
9711
9712 : see if _ptr and _cnt from stdio act std
9713 echo " "
9714 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9715         echo "(Looks like you have stdio.h from Linux.)"
9716         case "$stdio_ptr" in
9717         '') stdio_ptr='((fp)->_IO_read_ptr)'
9718                 ptr_lval=$define
9719                 ;;
9720         *)      ptr_lval=$d_stdio_ptr_lval;;
9721         esac
9722         case "$stdio_cnt" in
9723         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9724                 cnt_lval=$undef
9725                 ;;
9726         *)      cnt_lval=$d_stdio_cnt_lval;;
9727         esac
9728         case "$stdio_base" in
9729         '') stdio_base='((fp)->_IO_read_base)';;
9730         esac
9731         case "$stdio_bufsiz" in
9732         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9733         esac
9734 else
9735         case "$stdio_ptr" in
9736         '') stdio_ptr='((fp)->_ptr)'
9737                 ptr_lval=$define
9738                 ;;
9739         *)      ptr_lval=$d_stdio_ptr_lval;;
9740         esac
9741         case "$stdio_cnt" in
9742         '') stdio_cnt='((fp)->_cnt)'
9743                 cnt_lval=$define
9744                 ;;
9745         *)      cnt_lval=$d_stdio_cnt_lval;;
9746         esac
9747         case "$stdio_base" in
9748         '') stdio_base='((fp)->_base)';;
9749         esac
9750         case "$stdio_bufsiz" in
9751         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9752         esac
9753 fi
9754 : test whether _ptr and _cnt really work
9755 echo "Checking how std your stdio is..." >&4
9756 $cat >try.c <<EOP
9757 #include <stdio.h>
9758 #define FILE_ptr(fp)    $stdio_ptr
9759 #define FILE_cnt(fp)    $stdio_cnt
9760 int main() {
9761         FILE *fp = fopen("try.c", "r");
9762         char c = getc(fp);
9763         if (
9764                 18 <= FILE_cnt(fp) &&
9765                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9766         )
9767                 exit(0);
9768         exit(1);
9769 }
9770 EOP
9771 val="$undef"
9772 set try
9773 if eval $compile; then
9774         if ./try; then
9775                 echo "Your stdio acts pretty std."
9776                 val="$define"
9777         else
9778                 echo "Your stdio isn't very std."
9779         fi
9780 else
9781         echo "Your stdio doesn't appear very std."
9782 fi
9783 $rm -f try.c try
9784 set d_stdstdio
9785 eval $setvar
9786
9787 : Can _ptr be used as an lvalue?
9788 case "$d_stdstdio$ptr_lval" in
9789 $define$define) val=$define ;;
9790 *) val=$undef ;;
9791 esac
9792 set d_stdio_ptr_lval
9793 eval $setvar
9794
9795 : Can _cnt be used as an lvalue?
9796 case "$d_stdstdio$cnt_lval" in
9797 $define$define) val=$define ;;
9798 *) val=$undef ;;
9799 esac
9800 set d_stdio_cnt_lval
9801 eval $setvar
9802
9803 : see if _base is also standard
9804 val="$undef"
9805 case "$d_stdstdio" in
9806 $define)
9807         $cat >try.c <<EOP
9808 #include <stdio.h>
9809 #define FILE_base(fp)   $stdio_base
9810 #define FILE_bufsiz(fp) $stdio_bufsiz
9811 int main() {
9812         FILE *fp = fopen("try.c", "r");
9813         char c = getc(fp);
9814         if (
9815                 19 <= FILE_bufsiz(fp) &&
9816                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9817         )
9818                 exit(0);
9819         exit(1);
9820 }
9821 EOP
9822         set try
9823         if eval $compile; then
9824                 if ./try; then
9825                         echo "And its _base field acts std."
9826                         val="$define"
9827                 else
9828                         echo "But its _base field isn't std."
9829                 fi
9830         else
9831                 echo "However, it seems to be lacking the _base field."
9832         fi
9833         $rm -f try.c try
9834         ;;
9835 esac
9836 set d_stdiobase
9837 eval $setvar
9838
9839 : see if strcoll exists
9840 set strcoll d_strcoll
9841 eval $inlibc
9842
9843 : check for structure copying
9844 echo " "
9845 echo "Checking to see if your C compiler can copy structs..." >&4
9846 $cat >try.c <<'EOCP'
9847 int main()
9848 {
9849         struct blurfl {
9850                 int dyick;
9851         } foo, bar;
9852
9853         foo = bar;
9854 }
9855 EOCP
9856 if $cc -c try.c >/dev/null 2>&1 ; then
9857         val="$define"
9858         echo "Yup, it can."
9859 else
9860         val="$undef"
9861         echo "Nope, it can't."
9862 fi
9863 set d_strctcpy
9864 eval $setvar
9865 $rm -f try.*
9866
9867 : see if strerror and/or sys_errlist[] exist
9868 echo " "
9869 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9870     if set strerror val -f d_strerror; eval $csym; $val; then
9871                 echo 'strerror() found.' >&4
9872                 d_strerror="$define"
9873                 d_strerrm='strerror(e)'
9874                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9875                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9876                         d_syserrlst="$define"
9877                 else
9878                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9879                         d_syserrlst="$undef"
9880                 fi
9881     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9882                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9883                 echo 'strerror() found in string header.' >&4
9884                 d_strerror="$define"
9885                 d_strerrm='strerror(e)'
9886                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9887                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9888                                 d_syserrlst="$define"
9889                 else
9890                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9891                         d_syserrlst="$undef"
9892                 fi
9893     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9894                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9895                 d_strerror="$undef"
9896                 d_syserrlst="$define"
9897                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9898     else
9899                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9900                 d_strerror="$undef"
9901                 d_syserrlst="$undef"
9902                 d_strerrm='"unknown"'
9903     fi
9904 fi
9905
9906 : see if strtod exists
9907 set strtod d_strtod
9908 eval $inlibc
9909
9910 : see if strtol exists
9911 set strtol d_strtol
9912 eval $inlibc
9913
9914 : see if strtoul exists
9915 set strtoul d_strtoul
9916 eval $inlibc
9917
9918 : see if strxfrm exists
9919 set strxfrm d_strxfrm
9920 eval $inlibc
9921
9922 : see if symlink exists
9923 set symlink d_symlink
9924 eval $inlibc
9925
9926 : see if syscall exists
9927 set syscall d_syscall
9928 eval $inlibc
9929
9930 : see if sysconf exists
9931 set sysconf d_sysconf
9932 eval $inlibc
9933
9934 : see if system exists
9935 set system d_system
9936 eval $inlibc
9937
9938 : see if tcgetpgrp exists
9939 set tcgetpgrp d_tcgetpgrp
9940 eval $inlibc
9941
9942 : see if tcsetpgrp exists
9943 set tcsetpgrp d_tcsetpgrp
9944 eval $inlibc
9945
9946 : see if sys/types.h has to be included
9947 set sys/types.h i_systypes
9948 eval $inhdr
9949
9950 : see if prototype for telldir is available
9951 echo " "
9952 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
9953 eval $hasproto
9954
9955 : define an is-a-typedef? function
9956 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9957 case "$inclist" in
9958 "") inclist="sys/types.h";;
9959 esac;
9960 eval "varval=\$$var";
9961 case "$varval" in
9962 "")
9963         $rm -f temp.c;
9964         for inc in $inclist; do
9965                 echo "#include <$inc>" >>temp.c;
9966         done;
9967         echo "#ifdef $type" >> temp.c;
9968         echo "printf(\"We have $type\");" >> temp.c;
9969         echo "#endif" >> temp.c;
9970         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9971         if $contains $type temp.E >/dev/null 2>&1; then
9972                 eval "$var=\$type";
9973         else
9974                 eval "$var=\$def";
9975         fi;
9976         $rm -f temp.?;;
9977 *) eval "$var=\$varval";;
9978 esac'
9979
9980 : define an is-a-typedef? function that prompts if the type is not available.
9981 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9982 case "$inclist" in
9983 "") inclist="sys/types.h";;
9984 esac;
9985 eval "varval=\$$var";
9986 case "$varval" in
9987 "")
9988         $rm -f temp.c;
9989         for inc in $inclist; do
9990                 echo "#include <$inc>" >>temp.c;
9991         done;
9992         echo "#ifdef $type" >> temp.c;
9993         echo "printf(\"We have $type\");" >> temp.c;
9994         echo "#endif" >> temp.c;
9995         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9996         echo " " ;
9997         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9998         if $contains $type temp.E >/dev/null 2>&1; then
9999                 echo "$type found." >&4;
10000                 eval "$var=\$type";
10001         else
10002                 echo "$type NOT found." >&4;
10003                 dflt="$def";
10004                 . ./myread ;
10005                 eval "$var=\$ans";
10006         fi;
10007         $rm -f temp.?;;
10008 *) eval "$var=\$varval";;
10009 esac'
10010
10011 : see if this is a sys/times.h system
10012 set sys/times.h i_systimes
10013 eval $inhdr
10014
10015 : see if times exists
10016 echo " "
10017 if set times val -f d_times; eval $csym; $val; then
10018         echo 'times() found.' >&4
10019         d_times="$define"
10020         inc=''
10021         case "$i_systimes" in
10022         "$define") inc='sys/times.h';;
10023         esac
10024         rp="What is the type returned by times() on this system?"
10025         set clock_t clocktype long stdio.h sys/types.h $inc
10026         eval $typedef_ask
10027 else
10028         echo 'times() NOT found, hope that will do.' >&4
10029         d_times="$undef"
10030         clocktype='int'
10031 fi
10032
10033 : see if truncate exists
10034 set truncate d_truncate
10035 eval $inlibc
10036
10037 : see if tzname[] exists
10038 echo " "
10039 if set tzname val -a d_tzname; eval $csym; $val; then
10040         val="$define"
10041         echo 'tzname[] found.' >&4
10042 else
10043         val="$undef"
10044         echo 'tzname[] NOT found.' >&4
10045 fi
10046 set d_tzname
10047 eval $setvar
10048
10049 : see if umask exists
10050 set umask d_umask
10051 eval $inlibc
10052
10053 : backward compatibility for d_hvfork
10054 if test X$d_hvfork != X; then
10055         d_vfork="$d_hvfork"
10056         d_hvfork=''
10057 fi
10058 : see if there is a vfork
10059 val=''
10060 set vfork val
10061 eval $inlibc
10062
10063 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10064 : perl on Solaris 2.x, and probably elsewhere.
10065 case "$val" in
10066 $define)
10067         echo " "
10068         case "$usevfork" in
10069         false) dflt='n';;
10070         *) dflt='y';;
10071         esac
10072         rp="Some systems have problems with vfork().  Do you want to use it?"
10073         . ./myread
10074         case "$ans" in
10075         y|Y) ;;
10076         *)
10077                 echo "Ok, we won't use vfork()."
10078                 val="$undef"
10079                 ;;
10080         esac
10081         ;;
10082 esac
10083 set d_vfork
10084 eval $setvar
10085 case "$d_vfork" in
10086 $define) usevfork='true';;
10087 *) usevfork='false';;
10088 esac
10089
10090 : see if this is an sysdir system
10091 set sys/dir.h i_sysdir
10092 eval $inhdr
10093
10094 : see if this is an sysndir system
10095 set sys/ndir.h i_sysndir
10096 eval $inhdr
10097
10098 : see if closedir exists
10099 set closedir d_closedir
10100 eval $inlibc
10101
10102 case "$d_closedir" in
10103 "$define")
10104         echo " "
10105         echo "Checking whether closedir() returns a status..." >&4
10106         cat > closedir.c <<EOM
10107 #$i_dirent I_DIRENT             /**/
10108 #$i_sysdir I_SYS_DIR            /**/
10109 #$i_sysndir I_SYS_NDIR          /**/
10110 #$i_systypes I_SYS_TYPES        /**/
10111
10112 #if defined(I_SYS_TYPES)
10113 #include <sys/types.h>
10114 #endif
10115 #if defined(I_DIRENT)
10116 #include <dirent.h>
10117 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10118 #include <sys/dir.h>
10119 #endif
10120 #else
10121 #ifdef I_SYS_NDIR
10122 #include <sys/ndir.h>
10123 #else
10124 #ifdef I_SYS_DIR
10125 #ifdef hp9000s500
10126 #include <ndir.h>       /* may be wrong in the future */
10127 #else
10128 #include <sys/dir.h>
10129 #endif
10130 #endif
10131 #endif
10132 #endif 
10133 int main() { return closedir(opendir(".")); }
10134 EOM
10135         set closedir
10136         if eval $compile_ok; then
10137                 if ./closedir > /dev/null 2>&1 ; then
10138                         echo "Yes, it does."
10139                         val="$undef"
10140                 else
10141                         echo "No, it doesn't."
10142                         val="$define"
10143                 fi
10144         else
10145                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10146                 val="$define"
10147         fi
10148         ;;
10149 *)
10150         val="$undef";
10151         ;;
10152 esac
10153 set d_void_closedir
10154 eval $setvar
10155 $rm -f closedir*
10156 : check for volatile keyword
10157 echo " "
10158 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10159 $cat >try.c <<'EOCP'
10160 int main()
10161 {
10162         typedef struct _goo_struct goo_struct;
10163         goo_struct * volatile goo = ((goo_struct *)0);
10164         struct _goo_struct {
10165                 long long_int;
10166                 int reg_int;
10167                 char char_var;
10168         };
10169         typedef unsigned short foo_t;
10170         char *volatile foo;
10171         volatile int bar;
10172         volatile foo_t blech;
10173         foo = foo;
10174 }
10175 EOCP
10176 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10177         val="$define"
10178         echo "Yup, it does."
10179 else
10180         val="$undef"
10181         echo "Nope, it doesn't."
10182 fi
10183 set d_volatile
10184 eval $setvar
10185 $rm -f try.*
10186
10187 : see if there is a wait4
10188 set wait4 d_wait4
10189 eval $inlibc
10190
10191 : see if waitpid exists
10192 set waitpid d_waitpid
10193 eval $inlibc
10194
10195 : see if wcstombs exists
10196 set wcstombs d_wcstombs
10197 eval $inlibc
10198
10199 : see if wctomb exists
10200 set wctomb d_wctomb
10201 eval $inlibc
10202
10203 : see if writev exists
10204 set writev d_writev
10205 eval $inlibc
10206
10207 : preserve RCS keywords in files with variable substitution, grrr
10208 Date='$Date'
10209 Id='$Id'
10210 Log='$Log'
10211 RCSfile='$RCSfile'
10212 Revision='$Revision'
10213
10214 : check for alignment requirements
10215 echo " "
10216 case "$alignbytes" in
10217 '') echo "Checking alignment constraints..." >&4
10218         $cat >try.c <<'EOCP'
10219 struct foobar {
10220         char foo;
10221         double bar;
10222 } try;
10223 int main()
10224 {
10225         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10226 }
10227 EOCP
10228         set try
10229         if eval $compile_ok; then
10230                 dflt=`./try`
10231         else
10232                 dflt='8'
10233                 echo "(I can't seem to compile the test program...)"
10234         fi
10235         ;;
10236 *) dflt="$alignbytes"
10237         ;;
10238 esac
10239 rp="Doubles must be aligned on a how-many-byte boundary?"
10240 . ./myread
10241 alignbytes="$ans"
10242 $rm -f try.c try
10243
10244 : check for ordering of bytes in a long
10245 case "$byteorder" in
10246 '')
10247         $cat <<'EOM'
10248   
10249 In the following, larger digits indicate more significance.  A big-endian
10250 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10251 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10252 machines may have weird orders like 3412.  A Cray will report 87654321. If
10253 the test program works the default is probably right.
10254 I'm now running the test program...
10255 EOM
10256         $cat >try.c <<'EOCP'
10257 #include <stdio.h>
10258 int main()
10259 {
10260         int i;
10261         union {
10262                 unsigned long l;
10263                 char c[sizeof(long)];
10264         } u;
10265
10266         if (sizeof(long) > 4)
10267                 u.l = (0x08070605L << 32) | 0x04030201L;
10268         else
10269                 u.l = 0x04030201L;
10270         for (i = 0; i < sizeof(long); i++)
10271                 printf("%c", u.c[i]+'0');
10272         printf("\n");
10273         exit(0);
10274 }
10275 EOCP
10276         xxx_prompt=y
10277         set try
10278         if eval $compile && ./try > /dev/null; then
10279                 dflt=`./try`
10280                 case "$dflt" in
10281                 [1-4][1-4][1-4][1-4]|12345678|87654321)
10282                         echo "(The test program ran ok.)"
10283                         echo "byteorder=$dflt"
10284                         xxx_prompt=n
10285                         ;;
10286                 ????|????????) echo "(The test program ran ok.)" ;;
10287                 *) echo "(The test program didn't run right for some reason.)" ;;
10288                 esac
10289         else
10290                 dflt='4321'
10291                 cat <<'EOM'
10292 (I can't seem to compile the test program.  Guessing big-endian...)
10293 EOM
10294         fi
10295         case "$xxx_prompt" in
10296         y)
10297                 rp="What is the order of bytes in a long?"
10298                 . ./myread
10299                 byteorder="$ans"
10300                 ;;
10301         *)      byteorder=$dflt
10302                 ;;
10303         esac
10304         ;;
10305 esac
10306 $rm -f try.c try
10307
10308 : how do we catenate cpp tokens here?
10309 echo " "
10310 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10311 $cat >cpp_stuff.c <<'EOCP'
10312 #define RCAT(a,b)a/**/b
10313 #define ACAT(a,b)a ## b
10314 RCAT(Rei,ser)
10315 ACAT(Cir,cus)
10316 EOCP
10317 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10318 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10319         echo "Oh!  Smells like ANSI's been here." >&4
10320         echo "We can catify or stringify, separately or together!"
10321         cpp_stuff=42
10322 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10323         echo "Ah, yes!  The good old days!" >&4
10324         echo "However, in the good old days we don't know how to stringify and"
10325         echo "catify at the same time."
10326         cpp_stuff=1
10327 else
10328         $cat >&4 <<EOM
10329 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10330 to have to edit the values of CAT[2-5] in config.h...
10331 EOM
10332         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10333 fi
10334 $rm -f cpp_stuff.*
10335
10336 : see if this is a db.h system
10337 set db.h i_db
10338 eval $inhdr
10339
10340 case "$i_db" in
10341 $define)
10342         : Check db version.
10343         echo " "
10344         echo "Checking Berkeley DB version ..." >&4
10345         $cat >try.c <<EOCP
10346 #$d_const HASCONST
10347 #ifndef HASCONST
10348 #define const
10349 #endif
10350 #include <sys/types.h>
10351 #include <stdio.h>
10352 #include <db.h>
10353 int main()
10354 {
10355 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10356     int Major, Minor, Patch ;
10357     unsigned long Version ;
10358     (void)db_version(&Major, &Minor, &Patch) ;
10359     printf("You have Berkeley DB Version 2 or greater\n");
10360
10361     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10362                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10363     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10364                 Major, Minor, Patch) ;
10365
10366     /* check that db.h & libdb are compatible */
10367     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10368         printf("db.h and libdb are incompatible\n") ;
10369         exit(3);        
10370     }
10371
10372     printf("db.h and libdb are compatible\n") ;
10373
10374     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10375                 + DB_VERSION_PATCH ;
10376
10377     /* needs to be >= 2.3.4 */
10378     if (Version < 2003004) {
10379     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10380         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10381         exit(2);        
10382     }
10383
10384     exit(0);
10385 #else
10386 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10387     printf("You have Berkeley DB Version 1\n");
10388     exit(0);    /* DB version < 2: the coast is clear. */
10389 #else
10390     exit(1);    /* <db.h> not Berkeley DB? */
10391 #endif
10392 #endif
10393 }
10394 EOCP
10395         set try
10396         if eval $compile && ./try; then
10397                 echo 'Looks OK.' >&4
10398         else
10399                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10400                 i_db=$undef
10401                 case " $libs " in
10402                 *"-ldb "*)
10403                         : Remove db from list of libraries to use
10404                         echo "Removing unusable -ldb from library list" >&4
10405                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10406                         shift
10407                         libs="$*"
10408                         echo "libs = $libs" >&4
10409                         ;;
10410                 esac
10411         fi
10412         $rm -f try.*
10413         ;;
10414 esac
10415
10416 case "$i_db" in
10417 define)
10418         : Check the return type needed for hash 
10419         echo " "
10420         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10421         $cat >try.c <<EOCP
10422 #$d_const HASCONST
10423 #ifndef HASCONST
10424 #define const
10425 #endif
10426 #include <sys/types.h>
10427 #include <db.h>
10428
10429 #ifndef DB_VERSION_MAJOR
10430 u_int32_t hash_cb (ptr, size)
10431 const void *ptr;
10432 size_t size;
10433 {
10434 }
10435 HASHINFO info;
10436 int main()
10437 {
10438         info.hash = hash_cb;
10439 }
10440 #endif
10441 EOCP
10442         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10443                 if $contains warning try.out >>/dev/null 2>&1 ; then
10444                         db_hashtype='int'
10445                 else
10446                         db_hashtype='u_int32_t'
10447                 fi
10448         else
10449                 : XXX Maybe we should just give up here.
10450                 db_hashtype=u_int32_t
10451                 $cat try.out >&4
10452                 echo "Help:  I can't seem to compile the db test program." >&4
10453                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10454         fi
10455         $rm -f try.*
10456         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10457         ;;
10458 *)      db_hashtype=u_int32_t
10459         ;;
10460 esac
10461 case "$i_db" in
10462 define)
10463         : Check the return type needed for prefix 
10464         echo " "
10465         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10466         cat >try.c <<EOCP
10467 #$d_const HASCONST
10468 #ifndef HASCONST
10469 #define const
10470 #endif
10471 #include <sys/types.h>
10472 #include <db.h>
10473
10474 #ifndef DB_VERSION_MAJOR
10475 size_t prefix_cb (key1, key2)
10476 const DBT *key1;
10477 const DBT *key2;
10478 {
10479 }
10480 BTREEINFO info;
10481 int main()
10482 {
10483         info.prefix = prefix_cb;
10484 }
10485 #endif
10486 EOCP
10487         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10488                 if $contains warning try.out >>/dev/null 2>&1 ; then
10489                         db_prefixtype='int'
10490                 else
10491                         db_prefixtype='size_t'
10492                 fi
10493         else
10494                 db_prefixtype='size_t'
10495                 : XXX Maybe we should just give up here.
10496                 $cat try.out >&4
10497                 echo "Help:  I can't seem to compile the db test program." >&4
10498                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10499         fi
10500         $rm -f try.*
10501         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10502         ;;
10503 *)      db_prefixtype='size_t'
10504         ;;
10505 esac
10506
10507 : check for void type
10508 echo " "
10509 echo "Checking to see how well your C compiler groks the void type..." >&4
10510 case "$voidflags" in
10511 '')
10512         $cat >try.c <<'EOCP'
10513 #if TRY & 1
10514 void sub() {
10515 #else
10516 sub() {
10517 #endif
10518         extern void moo();      /* function returning void */
10519         void (*goo)();          /* ptr to func returning void */
10520 #if TRY & 8
10521         void *hue;              /* generic ptr */
10522 #endif
10523 #if TRY & 2
10524         void (*foo[10])();
10525 #endif
10526
10527 #if TRY & 4
10528         if(goo == moo) {
10529                 exit(0);
10530         }
10531 #endif
10532         exit(0);
10533 }
10534 int main() { sub(); }
10535 EOCP
10536         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10537                 voidflags=$defvoidused
10538         echo "Good.  It appears to support void to the level $package wants.">&4
10539                 if $contains warning .out >/dev/null 2>&1; then
10540                         echo "However, you might get some warnings that look like this:"
10541                         $cat .out
10542                 fi
10543         else
10544 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10545                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10546                         echo "It supports 1..."
10547                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10548                                 echo "It also supports 2..."
10549                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10550                                         voidflags=7
10551                                         echo "And it supports 4 but not 8 definitely."
10552                                 else
10553                                         echo "It doesn't support 4..."
10554                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10555                                                 voidflags=11
10556                                                 echo "But it supports 8."
10557                                         else
10558                                                 voidflags=3
10559                                                 echo "Neither does it support 8."
10560                                         fi
10561                                 fi
10562                         else
10563                                 echo "It does not support 2..."
10564                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10565                                         voidflags=13
10566                                         echo "But it supports 4 and 8."
10567                                 else
10568                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10569                                                 voidflags=5
10570                                                 echo "And it supports 4 but has not heard about 8."
10571                                         else
10572                                                 echo "However it supports 8 but not 4."
10573                                         fi
10574                                 fi
10575                         fi
10576                 else
10577                         echo "There is no support at all for void."
10578                         voidflags=0
10579                 fi
10580         fi
10581 esac
10582 case "$voidflags" in
10583 "$defvoidused") ;;
10584 *)      $cat >&4 <<'EOM'
10585   Support flag bits are:
10586     1: basic void declarations.
10587     2: arrays of pointers to functions returning void.
10588     4: operations between pointers to and addresses of void functions.
10589     8: generic void pointers.
10590 EOM
10591         dflt="$voidflags";
10592         rp="Your void support flags add up to what?"
10593         . ./myread
10594         voidflags="$ans"
10595         ;;
10596 esac
10597 $rm -f try.* .out
10598
10599
10600 : How can we generate normalized random numbers ?
10601 echo " "
10602 echo "Looking for a random number function..." >&4
10603 case "$randfunc" in
10604 '')
10605         if set drand48 val -f; eval $csym; $val; then
10606                 dflt="drand48"
10607                 echo "Good, found drand48()." >&4
10608         elif set random val -f; eval $csym; $val; then
10609                 dflt="random"
10610                 echo "OK, found random()." >&4
10611         else
10612                 dflt="rand"
10613                 echo "Yick, looks like I have to use rand()." >&4
10614         fi
10615         echo " "
10616         ;;
10617 *)
10618         dflt="$randfunc"
10619         ;;
10620 esac
10621 cont=true
10622
10623 case "$ccflags" in
10624 *-Dmy_rand=*|*-Dmy_srand=*)
10625         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10626         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10627         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10628         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10629         ;;
10630 esac
10631
10632 while $test "$cont"; do
10633         rp="Use which function to generate random numbers?"
10634         . ./myread
10635         if $test "$ans" = "$dflt"; then
10636                 : null
10637         else
10638                 randbits=''
10639         fi
10640         randfunc="$ans"
10641         if set $ans val -f; eval $csym; $val; then
10642                 cont=''
10643         else
10644                 dflt=y
10645                 rp="I cannot find function $ans. Use that name anyway?"
10646                 . ./myread
10647                 dflt=rand
10648                 case "$ans" in
10649                         [yY]*) cont='';;
10650                 esac
10651         fi
10652         case "$cont" in
10653         '')
10654                 case "$randfunc" in
10655                 drand48)
10656                         drand01="drand48()"
10657                         seedfunc="srand48"
10658                         randbits=48
10659                         randseedtype=long
10660                         ;;
10661                 rand|random)
10662                         case "$randbits" in
10663                         '')
10664 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10665                                 $cat >try.c <<EOCP
10666 #$i_unistd I_UNISTD
10667 #$i_stdlib I_STDLIB
10668 #include <stdio.h>
10669 #ifdef I_UNISTD
10670 #  include <unistd.h>
10671 #endif
10672 #ifdef I_STDLIB
10673 #  include <stdlib.h>
10674 #endif
10675 int main()
10676 {
10677         register int i;
10678         register unsigned long tmp;
10679         register unsigned long max = 0L;
10680
10681         for (i = 1000; i; i--) {
10682                 tmp = (unsigned long) $randfunc();
10683                 if (tmp > max) max = tmp;
10684         }
10685         for (i = 0; max; i++)
10686                 max /= 2;
10687         printf("%d\n",i);
10688 }
10689 EOCP
10690                                 set try
10691                                 if eval $compile_ok; then
10692                                         dflt=`try`
10693                                 else
10694                                         dflt='?'
10695                                         echo "(I can't seem to compile the test program...)"
10696                                 fi
10697                                 ;;
10698                         *)
10699                                 dflt="$randbits"
10700                                 ;;
10701                         esac
10702                         rp="How many bits does your $randfunc() function produce?"
10703                         . ./myread
10704                         randbits="$ans"
10705                         $rm -f try.c try
10706                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10707                         seedfunc="s$randfunc"
10708                         randseedtype=unsigned
10709                         ;;
10710                 *)
10711                         dflt="31"
10712                         rp="How many bits does your $randfunc() function produce?"
10713                         . ./myread
10714                         randbits="$ans"
10715                         seedfunc="s$randfunc"
10716                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10717                         if set $seedfunc val -f; eval $csym; $val; then
10718                                 echo "(Using $seedfunc() to seed random generator)"
10719                         else
10720                                 echo "(Warning: no $seedfunc() to seed random generator)"
10721                                 seedfunc=rand
10722                         fi
10723                         randseedtype=unsigned
10724                         ;;
10725                 esac
10726                 ;;
10727         esac
10728 done
10729
10730 echo " "
10731 echo "Determining whether or not we are on an EBCDIC system..." >&4
10732 $cat >tebcdic.c <<'EOM'
10733 int main()
10734 {
10735   if ('M'==0xd4) return 0;
10736   return 1;
10737 }
10738 EOM
10739
10740 val=$undef
10741 set tebcdic
10742 if eval $compile_ok; then
10743         if ./tebcdic; then
10744                 echo "You have EBCDIC." >&4
10745                 val="$define"
10746         else
10747                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10748         fi
10749 else
10750         echo "I'm unable to compile the test program." >&4
10751         echo "I'll assume ASCII or some ISO Latin." >&4
10752 fi
10753 $rm -f tebcdic.c tebcdic
10754 set ebcdic
10755 eval $setvar
10756
10757 : see what type file positions are declared as in the library
10758 rp="What is the type for file position used by fsetpos()?"
10759 set fpos_t fpostype long stdio.h sys/types.h
10760 eval $typedef_ask
10761
10762 : Store the full pathname to the sed program for use in the C program
10763 full_sed=$sed
10764
10765 : see what type gids are declared as in the kernel
10766 echo " "
10767 echo "Looking for the type for group ids returned by getgid()."
10768 set gid_t gidtype xxx stdio.h sys/types.h
10769 eval $typedef
10770 case "$gidtype" in
10771 xxx)
10772         xxx=`./findhdr sys/user.h`
10773         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10774         case $1 in
10775         unsigned) dflt="$1 $2" ;;
10776         *) dflt="$1" ;;
10777         esac
10778         ;;
10779 *) dflt="$gidtype";;
10780 esac
10781 case "$gidtype" in
10782 gid_t) echo "gid_t found." ;;
10783 *)      rp="What is the type for group ids returned by getgid()?"
10784         . ./myread
10785         gidtype="$ans"
10786         ;;
10787 esac
10788
10789 : see if getgroups exists
10790 set getgroups d_getgrps
10791 eval $inlibc
10792
10793 : see if setgroups exists
10794 set setgroups d_setgrps
10795 eval $inlibc
10796
10797
10798 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10799 echo " "
10800 case "$d_getgrps$d_setgrps" in
10801 *define*)
10802         case "$groupstype" in
10803         '') dflt="$gidtype" ;;
10804         *)  dflt="$groupstype" ;;
10805         esac
10806         $cat <<EOM
10807 What type of pointer is the second argument to getgroups() and setgroups()?
10808 Usually this is the same as group ids, $gidtype, but not always.
10809
10810 EOM
10811         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10812         . ./myread
10813         groupstype="$ans"
10814         ;;
10815 *)  groupstype="$gidtype";;
10816 esac
10817
10818 : see what type lseek is declared as in the kernel
10819 rp="What is the type used for lseek's offset on this system?"
10820 set off_t lseektype long stdio.h sys/types.h
10821 eval $typedef_ask
10822
10823 echo " "
10824 $echo $n "Checking to see how big your file offsets are...$c" >&4
10825 $cat >try.c <<EOCP
10826 #include <sys/types.h>
10827 #include <stdio.h>
10828 int main()
10829 {
10830         printf("%d\n", sizeof($lseektype));
10831 }
10832 EOCP
10833 set try
10834 if eval $compile_ok; then
10835         lseeksize=`./try`
10836         $echo " $lseeksize bytes." >&4
10837 else
10838         dflt='4'
10839         echo " "
10840         echo "(I can't seem to compile the test program.  Guessing...)"
10841         rp="What is the size of your file offsets (in bytes)?"
10842         . ./myread
10843         lseeksize="$ans"
10844 fi
10845 $rm -f try.c try
10846
10847 echo " "
10848 echo "Checking if your $make program sets \$(MAKE)..." >&4
10849 case "$make_set_make" in
10850 '')
10851         $sed 's/^X //' > testmake.mak << 'EOF'
10852 Xall:
10853 X       @echo 'maketemp="$(MAKE)"'
10854 EOF
10855         case "`$make -f testmake.mak 2>/dev/null`" in
10856         *maketemp=*) make_set_make='#' ;;
10857         *)      make_set_make="MAKE=$make" ;;
10858         esac
10859         $rm -f testmake.mak
10860         ;;
10861 esac
10862 case "$make_set_make" in
10863 '#') echo "Yup, it does.";;
10864 *) echo "Nope, it doesn't.";;
10865 esac
10866
10867 : see what type is used for mode_t
10868 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10869 set mode_t modetype int stdio.h sys/types.h
10870 eval $typedef_ask
10871
10872 : define a fucntion to check prototypes
10873 $cat > protochk <<EOSH
10874 $startsh
10875 cc="$cc"
10876 optimize="$optimize"
10877 ccflags="$ccflags"
10878 prototype="$prototype"
10879 define="$define"
10880 rm=$rm
10881 EOSH
10882
10883 $cat >> protochk <<'EOSH'
10884
10885 $rm -f try.c
10886 foo="$1"
10887 shift
10888 while test $# -ge 2; do
10889         case "$1" in
10890                 $define) echo "#include <$2>" >> try.c ;;
10891                 literal) echo "$2" >> try.c ;;
10892         esac
10893     shift 2
10894 done
10895 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
10896 cat >> try.c <<'EOCP'
10897 #ifdef CAN_PROTOTYPE
10898 #define _(args) args
10899 #else
10900 #define _(args) ()
10901 #endif
10902 EOCP
10903 echo "$foo" >> try.c
10904 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10905 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10906 status=$?
10907 $rm -f try.[co]
10908 exit $status
10909 EOSH
10910 chmod +x protochk
10911 $eunicefix protochk
10912
10913 : see what type is used for size_t
10914 rp="What is the type used for the length parameter for string functions?"
10915 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10916 eval $typedef_ask
10917
10918 : check for type of arguments to gethostbyaddr. 
10919 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10920         case "$d_gethbyaddr" in
10921         $define)
10922                 $cat <<EOM
10923
10924 Checking to see what type of arguments are accepted by gethostbyaddr().
10925 EOM
10926                 hdrs="$define sys/types.h
10927                         $d_socket sys/socket.h 
10928                         $i_niin netinet/in.h 
10929                         $i_netdb netdb.h
10930                         $i_unistd unistd.h"
10931                 : The first arg can 'char *' or 'void *'
10932                 : The second arg is some of integral type
10933                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10934                         for yyy in size_t long int; do
10935                                 case "$netdb_host_type" in
10936                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10937                                         if ./protochk "$try" $hdrs; then
10938                                                 echo "Your system accepts $xxx for the first arg."
10939                                                 echo "...and $yyy for the second arg."
10940                                                 netdb_host_type="$xxx"
10941                                                 netdb_hlen_type="$yyy"
10942                                         fi
10943                                         ;;
10944                                 esac
10945                         done
10946                 done
10947                 : In case none of those worked, prompt the user.
10948                 case "$netdb_host_type" in
10949                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
10950                         dflt='char *'
10951                         . ./myread
10952                         netdb_host_type=$ans
10953                         rp='What is the type for the 2nd argument to gethostbyaddr?'
10954                         dflt="$sizetype"
10955                         . ./myread
10956                         netdb_hlen_type=$ans
10957                         ;;
10958                 esac
10959                 ;;
10960         *)      : no gethostbyaddr, so pick harmless defaults
10961                 netdb_host_type='char *'
10962                 netdb_hlen_type="$sizetype"
10963                 ;;
10964         esac
10965         # Remove the "const" if needed. -- but then we'll have a 
10966         # prototype clash!
10967         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10968 fi
10969
10970 : check for type of argument to gethostbyname. 
10971 if test "X$netdb_name_type" = X ; then
10972         case "$d_gethbyname" in
10973         $define)
10974                 $cat <<EOM
10975
10976 Checking to see what type of argument is accepted by gethostbyname().
10977 EOM
10978                 hdrs="$define sys/types.h
10979                         $d_socket sys/socket.h 
10980                         $i_niin netinet/in.h 
10981                         $i_netdb netdb.h
10982                         $i_unistd unistd.h"
10983                 for xxx in "const char *" "char *"; do
10984                         case "$netdb_name_type" in
10985                         '')     try="extern struct hostent *gethostbyname($xxx);"
10986                                 if ./protochk "$try" $hdrs; then
10987                                         echo "Your system accepts $xxx."
10988                                         netdb_name_type="$xxx"
10989                                 fi
10990                                 ;;
10991                         esac
10992                 done
10993                 : In case none of those worked, prompt the user.
10994                 case "$netdb_name_type" in
10995                 '')     rp='What is the type for the 1st argument to gethostbyname?'
10996                         dflt='char *'
10997                         . ./myread
10998                         netdb_name_type=$ans
10999                         ;;
11000                 esac
11001                 ;;
11002         *)      : no gethostbyname, so pick harmless default
11003                 netdb_name_type='char *'
11004                 ;;
11005         esac
11006 fi
11007
11008 : check for type of 1st argument to getnetbyaddr. 
11009 if test "X$netdb_net_type" = X ; then
11010         case "$d_getnbyaddr" in
11011         $define)
11012                 $cat <<EOM
11013
11014 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11015 EOM
11016                 hdrs="$define sys/types.h
11017                         $d_socket sys/socket.h 
11018                         $i_niin netinet/in.h 
11019                         $i_netdb netdb.h
11020                         $i_unistd unistd.h"
11021                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11022                         case "$netdb_net_type" in
11023                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11024                                 if ./protochk "$try" $hdrs; then
11025                                         echo "Your system accepts $xxx."
11026                                         netdb_net_type="$xxx"
11027                                 fi
11028                                 ;;
11029                         esac
11030                 done
11031                 : In case none of those worked, prompt the user.
11032                 case "$netdb_net_type" in
11033                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11034                         dflt='long'
11035                         . ./myread
11036                         netdb_net_type=$ans
11037                         ;;
11038                 esac
11039                 ;;
11040         *)      : no getnetbyaddr, so pick harmless default
11041                 netdb_net_type='long'
11042                 ;;
11043         esac
11044 fi
11045 : locate the preferred pager for this system
11046 case "$pager" in
11047 '')
11048         dflt=''
11049         case "$pg" in
11050         /*) dflt=$pg;;
11051         esac
11052         case "$more" in
11053         /*) dflt=$more;;
11054         esac
11055         case "$less" in
11056         /*) dflt=$less;;
11057         esac
11058         case "$dflt" in
11059         '') dflt=/usr/ucb/more;;
11060         esac
11061         ;;
11062 *) dflt="$pager";;
11063 esac
11064 echo " "
11065 fn=f/
11066 rp='What pager is used on your system?'
11067 . ./getfile
11068 pager="$ans"
11069
11070 : see what type pids are declared as in the kernel
11071 rp="What is the type of process ids on this system?"
11072 set pid_t pidtype int stdio.h sys/types.h
11073 eval $typedef_ask
11074
11075 : check for length of pointer
11076 echo " "
11077 case "$ptrsize" in
11078 '')
11079         $echo $n "Checking to see how big your pointers are...$c" >&4
11080         if test "$voidflags" -gt 7; then
11081                 echo '#define VOID_PTR char *' > try.c
11082         else
11083                 echo '#define VOID_PTR void *' > try.c
11084         fi
11085         $cat >>try.c <<'EOCP'
11086 #include <stdio.h>
11087 int main()
11088 {
11089         printf("%d\n", sizeof(VOID_PTR));
11090         exit(0);
11091 }
11092 EOCP
11093         set try
11094         if eval $compile_ok; then
11095                 ptrsize=`./try`
11096                 $echo " $ptrsize bytes." >&4
11097         else
11098                 dflt='4'
11099                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11100                 rp="What is the size of a pointer (in bytes)?"
11101                 . ./myread
11102                 ptrsize="$ans"
11103         fi
11104         ;;
11105 esac
11106 $rm -f try.c try
11107
11108 : see if ar generates random libraries by itself
11109 echo " "
11110 echo "Checking how to generate random libraries on your machine..." >&4
11111 echo 'int bar1() { return bar2(); }' > bar1.c
11112 echo 'int bar2() { return 2; }' > bar2.c
11113 $cat > foo.c <<'EOP'
11114 int main() { printf("%d\n", bar1()); exit(0); }
11115 EOP
11116 $cc $ccflags -c bar1.c >/dev/null 2>&1
11117 $cc $ccflags -c bar2.c >/dev/null 2>&1
11118 $cc $ccflags -c foo.c >/dev/null 2>&1
11119 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11120 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11121         ./foobar >/dev/null 2>&1; then
11122         echo "$ar appears to generate random libraries itself."
11123         orderlib=false
11124         ranlib=":"
11125 elif $ar ts bar$_a >/dev/null 2>&1 &&
11126         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11127         ./foobar >/dev/null 2>&1; then
11128                 echo "a table of contents needs to be added with '$ar ts'."
11129                 orderlib=false
11130                 ranlib="$ar ts"
11131 else
11132         case "$ranlib" in
11133         :) ranlib='';;
11134         '')
11135                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11136                 $test -f $ranlib || ranlib=''
11137                 ;;
11138         esac
11139         if $test -n "$ranlib"; then
11140                 echo "your system has '$ranlib'; we'll use that."
11141                 orderlib=false
11142         else
11143                 echo "your system doesn't seem to support random libraries"
11144                 echo "so we'll use lorder and tsort to order the libraries."
11145                 orderlib=true
11146                 ranlib=":"
11147         fi
11148 fi
11149 $rm -f foo* bar* 
11150
11151 : check for type of arguments to select. 
11152 case "$selecttype" in
11153 '') case "$d_select" in
11154         $define)
11155                 $cat <<EOM
11156 Checking to see what type of arguments are accepted by select().
11157 EOM
11158                 hdrs="$define sys/types.h
11159                         $i_systime sys/time.h 
11160                         $i_sysselct sys/select.h
11161                         $d_socket sys/socket.h"
11162                 : The first arg can be int, unsigned, or size_t
11163                 : The last arg may or may not be 'const'
11164                 val=''
11165                 : void pointer has been seen but using that
11166                 : breaks the selectminbits test
11167                 for xxx in 'fd_set *' 'int *'; do
11168                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11169                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11170                                         case "$val" in
11171                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11172                                                 if ./protochk "$try" $hdrs; then
11173                                                         echo "Your system accepts $xxx."
11174                                                         val="$xxx"
11175                                                 fi
11176                                                 ;;
11177                                         esac
11178                                 done
11179                         done
11180                 done
11181                 case "$val" in
11182                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11183                         case "$d_fd_set" in
11184                                 $define) dflt="fd_set *" ;;
11185                                 *)              dflt="int *" ;;
11186                         esac
11187                         . ./myread
11188                         val=$ans
11189                         ;;
11190                 esac
11191                 selecttype="$val"
11192                 ;;
11193         *)      : no select, so pick a harmless default
11194                 selecttype='int *'
11195                 ;;
11196         esac
11197         ;;
11198 esac
11199
11200 : check for the select 'width'
11201 case "$selectminbits" in
11202 '') case "$d_select" in
11203         $define)
11204                 $cat <<EOM
11205
11206 Checking to see on how many bits at a time your select() operates...
11207 EOM
11208                 $cat >try.c <<EOCP
11209 #include <sys/types.h>
11210 #$i_time I_TIME
11211 #$i_systime I_SYS_TIME
11212 #$i_systimek I_SYS_TIME_KERNEL
11213 #ifdef I_TIME
11214 #   include <time.h>
11215 #endif
11216 #ifdef I_SYS_TIME
11217 #   ifdef I_SYS_TIME_KERNEL
11218 #       define KERNEL
11219 #   endif
11220 #   include <sys/time.h>
11221 #   ifdef I_SYS_TIME_KERNEL
11222 #       undef KERNEL
11223 #   endif
11224 #endif
11225 #$i_sysselct I_SYS_SELECT
11226 #ifdef I_SYS_SELECT
11227 #include <sys/select.h>
11228 #endif
11229 #include <stdio.h>
11230 $selecttype b;
11231 #define S sizeof(*(b))
11232 #define MINBITS 64
11233 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11234 #define NBITS  (NBYTES * 8)
11235 int main() {
11236     char s[NBYTES];
11237     struct timeval t;
11238     int i;
11239     FILE* fp;
11240     int fd;
11241
11242     fclose(stdin);
11243     fp = fopen("try.c", "r");
11244     if (fp == 0)
11245       exit(1);
11246     fd = fileno(fp);
11247     if (fd < 0)
11248       exit(2);
11249     b = ($selecttype)s;
11250     for (i = 0; i < NBITS; i++)
11251         FD_SET(i, b);
11252     t.tv_sec  = 0;
11253     t.tv_usec = 0;
11254     select(fd + 1, b, 0, 0, &t);
11255     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11256     printf("%d\n", i + 1);
11257     return 0;
11258 }
11259 EOCP
11260                 set try
11261                 if eval $compile_ok; then
11262                         selectminbits=`./try`
11263                         case "$selectminbits" in
11264                         '')     cat >&4 <<EOM
11265 Cannot figure out on how many bits at a time your select() operates.
11266 I'll play safe and guess it is 32 bits.
11267 EOM
11268                                 selectminbits=32
11269                                 bits="32 bits"
11270                                 ;;
11271                         1)      bits="1 bit" ;;
11272                         *)      bits="$selectminbits bits" ;;
11273                         esac
11274                         echo "Your select() operates on $bits at a time." >&4
11275                 else
11276                         rp='What is the minimum number of bits your select() operates on?'
11277                         case "$byteorder" in
11278                         1234|12345678)  dflt=32 ;;
11279                         *)              dflt=1  ;;
11280                         esac
11281                         . ./myread
11282                         val=$ans
11283                         selectminbits="$val"
11284                 fi
11285                 $rm -f try.* try
11286                 ;;
11287         *)      : no select, so pick a harmless default
11288                 selectminbits='32'
11289                 ;;
11290         esac
11291         ;;
11292 esac
11293
11294 : Trace out the files included by signal.h, then look for SIGxxx names.
11295 : Remove SIGARRAYSIZE used by HPUX.
11296 : Remove SIGTYP void lines used by OS2.
11297 xxx=`echo '#include <signal.h>' |
11298         $cppstdin $cppminus $cppflags 2>/dev/null |
11299         $grep '^[       ]*#.*include' | 
11300         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11301 : Check this list of files to be sure we have parsed the cpp output ok.
11302 : This will also avoid potentially non-existent files, such 
11303 : as ../foo/bar.h
11304 xxxfiles=''
11305 for xx in $xxx /dev/null ; do
11306         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11307 done
11308 : If we have found no files, at least try signal.h
11309 case "$xxxfiles" in
11310 '')     xxxfiles=`./findhdr signal.h` ;;
11311 esac
11312 xxx=`awk '
11313 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11314         print substr($2, 4, 20)
11315 }
11316 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11317         print substr($3, 4, 20)
11318 }' $xxxfiles`
11319 : Append some common names just in case the awk scan failed.
11320 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11321 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11322 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11323 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11324 : generate a few handy files for later
11325 $cat > signal.c <<'EOCP'
11326 #include <sys/types.h>
11327 #include <signal.h>
11328 #include <stdio.h>
11329 int main() {
11330
11331 /* Strange style to avoid deeply-nested #if/#else/#endif */
11332 #ifndef NSIG
11333 #  ifdef _NSIG
11334 #    define NSIG (_NSIG)
11335 #  endif
11336 #endif
11337
11338 #ifndef NSIG
11339 #  ifdef SIGMAX
11340 #    define NSIG (SIGMAX+1)
11341 #  endif
11342 #endif
11343
11344 #ifndef NSIG
11345 #  ifdef SIG_MAX
11346 #    define NSIG (SIG_MAX+1)
11347 #  endif
11348 #endif
11349
11350 #ifndef NSIG
11351 #  ifdef MAXSIG
11352 #    define NSIG (MAXSIG+1)
11353 #  endif
11354 #endif
11355
11356 #ifndef NSIG
11357 #  ifdef MAX_SIG
11358 #    define NSIG (MAX_SIG+1)
11359 #  endif
11360 #endif
11361
11362 #ifndef NSIG
11363 #  ifdef SIGARRAYSIZE
11364 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11365 #  endif
11366 #endif
11367
11368 #ifndef NSIG
11369 #  ifdef _sys_nsig
11370 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11371 #  endif
11372 #endif
11373
11374 /* Default to some arbitrary number that's big enough to get most
11375    of the common signals.
11376 */
11377 #ifndef NSIG
11378 #    define NSIG 50
11379 #endif
11380
11381 printf("NSIG %d\n", NSIG);
11382
11383 #ifndef JUST_NSIG
11384
11385 EOCP
11386
11387 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11388 {
11389         printf "#ifdef SIG"; printf $1; printf "\n"
11390         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11391         printf $1; printf ");\n"
11392         printf "#endif\n"
11393 }
11394 END {
11395         printf "#endif /* JUST_NSIG */\n";
11396         printf "}\n";
11397 }
11398 ' >>signal.c
11399 $cat >signal.awk <<'EOP'
11400 BEGIN { ndups = 0 }
11401 $1 ~ /^NSIG$/ { nsig = $2 }
11402 ($1 !~ /^NSIG$/) && (NF == 2) {
11403     if ($2 > maxsig) { maxsig = $2 }
11404     if (sig_name[$2]) {
11405         dup_name[ndups] = $1
11406         dup_num[ndups] = $2
11407         ndups++ 
11408     }
11409     else {
11410         sig_name[$2] = $1
11411         sig_num[$2] = $2
11412     }
11413
11414 }
11415 END { 
11416     if (nsig == 0) { nsig = maxsig + 1 }
11417         for (n = 1; n < nsig; n++) {
11418                 if (sig_name[n]) {
11419                         printf("%s %d\n", sig_name[n], sig_num[n])
11420                 }
11421                 else {
11422                         printf("NUM%d %d\n", n, n) 
11423                 }
11424         }
11425     for (n = 0; n < ndups; n++) {
11426                 printf("%s %d\n", dup_name[n], dup_num[n])
11427     }
11428 }
11429 EOP
11430 $cat >signal_cmd <<EOS
11431 $startsh
11432 if $test -s signal.lst; then
11433     echo "Using your existing signal.lst file"
11434         exit 0
11435 fi
11436 xxx="$xxx"
11437 EOS
11438 $cat >>signal_cmd <<'EOS'
11439
11440 set signal
11441 if eval $compile_ok; then
11442         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11443 else
11444         echo "(I can't seem be able to compile the whole test program)" >&4
11445         echo "(I'll try it in little pieces.)" >&4
11446         set signal -DJUST_NSIG
11447         if eval $compile_ok; then
11448                 ./signal$_exe > signal.nsg
11449                 $cat signal.nsg
11450         else
11451                 echo "I can't seem to figure out how many signals you have." >&4
11452                 echo "Guessing 50." >&4
11453                 echo 'NSIG 50' > signal.nsg
11454         fi
11455         : Now look at all the signal names, one at a time.
11456         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11457                 $cat > signal.c <<EOCP
11458 #include <sys/types.h>
11459 #include <signal.h>
11460 #include <stdio.h>
11461 int main() {
11462 printf("$xx %d\n", SIG${xx});
11463 return 0;
11464 }
11465 EOCP
11466                 set signal
11467                 if eval $compile; then
11468                         echo "SIG${xx} found."
11469                         ./signal$_exe  >> signal.ls1
11470                 else
11471                         echo "SIG${xx} NOT found."
11472                 fi
11473         done
11474         if $test -s signal.ls1; then
11475                 $cat signal.nsg signal.ls1 |
11476                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11477         fi
11478
11479 fi
11480 if $test -s signal.lst; then
11481         :
11482 else
11483         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11484         echo 'kill -l' >signal
11485         set X `csh -f <signal`
11486         $rm -f signal
11487         shift
11488         case $# in
11489         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11490         esac
11491         echo $@ | $tr ' ' $trnl | \
11492                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11493 fi
11494 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11495 EOS
11496 chmod a+x signal_cmd
11497 $eunicefix signal_cmd
11498
11499 : generate list of signal names
11500 echo " "
11501 case "$sig_name_init" in
11502 '') doinit=yes ;;
11503 *)  case "$sig_num_init" in
11504     ''|*,*) doinit=yes ;;
11505     esac ;;
11506 esac
11507 case "$doinit" in
11508 yes)
11509         echo "Generating a list of signal names and numbers..." >&4
11510         . ./signal_cmd
11511         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11512         sig_name="ZERO $sig_name"
11513         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11514                                                 { printf "\"%s\", ", $1 }
11515                                                 END { printf "0\n" }' signal.lst`
11516         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11517         sig_num="0 $sig_num"
11518         sig_num_init=`$awk 'BEGIN { printf "0, " }
11519                                         { printf "%d, ", $2}
11520                                         END { printf "0\n"}' signal.lst`
11521         ;;
11522 esac
11523 echo "The following signals are available:"
11524 echo " "
11525 echo $sig_name | $awk \
11526 'BEGIN { linelen = 0 }
11527 {
11528         for (i = 1; i <= NF; i++) {
11529                 name = "SIG" $i " "
11530                 linelen = linelen + length(name)
11531                 if (linelen > 70) {
11532                         printf "\n"
11533                         linelen = length(name)
11534                 }
11535                 printf "%s", name
11536         }
11537         printf "\n"
11538 }'
11539 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11540
11541 : see what type is used for signed size_t
11542 set ssize_t ssizetype int stdio.h sys/types.h
11543 eval $typedef
11544 dflt="$ssizetype"
11545 $cat > ssize.c <<EOM
11546 #include <stdio.h>
11547 #include <sys/types.h>
11548 #define Size_t $sizetype
11549 #define SSize_t $dflt
11550 int main()
11551 {
11552         if (sizeof(Size_t) == sizeof(SSize_t))
11553                 printf("$dflt\n");
11554         else if (sizeof(Size_t) == sizeof(int))
11555                 printf("int\n");
11556         else 
11557                 printf("long\n");
11558         exit(0);
11559 }
11560 EOM
11561 echo " "
11562 set ssize
11563 if eval $compile_ok && ./ssize > /dev/null; then
11564         ssizetype=`./ssize`
11565         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11566 else
11567         $cat >&4 <<EOM
11568 Help! I can't compile and run the ssize_t test program: please enlighten me!
11569 (This is probably a misconfiguration in your system or libraries, and
11570 you really ought to fix it.  Still, I'll try anyway.)
11571
11572 I need a type that is the same size as $sizetype, but is guaranteed to
11573 be signed.  Common values are ssize_t, int and long.
11574
11575 EOM
11576         rp="What signed type is the same size as $sizetype?"
11577         . ./myread
11578         ssizetype="$ans"
11579 fi
11580 $rm -f ssize ssize.*
11581
11582 : see what type of char stdio uses.
11583 echo " "
11584 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11585         echo "Your stdio uses unsigned chars." >&4
11586         stdchar="unsigned char"
11587 else
11588         echo "Your stdio uses signed chars." >&4
11589         stdchar="char"
11590 fi
11591
11592 : see if time exists
11593 echo " "
11594 if test "X$d_time" = X -o X"$timetype" = X; then
11595     if set time val -f d_time; eval $csym; $val; then
11596                 echo 'time() found.' >&4
11597                 val="$define"
11598                 rp="What is the type returned by time() on this system?"
11599                 set time_t timetype long stdio.h sys/types.h
11600                 eval $typedef_ask
11601     else
11602                 echo 'time() not found, hope that will do.' >&4
11603                 val="$undef"
11604                 timetype='int';
11605     fi
11606     set d_time
11607     eval $setvar
11608 fi
11609
11610 : see what type uids are declared as in the kernel
11611 echo " "
11612 echo "Looking for the type for user ids returned by getuid()."
11613 set uid_t uidtype xxx stdio.h sys/types.h
11614 eval $typedef
11615 case "$uidtype" in
11616 xxx)
11617         xxx=`./findhdr sys/user.h`
11618         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11619         case $1 in
11620         unsigned) dflt="$1 $2" ;;
11621         *) dflt="$1" ;;
11622         esac
11623         ;;
11624 *) dflt="$uidtype";;
11625 esac
11626 case "$uidtype" in
11627 uid_t)  echo "uid_t found." ;;
11628 *)      rp="What is the type for user ids returned by getuid()?"
11629         . ./myread
11630         uidtype="$ans"
11631         ;;
11632 esac
11633
11634 : see if dbm.h is available
11635 : see if dbmclose exists
11636 set dbmclose d_dbmclose
11637 eval $inlibc
11638
11639 case "$d_dbmclose" in
11640 $define)
11641         set dbm.h i_dbm
11642         eval $inhdr
11643         case "$i_dbm" in
11644         $define)
11645                 val="$undef"
11646                 set i_rpcsvcdbm
11647                 eval $setvar
11648                 ;;
11649         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11650                 eval $inhdr
11651                 ;;
11652         esac
11653         ;;
11654 *)      echo "We won't be including <dbm.h>"
11655         val="$undef"
11656         set i_dbm
11657         eval $setvar
11658         val="$undef"
11659         set i_rpcsvcdbm
11660         eval $setvar
11661         ;;
11662 esac
11663
11664 : see if this is a sys/file.h system
11665 val=''
11666 set sys/file.h val
11667 eval $inhdr
11668
11669 : do we need to include sys/file.h ?
11670 case "$val" in
11671 "$define")
11672         echo " "
11673         if $h_sysfile; then
11674                 val="$define"
11675                 echo "We'll be including <sys/file.h>." >&4
11676         else
11677                 val="$undef"
11678                 echo "We won't be including <sys/file.h>." >&4
11679         fi
11680         ;;
11681 *)
11682         h_sysfile=false
11683         ;;
11684 esac
11685 set i_sysfile
11686 eval $setvar
11687
11688 : see if fcntl.h is there
11689 val=''
11690 set fcntl.h val
11691 eval $inhdr
11692
11693 : see if we can include fcntl.h
11694 case "$val" in
11695 "$define")
11696         echo " "
11697         if $h_fcntl; then
11698                 val="$define"
11699                 echo "We'll be including <fcntl.h>." >&4
11700         else
11701                 val="$undef"
11702                 if $h_sysfile; then
11703         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11704                 else
11705                         echo "We won't be including <fcntl.h>." >&4
11706                 fi
11707         fi
11708         ;;
11709 *)
11710         h_fcntl=false
11711         val="$undef"
11712         ;;
11713 esac
11714 set i_fcntl
11715 eval $setvar
11716
11717 : see if locale.h is available
11718 set locale.h i_locale
11719 eval $inhdr
11720
11721 : see if mach cthreads are available
11722 if test "X$usethreads" = "X$define"; then
11723         set mach/cthreads.h i_machcthr
11724         eval $inhdr
11725 else
11726         i_machcthr="$undef"
11727 fi
11728
11729
11730
11731 : see if this is a math.h system
11732 set math.h i_math
11733 eval $inhdr
11734
11735 : see if this is a mntent.h system
11736 set mntent.h i_mntent
11737 eval $inhdr
11738
11739 : see if ndbm.h is available
11740 set ndbm.h t_ndbm
11741 eval $inhdr
11742 case "$t_ndbm" in
11743 $define)
11744         : see if dbm_open exists
11745         set dbm_open d_dbm_open
11746         eval $inlibc
11747         case "$d_dbm_open" in
11748         $undef)
11749                 t_ndbm="$undef"
11750                 echo "We won't be including <ndbm.h>"
11751                 ;;
11752         esac
11753         ;;
11754 esac
11755 val="$t_ndbm"
11756 set i_ndbm
11757 eval $setvar
11758
11759 : see if net/errno.h is available
11760 val=''
11761 set net/errno.h val
11762 eval $inhdr
11763
11764 : Unfortunately, it causes problems on some systems.  Arrgh.
11765 case "$val" in
11766 $define)
11767         cat > try.c <<'EOM'
11768 #include <stdio.h>
11769 #include <errno.h>
11770 #include <net/errno.h>
11771 int func()
11772 {
11773         return ENOTSOCK;
11774 }
11775 EOM
11776         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11777                 echo "We'll be including <net/errno.h>." >&4
11778         else
11779                 echo "We won't be including <net/errno.h>." >&4
11780                 val="$undef"
11781         fi
11782         $rm -f try.* try
11783         ;;
11784 esac
11785 set i_neterrno
11786 eval $setvar
11787
11788 : see if this is a poll.h system
11789 set poll.h i_poll
11790 eval $inhdr
11791
11792 : get C preprocessor symbols handy
11793 echo " "
11794 $echo $n "Hmm... $c"
11795 echo $al | $tr ' ' $trnl >Cppsym.know
11796 $cat <<EOSS >Cppsym
11797 $startsh
11798 case "\$1" in
11799 -l) list=true
11800         shift
11801         ;;
11802 esac
11803 unknown=''
11804 case "\$list\$#" in
11805 1|2)
11806         for sym do
11807                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11808                         exit 0
11809                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11810                         :
11811                 else
11812                         unknown="\$unknown \$sym"
11813                 fi
11814         done
11815         set X \$unknown
11816         shift
11817         ;;
11818 esac
11819 case \$# in
11820 0) exit 1;;
11821 esac
11822 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11823 #ifdef \1\\
11824 exit 0; _ _ _ _\1\\      \1\\
11825 #endif\\
11826 /' >Cppsym\$\$
11827 echo "exit 1; _ _ _" >>Cppsym\$\$
11828 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11829 case "\$list" in
11830 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11831 *)
11832         sh Cppsym2\$\$
11833         status=\$?
11834         ;;
11835 esac
11836 $rm -f Cppsym\$\$ Cppsym2\$\$
11837 exit \$status
11838 EOSS
11839 chmod +x Cppsym
11840 $eunicefix Cppsym
11841 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11842
11843 : now check the C compiler for additional symbols
11844 $cat >ccsym <<EOS
11845 $startsh
11846 $cat >tmp.c <<EOF
11847 extern int foo;
11848 EOF
11849 for i in \`$cc -v -c tmp.c 2>&1\`
11850 do
11851         case "\$i" in
11852         -D*) echo "\$i" | $sed 's/^-D//';;
11853         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11854         esac
11855 done
11856 $rm -f try.c
11857 EOS
11858 chmod +x ccsym
11859 $eunicefix ccsym
11860 ./ccsym > ccsym1.raw
11861 if $test -s ccsym1.raw; then
11862        $sort ccsym1.raw | $uniq >ccsym.raw
11863 else
11864        mv ccsym1.raw ccsym.raw
11865 fi
11866
11867 $awk '/\=/ { print $0; next }
11868         { print $0"=1" }' ccsym.raw >ccsym.list
11869 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11870 $comm -13 ccsym.true ccsym.list >ccsym.own
11871 $comm -12 ccsym.true ccsym.list >ccsym.com
11872 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11873 also=''
11874 symbols='symbols'
11875 if $test -z ccsym.raw; then
11876         echo "Your C compiler doesn't seem to define any symbol!" >&4
11877         echo " "
11878         echo "However, your C preprocessor defines the following ones:"
11879         $cat Cppsym.true
11880 else
11881         if $test -s ccsym.com; then
11882                 echo "Your C compiler and pre-processor define these symbols:"
11883                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11884                 also='also '
11885                 symbols='ones'
11886                 $test "$silent" || sleep 1
11887         fi
11888         if $test -s ccsym.cpp; then
11889                 $test "$also" && echo " "
11890                 echo "Your C pre-processor ${also}defines the following $symbols:"
11891                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11892                 also='further '
11893                 $test "$silent" || sleep 1
11894         fi
11895         if $test -s ccsym.own; then
11896                 $test "$also" && echo " "
11897                 echo "Your C compiler ${also}defines the following cpp variables:"
11898                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11899                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11900                 $test "$silent" || sleep 1
11901         fi
11902 fi
11903 $rm -f ccsym*
11904
11905 : see if this is a termio system
11906 val="$undef"
11907 val2="$undef"
11908 val3="$undef"
11909 if $test `./findhdr termios.h`; then
11910         set tcsetattr i_termios
11911         eval $inlibc
11912         val3="$i_termios"
11913 fi
11914 echo " "
11915 case "$val3" in
11916 "$define") echo "You have POSIX termios.h... good!" >&4;;
11917 *) if ./Cppsym pyr; then
11918                 case "`/bin/universe`" in
11919                 ucb) if $test `./findhdr sgtty.h`; then
11920                                 val2="$define"
11921                                 echo "<sgtty.h> found." >&4
11922                         else
11923                                 echo "System is pyramid with BSD universe."
11924                                 echo "<sgtty.h> not found--you could have problems." >&4
11925                         fi;;
11926                 *) if $test `./findhdr termio.h`; then
11927                                 val="$define"
11928                                 echo "<termio.h> found." >&4
11929                         else
11930                                 echo "System is pyramid with USG universe."
11931                                 echo "<termio.h> not found--you could have problems." >&4
11932                         fi;;
11933                 esac
11934         elif ./usg; then
11935                 if $test `./findhdr termio.h`; then
11936                         echo "<termio.h> found." >&4
11937                         val="$define"
11938                 elif $test `./findhdr sgtty.h`; then
11939                         echo "<sgtty.h> found." >&4
11940                         val2="$define"
11941                 else
11942 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11943                 fi
11944         else
11945                 if $test `./findhdr sgtty.h`; then
11946                         echo "<sgtty.h> found." >&4
11947                         val2="$define"
11948                 elif $test `./findhdr termio.h`; then
11949                         echo "<termio.h> found." >&4
11950                         val="$define"
11951                 else
11952 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11953                 fi
11954         fi;;
11955 esac
11956 set i_termio; eval $setvar
11957 val=$val2; set i_sgtty; eval $setvar
11958 val=$val3; set i_termios; eval $setvar
11959
11960 : see if stdarg is available
11961 echo " "
11962 if $test `./findhdr stdarg.h`; then
11963         echo "<stdarg.h> found." >&4
11964         valstd="$define"
11965 else
11966         echo "<stdarg.h> NOT found." >&4
11967         valstd="$undef"
11968 fi
11969
11970 : see if varags is available
11971 echo " "
11972 if $test `./findhdr varargs.h`; then
11973         echo "<varargs.h> found." >&4
11974 else
11975         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11976 fi
11977
11978 : set up the varargs testing programs
11979 $cat > varargs.c <<EOP
11980 #ifdef I_STDARG
11981 #include <stdarg.h>
11982 #endif
11983 #ifdef I_VARARGS
11984 #include <varargs.h>
11985 #endif
11986
11987 #ifdef I_STDARG
11988 int f(char *p, ...)
11989 #else
11990 int f(va_alist)
11991 va_dcl
11992 #endif
11993 {
11994         va_list ap;
11995 #ifndef I_STDARG
11996         char *p;
11997 #endif
11998 #ifdef I_STDARG
11999         va_start(ap,p);
12000 #else
12001         va_start(ap);
12002         p = va_arg(ap, char *);
12003 #endif
12004         va_end(ap);
12005 }
12006 EOP
12007 $cat > varargs <<EOP
12008 $startsh
12009 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12010         echo "true"
12011 else
12012         echo "false"
12013 fi
12014 $rm -f varargs$_o
12015 EOP
12016 chmod +x varargs
12017
12018 : now check which varargs header should be included
12019 echo " "
12020 i_varhdr=''
12021 case "$valstd" in
12022 "$define")
12023         if `./varargs I_STDARG`; then
12024                 val='stdarg.h'
12025         elif `./varargs I_VARARGS`; then
12026                 val='varargs.h'
12027         fi
12028         ;;
12029 *)
12030         if `./varargs I_VARARGS`; then
12031                 val='varargs.h'
12032         fi
12033         ;;
12034 esac
12035 case "$val" in
12036 '')
12037 echo "I could not find the definition for va_dcl... You have problems..." >&4
12038         val="$undef"; set i_stdarg; eval $setvar
12039         val="$undef"; set i_varargs; eval $setvar
12040         ;;
12041 *) 
12042         set i_varhdr
12043         eval $setvar
12044         case "$i_varhdr" in
12045         stdarg.h)
12046                 val="$define"; set i_stdarg; eval $setvar
12047                 val="$undef"; set i_varargs; eval $setvar
12048                 ;;
12049         varargs.h)
12050                 val="$undef"; set i_stdarg; eval $setvar
12051                 val="$define"; set i_varargs; eval $setvar
12052                 ;;
12053         esac
12054         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12055 esac
12056 $rm -f varargs*
12057
12058 : see if stddef is available
12059 set stddef.h i_stddef
12060 eval $inhdr
12061
12062 : see if sys/access.h is available
12063 set sys/access.h i_sysaccess
12064 eval $inhdr
12065
12066 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12067 set sys/filio.h i_sysfilio
12068 eval $inhdr
12069 echo " "
12070 if $test `./findhdr sys/ioctl.h`; then
12071         val="$define"
12072         echo '<sys/ioctl.h> found.' >&4
12073 else
12074         val="$undef"
12075         if $test $i_sysfilio = "$define"; then
12076             echo '<sys/ioctl.h> NOT found.' >&4
12077         else
12078                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12079                 $test $i_termio = "$define" && xxx="termio.h"
12080                 $test $i_termios = "$define" && xxx="termios.h"
12081 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12082         fi
12083 fi
12084 set i_sysioctl
12085 eval $setvar
12086
12087 : see if sys/resource.h has to be included
12088 set sys/resource.h i_sysresrc
12089 eval $inhdr
12090
12091 : see if sys/security.h is available
12092 set sys/security.h i_syssecrt
12093 eval $inhdr
12094
12095 : see if this is a sys/statvfs.h system
12096 set sys/statvfs.h i_sysstatvfs
12097 eval $inhdr
12098
12099 : see if this is a sys/un.h system
12100 set sys/un.h i_sysun
12101 eval $inhdr
12102
12103 : see if this is a syswait system
12104 set sys/wait.h i_syswait
12105 eval $inhdr
12106
12107 : see if this is an utime system
12108 set utime.h i_utime
12109 eval $inhdr
12110
12111 : see if this is a values.h system
12112 set values.h i_values
12113 eval $inhdr
12114
12115 : see if this is a vfork system
12116 case "$d_vfork" in
12117 "$define")
12118         set vfork.h i_vfork
12119         eval $inhdr
12120         ;;
12121 *)
12122         i_vfork="$undef"
12123         ;;
12124 esac
12125
12126 : see if gdbm.h is available
12127 set gdbm.h t_gdbm
12128 eval $inhdr
12129 case "$t_gdbm" in
12130 $define)
12131         : see if gdbm_open exists
12132         set gdbm_open d_gdbm_open
12133         eval $inlibc
12134         case "$d_gdbm_open" in
12135         $undef)
12136                 t_gdbm="$undef"
12137                 echo "We won't be including <gdbm.h>"
12138                 ;;
12139         esac
12140         ;;
12141 esac
12142 val="$t_gdbm"
12143 set i_gdbm
12144 eval $setvar
12145
12146 echo " "
12147 echo "Looking for extensions..." >&4
12148 tdir=`pwd`
12149 cd $rsrc/ext
12150 : If we are using the old config.sh, known_extensions may contain
12151 : old or inaccurate or duplicate values.
12152 known_extensions=''
12153 nonxs_extensions=''
12154 : We do not use find because it might not be available.
12155 : We do not just use MANIFEST because the user may have dropped
12156 : some additional extensions into the source tree and expect them
12157 : to be built.
12158 for xxx in * ; do
12159         case "$xxx" in
12160         DynaLoader|dynaload) ;;
12161         *)      if $test -f $xxx/$xxx.xs; then
12162                         known_extensions="$known_extensions $xxx"
12163                 elif $test -f $xxx/Makefile.PL; then
12164                         nonxs_extensions="$nonxs_extensions $xxx"
12165                 else
12166                         if $test -d $xxx; then
12167                                 # Look for nested extensions, eg. Devel/Dprof.
12168                                 cd $xxx
12169                                 for yyy in * ; do
12170                                 if $test -f $yyy/$yyy.xs; then
12171                                         known_extensions="$known_extensions $xxx/$yyy"
12172                                 elif $test -f $yyy/Makefile.PL; then
12173                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12174                                 fi
12175                                 done
12176                                 cd ..
12177                         fi
12178                 fi 
12179                 ;;
12180         esac
12181 done
12182 set X $nonxs_extensions
12183 shift
12184 nonxs_extensions="$*"
12185 set X $known_extensions
12186 shift
12187 known_extensions="$*"
12188 cd $tdir
12189
12190 : Now see which are supported on this system.
12191 avail_ext=''
12192 for xxx in $known_extensions ; do
12193         case "$xxx" in
12194         DB_File|db_file)
12195                 case "$i_db" in
12196                 $define) avail_ext="$avail_ext $xxx" ;;
12197                 esac
12198                 ;;
12199         GDBM_File|gdbm_fil)
12200                 case "$i_gdbm" in 
12201                 $define) avail_ext="$avail_ext $xxx" ;;
12202                 esac
12203                 ;;
12204         NDBM_File|ndbm_fil)
12205                 case "$i_ndbm" in
12206                 $define) avail_ext="$avail_ext $xxx" ;;
12207                 esac
12208                 ;;
12209         ODBM_File|odbm_fil) 
12210                 case "${i_dbm}${i_rpcsvcdbm}" in
12211                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12212                 esac
12213                 ;;
12214         POSIX|posix)
12215                 case "$useposix" in
12216                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12217                 esac
12218                 ;;
12219         Opcode|opcode)
12220                 case "$useopcode" in
12221                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12222                 esac
12223                 ;;
12224         Socket|socket)
12225                 case "$d_socket" in 
12226                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12227                 esac
12228                 ;;
12229         Thread|thread)
12230                 case "$usethreads" in 
12231                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12232                 esac
12233                 ;;
12234         IPC/SysV|ipc/sysv)
12235                 : XXX Do we need a useipcsysv variable here
12236                 case "${d_msg}${d_sem}${d_shm}" in 
12237                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12238                 esac
12239                 ;;
12240         *)      avail_ext="$avail_ext $xxx"
12241                 ;;
12242         esac
12243 done
12244
12245 set X $avail_ext
12246 shift
12247 avail_ext="$*"
12248
12249 : Now see which nonxs extensions are supported on this system.
12250 : For now assume all are.
12251 nonxs_ext=''
12252 for xxx in $nonxs_extensions ; do
12253         case "$xxx" in
12254         *)      nonxs_ext="$nonxs_ext $xxx"
12255                 ;;
12256         esac
12257 done
12258
12259 set X $nonxs_ext
12260 shift
12261 nonxs_ext="$*"
12262
12263 case $usedl in
12264 $define)
12265         $cat <<EOM
12266 A number of extensions are supplied with $package.  You may choose to
12267 compile these extensions for dynamic loading (the default), compile
12268 them into the $package executable (static loading), or not include
12269 them at all.  Answer "none" to include no extensions.
12270 Note that DynaLoader is always built and need not be mentioned here.
12271
12272 EOM
12273         case "$dynamic_ext" in
12274         '') dflt="$avail_ext" ;;
12275         *)      dflt="$dynamic_ext"
12276                 # Perhaps we are reusing an old out-of-date config.sh.
12277                 case "$hint" in
12278                 previous)
12279                         if test X"$dynamic_ext" != X"$avail_ext"; then
12280                                 $cat <<EOM
12281 NOTICE:  Your previous config.sh list may be incorrect. 
12282 The extensions now available to you are 
12283         ${avail_ext}
12284 but the default list from your previous config.sh is
12285         ${dynamic_ext} 
12286
12287 EOM
12288                         fi
12289                         ;;
12290                 esac
12291                 ;;
12292         esac
12293         case "$dflt" in
12294         '')     dflt=none;;
12295         esac
12296         rp="What extensions do you wish to load dynamically?"
12297         . ./myread
12298         case "$ans" in
12299         none) dynamic_ext=' ' ;;
12300         *) dynamic_ext="$ans" ;;
12301         esac
12302
12303         case "$static_ext" in
12304         '')
12305                 : Exclude those already listed in dynamic linking
12306                 dflt=''
12307                 for xxx in $avail_ext; do
12308                         case " $dynamic_ext " in
12309                         *" $xxx "*) ;;
12310                         *) dflt="$dflt $xxx" ;;
12311                         esac
12312                 done
12313                 set X $dflt
12314                 shift
12315                 dflt="$*"
12316                 ;;
12317         *)  dflt="$static_ext" 
12318                 ;;
12319         esac
12320
12321         case "$dflt" in
12322         '')     dflt=none;;
12323         esac
12324         rp="What extensions do you wish to load statically?"
12325         . ./myread
12326         case "$ans" in
12327         none) static_ext=' ' ;;
12328         *) static_ext="$ans" ;;
12329         esac
12330         ;;
12331 *)
12332         $cat <<EOM
12333 A number of extensions are supplied with $package.  Answer "none" 
12334 to include no extensions. 
12335 Note that DynaLoader is always built and need not be mentioned here.
12336
12337 EOM
12338         case "$static_ext" in
12339         '') dflt="$avail_ext" ;;
12340         *)      dflt="$static_ext"
12341                 # Perhaps we are reusing an old out-of-date config.sh.
12342                 case "$hint" in
12343                 previous)
12344                         if test X"$static_ext" != X"$avail_ext"; then
12345                                 $cat <<EOM
12346 NOTICE:  Your previous config.sh list may be incorrect. 
12347 The extensions now available to you are 
12348         ${avail_ext}
12349 but the default list from your previous config.sh is
12350         ${static_ext} 
12351
12352 EOM
12353                         fi
12354                         ;;
12355                 esac
12356                 ;;
12357         esac
12358         : Exclude those that are not xs extensions
12359         case "$dflt" in
12360         '')     dflt=none;;
12361         esac
12362         rp="What extensions do you wish to include?"
12363         . ./myread
12364         case "$ans" in
12365         none) static_ext=' ' ;;
12366         *) static_ext="$ans" ;;
12367         esac
12368         ;;
12369 esac
12370
12371 set X $dynamic_ext $static_ext $nonxs_ext
12372 shift
12373 extensions="$*"
12374
12375 : Remove build directory name from cppstdin so it can be used from
12376 : either the present location or the final installed location.
12377 echo " "
12378 : Get out of the UU directory to get correct path name.
12379 cd ..
12380 case "$cppstdin" in
12381 `pwd`/cppstdin)
12382         echo "Stripping down cppstdin path name"
12383         cppstdin=cppstdin
12384         ;;
12385 esac
12386 cd UU
12387
12388 : end of configuration questions
12389 echo " "
12390 echo "End of configuration questions."
12391 echo " "
12392
12393 : back to where it started
12394 if test -d ../UU; then
12395         cd ..
12396 fi
12397
12398 : configuration may be patched via a 'config.over' file
12399 if $test -f config.over; then
12400         echo " "
12401         dflt=y
12402         rp='I see a config.over file.  Do you wish to load it?'
12403         . UU/myread
12404         case "$ans" in
12405         n*) echo "OK, I'll ignore it.";;
12406         *)      . ./config.over
12407                 echo "Configuration override changes have been loaded."
12408                 ;;
12409         esac
12410 fi
12411
12412 : in case they want portability, strip down executable paths
12413 case "$d_portable" in
12414 "$define")
12415         echo " "
12416         echo "Stripping down executable paths..." >&4
12417         for file in $loclist $trylist; do
12418                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12419                         eval $file="\$file"
12420                 fi
12421         done
12422         ;;
12423 esac
12424
12425 : create config.sh file
12426 echo " "
12427 echo "Creating config.sh..." >&4
12428 $spitshell <<EOT >config.sh
12429 $startsh
12430 #
12431 # This file was produced by running the Configure script. It holds all the
12432 # definitions figured out by Configure. Should you modify one of these values,
12433 # do not forget to propagate your changes by running "Configure -der". You may
12434 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12435 #
12436
12437 # Package name      : $package
12438 # Source directory  : $src
12439 # Configuration time: $cf_time
12440 # Configured by     : $cf_by
12441 # Target system     : $myuname
12442
12443 Author='$Author'
12444 Date='$Date'
12445 Header='$Header'
12446 Id='$Id'
12447 Locker='$Locker'
12448 Log='$Log'
12449 Mcc='$Mcc'
12450 RCSfile='$RCSfile'
12451 Revision='$Revision'
12452 Source='$Source'
12453 State='$State'
12454 _a='$_a'
12455 _exe='$_exe'
12456 _o='$_o'
12457 afs='$afs'
12458 alignbytes='$alignbytes'
12459 ansi2knr='$ansi2knr'
12460 aphostname='$aphostname'
12461 apiversion='$apiversion'
12462 ar='$ar'
12463 archlib='$archlib'
12464 archlibexp='$archlibexp'
12465 archname64='$archname64'
12466 archname='$archname'
12467 archobjs='$archobjs'
12468 awk='$awk'
12469 baserev='$baserev'
12470 bash='$bash'
12471 bin='$bin'
12472 binexp='$binexp'
12473 bison='$bison'
12474 byacc='$byacc'
12475 byteorder='$byteorder'
12476 c='$c'
12477 castflags='$castflags'
12478 cat='$cat'
12479 cc='$cc'
12480 cccdlflags='$cccdlflags'
12481 ccdlflags='$ccdlflags'
12482 ccflags='$ccflags'
12483 cf_by='$cf_by'
12484 cf_email='$cf_email'
12485 cf_time='$cf_time'
12486 chgrp='$chgrp'
12487 chmod='$chmod'
12488 chown='$chown'
12489 clocktype='$clocktype'
12490 comm='$comm'
12491 compress='$compress'
12492 contains='$contains'
12493 cp='$cp'
12494 cpio='$cpio'
12495 cpp='$cpp'
12496 cpp_stuff='$cpp_stuff'
12497 cppflags='$cppflags'
12498 cpplast='$cpplast'
12499 cppminus='$cppminus'
12500 cpprun='$cpprun'
12501 cppstdin='$cppstdin'
12502 cryptlib='$cryptlib'
12503 csh='$csh'
12504 d_Gconvert='$d_Gconvert'
12505 d_access='$d_access'
12506 d_accessx='$d_accessx'
12507 d_alarm='$d_alarm'
12508 d_archlib='$d_archlib'
12509 d_attribut='$d_attribut'
12510 d_bcmp='$d_bcmp'
12511 d_bcopy='$d_bcopy'
12512 d_bsd='$d_bsd'
12513 d_bsdgetpgrp='$d_bsdgetpgrp'
12514 d_bsdsetpgrp='$d_bsdsetpgrp'
12515 d_bzero='$d_bzero'
12516 d_casti32='$d_casti32'
12517 d_castneg='$d_castneg'
12518 d_charvspr='$d_charvspr'
12519 d_chown='$d_chown'
12520 d_chroot='$d_chroot'
12521 d_chsize='$d_chsize'
12522 d_closedir='$d_closedir'
12523 d_cmsghdr_s='$d_cmsghdr_s'
12524 d_const='$d_const'
12525 d_crypt='$d_crypt'
12526 d_csh='$d_csh'
12527 d_cuserid='$d_cuserid'
12528 d_dbl_dig='$d_dbl_dig'
12529 d_dbmclose64='$d_dbmclose64'
12530 d_dbminit64='$d_dbminit64'
12531 d_delete64='$d_delete64'
12532 d_difftime='$d_difftime'
12533 d_dirent64_s='$d_dirent64_s'
12534 d_dirnamlen='$d_dirnamlen'
12535 d_dlerror='$d_dlerror'
12536 d_dlopen='$d_dlopen'
12537 d_dlsymun='$d_dlsymun'
12538 d_dosuid='$d_dosuid'
12539 d_drand48proto='$d_drand48proto'
12540 d_dup2='$d_dup2'
12541 d_eaccess='$d_eaccess'
12542 d_endgrent='$d_endgrent'
12543 d_endhent='$d_endhent'
12544 d_endnent='$d_endnent'
12545 d_endpent='$d_endpent'
12546 d_endpwent='$d_endpwent'
12547 d_endsent='$d_endsent'
12548 d_eofnblk='$d_eofnblk'
12549 d_eunice='$d_eunice'
12550 d_fchmod='$d_fchmod'
12551 d_fchown='$d_fchown'
12552 d_fcntl='$d_fcntl'
12553 d_fd_macros='$d_fd_macros'
12554 d_fd_set='$d_fd_set'
12555 d_fds_bits='$d_fds_bits'
12556 d_fetch64='$d_fetch64'
12557 d_fgetpos64='$d_fgetpos64'
12558 d_fgetpos='$d_fgetpos'
12559 d_firstkey64='$d_firstkey64'
12560 d_flexfnam='$d_flexfnam'
12561 d_flock64_s='$d_flock64_s'
12562 d_flock='$d_flock'
12563 d_fopen64='$d_fopen64'
12564 d_fork='$d_fork'
12565 d_fpathconf='$d_fpathconf'
12566 d_freopen64='$d_freopen64'
12567 d_fseek64='$d_fseek64'
12568 d_fseeko64='$d_fseeko64'
12569 d_fseeko='$d_fseeko'
12570 d_fsetpos64='$d_fsetpos64'
12571 d_fsetpos='$d_fsetpos'
12572 d_fstat64='$d_fstat64'
12573 d_fstatfs='$d_fstatfs'
12574 d_fstatvfs='$d_fstatvfs'
12575 d_ftell64='$d_ftell64'
12576 d_ftello64='$d_ftello64'
12577 d_ftello='$d_ftello'
12578 d_ftime='$d_ftime'
12579 d_ftruncate64='$d_ftruncate64'
12580 d_getgrent='$d_getgrent'
12581 d_getgrps='$d_getgrps'
12582 d_gethbyaddr='$d_gethbyaddr'
12583 d_gethbyname='$d_gethbyname'
12584 d_gethent='$d_gethent'
12585 d_gethname='$d_gethname'
12586 d_gethostprotos='$d_gethostprotos'
12587 d_getlogin='$d_getlogin'
12588 d_getnbyaddr='$d_getnbyaddr'
12589 d_getnbyname='$d_getnbyname'
12590 d_getnent='$d_getnent'
12591 d_getnetprotos='$d_getnetprotos'
12592 d_getpbyname='$d_getpbyname'
12593 d_getpbynumber='$d_getpbynumber'
12594 d_getpent='$d_getpent'
12595 d_getpgid='$d_getpgid'
12596 d_getpgrp2='$d_getpgrp2'
12597 d_getpgrp='$d_getpgrp'
12598 d_getppid='$d_getppid'
12599 d_getprior='$d_getprior'
12600 d_getprotoprotos='$d_getprotoprotos'
12601 d_getpwent='$d_getpwent'
12602 d_getsbyname='$d_getsbyname'
12603 d_getsbyport='$d_getsbyport'
12604 d_getsent='$d_getsent'
12605 d_getservprotos='$d_getservprotos'
12606 d_gettimeod='$d_gettimeod'
12607 d_gnulibc='$d_gnulibc'
12608 d_grpasswd='$d_grpasswd'
12609 d_htonl='$d_htonl'
12610 d_index='$d_index'
12611 d_inetaton='$d_inetaton'
12612 d_ino64t='$d_ino64t'
12613 d_int64t='$d_int64t'
12614 d_iovec_s='$d_iovec_s'
12615 d_isascii='$d_isascii'
12616 d_killpg='$d_killpg'
12617 d_lchown='$d_lchown'
12618 d_link='$d_link'
12619 d_locconv='$d_locconv'
12620 d_lockf64='$d_lockf64'
12621 d_lockf='$d_lockf'
12622 d_longdbl='$d_longdbl'
12623 d_longlong='$d_longlong'
12624 d_lseek64='$d_lseek64'
12625 d_lstat64='$d_lstat64'
12626 d_lstat='$d_lstat'
12627 d_mblen='$d_mblen'
12628 d_mbstowcs='$d_mbstowcs'
12629 d_mbtowc='$d_mbtowc'
12630 d_memcmp='$d_memcmp'
12631 d_memcpy='$d_memcpy'
12632 d_memmove='$d_memmove'
12633 d_memset='$d_memset'
12634 d_mkdir='$d_mkdir'
12635 d_mkfifo='$d_mkfifo'
12636 d_mktime='$d_mktime'
12637 d_msg='$d_msg'
12638 d_msg_ctrunc='$d_msg_ctrunc'
12639 d_msg_dontroute='$d_msg_dontroute'
12640 d_msg_oob='$d_msg_oob'
12641 d_msg_peek='$d_msg_peek'
12642 d_msg_proxy='$d_msg_proxy'
12643 d_msgctl='$d_msgctl'
12644 d_msgget='$d_msgget'
12645 d_msghdr_s='$d_msghdr_s'
12646 d_msgrcv='$d_msgrcv'
12647 d_msgsnd='$d_msgsnd'
12648 d_mymalloc='$d_mymalloc'
12649 d_nextkey64='$d_nextkey64'
12650 d_nice='$d_nice'
12651 d_off64t='$d_off64t'
12652 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12653 d_oldpthreads='$d_oldpthreads'
12654 d_oldsock='$d_oldsock'
12655 d_open3='$d_open3'
12656 d_open64='$d_open64'
12657 d_opendir64='$d_opendir64'
12658 d_pathconf='$d_pathconf'
12659 d_pause='$d_pause'
12660 d_phostname='$d_phostname'
12661 d_pipe='$d_pipe'
12662 d_poll='$d_poll'
12663 d_portable='$d_portable'
12664 d_pthread_yield='$d_pthread_yield'
12665 d_pwage='$d_pwage'
12666 d_pwchange='$d_pwchange'
12667 d_pwclass='$d_pwclass'
12668 d_pwcomment='$d_pwcomment'
12669 d_pwexpire='$d_pwexpire'
12670 d_pwgecos='$d_pwgecos'
12671 d_pwpasswd='$d_pwpasswd'
12672 d_pwquota='$d_pwquota'
12673 d_readdir64='$d_readdir64'
12674 d_readdir='$d_readdir'
12675 d_readlink='$d_readlink'
12676 d_readv='$d_readv'
12677 d_recvmsg='$d_recvmsg'
12678 d_rename='$d_rename'
12679 d_rewinddir='$d_rewinddir'
12680 d_rmdir='$d_rmdir'
12681 d_safebcpy='$d_safebcpy'
12682 d_safemcpy='$d_safemcpy'
12683 d_sanemcmp='$d_sanemcmp'
12684 d_sched_yield='$d_sched_yield'
12685 d_scm_rights='$d_scm_rights'
12686 d_seekdir64='$d_seekdir64'
12687 d_seekdir='$d_seekdir'
12688 d_select='$d_select'
12689 d_sem='$d_sem'
12690 d_semctl='$d_semctl'
12691 d_semctl_semid_ds='$d_semctl_semid_ds'
12692 d_semctl_semun='$d_semctl_semun'
12693 d_semget='$d_semget'
12694 d_semop='$d_semop'
12695 d_sendmsg='$d_sendmsg'
12696 d_setegid='$d_setegid'
12697 d_seteuid='$d_seteuid'
12698 d_setgrent='$d_setgrent'
12699 d_setgrps='$d_setgrps'
12700 d_sethent='$d_sethent'
12701 d_setlinebuf='$d_setlinebuf'
12702 d_setlocale='$d_setlocale'
12703 d_setnent='$d_setnent'
12704 d_setpent='$d_setpent'
12705 d_setpgid='$d_setpgid'
12706 d_setpgrp2='$d_setpgrp2'
12707 d_setpgrp='$d_setpgrp'
12708 d_setprior='$d_setprior'
12709 d_setpwent='$d_setpwent'
12710 d_setregid='$d_setregid'
12711 d_setresgid='$d_setresgid'
12712 d_setresuid='$d_setresuid'
12713 d_setreuid='$d_setreuid'
12714 d_setrgid='$d_setrgid'
12715 d_setruid='$d_setruid'
12716 d_setsent='$d_setsent'
12717 d_setsid='$d_setsid'
12718 d_setvbuf='$d_setvbuf'
12719 d_sfio='$d_sfio'
12720 d_shm='$d_shm'
12721 d_shmat='$d_shmat'
12722 d_shmatprototype='$d_shmatprototype'
12723 d_shmctl='$d_shmctl'
12724 d_shmdt='$d_shmdt'
12725 d_shmget='$d_shmget'
12726 d_sigaction='$d_sigaction'
12727 d_sigsetjmp='$d_sigsetjmp'
12728 d_socket='$d_socket'
12729 d_sockpair='$d_sockpair'
12730 d_stat64='$d_stat64'
12731 d_statblks='$d_statblks'
12732 d_statfs='$d_statfs'
12733 d_statfsflags='$d_statfsflags'
12734 d_statvfs='$d_statvfs'
12735 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12736 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12737 d_stdiobase='$d_stdiobase'
12738 d_stdstdio='$d_stdstdio'
12739 d_store64='$d_store64'
12740 d_strchr='$d_strchr'
12741 d_strcoll='$d_strcoll'
12742 d_strctcpy='$d_strctcpy'
12743 d_strerrm='$d_strerrm'
12744 d_strerror='$d_strerror'
12745 d_strtod='$d_strtod'
12746 d_strtol='$d_strtol'
12747 d_strtoul='$d_strtoul'
12748 d_strxfrm='$d_strxfrm'
12749 d_suidsafe='$d_suidsafe'
12750 d_symlink='$d_symlink'
12751 d_syscall='$d_syscall'
12752 d_sysconf='$d_sysconf'
12753 d_sysernlst='$d_sysernlst'
12754 d_syserrlst='$d_syserrlst'
12755 d_system='$d_system'
12756 d_tcgetpgrp='$d_tcgetpgrp'
12757 d_tcsetpgrp='$d_tcsetpgrp'
12758 d_telldir64='$d_telldir64'
12759 d_telldir='$d_telldir'
12760 d_telldirproto='$d_telldirproto'
12761 d_time='$d_time'
12762 d_times='$d_times'
12763 d_tmpfile64='$d_tmpfile64'
12764 d_truncate64='$d_truncate64'
12765 d_truncate='$d_truncate'
12766 d_tzname='$d_tzname'
12767 d_umask='$d_umask'
12768 d_uname='$d_uname'
12769 d_union_semun='$d_union_semun'
12770 d_vfork='$d_vfork'
12771 d_void_closedir='$d_void_closedir'
12772 d_voidsig='$d_voidsig'
12773 d_voidtty='$d_voidtty'
12774 d_volatile='$d_volatile'
12775 d_vprintf='$d_vprintf'
12776 d_wait4='$d_wait4'
12777 d_waitpid='$d_waitpid'
12778 d_wcstombs='$d_wcstombs'
12779 d_wctomb='$d_wctomb'
12780 d_writev='$d_writev'
12781 d_xenix='$d_xenix'
12782 date='$date'
12783 db_hashtype='$db_hashtype'
12784 db_prefixtype='$db_prefixtype'
12785 defvoidused='$defvoidused'
12786 direntrytype='$direntrytype'
12787 dlext='$dlext'
12788 dlsrc='$dlsrc'
12789 doublesize='$doublesize'
12790 drand01='$drand01'
12791 dynamic_ext='$dynamic_ext'
12792 eagain='$eagain'
12793 ebcdic='$ebcdic'
12794 echo='$echo'
12795 egrep='$egrep'
12796 emacs='$emacs'
12797 eunicefix='$eunicefix'
12798 exe_ext='$exe_ext'
12799 expr='$expr'
12800 extensions='$extensions'
12801 find='$find'
12802 firstmakefile='$firstmakefile'
12803 flex='$flex'
12804 fpostype='$fpostype'
12805 freetype='$freetype'
12806 full_csh='$full_csh'
12807 full_sed='$full_sed'
12808 gccversion='$gccversion'
12809 gidtype='$gidtype'
12810 glibpth='$glibpth'
12811 grep='$grep'
12812 groupcat='$groupcat'
12813 groupstype='$groupstype'
12814 gzip='$gzip'
12815 h_fcntl='$h_fcntl'
12816 h_sysfile='$h_sysfile'
12817 hint='$hint'
12818 hostcat='$hostcat'
12819 huge='$huge'
12820 i_arpainet='$i_arpainet'
12821 i_bsdioctl='$i_bsdioctl'
12822 i_db='$i_db'
12823 i_dbm='$i_dbm'
12824 i_dirent='$i_dirent'
12825 i_dld='$i_dld'
12826 i_dlfcn='$i_dlfcn'
12827 i_fcntl='$i_fcntl'
12828 i_float='$i_float'
12829 i_gdbm='$i_gdbm'
12830 i_grp='$i_grp'
12831 i_inttypes='$i_inttypes'
12832 i_limits='$i_limits'
12833 i_locale='$i_locale'
12834 i_machcthr='$i_machcthr'
12835 i_malloc='$i_malloc'
12836 i_math='$i_math'
12837 i_memory='$i_memory'
12838 i_mntent='$i_mntent'
12839 i_ndbm='$i_ndbm'
12840 i_netdb='$i_netdb'
12841 i_neterrno='$i_neterrno'
12842 i_niin='$i_niin'
12843 i_poll='$i_poll'
12844 i_pwd='$i_pwd'
12845 i_rpcsvcdbm='$i_rpcsvcdbm'
12846 i_sfio='$i_sfio'
12847 i_sgtty='$i_sgtty'
12848 i_stdarg='$i_stdarg'
12849 i_stddef='$i_stddef'
12850 i_stdlib='$i_stdlib'
12851 i_string='$i_string'
12852 i_sysaccess='$i_sysaccess'
12853 i_sysdir='$i_sysdir'
12854 i_sysfile='$i_sysfile'
12855 i_sysfilio='$i_sysfilio'
12856 i_sysin='$i_sysin'
12857 i_sysioctl='$i_sysioctl'
12858 i_sysmount='$i_sysmount'
12859 i_sysndir='$i_sysndir'
12860 i_sysparam='$i_sysparam'
12861 i_sysresrc='$i_sysresrc'
12862 i_syssecrt='$i_syssecrt'
12863 i_sysselct='$i_sysselct'
12864 i_syssockio='$i_syssockio'
12865 i_sysstat='$i_sysstat'
12866 i_sysstatvfs='$i_sysstatvfs'
12867 i_systime='$i_systime'
12868 i_systimek='$i_systimek'
12869 i_systimes='$i_systimes'
12870 i_systypes='$i_systypes'
12871 i_sysuio='$i_sysuio'
12872 i_sysun='$i_sysun'
12873 i_syswait='$i_syswait'
12874 i_termio='$i_termio'
12875 i_termios='$i_termios'
12876 i_time='$i_time'
12877 i_unistd='$i_unistd'
12878 i_utime='$i_utime'
12879 i_values='$i_values'
12880 i_varargs='$i_varargs'
12881 i_varhdr='$i_varhdr'
12882 i_vfork='$i_vfork'
12883 ignore_versioned_solibs='$ignore_versioned_solibs'
12884 incpath='$incpath'
12885 inews='$inews'
12886 installarchlib='$installarchlib'
12887 installbin='$installbin'
12888 installman1dir='$installman1dir'
12889 installman3dir='$installman3dir'
12890 installprivlib='$installprivlib'
12891 installscript='$installscript'
12892 installsitearch='$installsitearch'
12893 installsitelib='$installsitelib'
12894 installusrbinperl='$installusrbinperl'
12895 intsize='$intsize'
12896 known_extensions='$known_extensions'
12897 ksh='$ksh'
12898 large='$large'
12899 ld='$ld'
12900 lddlflags='$lddlflags'
12901 ldflags='$ldflags'
12902 less='$less'
12903 lib_ext='$lib_ext'
12904 libc='$libc'
12905 libperl='$libperl'
12906 libpth='$libpth'
12907 libs='$libs'
12908 libswanted='$libswanted'
12909 line='$line'
12910 lint='$lint'
12911 lkflags='$lkflags'
12912 ln='$ln'
12913 lns='$lns'
12914 locincpth='$locincpth'
12915 loclibpth='$loclibpth'
12916 longdblsize='$longdblsize'
12917 longlongsize='$longlongsize'
12918 longsize='$longsize'
12919 lp='$lp'
12920 lpr='$lpr'
12921 ls='$ls'
12922 lseeksize='$lseeksize'
12923 lseektype='$lseektype'
12924 mail='$mail'
12925 mailx='$mailx'
12926 make='$make'
12927 make_set_make='$make_set_make'
12928 mallocobj='$mallocobj'
12929 mallocsrc='$mallocsrc'
12930 malloctype='$malloctype'
12931 man1dir='$man1dir'
12932 man1direxp='$man1direxp'
12933 man1ext='$man1ext'
12934 man3dir='$man3dir'
12935 man3direxp='$man3direxp'
12936 man3ext='$man3ext'
12937 medium='$medium'
12938 mips='$mips'
12939 mips_type='$mips_type'
12940 mkdir='$mkdir'
12941 models='$models'
12942 modetype='$modetype'
12943 more='$more'
12944 mv='$mv'
12945 myarchname='$myarchname'
12946 mydomain='$mydomain'
12947 myhostname='$myhostname'
12948 myuname='$myuname'
12949 n='$n'
12950 netdb_hlen_type='$netdb_hlen_type'
12951 netdb_host_type='$netdb_host_type'
12952 netdb_name_type='$netdb_name_type'
12953 netdb_net_type='$netdb_net_type'
12954 nm='$nm'
12955 nm_opt='$nm_opt'
12956 nm_so_opt='$nm_so_opt'
12957 nonxs_ext='$nonxs_ext'
12958 nroff='$nroff'
12959 o_nonblock='$o_nonblock'
12960 obj_ext='$obj_ext'
12961 old_pthread_create_joinable='$old_pthread_create_joinable'
12962 optimize='$optimize'
12963 orderlib='$orderlib'
12964 osname='$osname'
12965 osvers='$osvers'
12966 package='$package'
12967 pager='$pager'
12968 passcat='$passcat'
12969 patchlevel='$patchlevel'
12970 path_sep='$path_sep'
12971 perl='$perl'
12972 perladmin='$perladmin'
12973 perlpath='$perlpath'
12974 pg='$pg'
12975 phostname='$phostname'
12976 pidtype='$pidtype'
12977 plibpth='$plibpth'
12978 pmake='$pmake'
12979 pr='$pr'
12980 prefix='$prefix'
12981 prefixexp='$prefixexp'
12982 privlib='$privlib'
12983 privlibexp='$privlibexp'
12984 prototype='$prototype'
12985 ptrsize='$ptrsize'
12986 randbits='$randbits'
12987 randfunc='$randfunc'
12988 randseedtype='$randseedtype'
12989 ranlib='$ranlib'
12990 rd_nodata='$rd_nodata'
12991 rm='$rm'
12992 rmail='$rmail'
12993 runnm='$runnm'
12994 sched_yield='$sched_yield'
12995 scriptdir='$scriptdir'
12996 scriptdirexp='$scriptdirexp'
12997 sed='$sed'
12998 seedfunc='$seedfunc'
12999 selectminbits='$selectminbits'
13000 selecttype='$selecttype'
13001 sendmail='$sendmail'
13002 sh='$sh'
13003 shar='$shar'
13004 sharpbang='$sharpbang'
13005 shmattype='$shmattype'
13006 shortsize='$shortsize'
13007 shrpenv='$shrpenv'
13008 shsharp='$shsharp'
13009 sig_name='$sig_name'
13010 sig_name_init='$sig_name_init'
13011 sig_num='$sig_num'
13012 sig_num_init='$sig_num_init'
13013 signal_t='$signal_t'
13014 sitearch='$sitearch'
13015 sitearchexp='$sitearchexp'
13016 sitelib='$sitelib'
13017 sitelibexp='$sitelibexp'
13018 sizetype='$sizetype'
13019 sleep='$sleep'
13020 smail='$smail'
13021 small='$small'
13022 so='$so'
13023 sockethdr='$sockethdr'
13024 socketlib='$socketlib'
13025 sort='$sort'
13026 spackage='$spackage'
13027 spitshell='$spitshell'
13028 split='$split'
13029 src='$src'
13030 ssizetype='$ssizetype'
13031 startperl='$startperl'
13032 startsh='$startsh'
13033 static_ext='$static_ext'
13034 stdchar='$stdchar'
13035 stdio_base='$stdio_base'
13036 stdio_bufsiz='$stdio_bufsiz'
13037 stdio_cnt='$stdio_cnt'
13038 stdio_filbuf='$stdio_filbuf'
13039 stdio_ptr='$stdio_ptr'
13040 strings='$strings'
13041 submit='$submit'
13042 subversion='$subversion'
13043 sysman='$sysman'
13044 tail='$tail'
13045 tar='$tar'
13046 tbl='$tbl'
13047 tee='$tee'
13048 test='$test'
13049 timeincl='$timeincl'
13050 timetype='$timetype'
13051 touch='$touch'
13052 tr='$tr'
13053 trnl='$trnl'
13054 troff='$troff'
13055 uidtype='$uidtype'
13056 uname='$uname'
13057 uniq='$uniq'
13058 use64bits='$use64bits'
13059 usedl='$usedl'
13060 usemultiplicity='$usemultiplicity'
13061 usemymalloc='$usemymalloc'
13062 usenm='$usenm'
13063 useopcode='$useopcode'
13064 useperlio='$useperlio'
13065 useposix='$useposix'
13066 usesfio='$usesfio'
13067 useshrplib='$useshrplib'
13068 usethreads='$usethreads'
13069 usevfork='$usevfork'
13070 usrinc='$usrinc'
13071 uuname='$uuname'
13072 version='$version'
13073 vi='$vi'
13074 voidflags='$voidflags'
13075 xlibpth='$xlibpth'
13076 zcat='$zcat'
13077 zip='$zip'
13078 EOT
13079
13080 : Add in command line options if available
13081 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13082
13083 : add special variables
13084 $test -f $src/patchlevel.h && \
13085 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13086 echo "CONFIG=true" >>config.sh
13087
13088 : propagate old symbols
13089 if $test -f UU/config.sh; then
13090         <UU/config.sh sort | uniq >UU/oldconfig.sh
13091         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13092         sort | uniq -u >UU/oldsyms
13093         set X `cat UU/oldsyms`
13094         shift
13095         case $# in
13096         0) ;;
13097         *)
13098                 cat <<EOM
13099 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13100 EOM
13101                 echo "# Variables propagated from previous config.sh file." >>config.sh
13102                 for sym in `cat UU/oldsyms`; do
13103                         echo "    Propagating $hint variable "'$'"$sym..."
13104                         eval 'tmp="$'"${sym}"'"'
13105                         echo "$tmp" | \
13106                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13107                 done
13108                 ;;
13109         esac
13110 fi
13111
13112 : Finish up by extracting the .SH files
13113 case "$alldone" in
13114 exit)
13115         $rm -rf UU
13116         echo "Done."
13117         exit 0
13118         ;;
13119 cont)
13120         ;;
13121 '')
13122         dflt=''
13123         nostick=true
13124         $cat <<EOM
13125
13126 If you'd like to make any changes to the config.sh file before I begin
13127 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13128
13129 EOM
13130         rp="Press return or use a shell escape to edit config.sh:"
13131         . UU/myread
13132         nostick=''
13133         case "$ans" in
13134         '') ;;
13135         *) : in case they cannot read
13136                 sh 1>&4 -c "$ans";;
13137         esac
13138         ;;
13139 esac
13140
13141 : if this fails, just run all the .SH files by hand
13142 . ./config.sh
13143
13144 echo " "
13145 exec 1>&4
13146 . ./UU/extract
13147
13148 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13149         dflt=y
13150         case "$silent" in
13151         true) ;;
13152         *)
13153                 $cat <<EOM
13154
13155 Now you need to generate make dependencies by running "$make depend".
13156 You might prefer to run it in background: "$make depend > makedepend.out &"
13157 It can take a while, so you might not want to run it right now.
13158
13159 EOM
13160                 ;;
13161         esac
13162         rp="Run $make depend now?"
13163         . UU/myread
13164         case "$ans" in
13165         y*)
13166                 $make depend && echo "Now you must run a $make."
13167                 ;;
13168         *)
13169                 echo "You must run '$make depend' then '$make'."
13170                 ;;
13171         esac
13172 elif test -f [Mm]akefile; then
13173         echo " "
13174         echo "Now you must run a $make."
13175 else
13176         echo "Done."
13177 fi
13178
13179 if $test -f Policy.sh; then
13180     $cat <<EOM
13181
13182 If you compile $package on a different machine or from a different object
13183 directory, copy the Policy.sh file from this object directory to the
13184 new one before you run Configure -- this will help you with most of
13185 the policy defaults.
13186
13187 EOM
13188 fi
13189 if $test -f config.msg; then
13190     echo "Hmm.  I also noted the following information while running:"
13191     echo " "
13192     $cat config.msg >&4
13193     $rm -f config.msg
13194 fi
13195 $rm -f kit*isdone ark*isdone
13196 $rm -rf UU
13197
13198 : End of Configure
13199