Integrate from mainperl.
[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 14:48:18 EET 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 case "$inksh/$needksh" in
112 /[a-z]*)
113                 ENV=''
114                 changesh=true
115                 reason="$needksh"
116         ;;
117 esac
118 case "$inksh/$avoidksh" in
119 true/[a-z]*)
120         changesh=true
121         reason="$avoidksh"
122         ;;
123 esac
124 case "$inksh/$needksh-$avoidksh-" in
125 true/--)
126                 cat <<EOM
127 (I see you are using the Korn shell.  Some ksh's blow up on $me,
128 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
129 EOM
130         ;;
131 esac
132 case "$changesh" in
133 true)
134         echo "(Feeding myself to $newsh $reason.)"
135         case "$0" in
136         Configure|*/Configure) exec $newsh $0 "$@";;
137         *) exec $newsh Configure "$@";;
138         esac
139         ;;
140 esac
141
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
144 case "$CDPATH" in
145 '')     ;;
146 *)      case "$SHELL" in
147         *bash*) CDPATH='.' ;;
148         *)              CDPATH='' ;;
149         esac
150         ;;
151 esac
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
154 cd UU && rm -f ./*
155
156 dynamic_ext=''
157 extensions=''
158 known_extensions=''
159 nonxs_ext=''
160 static_ext=''
161 useopcode=''
162 useposix=''
163 d_bsd=''
164 d_eunice=''
165 d_xenix=''
166 eunicefix=''
167 Mcc=''
168 ar=''
169 awk=''
170 bash=''
171 bison=''
172 byacc=''
173 cat=''
174 chgrp=''
175 chmod=''
176 chown=''
177 comm=''
178 compress=''
179 cp=''
180 cpio=''
181 cpp=''
182 csh=''
183 date=''
184 echo=''
185 egrep=''
186 emacs=''
187 expr=''
188 find=''
189 flex=''
190 grep=''
191 gzip=''
192 inews=''
193 ksh=''
194 less=''
195 line=''
196 lint=''
197 ln=''
198 lp=''
199 lpr=''
200 ls=''
201 mail=''
202 mailx=''
203 make=''
204 mkdir=''
205 more=''
206 mv=''
207 nm=''
208 nroff=''
209 perl=''
210 pg=''
211 pmake=''
212 pr=''
213 rm=''
214 rmail=''
215 sed=''
216 sendmail=''
217 shar=''
218 sleep=''
219 smail=''
220 sort=''
221 submit=''
222 tail=''
223 tar=''
224 tbl=''
225 tee=''
226 test=''
227 touch=''
228 tr=''
229 troff=''
230 uname=''
231 uniq=''
232 uuname=''
233 vi=''
234 zcat=''
235 zip=''
236 full_sed=''
237 libswanted=''
238 hint=''
239 myuname=''
240 osname=''
241 osvers=''
242 Author=''
243 Date=''
244 Header=''
245 Id=''
246 Locker=''
247 Log=''
248 RCSfile=''
249 Revision=''
250 Source=''
251 State=''
252 _a=''
253 _exe=''
254 _o=''
255 archobjs=''
256 exe_ext=''
257 firstmakefile=''
258 lib_ext=''
259 obj_ext=''
260 path_sep=''
261 afs=''
262 alignbytes=''
263 ansi2knr=''
264 archlib=''
265 archlibexp=''
266 d_archlib=''
267 installarchlib=''
268 archname=''
269 myarchname=''
270 baserev=''
271 bin=''
272 binexp=''
273 installbin=''
274 byteorder=''
275 cc=''
276 gccversion=''
277 ccflags=''
278 cppflags=''
279 ldflags=''
280 lkflags=''
281 locincpth=''
282 optimize=''
283 cf_email=''
284 cf_by=''
285 cf_time=''
286 contains=''
287 cpp_stuff=''
288 cpplast=''
289 cppminus=''
290 cpprun=''
291 cppstdin=''
292 d_access=''
293 d_accessx=''
294 d_alarm=''
295 d_attribut=''
296 d_bcmp=''
297 d_bcopy=''
298 d_bzero=''
299 d_casti32=''
300 castflags=''
301 d_castneg=''
302 d_chown=''
303 d_chroot=''
304 d_chsize=''
305 d_closedir=''
306 d_void_closedir=''
307 d_const=''
308 cryptlib=''
309 d_crypt=''
310 d_csh=''
311 full_csh=''
312 d_cuserid=''
313 d_dbl_dig=''
314 d_difftime=''
315 d_dlerror=''
316 d_dlopen=''
317 d_dlsymun=''
318 d_dosuid=''
319 d_suidsafe=''
320 d_drand48proto=''
321 d_dup2=''
322 d_eaccess=''
323 d_endgrent=''
324 d_endhent=''
325 d_endnent=''
326 d_endpent=''
327 d_endpwent=''
328 d_endsent=''
329 d_fchmod=''
330 d_fchown=''
331 d_fcntl=''
332 d_fd_macros=''
333 d_fd_set=''
334 d_fds_bits=''
335 d_fgetpos=''
336 d_flexfnam=''
337 d_flock=''
338 d_fork=''
339 d_fseeko=''
340 d_fsetpos=''
341 d_ftello=''
342 d_ftime=''
343 d_gettimeod=''
344 d_Gconvert=''
345 d_getgrent=''
346 d_getgrps=''
347 d_gethbyaddr=''
348 d_gethbyname=''
349 d_gethent=''
350 aphostname=''
351 d_gethname=''
352 d_phostname=''
353 d_uname=''
354 d_gethostprotos=''
355 d_getlogin=''
356 d_getnbyaddr=''
357 d_getnbyname=''
358 d_getnent=''
359 d_getnetprotos=''
360 d_getpent=''
361 d_getpgid=''
362 d_getpgrp2=''
363 d_bsdgetpgrp=''
364 d_getpgrp=''
365 d_getppid=''
366 d_getprior=''
367 d_getpbyname=''
368 d_getpbynumber=''
369 d_getprotoprotos=''
370 d_getpwent=''
371 d_getsent=''
372 d_getservprotos=''
373 d_getsbyname=''
374 d_getsbyport=''
375 d_gnulibc=''
376 d_htonl=''
377 d_inetaton=''
378 d_isascii=''
379 d_killpg=''
380 d_lchown=''
381 d_link=''
382 d_locconv=''
383 d_lockf=''
384 d_longdbl=''
385 longdblsize=''
386 d_longlong=''
387 longlongsize=''
388 d_lstat=''
389 d_mblen=''
390 d_mbstowcs=''
391 d_mbtowc=''
392 d_memcmp=''
393 d_memcpy=''
394 d_memmove=''
395 d_memset=''
396 d_mkdir=''
397 d_mkfifo=''
398 d_mktime=''
399 d_msg=''
400 d_msgctl=''
401 d_msgget=''
402 d_msgrcv=''
403 d_msgsnd=''
404 d_nice=''
405 d_open3=''
406 d_fpathconf=''
407 d_pathconf=''
408 d_pause=''
409 d_pipe=''
410 d_poll=''
411 d_portable=''
412 d_old_pthread_create_joinable=''
413 old_pthread_create_joinable=''
414 d_pthread_yield=''
415 d_sched_yield=''
416 sched_yield=''
417 d_readdir=''
418 d_rewinddir=''
419 d_seekdir=''
420 d_telldir=''
421 d_readlink=''
422 d_readv=''
423 d_rename=''
424 d_rmdir=''
425 d_safebcpy=''
426 d_safemcpy=''
427 d_sanemcmp=''
428 d_select=''
429 d_sem=''
430 d_semctl=''
431 d_semget=''
432 d_semop=''
433 d_setegid=''
434 d_seteuid=''
435 d_setgrent=''
436 d_setgrps=''
437 d_sethent=''
438 d_setlinebuf=''
439 d_setlocale=''
440 d_setnent=''
441 d_setpent=''
442 d_setpgid=''
443 d_setpgrp2=''
444 d_bsdsetpgrp=''
445 d_setpgrp=''
446 d_setprior=''
447 d_setpwent=''
448 d_setregid=''
449 d_setresgid=''
450 d_setresuid=''
451 d_setreuid=''
452 d_setrgid=''
453 d_setruid=''
454 d_setsent=''
455 d_setsid=''
456 d_setvbuf=''
457 d_sfio=''
458 usesfio=''
459 d_shm=''
460 d_shmat=''
461 d_shmatprototype=''
462 shmattype=''
463 d_shmctl=''
464 d_shmdt=''
465 d_shmget=''
466 d_sigaction=''
467 d_sigsetjmp=''
468 d_cmsghdr_s=''
469 d_msg_ctrunc=''
470 d_msg_dontroute=''
471 d_msg_oob=''
472 d_msg_peek=''
473 d_msg_proxy=''
474 d_msghdr_s=''
475 d_oldsock=''
476 d_recvmsg=''
477 d_scm_rights=''
478 d_sendmsg=''
479 d_socket=''
480 d_sockpair=''
481 sockethdr=''
482 socketlib=''
483 d_statblks=''
484 d_fstatfs=''
485 d_statfs=''
486 d_statfsflags=''
487 d_fstatvfs=''
488 d_statvfs=''
489 d_stdio_cnt_lval=''
490 d_stdio_ptr_lval=''
491 d_stdiobase=''
492 d_stdstdio=''
493 stdio_base=''
494 stdio_bufsiz=''
495 stdio_cnt=''
496 stdio_filbuf=''
497 stdio_ptr=''
498 d_index=''
499 d_strchr=''
500 d_strcoll=''
501 d_strctcpy=''
502 d_strerrm=''
503 d_strerror=''
504 d_sysernlst=''
505 d_syserrlst=''
506 d_strtod=''
507 d_strtol=''
508 d_strtoul=''
509 d_strxfrm=''
510 d_symlink=''
511 d_syscall=''
512 d_sysconf=''
513 d_system=''
514 d_tcgetpgrp=''
515 d_tcsetpgrp=''
516 d_time=''
517 timetype=''
518 clocktype=''
519 d_times=''
520 d_truncate=''
521 d_tzname=''
522 d_umask=''
523 d_semctl_semid_ds=''
524 d_semctl_semun=''
525 d_union_semun=''
526 d_vfork=''
527 usevfork=''
528 d_voidsig=''
529 signal_t=''
530 d_volatile=''
531 d_charvspr=''
532 d_vprintf=''
533 d_wait4=''
534 d_waitpid=''
535 d_wcstombs=''
536 d_wctomb=''
537 d_writev=''
538 d_dbmclose64=''
539 d_dbminit64=''
540 d_delete64=''
541 d_fetch64=''
542 d_firstkey64=''
543 d_nextkey64=''
544 d_store64=''
545 dlext=''
546 cccdlflags=''
547 ccdlflags=''
548 dlsrc=''
549 ld=''
550 lddlflags=''
551 usedl=''
552 doublesize=''
553 ebcdic=''
554 fpostype=''
555 gidtype=''
556 groupstype=''
557 h_fcntl=''
558 h_sysfile=''
559 i_arpainet=''
560 db_hashtype=''
561 db_prefixtype=''
562 i_db=''
563 i_dbm=''
564 i_rpcsvcdbm=''
565 d_dirnamlen=''
566 direntrytype=''
567 i_dirent=''
568 i_dld=''
569 i_dlfcn=''
570 i_fcntl=''
571 i_float=''
572 i_gdbm=''
573 d_grpasswd=''
574 i_grp=''
575 d_int64t=''
576 i_inttypes=''
577 i_limits=''
578 i_locale=''
579 i_machcthr=''
580 i_malloc=''
581 i_math=''
582 i_memory=''
583 i_mntent=''
584 i_ndbm=''
585 i_netdb=''
586 i_neterrno=''
587 i_niin=''
588 i_sysin=''
589 i_poll=''
590 d_pwage=''
591 d_pwchange=''
592 d_pwclass=''
593 d_pwcomment=''
594 d_pwexpire=''
595 d_pwgecos=''
596 d_pwpasswd=''
597 d_pwquota=''
598 i_pwd=''
599 i_sfio=''
600 i_stddef=''
601 i_stdlib=''
602 i_string=''
603 strings=''
604 i_sysaccess=''
605 i_sysdir=''
606 i_sysfile=''
607 d_voidtty=''
608 i_bsdioctl=''
609 i_sysfilio=''
610 i_sysioctl=''
611 i_syssockio=''
612 i_sysmount=''
613 i_sysndir=''
614 i_sysparam=''
615 i_sysresrc=''
616 i_syssecrt=''
617 i_sysselct=''
618 i_sysstat=''
619 i_sysstatvfs=''
620 i_systimes=''
621 i_systypes=''
622 d_iovec_s=''
623 i_sysuio=''
624 i_sysun=''
625 i_syswait=''
626 i_sgtty=''
627 i_termio=''
628 i_termios=''
629 i_systime=''
630 i_systimek=''
631 i_time=''
632 timeincl=''
633 i_unistd=''
634 i_utime=''
635 i_values=''
636 i_stdarg=''
637 i_varargs=''
638 i_varhdr=''
639 i_vfork=''
640 installusrbinperl=''
641 intsize=''
642 longsize=''
643 shortsize=''
644 d_dirent64_s=''
645 d_flock64_s=''
646 d_fstat64=''
647 d_ftruncate64=''
648 d_ino64t=''
649 d_lockf64=''
650 d_lseek64=''
651 d_lstat64=''
652 d_off64t=''
653 d_open64=''
654 d_opendir64=''
655 d_readdir64=''
656 d_seekdir64=''
657 d_stat64=''
658 d_telldir64=''
659 d_truncate64=''
660 libc=''
661 libperl=''
662 shrpenv=''
663 useshrplib=''
664 glibpth=''
665 libpth=''
666 loclibpth=''
667 plibpth=''
668 xlibpth=''
669 ignore_versioned_solibs=''
670 libs=''
671 lns=''
672 lseeksize=''
673 lseektype=''
674 make_set_make=''
675 d_mymalloc=''
676 freetype=''
677 mallocobj=''
678 mallocsrc=''
679 malloctype=''
680 usemymalloc=''
681 installman1dir=''
682 man1dir=''
683 man1direxp=''
684 man1ext=''
685 installman3dir=''
686 man3dir=''
687 man3direxp=''
688 man3ext=''
689 huge=''
690 large=''
691 medium=''
692 models=''
693 small=''
694 split=''
695 modetype=''
696 mydomain=''
697 myhostname=''
698 phostname=''
699 c=''
700 n=''
701 d_eofnblk=''
702 eagain=''
703 o_nonblock=''
704 rd_nodata=''
705 netdb_hlen_type=''
706 netdb_host_type=''
707 netdb_name_type=''
708 netdb_net_type=''
709 groupcat=''
710 hostcat=''
711 passcat=''
712 orderlib=''
713 ranlib=''
714 package=''
715 spackage=''
716 pager=''
717 apiversion=''
718 patchlevel=''
719 subversion=''
720 version=''
721 perladmin=''
722 perlpath=''
723 pidtype=''
724 prefix=''
725 prefixexp=''
726 installprivlib=''
727 privlib=''
728 privlibexp=''
729 prototype=''
730 ptrsize=''
731 drand01=''
732 randbits=''
733 randfunc=''
734 randseedtype=''
735 seedfunc=''
736 installscript=''
737 scriptdir=''
738 scriptdirexp=''
739 selectminbits=''
740 selecttype=''
741 sh=''
742 sig_name=''
743 sig_name_init=''
744 sig_num=''
745 sig_num_init=''
746 installsitearch=''
747 sitearch=''
748 sitearchexp=''
749 installsitelib=''
750 sitelib=''
751 sitelibexp=''
752 sizetype=''
753 so=''
754 sharpbang=''
755 shsharp=''
756 spitshell=''
757 src=''
758 ssizetype=''
759 startperl=''
760 startsh=''
761 stdchar=''
762 d_fgetpos64=''
763 d_fopen64=''
764 d_freopen64=''
765 d_fseek64=''
766 d_fseeko64=''
767 d_fsetpos64=''
768 d_ftell64=''
769 d_ftello64=''
770 d_tmpfile64=''
771 sysman=''
772 trnl=''
773 uidtype=''
774 archname64=''
775 use64bits=''
776 usemultiplicity=''
777 nm_opt=''
778 nm_so_opt=''
779 runnm=''
780 usenm=''
781 useperlio=''
782 d_oldpthreads=''
783 usethreads=''
784 incpath=''
785 mips=''
786 mips_type=''
787 usrinc=''
788 defvoidused=''
789 voidflags=''
790 CONFIG=''
791
792 define='define'
793 undef='undef'
794 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
795 rmlist=''
796
797 : We must find out about Eunice early
798 eunicefix=':'
799 if test -f /etc/unixtovms; then
800         eunicefix=/etc/unixtovms
801 fi
802 if test -f /etc/unixtovms.exe; then
803         eunicefix=/etc/unixtovms.exe
804 fi
805
806 i_whoami=''
807 : change the next line if compiling for Xenix/286 on Xenix/386
808 xlibpth='/usr/lib/386 /lib/386'
809
810 : Possible local library directories to search.
811 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
812 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
813
814 : general looking path for locating libraries
815 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
816 glibpth="$glibpth /lib /usr/lib $xlibpth"
817 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
818 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
819
820 : Private path used by Configure to find libraries.  Its value
821 : is prepended to libpth. This variable takes care of special
822 : machines, like the mips.  Usually, it should be empty.
823 plibpth=''
824
825 : Possible local include directories to search.
826 : Set locincpth to "" in a hint file to defeat local include searches.
827 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
828 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
829 :
830 : no include file wanted by default
831 inclwanted=''
832
833 : list of known cpp symbols, sorted alphabetically
834 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
835 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
836 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
837 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
838 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
839 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
840 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
841 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
842 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
843 al="$al VMS Xenix286"
844 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
845 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
846 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
847 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
848 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
849 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
850 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
851 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
852 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
853 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
854 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
855 al="$al __SVR4_2__ __UMAXV__"
856 al="$al ____386BSD____ __alpha __alpha__ __amiga"
857 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
858 al="$al __host_mips__"
859 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
860 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
861 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
862 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
863 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
864 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
865 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
866 al="$al __mc88100 __mc88100__ __mips __mips__"
867 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
868 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
869 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
870 al="$al _host_mips _mips _unix"
871 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
872 al="$al apollo ardent att386 att3b"
873 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
874 al="$al cadmus clipper concurrent convex cray ctix"
875 al="$al dmert encore gcos gcx gimpel gould"
876 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
877 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
878 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
879 al="$al i186 i286 i386 i486 i8086"
880 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
881 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
882 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
883 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
884 al="$al mc88000 mc88100 merlin mert mips mvs n16"
885 al="$al ncl_el ncl_mr"
886 al="$al news1500 news1700 news1800 news1900 news3700"
887 al="$al news700 news800 news900 ns16000 ns32000"
888 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
889 al="$al parisc pc532 pdp11 plexus posix pyr"
890 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
891 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
892 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
893 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
894 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
895 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
896 al="$al xenix z8000"
897
898 : Trailing extension.  Override this in a hint file, if needed.
899 _exe=''
900 : Extra object files, if any, needed on this platform.
901 archobjs=''
902 groupstype=''
903 : default library list
904 libswanted=''
905 : some systems want to use only the non-versioned libso:s
906 ignore_versioned_solibs=''
907 : full support for void wanted by default
908 defvoidused=15
909
910 : set useposix=false in your hint file to disable the POSIX extension.
911 useposix=true
912 : set useopcode=false in your hint file to disable the Opcode extension.
913 useopcode=true
914 : set usemultiplicity on the Configure command line to enable multiplicity.
915 : set usethreads on the Configure command line to enable threads.
916 : List of libraries we want.
917 : If anyone needs -lnet, put it in a hint file.
918 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
919 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
920 libswanted="$libswanted ucb bsd BSD PW x"
921 : We probably want to search /usr/shlib before most other libraries.
922 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
923 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
924 glibpth="/usr/shlib $glibpth"
925 : Do not use vfork unless overridden by a hint file.
926 usevfork=false
927
928 : Find the basic shell for Bourne shell scripts
929 case "$sh" in
930 '')
931         case "$SYSTYPE" in
932         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
933         *) xxx='/bin/sh';;
934         esac
935         if test -f "$xxx"; then
936                 sh="$xxx"
937         else
938                 : Build up a list and do a single loop so we can 'break' out.
939                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
940                 for xxx in sh bash ksh pdksh ash; do
941                         for p in $pth; do
942                                 try="$try ${p}/${xxx}"
943                         done
944                 done
945                 for xxx in $try; do
946                         if test -f "$xxx"; then
947                                 sh="$xxx";
948                                 break
949                         elif test -f "$xxx.exe"; then
950                                 sh="$xxx";
951                                 break
952                         fi
953                 done
954         fi
955         ;;
956 esac
957
958 case "$sh" in
959 '')     cat <<EOM >&2
960 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
961
962 Usually it's in /bin/sh.  How did you even get this far?
963 Please contact me (Perl Maintainers) at perlbug@perl.com and 
964 we'll try to straighten this all out.
965 EOM
966         exit 1
967         ;;
968 esac
969
970 : see if sh knows # comments
971 if `$sh -c '#' >/dev/null 2>&1`; then
972         shsharp=true
973         spitshell=cat
974         xcat=/bin/cat
975         test -f $xcat || xcat=/usr/bin/cat
976         echo "#!$xcat" >try
977         $eunicefix try
978         chmod +x try
979         ./try > today
980         if test -s today; then
981                 sharpbang='#!'
982         else
983                 echo "#! $xcat" > try
984                 $eunicefix try
985                 chmod +x try
986                 ./try > today
987                 if test -s today; then
988                         sharpbang='#! '
989                 else
990                         sharpbang=': use '
991                 fi
992         fi
993 else
994         echo " "
995         echo "Your $sh doesn't grok # comments--I will strip them later on."
996         shsharp=false
997         cd ..
998         echo "exec grep -v '^[  ]*#'" >spitshell
999         chmod +x spitshell
1000         $eunicefix spitshell
1001         spitshell=`pwd`/spitshell
1002         cd UU
1003         echo "I presume that if # doesn't work, #! won't work either!"
1004         sharpbang=': use '
1005 fi
1006 rm -f try today
1007
1008 : figure out how to guarantee sh startup
1009 case "$startsh" in
1010 '') startsh=${sharpbang}${sh} ;;
1011 *)
1012 esac
1013 cat >try <<EOSS
1014 $startsh
1015 set abc
1016 test "$?abc" != 1
1017 EOSS
1018
1019 chmod +x try
1020 $eunicefix try
1021 if ./try; then
1022         : echo "Yup, it does."
1023 else
1024         echo "Hmm... '$startsh' does not guarantee sh startup..."
1025         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1026 fi
1027 rm -f try
1028
1029
1030 : Save command line options in file UU/cmdline.opt for later use in
1031 : generating config.sh.
1032 cat > cmdline.opt <<EOSH
1033 # Configure command line arguments.
1034 config_arg0='$0'
1035 config_args='$*'
1036 config_argc=$#
1037 EOSH
1038 argn=1
1039 for arg in "$@"; do
1040         cat >>cmdline.opt <<EOSH
1041 config_arg$argn='$arg'
1042 EOSH
1043         argn=`expr $argn + 1`
1044 done
1045
1046 : produce awk script to parse command line options
1047 cat >options.awk <<'EOF'
1048 BEGIN {
1049         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1050
1051         len = length(optstr);
1052         for (i = 1; i <= len; i++) {
1053                 c = substr(optstr, i, 1);
1054                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1055                 if (a == ":") {
1056                         arg[c] = 1;
1057                         i++;
1058                 }
1059                 opt[c] = 1;
1060         }
1061 }
1062 {
1063         expect = 0;
1064         str = $0;
1065         if (substr(str, 1, 1) != "-") {
1066                 printf("'%s'\n", str);
1067                 next;
1068         }
1069         len = length($0);
1070         for (i = 2; i <= len; i++) {
1071                 c = substr(str, i, 1);
1072                 if (!opt[c]) {
1073                         printf("-%s\n", substr(str, i));
1074                         next;
1075                 }
1076                 printf("-%s\n", c);
1077                 if (arg[c]) {
1078                         if (i < len)
1079                                 printf("'%s'\n", substr(str, i + 1));
1080                         else
1081                                 expect = 1;
1082                         next;
1083                 }
1084         }
1085 }
1086 END {
1087         if (expect)
1088                 print "?";
1089 }
1090 EOF
1091
1092 : process the command line options
1093 set X `for arg in "$@"; do echo "X$arg"; done |
1094         sed -e s/X// | awk -f options.awk`
1095 eval "set $*"
1096 shift
1097 rm -f options.awk
1098
1099 : set up default values
1100 fastread=''
1101 reuseval=false
1102 config_sh=''
1103 alldone=''
1104 error=''
1105 silent=''
1106 extractsh=''
1107 override=''
1108 knowitall=''
1109 rm -f optdef.sh
1110 cat >optdef.sh <<EOS
1111 $startsh
1112 EOS
1113
1114
1115 : option parsing
1116 while test $# -gt 0; do
1117         case "$1" in
1118         -d) shift; fastread=yes;;
1119         -e) shift; alldone=cont;;
1120         -f)
1121                 shift
1122                 cd ..
1123                 if test -r "$1"; then
1124                         config_sh="$1"
1125                 else
1126                         echo "$me: cannot read config file $1." >&2
1127                         error=true
1128                 fi
1129                 cd UU
1130                 shift;;
1131         -h) shift; error=true;;
1132         -r) shift; reuseval=true;;
1133         -s) shift; silent=true; realsilent=true;;
1134         -E) shift; alldone=exit;;
1135         -K) shift; knowitall=true;;
1136         -O) shift; override=true;;
1137         -S) shift; silent=true; extractsh=true;;
1138         -D)
1139                 shift
1140                 case "$1" in
1141                 *=)
1142                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1143                         echo "$me: ignoring -D $1" >&2
1144                         ;;
1145                 *=*) echo "$1" | \
1146                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1147                 *) echo "$1='define'" >> optdef.sh;;
1148                 esac
1149                 shift
1150                 ;;
1151         -U)
1152                 shift
1153                 case "$1" in
1154                 *=) echo "$1" >> optdef.sh;;
1155                 *=*)
1156                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1157                         echo "$me: ignoring -U $1" >&2
1158                         ;;
1159                 *) echo "$1='undef'" >> optdef.sh;;
1160                 esac
1161                 shift
1162                 ;;
1163         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1164                 exit 0;;
1165         --) break;;
1166         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1167         *) break;;
1168         esac
1169 done
1170
1171 case "$error" in
1172 true)
1173         cat >&2 <<EOM
1174 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1175                  [-U symbol] [-U symbol=]
1176   -d : use defaults for all answers.
1177   -e : go on without questioning past the production of config.sh.
1178   -f : specify an alternate default configuration file.
1179   -h : print this help message and exit (with an error status).
1180   -r : reuse C symbols value if possible (skips costly nm extraction).
1181   -s : silent mode, only echoes questions and essential information.
1182   -D : define symbol to have some value:
1183          -D symbol         symbol gets the value 'define'
1184          -D symbol=value   symbol gets the value 'value'
1185   -E : stop at the end of questions, after having produced config.sh.
1186   -K : do not use unless you know what you are doing.
1187   -O : let -D and -U override definitions from loaded configuration file.
1188   -S : perform variable substitutions on all .SH files (can mix with -f)
1189   -U : undefine symbol:
1190          -U symbol    symbol gets the value 'undef'
1191          -U symbol=   symbol gets completely empty
1192   -V : print version number and exit (with a zero status).
1193 EOM
1194         exit 1
1195         ;;
1196 esac
1197
1198 : Sanity checks
1199 case "$fastread$alldone" in
1200 yescont|yesexit) ;;
1201 *)
1202         if test ! -t 0; then
1203                 echo "Say 'sh Configure', not 'sh <Configure'"
1204                 exit 1
1205         fi
1206         ;;
1207 esac
1208
1209 exec 4>&1
1210 case "$silent" in
1211 true) exec 1>/dev/null;;
1212 esac
1213
1214 : run the defines and the undefines, if any, but leave the file out there...
1215 touch optdef.sh
1216 . ./optdef.sh
1217
1218 : set package name
1219 package=perl5
1220 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1221 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1222 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1223 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1224 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1225 esac
1226
1227 : Some greps do not return status, grrr.
1228 echo "grimblepritz" >grimble
1229 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1230         contains=contains
1231 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1232         contains=grep
1233 else
1234         contains=contains
1235 fi
1236 rm -f grimble
1237 : the following should work in any shell
1238 case "$contains" in
1239 contains*)
1240         echo " "
1241         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1242         cat >contains <<'EOSS'
1243 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1244 EOSS
1245 chmod +x contains
1246 esac
1247
1248 : Find the path to the source tree
1249 case "$src" in
1250 '') case "$0" in
1251     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1252     *)   src='.';;
1253     esac;;
1254 esac
1255 case "$src" in
1256 '')     src=/
1257         rsrc=/
1258         ;;
1259 /*) rsrc="$src";;
1260 *) rsrc="../$src";;
1261 esac
1262 if test -f $rsrc/Configure && \
1263         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1264 then
1265    : found it, so we are ok.
1266 else
1267         rsrc=''
1268         for src in . .. ../.. ../../.. ../../../..; do
1269                 if test -f ../$src/Configure && \
1270                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1271                 then
1272                         rsrc=../$src
1273                         break
1274                 fi
1275         done
1276 fi
1277 case "$rsrc" in
1278 '')
1279         cat <<EOM >&4
1280
1281 Sorry, I can't seem to locate the source dir for $package.  Please start
1282 Configure with an explicit path -- i.e. /some/path/Configure.
1283
1284 EOM
1285         exit 1
1286         ;;
1287 ../.)   rsrc='..';;
1288 *)
1289         echo " "
1290         echo "Sources for $package found in \"$src\"." >&4
1291         ;;
1292 esac
1293
1294 : script used to extract .SH files with variable substitutions
1295 cat >extract <<'EOS'
1296 CONFIG=true
1297 echo "Doing variable substitutions on .SH files..."
1298 if test -f $src/MANIFEST; then
1299         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1300 else
1301         echo "(Looking for .SH files under the source directory.)"
1302         set x `(cd $src; find . -name "*.SH" -print)`
1303 fi
1304 shift
1305 case $# in
1306 0) set x `(cd $src; echo *.SH)`; shift;;
1307 esac
1308 if test ! -f $src/$1; then
1309         shift
1310 fi
1311 mkdir_p='
1312 name=$1;
1313 create="";
1314 while test $name; do
1315         if test ! -d "$name"; then
1316                 create="$name $create";
1317                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1318                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1319         else
1320                 name="";
1321         fi;
1322 done;
1323 for file in $create; do
1324         mkdir $file;
1325 done
1326 '
1327 for file in $*; do
1328         case "$src" in
1329         ".")
1330                 case "$file" in
1331                 */*)
1332                         dir=`expr X$file : 'X\(.*\)/'`
1333                         file=`expr X$file : 'X.*/\(.*\)'`
1334                         (cd $dir && . ./$file)
1335                         ;;
1336                 *)
1337                         . ./$file
1338                         ;;
1339                 esac
1340                 ;;
1341         *)
1342                 case "$file" in
1343                 */*)
1344                         dir=`expr X$file : 'X\(.*\)/'`
1345                         file=`expr X$file : 'X.*/\(.*\)'`
1346                         (set x $dir; shift; eval $mkdir_p)
1347                         sh <$src/$dir/$file
1348                         ;;
1349                 *)
1350                         sh <$src/$file
1351                         ;;
1352                 esac
1353                 ;;
1354         esac
1355 done
1356 if test -f $src/config_h.SH; then
1357         if test ! -f config.h; then
1358         : oops, they left it out of MANIFEST, probably, so do it anyway.
1359         . $src/config_h.SH
1360         fi
1361 fi
1362 EOS
1363
1364 : extract files and exit if asked to do so
1365 case "$extractsh" in
1366 true)
1367         case "$realsilent" in
1368         true) ;;
1369         *) exec 1>&4;;
1370         esac
1371         case "$config_sh" in
1372         '') config_sh='config.sh';;
1373         esac
1374         echo " "
1375         echo "Fetching answers from $config_sh..."
1376         cd ..
1377         . $config_sh
1378         test "$override" && . ./optdef.sh
1379         echo " "
1380         . UU/extract
1381         rm -rf UU
1382         echo "Done."
1383         exit 0
1384         ;;
1385 esac
1386
1387 : Eunice requires " " instead of "", can you believe it
1388 echo " "
1389 : Here we go...
1390 echo "Beginning of configuration questions for $package."
1391
1392 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1393
1394 : first determine how to suppress newline on echo command
1395 echo " "
1396 echo "Checking echo to see how to suppress newlines..."
1397 (echo "hi there\c" ; echo " ") >.echotmp
1398 if $contains c .echotmp >/dev/null 2>&1 ; then
1399         echo "...using -n."
1400         n='-n'
1401         c=''
1402 else
1403         cat <<'EOM'
1404 ...using \c
1405 EOM
1406         n=''
1407         c='\c'
1408 fi
1409 echo $n "The star should be here-->$c"
1410 echo '*'
1411 rm -f .echotmp
1412
1413 : Now test for existence of everything in MANIFEST
1414 echo " "
1415 if test -f $rsrc/MANIFEST; then
1416         echo "First let's make sure your kit is complete.  Checking..." >&4
1417         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1418         rm -f missing
1419         tmppwd=`pwd`
1420         for filelist in x??; do
1421                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1422         done
1423         if test -s missing; then
1424                 cat missing >&4
1425                 cat >&4 <<'EOM'
1426
1427 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1428
1429 You have the option of continuing the configuration process, despite the
1430 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1431 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1432 and contact the author (perlbug@perl.com).
1433
1434 EOM
1435                 echo $n "Continue? [n] $c" >&4
1436                 read ans
1437                 case "$ans" in
1438                 y*)
1439                         echo "Continuing..." >&4
1440                         rm -f missing
1441                         ;;
1442                 *)
1443                         echo "ABORTING..." >&4
1444                         kill $$
1445                         ;;
1446                 esac
1447         else
1448                 echo "Looks good..."
1449         fi
1450 else
1451         echo "There is no MANIFEST file.  I hope your kit is complete !"
1452 fi
1453 rm -f missing x??
1454
1455 echo " "
1456 : Find the appropriate value for a newline for tr
1457 if test -n "$DJGPP"; then
1458        trnl='\012'
1459 fi
1460 if test X"$trnl" = X; then
1461         case "`echo foo|tr '\n' x 2>/dev/null`" in
1462         foox) trnl='\n' ;;
1463         esac
1464 fi
1465 if test X"$trnl" = X; then
1466         case "`echo foo|tr '\012' x 2>/dev/null`" in
1467         foox) trnl='\012' ;;
1468         esac
1469 fi
1470 if test X"$trnl" = X; then
1471         cat <<EOM >&2
1472
1473 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1474
1475 EOM
1476         exit 1
1477 fi
1478
1479 : compute the number of columns on the terminal for proper question formatting
1480 case "$COLUMNS" in
1481 '') COLUMNS='80';;
1482 esac
1483
1484 : set up the echo used in my read
1485 myecho="case \"\$xxxm\" in
1486 '') echo $n \"\$rp $c\" >&4;;
1487 *) case \"\$rp\" in
1488         '') echo $n \"[\$xxxm] $c\";;
1489         *)
1490                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1491                         echo \"\$rp\" >&4
1492                         echo $n \"[\$xxxm] $c\" >&4
1493                 else
1494                         echo $n \"\$rp [\$xxxm] $c\" >&4
1495                 fi
1496                 ;;
1497         esac;;
1498 esac"
1499
1500 : now set up to do reads with possible shell escape and default assignment
1501 cat <<EOSC >myread
1502 $startsh
1503 xxxm=\$dflt
1504 $myecho
1505 ans='!'
1506 case "\$fastread" in
1507 yes) case "\$dflt" in
1508         '') ;;
1509         *) ans='';
1510                 case "\$silent-\$rp" in
1511                 true-) ;;
1512                 *) echo " " >&4;;
1513                 esac;;
1514         esac;;
1515 *) case "\$silent" in
1516         true) case "\$rp" in
1517                 '') ans='';;
1518                 esac;;
1519         esac;;
1520 esac
1521 while expr "X\$ans" : "X!" >/dev/null; do
1522         read answ
1523         set x \$xxxm
1524         shift
1525         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1526         case  "\$answ" in
1527         "!")
1528                 sh 1>&4
1529                 echo " "
1530                 $myecho
1531                 ;;
1532         !*)
1533                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1534                 shift
1535                 sh 1>&4 -c "\$*"
1536                 echo " "
1537                 $myecho
1538                 ;;
1539         "\$ans")
1540                 case "\$ans" in
1541                 \\&*)
1542                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1543                         shift
1544                         case "\$1" in
1545                         -d)
1546                                 fastread=yes
1547                                 echo "(OK, I'll run with -d after this question.)" >&4
1548                                 ;;
1549                         -*)
1550                                 echo "*** Sorry, \$1 not supported yet." >&4
1551                                 ;;
1552                         esac
1553                         $myecho
1554                         ans=!
1555                         ;;
1556                 esac;;
1557         *)
1558                 case "\$aok" in
1559                 y)
1560                         echo "*** Substitution done -- please confirm."
1561                         xxxm="\$ans"
1562                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1563                         xxxm="\$ans"
1564                         ans=!
1565                         ;;
1566                 *)
1567                         echo "*** Error -- try again."
1568                         ans=!
1569                         ;;
1570                 esac
1571                 $myecho
1572                 ;;
1573         esac
1574         case "\$ans\$xxxm\$nostick" in
1575         '')
1576                 ans=!
1577                 $myecho
1578                 ;;
1579         esac
1580 done
1581 case "\$ans" in
1582 '') ans="\$xxxm";;
1583 esac
1584 EOSC
1585
1586 : create .config dir to save info across Configure sessions
1587 test -d ../.config || mkdir ../.config
1588 cat >../.config/README <<EOF
1589 This directory created by Configure to save information that should
1590 persist across sessions for $package.
1591
1592 You may safely delete it if you wish.
1593 EOF
1594
1595 : general instructions
1596 needman=true
1597 firsttime=true
1598 user=`(logname) 2>/dev/null`
1599 case "$user" in
1600 '') user=`whoami 2>&1`;;
1601 esac
1602 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1603         firsttime=false
1604         echo " "
1605         rp='Would you like to see the instructions?'
1606         dflt=n
1607         . ./myread
1608         case "$ans" in
1609         [yY]*) ;;
1610         *) needman=false;;
1611         esac
1612 fi
1613 if $needman; then
1614         cat <<EOH
1615
1616 This installation shell script will examine your system and ask you questions
1617 to determine how the perl5 package should be installed. If you get
1618 stuck on a question, you may use a ! shell escape to start a subshell or
1619 execute a command.  Many of the questions will have default answers in square
1620 brackets; typing carriage return will give you the default.
1621
1622 On some of the questions which ask for file or directory names you are allowed
1623 to use the ~name construct to specify the login directory belonging to "name",
1624 even if you don't have a shell which knows about that.  Questions where this is
1625 allowed will be marked "(~name ok)".
1626
1627 EOH
1628         rp=''
1629         dflt='Type carriage return to continue'
1630         . ./myread
1631         cat <<'EOH'
1632
1633 The prompter used in this script allows you to use shell variables and
1634 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1635 in the default answer, as if the default line was a set of arguments given to a
1636 script shell.  This means you may also use $* to repeat the whole default line,
1637 so you do not have to re-type everything to add something to the default.
1638
1639 Everytime there is a substitution, you will have to confirm.  If there is an
1640 error (e.g. an unmatched backtick), the default answer will remain unchanged
1641 and you will be prompted again.
1642
1643 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1644 the questions and use the computed defaults (or the previous answers if there
1645 was already a config.sh file). Type 'Configure -h' for a list of options.
1646 You may also start interactively and then answer '& -d' at any prompt to turn
1647 on the non-interactive behaviour for the remainder of the execution.
1648
1649 EOH
1650         . ./myread
1651         cat <<EOH
1652
1653 Much effort has been expended to ensure that this shell script will run on any
1654 Unix system.  If despite that it blows up on yours, your best bet is to edit
1655 Configure and run it again.  If you can't run Configure for some reason,
1656 you'll have to generate a config.sh file by hand.  Whatever problems you
1657 have, let me (perlbug@perl.com) know how I blew it.
1658
1659 This installation script affects things in two ways:
1660
1661 1) it may do direct variable substitutions on some of the files included
1662    in this kit.
1663 2) it builds a config.h file for inclusion in C programs.  You may edit
1664    any of these files as the need arises after running this script.
1665
1666 If you make a mistake on a question, there is no easy way to back up to it
1667 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1668 files.  Configure will offer to let you do this before it runs the SH files.
1669
1670 EOH
1671         dflt='Type carriage return to continue'
1672         . ./myread
1673         case "$firsttime" in
1674         true) echo $user >>../.config/instruct;;
1675         esac
1676 fi
1677
1678 : find out where common programs are
1679 echo " "
1680 echo "Locating common programs..." >&4
1681 cat <<EOSC >loc
1682 $startsh
1683 case \$# in
1684 0) exit 1;;
1685 esac
1686 thing=\$1
1687 shift
1688 dflt=\$1
1689 shift
1690 for dir in \$*; do
1691         case "\$thing" in
1692         .)
1693         if test -d \$dir/\$thing; then
1694                 echo \$dir
1695                 exit 0
1696         fi
1697         ;;
1698         *)
1699         for thisthing in \$dir/\$thing; do
1700                 : just loop through to pick last item
1701         done
1702         if test -f \$thisthing; then
1703                 echo \$thisthing
1704                 exit 0
1705         elif test -f \$dir/\$thing.exe; then
1706                 if test -n "$DJGPP"; then
1707                         echo \$dir/\$thing.exe
1708                 else
1709                         : on Eunice apparently
1710                         echo \$dir/\$thing
1711                 fi
1712                 exit 0
1713         fi
1714         ;;
1715         esac
1716 done
1717 echo \$dflt
1718 exit 1
1719 EOSC
1720 chmod +x loc
1721 $eunicefix loc
1722 loclist="
1723 awk
1724 cat
1725 comm
1726 cp
1727 echo
1728 expr
1729 grep
1730 ls
1731 make
1732 mkdir
1733 rm
1734 sed
1735 sort
1736 touch
1737 tr
1738 uniq
1739 "
1740 trylist="
1741 Mcc
1742 ar
1743 byacc
1744 cpp
1745 csh
1746 date
1747 egrep
1748 gzip
1749 less
1750 ln
1751 more
1752 nm
1753 nroff
1754 pg
1755 tee
1756 test
1757 uname
1758 zip
1759 "
1760 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1761 pth="$pth /lib /usr/lib"
1762 for file in $loclist; do
1763         eval xxx=\$$file
1764         case "$xxx" in
1765         /*|?:[\\/]*)
1766                 if test -f "$xxx"; then
1767                         : ok
1768                 else
1769                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1770                         xxx=`./loc $file $file $pth`
1771                 fi
1772                 ;;
1773         '') xxx=`./loc $file $file $pth`;;
1774         *) xxx=`./loc $xxx $xxx $pth`;;
1775         esac
1776         eval $file=$xxx
1777         eval _$file=$xxx
1778         case "$xxx" in
1779         /*)
1780                 echo $file is in $xxx.
1781                 ;;
1782         ?:[\\/]*)
1783                 echo $file is in $xxx.
1784                 ;;
1785         *)
1786                 echo "I don't know where '$file' is, and my life depends on it." >&4
1787                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1788                 exit 1
1789                 ;;
1790         esac
1791 done
1792 echo " "
1793 echo "Don't worry if any of the following aren't found..."
1794 say=offhand
1795 for file in $trylist; do
1796         eval xxx=\$$file
1797         case "$xxx" in
1798         /*|?:[\\/]*)
1799                 if test -f "$xxx"; then
1800                         : ok
1801                 else
1802                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1803                         xxx=`./loc $file $file $pth`
1804                 fi
1805                 ;;
1806         '') xxx=`./loc $file $file $pth`;;
1807         *) xxx=`./loc $xxx $xxx $pth`;;
1808         esac
1809         eval $file=$xxx
1810         eval _$file=$xxx
1811         case "$xxx" in
1812         /*)
1813                 echo $file is in $xxx.
1814                 ;;
1815         ?:[\\/]*)
1816                 echo $file is in $xxx.
1817                 ;;
1818         *)
1819                 echo "I don't see $file out there, $say."
1820                 say=either
1821                 ;;
1822         esac
1823 done
1824 case "$egrep" in
1825 egrep)
1826         echo "Substituting grep for egrep."
1827         egrep=$grep
1828         ;;
1829 esac
1830 case "$ln" in
1831 ln)
1832         echo "Substituting cp for ln."
1833         ln=$cp
1834         ;;
1835 esac
1836 case "$test" in
1837 test)
1838         echo "Hopefully test is built into your sh."
1839         ;;
1840 *)
1841         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1842                 echo "Using the test built into your sh."
1843                 test=test
1844                 _test=test
1845         fi
1846         ;;
1847 esac
1848 case "$echo" in
1849 echo)
1850         echo "Hopefully echo is built into your sh."
1851         ;;
1852 '') ;;
1853 *)
1854         echo " "
1855 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1856         $echo $n "hi there$c" >foo1
1857         echo $n "hi there$c" >foo2
1858         if cmp foo1 foo2 >/dev/null 2>&1; then
1859                 echo "They are compatible.  In fact, they may be identical."
1860         else
1861                 case "$n" in
1862                 '-n') n='' c='\c';;
1863                 *) n='-n' c='';;
1864                 esac
1865                 cat <<FOO
1866 They are not compatible!  You are probably running ksh on a non-USG system.
1867 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1868 have echo built in and we may have to run some Bourne shell scripts.  That
1869 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1870
1871 FOO
1872                 $echo $n "The star should be here-->$c"
1873                 $echo "*"
1874         fi
1875         $rm -f foo1 foo2
1876         ;;
1877 esac
1878
1879 : determine whether symbolic links are supported
1880 echo " "
1881 $touch blurfl
1882 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1883         echo "Symbolic links are supported." >&4
1884         lns="$ln -s"
1885 else
1886         echo "Symbolic links are NOT supported." >&4
1887         lns="$ln"
1888 fi
1889 $rm -f blurfl sym
1890
1891 : see whether [:lower:] and [:upper:] are supported character classes
1892 echo " "
1893 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1894 ABYZ)
1895         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1896         up='[:upper:]'
1897         low='[:lower:]'
1898         ;;
1899 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1900         # (0xc9 and 0xd1), therefore that is a nice testing point.
1901         if test "X$up" = X -o "X$low" = X; then
1902             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1903             ij) up='[A-Z]'
1904                 low='[a-z]'
1905                 ;;
1906             esac
1907         fi
1908         if test "X$up" = X -o "X$low" = X; then
1909             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1910             ij) up='A-Z'
1911                 low='a-z'
1912                 ;;
1913             esac
1914         fi
1915         if test "X$up" = X -o "X$low" = X; then
1916             case "`echo IJ | od -x 2>/dev/null`" in
1917             *C9D1*|*c9d1*)
1918                 echo "Hey, this might be EBCDIC." >&4
1919                 if test "X$up" = X -o "X$low" = X; then
1920                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1921                     ij) up='[A-IJ-RS-Z]'
1922                         low='[a-ij-rs-z]'
1923                         ;;
1924                     esac
1925                 fi
1926                 if test "X$up" = X -o "X$low" = X; then
1927                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1928                     ij) up='A-IJ-RS-Z'
1929                         low='a-ij-rs-z'
1930                         ;;
1931                     esac
1932                 fi
1933                 ;;
1934             esac
1935         fi
1936 esac
1937 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1938 ij)
1939     echo "Using $up and $low to convert case." >&4
1940     ;;
1941 *)
1942     echo "I don't know how to translate letters from upper to lower case." >&4
1943     echo "Your tr is not acting any way I know of." >&4
1944     exit 1
1945     ;;
1946 esac
1947 : set up the translation script tr, must be called with ./tr of course
1948 cat >tr <<EOSC
1949 $startsh
1950 case "\$1\$2" in
1951 '[A-Z][a-z]') exec $tr '$up' '$low';;
1952 '[a-z][A-Z]') exec $tr '$low' '$up';;
1953 esac
1954 exec $tr "\$@"
1955 EOSC
1956 chmod +x tr
1957 $eunicefix tr
1958
1959 : Try to determine whether config.sh was made on this system
1960 case "$config_sh" in
1961 '')
1962 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1963 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1964 # because the A-Z/a-z are not consecutive.
1965 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1966         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1967 newmyuname="$myuname"
1968 dflt=n
1969 case "$knowitall" in
1970 '')
1971         if test -f ../config.sh; then
1972                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1973                         eval "`grep myuname= ../config.sh`"
1974                 fi
1975                 if test "X$myuname" = "X$newmyuname"; then
1976                         dflt=y
1977                 fi
1978         fi
1979         ;;
1980 *) dflt=y;;
1981 esac
1982
1983 : Get old answers from old config file if Configure was run on the
1984 : same system, otherwise use the hints.
1985 hint=default
1986 cd ..
1987 if test -f config.sh; then
1988         echo " "
1989         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1990         . UU/myread
1991         case "$ans" in
1992         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1993         *)  echo "Fetching default answers from your old config.sh file..." >&4
1994                 tmp_n="$n"
1995                 tmp_c="$c"
1996                 tmp_sh="$sh"
1997                 . ./config.sh
1998                 cp config.sh UU
1999                 n="$tmp_n"
2000                 c="$tmp_c"
2001                 : Older versions did not always set $sh.  Catch re-use of such
2002                 : an old config.sh.
2003                 case "$sh" in
2004                 '') sh="$tmp_sh" ;;
2005                 esac
2006                 hint=previous
2007                 ;;
2008         esac
2009 fi
2010 if test ! -f config.sh; then
2011         $cat <<EOM
2012
2013 First time through, eh?  I have some defaults handy for some systems
2014 that need some extra help getting the Configure answers right:
2015
2016 EOM
2017         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2018         dflt=''
2019         : Half the following guesses are probably wrong... If you have better
2020         : tests or hints, please send them to perlbug@perl.com
2021         : The metaconfig authors would also appreciate a copy...
2022         $test -f /irix && osname=irix
2023         $test -f /xenix && osname=sco_xenix
2024         $test -f /dynix && osname=dynix
2025         $test -f /dnix && osname=dnix
2026         $test -f /lynx.os && osname=lynxos
2027         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2028         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2029         $test -f /bin/mips && /bin/mips && osname=mips
2030         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2031                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2032         $test -d /usr/apollo/bin && osname=apollo
2033         $test -f /etc/saf/_sactab && osname=svr4
2034         $test -d /usr/include/minix && osname=minix
2035         if $test -d /MachTen -o -d /MachTen_Folder; then
2036                 osname=machten
2037                 if $test -x /sbin/version; then
2038                         osvers=`/sbin/version | $awk '{print $2}' |
2039                         $sed -e 's/[A-Za-z]$//'`
2040                 elif $test -x /usr/etc/version; then
2041                         osvers=`/usr/etc/version | $awk '{print $2}' |
2042                         $sed -e 's/[A-Za-z]$//'`
2043                 else
2044                         osvers="$2.$3"
2045                 fi
2046         fi
2047        $test -f /sys/posix.dll &&
2048                $test -f /usr/bin/what &&
2049                set X `/usr/bin/what /sys/posix.dll` &&
2050                $test "$3" = UWIN &&
2051                osname=uwin &&
2052                osvers="$5"
2053         if $test -f $uname; then
2054                 set X $myuname
2055                 shift
2056
2057                 case "$5" in
2058                 fps*) osname=fps ;;
2059                 mips*)
2060                         case "$4" in
2061                         umips) osname=umips ;;
2062                         *) osname=mips ;;
2063                         esac;;
2064                 [23]100) osname=mips ;;
2065                 next*) osname=next ;;
2066                 i386*)
2067                         if $test -f /etc/kconfig; then
2068                                 osname=isc
2069                                 if test "$lns" = "ln -s"; then
2070                                         osvers=4
2071                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2072                                         osvers=3
2073                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2074                                         osvers=2
2075                                 fi
2076                         fi
2077                         ;;
2078                 pc*)
2079                         if test -n "$DJGPP"; then
2080                                 osname=dos
2081                                 osvers=djgpp
2082                         fi
2083                         ;;
2084                 esac
2085
2086                 case "$1" in
2087                 aix) osname=aix
2088                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2089                         case "$tmp" in
2090                         'not found') osvers="$4"."$3" ;;
2091                         '<3240'|'<>3240') osvers=3.2.0 ;;
2092                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2093                         '=3250'|'>3250') osvers=3.2.5 ;;
2094                         *) osvers=$tmp;;
2095                         esac
2096                         ;;
2097                 *dc.osx) osname=dcosx
2098                         osvers="$3"
2099                         ;;
2100                 dnix) osname=dnix
2101                         osvers="$3"
2102                         ;;
2103                 domainos) osname=apollo
2104                         osvers="$3"
2105                         ;;
2106                 dgux) osname=dgux 
2107                         osvers="$3"
2108                         ;;
2109                 dynixptx*) osname=dynixptx
2110                         osvers=`echo "$4"|sed 's/^v//'`
2111                         ;;
2112                 freebsd) osname=freebsd 
2113                         osvers="$3" ;;
2114                 genix) osname=genix ;;
2115                 hp*) osname=hpux 
2116                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2117                         ;;
2118                 irix*) osname=irix
2119                         case "$3" in
2120                         4*) osvers=4 ;;
2121                         5*) osvers=5 ;;
2122                         *)      osvers="$3" ;;
2123                         esac
2124                         ;;
2125                 linux) osname=linux
2126                         case "$3" in
2127                         *)      osvers="$3" ;;
2128                         esac
2129                         ;;
2130                 MiNT) osname=mint
2131                         ;;
2132                 netbsd*) osname=netbsd
2133                         osvers="$3"
2134                         ;;
2135                 news-os) osvers="$3"
2136                         case "$3" in
2137                         4*) osname=newsos4 ;;
2138                         *) osname=newsos ;;
2139                         esac
2140                         ;;
2141                 bsd386) osname=bsd386
2142                         osvers=`$uname -r`
2143                         ;;
2144                 POSIX-BC | posix-bc ) osname=posix-bc
2145                         osvers="$3"
2146                         ;;
2147                 powerux | power_ux | powermax_os | powermaxos | \
2148                 powerunix | power_unix) osname=powerux
2149                         osvers="$3"
2150                         ;;
2151                 next*) osname=next ;;
2152                 solaris) osname=solaris
2153                         case "$3" in
2154                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2155                         *)      osvers="$3" ;;
2156                         esac
2157                         ;;
2158                 sunos) osname=sunos
2159                         case "$3" in
2160                         5*) osname=solaris
2161                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2162                         *)      osvers="$3" ;;
2163                         esac
2164                         ;;
2165                 titanos) osname=titanos
2166                         case "$3" in
2167                         1*) osvers=1 ;;
2168                         2*) osvers=2 ;;
2169                         3*) osvers=3 ;;
2170                         4*) osvers=4 ;;
2171                         *)      osvers="$3" ;;
2172                         esac
2173                         ;;
2174                 ultrix) osname=ultrix
2175                         osvers="$3"
2176                         ;;
2177                 osf1|mls+)      case "$5" in
2178                                 alpha)
2179                                         osname=dec_osf
2180                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2181                                         ;;
2182                         hp*)    osname=hp_osf1  ;;
2183                         mips)   osname=mips_osf1 ;;
2184                         esac
2185                         ;;
2186                 uts) osname=uts 
2187                         osvers="$3"
2188                         ;;
2189                 qnx) osname=qnx
2190                         osvers="$4"
2191                         ;;
2192                 $2) case "$osname" in
2193                         *isc*) ;;
2194                         *freebsd*) ;;
2195                         svr*)
2196                                 : svr4.x or possibly later
2197                                 case "svr$3" in 
2198                                 ${osname}*)
2199                                         osname=svr$3
2200                                         osvers=$4
2201                                         ;;
2202                                 esac
2203                                 case "$osname" in
2204                                 svr4.0)
2205                                         : Check for ESIX
2206                                         if test -f /stand/boot ; then
2207                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2208                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2209                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2210                                                         if test -n "$isesix"; then
2211                                                                 osname=esix4
2212                                                         fi
2213                                                 fi
2214                                         fi
2215                                         ;;
2216                                 esac
2217                                 ;;
2218                         *)      if test -f /etc/systemid; then
2219                                         osname=sco
2220                                         set `echo $3 | $sed 's/\./ /g'` $4
2221                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2222                                                 osvers=$1.$2.$3
2223                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2224                                                 osvers=$1.$2
2225                                         elif $test -f $src/hints/sco_$1.sh; then
2226                                                 osvers=$1
2227                                         fi
2228                                 else
2229                                         case "$osname" in
2230                                         '') : Still unknown.  Probably a generic Sys V.
2231                                                 osname="sysv"
2232                                                 osvers="$3"
2233                                                 ;;
2234                                         esac
2235                                 fi
2236                                 ;;
2237                         esac
2238                         ;;
2239                 *)      case "$osname" in
2240                         '') : Still unknown.  Probably a generic BSD.
2241                                 osname="$1"
2242                                 osvers="$3"
2243                                 ;;
2244                         esac
2245                         ;;
2246                 esac
2247         else
2248                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2249                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2250                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2251                                 osname=news_os
2252                         fi
2253                         $rm -f UU/kernel.what
2254                 elif test -d c:/.; then
2255                         set X $myuname
2256                         osname=os2
2257                         osvers="$5"
2258                 fi
2259         fi
2260         
2261         : Now look for a hint file osname_osvers, unless one has been
2262         : specified already.
2263         case "$hintfile" in
2264         ''|' ')
2265                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2266                 : Also try without trailing minor version numbers.
2267                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2268                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2269                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2270                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2271                 case "$file" in
2272                 '') dflt=none ;;
2273                 *)  case "$osvers" in
2274                         '') dflt=$file
2275                                 ;;
2276                         *)  if $test -f $src/hints/$file.sh ; then
2277                                         dflt=$file
2278                                 elif $test -f $src/hints/$xfile.sh ; then
2279                                         dflt=$xfile
2280                                 elif $test -f $src/hints/$xxfile.sh ; then
2281                                         dflt=$xxfile
2282                                 elif $test -f $src/hints/$xxxfile.sh ; then
2283                                         dflt=$xxxfile
2284                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2285                                         dflt=$xxxxfile
2286                                 elif $test -f "$src/hints/${osname}.sh" ; then
2287                                         dflt="${osname}"
2288                                 else
2289                                         dflt=none
2290                                 fi
2291                                 ;;
2292                         esac
2293                         ;;
2294                 esac
2295                 if $test -f Policy.sh ; then
2296                         case "$dflt" in
2297                         *Policy*) ;;
2298                         none) dflt="Policy" ;;
2299                         *) dflt="Policy $dflt" ;;
2300                         esac
2301                 fi
2302                 ;;
2303         *)
2304                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2305                 ;;
2306         esac
2307
2308         if $test -f Policy.sh ; then
2309                 $cat <<EOM
2310
2311 There's also a Policy hint file available, which should make the
2312 site-specific (policy) questions easier to answer.
2313 EOM
2314
2315         fi
2316
2317         $cat <<EOM
2318
2319 You may give one or more space-separated answers, or "none" if appropriate.
2320 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2321 is a good thing.  DO NOT give a wrong version.
2322
2323 EOM
2324
2325         rp="Which of these apply, if any?"
2326         . UU/myread
2327         tans=$ans
2328         for file in $tans; do
2329                 if $test X$file = XPolicy -a -f Policy.sh; then
2330                         . Policy.sh
2331                         $cat Policy.sh >> UU/config.sh
2332                 elif $test -f $src/hints/$file.sh; then
2333                         . $src/hints/$file.sh
2334                         $cat $src/hints/$file.sh >> UU/config.sh
2335                 elif $test X$tans = X -o X$tans = Xnone ; then
2336                         : nothing
2337                 else
2338                         : Give one chance to correct a possible typo.
2339                         echo "$file.sh does not exist"
2340                         dflt=$file
2341                         rp="hint to use instead?"
2342                         . UU/myread
2343                         for file in $ans; do
2344                                 if $test -f "$src/hints/$file.sh"; then
2345                                         . $src/hints/$file.sh
2346                                         $cat $src/hints/$file.sh >> UU/config.sh
2347                                 elif $test X$ans = X -o X$ans = Xnone ; then
2348                                         : nothing
2349                                 else
2350                                         echo "$file.sh does not exist -- ignored."
2351                                 fi
2352                         done
2353                 fi
2354         done
2355
2356         hint=recommended
2357         : Remember our hint file for later.
2358         if $test -f "$src/hints/$file.sh" ; then
2359                 hintfile="$file"
2360         else
2361                 hintfile=''
2362         fi
2363 fi
2364 cd UU
2365 ;;
2366 *)
2367         echo " "
2368         echo "Fetching default answers from $config_sh..." >&4
2369         tmp_n="$n"
2370         tmp_c="$c"
2371         cd ..
2372         cp $config_sh config.sh 2>/dev/null
2373         chmod +w config.sh
2374         . ./config.sh
2375         cd UU
2376         cp ../config.sh .
2377         n="$tmp_n"
2378         c="$tmp_c"
2379         hint=previous
2380         ;;
2381 esac
2382 test "$override" && . ./optdef.sh
2383 myuname="$newmyuname"
2384
2385 : Restore computed paths
2386 for file in $loclist $trylist; do
2387         eval $file="\$_$file"
2388 done
2389
2390 cat << EOM
2391
2392 Configure uses the operating system name and version to set some defaults.
2393 The default value is probably right if the name rings a bell. Otherwise,
2394 since spelling matters for me, either accept the default or answer "none"
2395 to leave it blank.
2396
2397 EOM
2398 case "$osname" in
2399         ''|' ')
2400                 case "$hintfile" in
2401                 ''|' '|none) dflt=none ;;
2402                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2403                 esac
2404                 ;;
2405         *) dflt="$osname" ;;
2406 esac
2407 rp="Operating system name?"
2408 . ./myread
2409 case "$ans" in
2410 none)  osname='' ;;
2411 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2412 esac
2413 echo " "
2414 case "$osvers" in
2415         ''|' ')
2416                 case "$hintfile" in
2417                 ''|' '|none) dflt=none ;;
2418                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2419                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2420                         case "$dflt" in
2421                         ''|' ') dflt=none ;;
2422                         esac
2423                         ;;
2424                 esac
2425                 ;;
2426         *) dflt="$osvers" ;;
2427 esac
2428 rp="Operating system version?"
2429 . ./myread
2430 case "$ans" in
2431 none)  osvers='' ;;
2432 *) osvers="$ans" ;;
2433 esac
2434
2435 : who configured the system
2436 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2437 cf_by=`(logname) 2>/dev/null`
2438 case "$cf_by" in
2439 "")
2440         cf_by=`(whoami) 2>/dev/null`
2441         case "$cf_by" in
2442         "") cf_by=unknown ;;
2443         esac ;;
2444 esac
2445
2446 : set up the script used to warn in case of inconsistency
2447 cat <<EOS >whoa
2448 $startsh
2449 EOS
2450 cat <<'EOSC' >>whoa
2451 dflt=y
2452 echo " "
2453 echo "*** WHOA THERE!!! ***" >&4
2454 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2455 rp="    Keep the $hint value?"
2456 . ./myread
2457 case "$ans" in
2458 y) td=$was; tu=$was;;
2459 esac
2460 EOSC
2461
2462 : function used to set $1 to $val
2463 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2464 case "$val$was" in
2465 $define$undef) . ./whoa; eval "$var=\$td";;
2466 $undef$define) . ./whoa; eval "$var=\$tu";;
2467 *) eval "$var=$val";;
2468 esac'
2469
2470 cat <<EOM
2471
2472 Perl can be built to take advantage of threads, on some systems.
2473 To do so, Configure must be run with -Dusethreads.
2474 (See README.threads for details.)
2475 EOM
2476 case "$usethreads" in
2477 $define|true|[yY]*)     dflt='y';;
2478 *) dflt='n';;
2479 esac
2480 rp='Build a threading Perl?'
2481 . ./myread
2482 case "$ans" in
2483 y|Y)    val="$define" ;;     
2484 *)      val="$undef" ;;
2485 esac
2486 set usethreads
2487 eval $setvar 
2488
2489 case "$d_oldpthreads" in
2490 '')     : Configure tests would be welcome here.  For now, assume undef.
2491         val="$undef" ;;
2492 *)      val="$d_oldpthreads" ;;
2493 esac
2494 set d_oldpthreads
2495 eval $setvar
2496
2497
2498 case "$usethreads" in
2499 "$define"|true|[yY]*)
2500 : Look for a hint-file generated 'call-back-unit'.  If the
2501 : user has specified that a threading perl is to be built,
2502 : we may need to set or change some other defaults.
2503         if $test -f usethreads.cbu; then
2504                 . ./usethreads.cbu
2505         fi
2506         case "$osname" in
2507         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|os2|solaris|vmesa)
2508                 # Known thread-capable platforms.
2509                 ;;
2510         *)
2511                 cat >&4 <<EOM
2512 $osname is not known to support threads.
2513 Please let perlbug@perl.com know how to do that.
2514
2515 Cannot continue, aborting.
2516 EOM
2517                 exit 1
2518         ;;
2519         esac # $osname
2520     ;;
2521 esac # $usethreads
2522
2523 cat <<EOM
2524
2525 Perl can be built so that multiple Perl interpreters can coexist
2526 within the same Perl executable.  To do so, Configure must be run with
2527 -Dusemultiplicity.
2528
2529 Normally you do not need this and you should answer no.
2530
2531 EOM
2532 case "$usemultiplicity" in
2533 $define|true|[yY]*)     dflt='y';;
2534 *) dflt='n';;
2535 esac
2536 rp='Build Perl for multiplicity?'
2537 . ./myread
2538 case "$ans" in
2539 y|Y)    val="$define" ;;     
2540 *)      val="$undef" ;;
2541 esac
2542 set usemultiplicity
2543 eval $setvar 
2544
2545 cat <<EOM
2546
2547 Perl can be built to take advantage of explicit 64-bit interfaces,
2548 on some systems.  To do so, Configure must be run with -Duse64bits.
2549
2550 If this doesn't make any sense to you, just accept the default 'n'.
2551 EOM
2552 case "$use64bits" in
2553 $define|true|[yY]*)     dflt='y';;
2554 *) dflt='n';;
2555 esac
2556 rp='Try to use explicit 64-bit interfaces, if available?'
2557 . ./myread
2558 case "$ans" in
2559 y|Y) 
2560         val="$define"
2561         ;;     
2562 *)      
2563         val="$undef"
2564         ;;
2565 esac
2566 set use64bits
2567 eval $setvar
2568
2569 case "$archname64" in
2570 '') archname64='' ;;    # not a typo
2571 esac
2572
2573 case "$use64bits" in
2574 "$define"|true|[yY]*)
2575 : Look for a hint-file generated 'call-back-unit'.  If the
2576 : user has specified that a threading perl is to be built,
2577 : we may need to set or change some other defaults.
2578         if $test -f use64bits.cbu; then
2579                 . ./use64bits.cbu
2580         fi
2581         case "$osname" in
2582         dec_osf|hpux|irix|solaris|unicos)
2583                 # Known 64-bit capable platforms.
2584                 ;;
2585         *)
2586                 cat >&4 <<EOM
2587 $osname is not known to support 64-bit interfaces.
2588 Please let perlbug@perl.com know how to do that.
2589
2590 Cannot continue, aborting.
2591 EOM
2592                 exit 1
2593                 ;;
2594         esac
2595         ;;
2596 esac
2597
2598 : determine the architecture name
2599 echo " "
2600 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2601         tarch=`arch`"-$osname"
2602 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2603         if uname -m > tmparch 2>&1 ; then
2604                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2605                         -e 's/$/'"-$osname/" tmparch`
2606         else
2607                 tarch="$osname"
2608         fi
2609         $rm -f tmparch
2610 else
2611         tarch="$osname"
2612 fi
2613 case "$myarchname" in
2614 ''|"$tarch") ;;
2615 *)
2616         echo "(Your architecture name used to be $myarchname.)"
2617         archname=''
2618         ;;
2619 esac
2620 myarchname="$tarch"
2621 case "$archname" in
2622 '') dflt="$tarch";;
2623 *) dflt="$archname";;
2624 esac
2625 rp='What is your architecture name'
2626 . ./myread
2627 archname="$ans"
2628 case "$usethreads" in
2629 $define)
2630         echo "Threads selected." >&4
2631         case "$archname" in
2632         *-thread*) echo "...and architecture name already has -thread." >&4
2633                 ;;
2634         *)      archname="$archname-thread"
2635                 echo "...setting architecture name to $archname." >&4
2636                 ;;
2637         esac
2638         ;;
2639 esac
2640 case "$usemultiplicity" in
2641 $define)
2642         echo "Multiplicity selected." >&4
2643         case "$archname" in
2644         *-multi*) echo "...and architecture name already has -multi." >&4
2645                 ;;
2646         *)      archname="$archname-multi"
2647                 echo "...setting architecture name to $archname." >&4
2648                 ;;
2649         esac
2650         ;;
2651 esac
2652 case "$use64bits" in
2653 $define)
2654         echo "Explicit 64-bitness selected." >&4
2655         case "$archname64" in
2656         '')
2657                 ;;
2658         *)
2659                 case "$archname" in
2660                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2661                         ;;
2662                 *)      archname="$archname-$archname64"
2663                         echo "...setting architecture name to $archname." >&4
2664                         ;;
2665                 esac
2666                 ;;
2667         esac
2668 esac
2669
2670 : is AFS running?
2671 echo " "
2672 case "$afs" in
2673 $define|true)   afs=true ;;
2674 $undef|false)   afs=false ;;
2675 *)      if test -d /afs; then
2676                 afs=true
2677         else
2678                 afs=false
2679         fi
2680         ;;
2681 esac
2682 if $afs; then
2683         echo "AFS may be running... I'll be extra cautious then..." >&4
2684 else
2685         echo "AFS does not seem to be running..." >&4
2686 fi
2687
2688 : decide how portable to be.  Allow command line overrides.
2689 case "$d_portable" in
2690 "$undef") ;;
2691 *)      d_portable="$define" ;;
2692 esac
2693
2694 : set up shell script to do ~ expansion
2695 cat >filexp <<EOSS
2696 $startsh
2697 : expand filename
2698 case "\$1" in
2699  ~/*|~)
2700         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2701         ;;
2702  ~*)
2703         if $test -f /bin/csh; then
2704                 /bin/csh -f -c "glob \$1"
2705                 failed=\$?
2706                 echo ""
2707                 exit \$failed
2708         else
2709                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2710                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2711                 if $test ! -d "\$dir"; then
2712                         me=\`basename \$0\`
2713                         echo "\$me: can't locate home directory for: \$name" >&2
2714                         exit 1
2715                 fi
2716                 case "\$1" in
2717                 */*)
2718                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2719                         ;;
2720                 *)
2721                         echo \$dir
2722                         ;;
2723                 esac
2724         fi
2725         ;;
2726 *)
2727         echo \$1
2728         ;;
2729 esac
2730 EOSS
2731 chmod +x filexp
2732 $eunicefix filexp
2733
2734 : now set up to get a file name
2735 cat <<EOS >getfile
2736 $startsh
2737 EOS
2738 cat <<'EOSC' >>getfile
2739 tilde=''
2740 fullpath=''
2741 already=''
2742 skip=''
2743 none_ok=''
2744 exp_file=''
2745 nopath_ok=''
2746 orig_rp="$rp"
2747 orig_dflt="$dflt"
2748
2749 case "$fn" in
2750 *\(*)
2751         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2752         fn=`echo $fn | sed 's/(.*)//'`
2753         ;;
2754 esac
2755
2756 case "$fn" in
2757 *:*)
2758         loc_file=`expr $fn : '.*:\(.*\)'`
2759         fn=`expr $fn : '\(.*\):.*'`
2760         ;;
2761 esac
2762
2763 case "$fn" in
2764 *~*) tilde=true;;
2765 esac
2766 case "$fn" in
2767 */*) fullpath=true;;
2768 esac
2769 case "$fn" in
2770 *+*) skip=true;;
2771 esac
2772 case "$fn" in
2773 *n*) none_ok=true;;
2774 esac
2775 case "$fn" in
2776 *e*) exp_file=true;;
2777 esac
2778 case "$fn" in
2779 *p*) nopath_ok=true;;
2780 esac
2781
2782 case "$fn" in
2783 *f*) type='File';;
2784 *d*) type='Directory';;
2785 *l*) type='Locate';;
2786 esac
2787
2788 what="$type"
2789 case "$what" in
2790 Locate) what='File';;
2791 esac
2792
2793 case "$exp_file" in
2794 '')
2795         case "$d_portable" in
2796         "$define") ;;
2797         *) exp_file=true;;
2798         esac
2799         ;;
2800 esac
2801
2802 cd ..
2803 while test "$type"; do
2804         redo=''
2805         rp="$orig_rp"
2806         dflt="$orig_dflt"
2807         case "$tilde" in
2808         true) rp="$rp (~name ok)";;
2809         esac
2810         . UU/myread
2811         if test -f UU/getfile.ok && \
2812                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2813         then
2814                 value="$ans"
2815                 ansexp="$ans"
2816                 break
2817         fi
2818         case "$ans" in
2819         none)
2820                 value=''
2821                 ansexp=''
2822                 case "$none_ok" in
2823                 true) type='';;
2824                 esac
2825                 ;;
2826         *)
2827                 case "$tilde" in
2828                 '') value="$ans"
2829                         ansexp="$ans";;
2830                 *)
2831                         value=`UU/filexp $ans`
2832                         case $? in
2833                         0)
2834                                 if test "$ans" != "$value"; then
2835                                         echo "(That expands to $value on this system.)"
2836                                 fi
2837                                 ;;
2838                         *) value="$ans";;
2839                         esac
2840                         ansexp="$value"
2841                         case "$exp_file" in
2842                         '') value="$ans";;
2843                         esac
2844                         ;;
2845                 esac
2846                 case "$fullpath" in
2847                 true)
2848                         case "$ansexp" in
2849                         /*) value="$ansexp" ;;
2850                         *)
2851                                 redo=true
2852                                 case "$already" in
2853                                 true)
2854                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2855                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2856                                         ;;
2857                                 *)
2858                                 echo "Please give a full path name, starting with slash." >&4
2859                                         case "$tilde" in
2860                                         true)
2861                                 echo "Note that using ~name is ok provided it expands well." >&4
2862                                                 already=true
2863                                                 ;;
2864                                         esac
2865                                 esac
2866                                 ;;
2867                         esac
2868                         ;;
2869                 esac
2870                 case "$redo" in
2871                 '')
2872                         case "$type" in
2873                         File)
2874                                 if test -f "$ansexp"; then
2875                                         type=''
2876                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2877                                 then
2878                                         echo "($value is not a plain file, but that's ok.)"
2879                                         type=''
2880                                 fi
2881                                 ;;
2882                         Directory)
2883                                 if test -d "$ansexp"; then
2884                                         type=''
2885                                 fi
2886                                 ;;
2887                         Locate)
2888                                 if test -d "$ansexp"; then
2889                                         echo "(Looking for $loc_file in directory $value.)"
2890                                         value="$value/$loc_file"
2891                                         ansexp="$ansexp/$loc_file"
2892                                 fi
2893                                 if test -f "$ansexp"; then
2894                                         type=''
2895                                 fi
2896                                 case "$nopath_ok" in
2897                                 true)   case "$value" in
2898                                         */*) ;;
2899                                         *)      echo "Assuming $value will be in people's path."
2900                                                 type=''
2901                                                 ;;
2902                                         esac
2903                                         ;;
2904                                 esac
2905                                 ;;
2906                         esac
2907
2908                         case "$skip" in
2909                         true) type='';
2910                         esac
2911
2912                         case "$type" in
2913                         '') ;;
2914                         *)
2915                                 if test "$fastread" = yes; then
2916                                         dflt=y
2917                                 else
2918                                         dflt=n
2919                                 fi
2920                                 rp="$what $value doesn't exist.  Use that name anyway?"
2921                                 . UU/myread
2922                                 dflt=''
2923                                 case "$ans" in
2924                                 y*) type='';;
2925                                 *) echo " ";;
2926                                 esac
2927                                 ;;
2928                         esac
2929                         ;;
2930                 esac
2931                 ;;
2932         esac
2933 done
2934 cd UU
2935 ans="$value"
2936 rp="$orig_rp"
2937 dflt="$orig_dflt"
2938 rm -f getfile.ok
2939 EOSC
2940
2941 : determine root of directory hierarchy where package will be installed.
2942 case "$prefix" in
2943 '')
2944         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2945         ;;
2946 *)
2947         dflt="$prefix"
2948         ;;
2949 esac
2950 $cat <<EOM
2951
2952 By default, $package will be installed in $dflt/bin, manual
2953 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2954 all installation directories. Typically set to /usr/local, but you
2955 may choose /usr if you wish to install $package among your system
2956 binaries. If you wish to have binaries under /bin but manual pages
2957 under /usr/local/man, that's ok: you will be prompted separately
2958 for each of the installation directories, the prefix being only used
2959 to set the defaults.
2960
2961 EOM
2962 fn=d~
2963 rp='Installation prefix to use?'
2964 . ./getfile
2965 oldprefix=''
2966 case "$prefix" in
2967 '') ;;
2968 *)
2969         case "$ans" in
2970         "$prefix") ;;
2971         *) oldprefix="$prefix";;
2972         esac
2973         ;;
2974 esac
2975 prefix="$ans"
2976 prefixexp="$ansexp"
2977
2978 : set the prefixit variable, to compute a suitable default value
2979 prefixit='case "$3" in
2980 ""|none)
2981         case "$oldprefix" in
2982         "") eval "$1=\"\$$2\"";;
2983         *)
2984                 case "$3" in
2985                 "") eval "$1=";;
2986                 none)
2987                         eval "tp=\"\$$2\"";
2988                         case "$tp" in
2989                         ""|" ") eval "$1=\"\$$2\"";;
2990                         *) eval "$1=";;
2991                         esac;;
2992                 esac;;
2993         esac;;
2994 *)
2995         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2996         case "$tp" in
2997         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2998         /*-$oldprefix/*|\~*-$oldprefix/*)
2999                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3000         *) eval "$1=\"\$$2\"";;
3001         esac;;
3002 esac'
3003
3004 : set the base revision
3005 baserev=5.0
3006
3007 : get the patchlevel
3008 echo " "
3009 echo "Getting the current patchlevel..." >&4
3010 if $test -r $rsrc/patchlevel.h;then
3011         patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
3012         subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3013 else
3014         patchlevel=0
3015         subversion=0
3016 fi
3017 $echo $n "(You have $package" $c
3018 case "$package" in
3019 "*$baserev")    ;;
3020 *)              $echo $n " $baserev" $c ;;
3021 esac
3022 $echo $n " patchlevel $patchlevel" $c
3023 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3024 echo ".)"
3025
3026 if test 0 -eq "$subversion"; then
3027         version=`LC_ALL=C; export LC_ALL; \
3028                  echo $baserev $patchlevel | \
3029                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3030 else
3031         version=`LC_ALL=C; export LC_ALL; \
3032                  echo $baserev $patchlevel $subversion | \
3033                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3034 fi
3035 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3036 if test "$subversion" -lt 50; then
3037         apiversion=`LC_ALL=C; export LC_ALL; \
3038                  LANGUAGE=C; export LANGUAGE; \
3039                  echo $baserev $patchlevel | \
3040                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3041 else
3042         apiversion="$version"
3043 fi
3044
3045 : determine where private library files go
3046 : Usual default is /usr/local/lib/perl5/$version.
3047 : Also allow things like /opt/perl/lib/$version, since 
3048 : /opt/perl/lib/perl5... would be redundant.
3049 case "$prefix" in
3050 *perl*) set dflt privlib lib/$version ;;
3051 *)       set dflt privlib lib/$package/$version ;;
3052 esac
3053 eval $prefixit
3054 $cat <<EOM
3055
3056 There are some auxiliary files for $package that need to be put into a
3057 private library directory that is accessible by everyone.
3058
3059 EOM
3060 fn=d~+
3061 rp='Pathname where the private library files will reside?'
3062 . ./getfile
3063 if $test "X$privlibexp" != "X$ansexp"; then
3064         installprivlib=''
3065 fi
3066 privlib="$ans"
3067 privlibexp="$ansexp"
3068 if $afs; then
3069         $cat <<EOM
3070
3071 Since you are running AFS, I need to distinguish the directory in which
3072 private files reside from the directory in which they are installed (and from
3073 which they are presumably copied to the former directory by occult means).
3074
3075 EOM
3076         case "$installprivlib" in
3077         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3078         *) dflt="$installprivlib";;
3079         esac
3080         fn=de~
3081         rp='Where will private files be installed?'
3082         . ./getfile
3083         installprivlib="$ans"
3084 else
3085         installprivlib="$privlibexp"
3086 fi
3087
3088 : set the prefixup variable, to restore leading tilda escape
3089 prefixup='case "$prefixexp" in
3090 "$prefix") ;;
3091 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3092 esac'
3093
3094 : determine where public architecture dependent libraries go
3095 set archlib archlib
3096 eval $prefixit
3097 : privlib default is /usr/local/lib/$package/$version
3098 : archlib default is /usr/local/lib/$package/$version/$archname
3099 : privlib may have an optional trailing /share.
3100 tdflt=`echo $privlib | $sed 's,/share$,,'`
3101 tdflt=$tdflt/$archname
3102 case "$archlib" in
3103 '')     dflt=$tdflt
3104         ;;
3105 *)      dflt="$archlib"
3106     ;;
3107 esac
3108 cat <<EOM
3109
3110 $spackage contains architecture-dependent library files.  If you are
3111 sharing libraries in a heterogeneous environment, you might store
3112 these files in a separate location.  Otherwise, you can just include
3113 them with the rest of the public library files.
3114
3115 EOM
3116 fn=d+~
3117 rp='Where do you want to put the public architecture-dependent libraries?'
3118 . ./getfile
3119 archlib="$ans"
3120 archlibexp="$ansexp"
3121
3122 if $afs; then
3123         $cat <<EOM
3124
3125 Since you are running AFS, I need to distinguish the directory in
3126 which architecture-dependent library files reside from the directory
3127 in which they are installed (and from which they are presumably copied
3128 to the former directory by occult means).
3129
3130 EOM
3131         case "$installarchlib" in
3132         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3133         *) dflt="$installarchlib";;
3134         esac
3135         fn=de~
3136         rp='Where will architecture-dependent library files be installed?'
3137         . ./getfile
3138         installarchlib="$ans"
3139 else
3140         installarchlib="$archlibexp"
3141 fi
3142 if $test X"$archlib" = X"$privlib"; then
3143         d_archlib="$undef"
3144 else
3145         d_archlib="$define"
3146 fi
3147
3148 : make some quick guesses about what we are up against
3149 echo " "
3150 $echo $n "Hmm...  $c"
3151 echo exit 1 >bsd
3152 echo exit 1 >usg
3153 echo exit 1 >v7
3154 echo exit 1 >osf1
3155 echo exit 1 >eunice
3156 echo exit 1 >xenix
3157 echo exit 1 >venix
3158 echo exit 1 >os2
3159 d_bsd="$undef"
3160 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3161 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3162 then
3163         echo "Looks kind of like an OSF/1 system, but we'll see..."
3164         echo exit 0 >osf1
3165 elif test `echo abc | tr a-z A-Z` = Abc ; then
3166         xxx=`./loc addbib blurfl $pth`
3167         if $test -f $xxx; then
3168         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3169                 echo exit 0 >bsd
3170                 echo exit 0 >usg
3171         else
3172                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3173                         echo "Looks kind of like an extended USG system, but we'll see..."
3174                 else
3175                         echo "Looks kind of like a USG system, but we'll see..."
3176                 fi
3177                 echo exit 0 >usg
3178         fi
3179 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3180         echo "Looks kind of like a BSD system, but we'll see..."
3181         d_bsd="$define"
3182         echo exit 0 >bsd
3183 else
3184         echo "Looks kind of like a Version 7 system, but we'll see..."
3185         echo exit 0 >v7
3186 fi
3187 case "$eunicefix" in
3188 *unixtovms*)
3189         $cat <<'EOI'
3190 There is, however, a strange, musty smell in the air that reminds me of
3191 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3192 EOI
3193         echo exit 0 >eunice
3194         d_eunice="$define"
3195 : it so happens the Eunice I know will not run shell scripts in Unix format
3196         ;;
3197 *)
3198         echo " "
3199         echo "Congratulations.  You aren't running Eunice."
3200         d_eunice="$undef"
3201         ;;
3202 esac
3203 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3204 case "$p_" in
3205 :) ;;
3206 *)
3207         $cat <<'EOI'
3208 I have the feeling something is not exactly right, however...don't tell me...
3209 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3210 EOI
3211         echo exit 0 >os2
3212         ;;
3213 esac
3214 if test -f /xenix; then
3215         echo "Actually, this looks more like a XENIX system..."
3216         echo exit 0 >xenix
3217         d_xenix="$define"
3218 else
3219         echo " "
3220         echo "It's not Xenix..."
3221         d_xenix="$undef"
3222 fi
3223 chmod +x xenix
3224 $eunicefix xenix
3225 if test -f /venix; then
3226         echo "Actually, this looks more like a VENIX system..."
3227         echo exit 0 >venix
3228 else
3229         echo " "
3230         if ./xenix; then
3231                 : null
3232         else
3233                 echo "Nor is it Venix..."
3234         fi
3235 fi
3236 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3237 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3238 $rm -f foo
3239
3240 : see if setuid scripts can be secure
3241 $cat <<EOM
3242
3243 Some kernels have a bug that prevents setuid #! scripts from being
3244 secure.  Some sites have disabled setuid #! scripts because of this.
3245
3246 First let's decide if your kernel supports secure setuid #! scripts.
3247 (If setuid #! scripts would be secure but have been disabled anyway,
3248 don't say that they are secure if asked.)
3249
3250 EOM
3251
3252 val="$undef"
3253 if $test -d /dev/fd; then
3254         echo "#!$ls" >reflect
3255         chmod +x,u+s reflect
3256         ./reflect >flect 2>&1
3257         if $contains "/dev/fd" flect >/dev/null; then
3258                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3259                 val="$define"
3260         else
3261                 $cat <<EOM
3262 If you are not sure if they are secure, I can check but I'll need a
3263 username and password different from the one you are using right now.
3264 If you don't have such a username or don't want me to test, simply
3265 enter 'none'.
3266
3267 EOM
3268                 rp='Other username to test security of setuid scripts with?'
3269                 dflt='none'
3270                 . ./myread
3271                 case "$ans" in
3272                 n|none)
3273                         case "$d_suidsafe" in
3274                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3275                                 dflt=n;;
3276                         "$undef")
3277                                 echo "Well, the $hint value is *not* secure." >&4
3278                                 dflt=n;;
3279                         *)      echo "Well, the $hint value *is* secure." >&4
3280                                 dflt=y;;
3281                         esac
3282                         ;;
3283                 *)
3284                         $rm -f reflect flect
3285                         echo "#!$ls" >reflect
3286                         chmod +x,u+s reflect
3287                         echo >flect
3288                         chmod a+w flect
3289                         echo '"su" will (probably) prompt you for '"$ans's password."
3290                         su $ans -c './reflect >flect'
3291                         if $contains "/dev/fd" flect >/dev/null; then
3292                                 echo "Okay, it looks like setuid scripts are secure." >&4
3293                                 dflt=y
3294                         else
3295                                 echo "I don't think setuid scripts are secure." >&4
3296                                 dflt=n
3297                         fi
3298                         ;;
3299                 esac
3300                 rp='Does your kernel have *secure* setuid scripts?'
3301                 . ./myread
3302                 case "$ans" in
3303                 [yY]*)  val="$define";;
3304                 *)      val="$undef";;
3305                 esac
3306         fi
3307 else
3308         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3309         echo "(That's for file descriptors, not floppy disks.)"
3310         val="$undef"
3311 fi
3312 set d_suidsafe
3313 eval $setvar
3314
3315 $rm -f reflect flect
3316
3317 : now see if they want to do setuid emulation
3318 echo " "
3319 val="$undef"
3320 case "$d_suidsafe" in
3321 "$define")
3322         val="$undef"
3323         echo "No need to emulate SUID scripts since they are secure here." >& 4
3324         ;;
3325 *)
3326         $cat <<EOM
3327 Some systems have disabled setuid scripts, especially systems where
3328 setuid scripts cannot be secure.  On systems where setuid scripts have
3329 been disabled, the setuid/setgid bits on scripts are currently
3330 useless.  It is possible for $package to detect those bits and emulate
3331 setuid/setgid in a secure fashion.  This emulation will only work if
3332 setuid scripts have been disabled in your kernel.
3333
3334 EOM
3335         case "$d_dosuid" in
3336         "$define") dflt=y ;;
3337         *) dflt=n ;;
3338         esac
3339         rp="Do you want to do setuid/setgid emulation?"
3340         . ./myread
3341         case "$ans" in
3342         [yY]*)  val="$define";;
3343         *)      val="$undef";;
3344         esac
3345         ;;
3346 esac
3347 set d_dosuid
3348 eval $setvar
3349
3350 : determine where manual pages are on this system
3351 echo " "
3352 case "$sysman" in
3353 '') 
3354         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3355         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3356         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3357         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3358         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3359         sysman=`./loc . /usr/man/man1 $syspath`
3360         ;;
3361 esac
3362 if $test -d "$sysman"; then
3363         echo "System manual is in $sysman." >&4
3364 else
3365         echo "Could not find manual pages in source form." >&4
3366 fi
3367
3368 : see what memory models we can support
3369 case "$models" in
3370 '')
3371         $cat >pdp11.c <<'EOP'
3372 int main() {
3373 #ifdef pdp11
3374         exit(0);
3375 #else
3376         exit(1);
3377 #endif
3378 }
3379 EOP
3380         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3381         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3382                 dflt='unsplit split'
3383         else
3384                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3385                 case "$tans" in
3386                 X) dflt='none';;
3387                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3388                                 dflt='small'
3389                         else
3390                                 dflt=''
3391                         fi
3392                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3393                                 dflt="$dflt medium"
3394                         fi
3395                         if $test -d /lib/large || $test -d /usr/lib/large; then
3396                                 dflt="$dflt large"
3397                         fi
3398                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3399                                 dflt="$dflt huge"
3400                         fi
3401                 esac
3402         fi;;
3403 *) dflt="$models";;
3404 esac
3405 $cat <<EOM
3406  
3407 Some systems have different model sizes.  On most systems they are called
3408 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3409 split.  If your system doesn't support different memory models, say "none".
3410 If you wish to force everything to one memory model, say "none" here and
3411 put the appropriate flags later when it asks you for other cc and ld flags.
3412 Venix systems may wish to put "none" and let the compiler figure things out.
3413 (In the following question multiple model names should be space separated.)
3414
3415 The default for most systems is "none".
3416
3417 EOM
3418 rp="Which memory models are supported?"
3419 . ./myread
3420 models="$ans"
3421
3422 case "$models" in
3423 none)
3424         small=''
3425         medium=''
3426         large=''
3427         huge=''
3428         unsplit=''
3429         split=''
3430         ;;
3431 *split)
3432         case "$split" in
3433         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3434                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3435                         dflt='-i'
3436                 else
3437                         dflt='none'
3438                 fi;;
3439         *) dflt="$split";;
3440         esac
3441         rp="What flag indicates separate I and D space?"
3442         . ./myread
3443         tans="$ans"
3444         case "$tans" in
3445         none) tans='';;
3446         esac
3447         split="$tans"
3448         unsplit='';;
3449 *large*|*small*|*medium*|*huge*)
3450         case "$models" in
3451         *large*)
3452                 case "$large" in
3453                 '') dflt='-Ml';;
3454                 *) dflt="$large";;
3455                 esac
3456         rp="What flag indicates large model?"
3457         . ./myread
3458         tans="$ans"
3459         case "$tans" in
3460         none) tans='';
3461         esac
3462         large="$tans";;
3463         *) large='';;
3464         esac
3465         case "$models" in
3466         *huge*) case "$huge" in
3467                 '') dflt='-Mh';;
3468                 *) dflt="$huge";;
3469                 esac
3470                 rp="What flag indicates huge model?"
3471                 . ./myread
3472                 tans="$ans"
3473                 case "$tans" in
3474                 none) tans='';
3475                 esac
3476                 huge="$tans";;
3477         *) huge="$large";;
3478         esac
3479         case "$models" in
3480         *medium*) case "$medium" in
3481                 '') dflt='-Mm';;
3482                 *) dflt="$medium";;
3483                 esac
3484                 rp="What flag indicates medium model?"
3485                 . ./myread
3486                 tans="$ans"
3487                 case "$tans" in
3488                 none) tans='';
3489                 esac
3490                 medium="$tans";;
3491         *) medium="$large";;
3492         esac
3493         case "$models" in
3494         *small*) case "$small" in
3495                 '') dflt='none';;
3496                 *) dflt="$small";;
3497                 esac
3498                 rp="What flag indicates small model?"
3499                 . ./myread
3500                 tans="$ans"
3501                 case "$tans" in
3502                 none) tans='';
3503                 esac
3504                 small="$tans";;
3505         *) small='';;
3506         esac
3507         ;;
3508 *)
3509         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3510         ;;
3511 esac
3512 $rm -f pdp11.* pdp11
3513
3514 : see if we need a special compiler
3515 echo " "
3516 if ./usg; then
3517         case "$cc" in
3518         '') case "$Mcc" in
3519                 /*) dflt='Mcc';;
3520                 *) case "$large" in
3521                         -M*) dflt='cc';;
3522                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3523                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3524                                                 dflt='cc'
3525                                         else
3526                                                 dflt='cc -M'
3527                                         fi
3528                                 else
3529                                         dflt='cc'
3530                                 fi;;
3531                         esac;;
3532                 esac;;
3533         *)  dflt="$cc";;
3534         esac
3535         case "$dflt" in
3536         *M*)    $cat <<'EOM'
3537 On some older systems the default C compiler will not resolve multiple global
3538 references that happen to have the same name.  On some such systems the "Mcc"
3539 command may be used to force these to be resolved.  On other systems a "cc -M"
3540 command is required.  (Note that the -M flag on other systems indicates a
3541 memory model to use!) If you have the Gnu C compiler, you might wish to use
3542 that instead.
3543
3544 EOM
3545         ;;
3546         esac
3547         rp="Use which C compiler?"
3548         . ./myread
3549         cc="$ans"
3550 else
3551         case "$cc" in
3552         '') dflt=cc;;
3553         *) dflt="$cc";;
3554         esac
3555         rp="Use which C compiler?"
3556         . ./myread
3557         cc="$ans"
3558 fi
3559 : Look for a hint-file generated 'call-back-unit'.  Now that the
3560 : user has specified the compiler, we may need to set or change some
3561 : other defaults.
3562 if $test -f cc.cbu; then
3563     . ./cc.cbu
3564 fi
3565 echo " "
3566 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3567 $cat >gccvers.c <<EOM
3568 #include <stdio.h>
3569 int main() {
3570 #ifdef __GNUC__
3571 #ifdef __VERSION__
3572         printf("%s\n", __VERSION__);
3573 #else
3574         printf("%s\n", "1");
3575 #endif
3576 #endif
3577         exit(0);
3578 }
3579 EOM
3580 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3581         gccversion=`./gccvers`
3582         case "$gccversion" in
3583         '') echo "You are not using GNU cc." ;;
3584         *)  echo "You are using GNU cc $gccversion." ;;
3585         esac
3586 else
3587         echo " "
3588         echo "*** WHOA THERE!!! ***" >&4
3589         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3590         case "$knowitall" in
3591         '')
3592         echo "    You'd better start hunting for one and let me know about it." >&4
3593                 exit 1
3594                 ;;
3595         esac
3596 fi
3597 $rm -f gccvers*
3598 case "$gccversion" in
3599 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3600 esac
3601
3602 : What should the include directory be ?
3603 echo " "
3604 $echo $n "Hmm...  $c"
3605 dflt='/usr/include'
3606 incpath=''
3607 mips_type=''
3608 if $test -f /bin/mips && /bin/mips; then
3609         echo "Looks like a MIPS system..."
3610         $cat >usr.c <<'EOCP'
3611 #ifdef SYSTYPE_BSD43
3612 /bsd43
3613 #endif
3614 EOCP
3615         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3616                 dflt='/bsd43/usr/include'
3617                 incpath='/bsd43'
3618                 mips_type='BSD 4.3'
3619         else
3620                 mips_type='System V'
3621         fi
3622         $rm -f usr.c usr.out
3623         echo "and you're compiling with the $mips_type compiler and libraries."
3624         xxx_prompt=y
3625         echo "exit 0" >mips
3626 else
3627         echo "Doesn't look like a MIPS system."
3628         xxx_prompt=n
3629         echo "exit 1" >mips
3630 fi
3631 chmod +x mips
3632 $eunicefix mips
3633 case "$usrinc" in
3634 '') ;;
3635 *) dflt="$usrinc";;
3636 esac
3637 case "$xxx_prompt" in
3638 y)      fn=d/
3639         echo " "
3640         rp='Where are the include files you want to use?'
3641         . ./getfile
3642         usrinc="$ans"
3643         ;;
3644 *)      usrinc="$dflt"
3645         ;;
3646 esac
3647
3648 : see how we invoke the C preprocessor
3649 echo " "
3650 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3651 cat <<'EOT' >testcpp.c
3652 #define ABC abc
3653 #define XYZ xyz
3654 ABC.XYZ
3655 EOT
3656 cd ..
3657 if test ! -f cppstdin; then
3658         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3659 else
3660         echo "Keeping your $hint cppstdin wrapper."
3661 fi
3662 chmod 755 cppstdin
3663 wrapper=`pwd`/cppstdin
3664 ok='false'
3665 cd UU
3666
3667 if $test "X$cppstdin" != "X" && \
3668         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3669         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3670 then
3671         echo "You used to use $cppstdin $cppminus so we'll use that again."
3672         case "$cpprun" in
3673         '') echo "But let's see if we can live without a wrapper..." ;;
3674         *)
3675                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3676                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3677                 then
3678                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3679                         ok='true'
3680                 else
3681                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3682                 fi
3683                 ;;
3684         esac
3685 else
3686         case "$cppstdin" in
3687         '') ;;
3688         *)
3689                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3690                 ;;
3691         esac
3692 fi
3693
3694 if $ok; then
3695         : nothing
3696 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3697         $cc -E <testcpp.c >testcpp.out 2>&1; \
3698         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3699         echo "Yup, it does."
3700         x_cpp="$cc -E"
3701         x_minus='';
3702 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3703         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3704         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3705         echo "Yup, it does."
3706         x_cpp="$cc -E"
3707         x_minus='-';
3708 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3709         $cc -P <testcpp.c >testcpp.out 2>&1; \
3710         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3711         echo "Yipee, that works!"
3712         x_cpp="$cc -P"
3713         x_minus='';
3714 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3715         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3716         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3717         echo "At long last!"
3718         x_cpp="$cc -P"
3719         x_minus='-';
3720 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3721         $cpp <testcpp.c >testcpp.out 2>&1; \
3722         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3723         echo "It works!"
3724         x_cpp="$cpp"
3725         x_minus='';
3726 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3727         $cpp - <testcpp.c >testcpp.out 2>&1; \
3728         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3729         echo "Hooray, it works!  I was beginning to wonder."
3730         x_cpp="$cpp"
3731         x_minus='-';
3732 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3733         $wrapper <testcpp.c >testcpp.out 2>&1; \
3734         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3735         x_cpp="$wrapper"
3736         x_minus=''
3737         echo "Eureka!"
3738 else
3739         dflt=''
3740         rp="No dice.  I can't find a C preprocessor.  Name one:"
3741         . ./myread
3742         x_cpp="$ans"
3743         x_minus=''
3744         $x_cpp <testcpp.c >testcpp.out 2>&1
3745         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3746                 echo "OK, that will do." >&4
3747         else
3748 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3749                 exit 1
3750         fi
3751 fi
3752
3753 case "$ok" in
3754 false)
3755         cppstdin="$x_cpp"
3756         cppminus="$x_minus"
3757         cpprun="$x_cpp"
3758         cpplast="$x_minus"
3759         set X $x_cpp
3760         shift
3761         case "$1" in
3762         "$cpp")
3763                 echo "Perhaps can we force $cc -E using a wrapper..."
3764                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3765                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3766                 then
3767                         echo "Yup, we can."
3768                         cppstdin="$wrapper"
3769                         cppminus='';
3770                 else
3771                         echo "Nope, we'll have to live without it..."
3772                 fi
3773                 ;;
3774         esac
3775         case "$cpprun" in
3776         "$wrapper")
3777                 cpprun=''
3778                 cpplast=''
3779                 ;;
3780         esac
3781         ;;
3782 esac
3783
3784 case "$cppstdin" in
3785 "$wrapper"|'cppstdin') ;;
3786 *) $rm -f $wrapper;;
3787 esac
3788 $rm -f testcpp.c testcpp.out
3789
3790 : Set private lib path
3791 case "$plibpth" in
3792 '') if ./mips; then
3793                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3794         fi;;
3795 esac
3796 case "$libpth" in
3797 ' ') dlist='';;
3798 '') dlist="$loclibpth $plibpth $glibpth";;
3799 *) dlist="$libpth";;
3800 esac
3801
3802 : Now check and see which directories actually exist, avoiding duplicates
3803 libpth=''
3804 for xxx in $dlist
3805 do
3806     if $test -d $xxx; then
3807                 case " $libpth " in
3808                 *" $xxx "*) ;;
3809                 *) libpth="$libpth $xxx";;
3810                 esac
3811     fi
3812 done
3813 $cat <<'EOM'
3814
3815 Some systems have incompatible or broken versions of libraries.  Among
3816 the directories listed in the question below, please remove any you
3817 know not to be holding relevant libraries, and add any that are needed.
3818 Say "none" for none.
3819
3820 EOM
3821 case "$libpth" in
3822 '') dflt='none';;
3823 *)
3824         set X $libpth
3825         shift
3826         dflt=${1+"$@"}
3827         ;;
3828 esac
3829 rp="Directories to use for library searches?"
3830 . ./myread
3831 case "$ans" in
3832 none) libpth=' ';;
3833 *) libpth="$ans";;
3834 esac
3835
3836 : compute shared library extension
3837 case "$so" in
3838 '')
3839         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3840                 dflt='sl'
3841         else
3842                 dflt='so'
3843         fi
3844         ;;
3845 *) dflt="$so";;
3846 esac
3847 $cat <<EOM
3848
3849 On some systems, shared libraries may be available.  Answer 'none' if
3850 you want to suppress searching of shared libraries for the remaining
3851 of this configuration.
3852
3853 EOM
3854 rp='What is the file extension used for shared libraries?'
3855 . ./myread
3856 so="$ans"
3857
3858 : Define several unixisms.
3859 : Hints files or command line option can be used to override them.
3860 : The convoluted testing is in case hints files set either the old
3861 : or the new name.
3862 case "$_exe" in
3863 '')     case "$exe_ext" in
3864     '') ;;
3865         *)      _exe="$exe_ext" ;;
3866         esac
3867         ;;
3868 esac
3869 case "$_a" in
3870 '')     case "$lib_ext" in
3871     '') _a='.a';;
3872         *)      _a="$lib_ext" ;;
3873         esac
3874         ;;
3875 esac
3876 case "$_o" in
3877 '') case "$obj_ext" in
3878         '')     _o='.o';;
3879         *)      _o="$obj_ext";;
3880         esac
3881         ;;
3882 esac
3883 case "$p_" in
3884 '') case "$path_sep" in
3885         '')     p_=':';;
3886         *)      p_="$path_sep";;
3887         esac
3888         ;;
3889 esac
3890 exe_ext=$_exe
3891 lib_ext=$_a
3892 obj_ext=$_o
3893 path_sep=$p_
3894
3895 : Which makefile gets called first.  This is used by make depend.
3896 case "$firstmakefile" in
3897 '') firstmakefile='makefile';;
3898 esac
3899
3900 : Looking for optional libraries
3901 echo " "
3902 echo "Checking for optional libraries..." >&4
3903 case "$libs" in
3904 ' '|'') dflt='';;
3905 *) dflt="$libs";;
3906 esac
3907 case "$libswanted" in
3908 '') libswanted='c_s';;
3909 esac
3910 for thislib in $libswanted; do
3911         
3912         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3913                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3914                 echo "Found -l$thislib (shared)."
3915                 case " $dflt " in
3916                 *"-l$thislib "*);;
3917                 *) dflt="$dflt -l$thislib";;
3918                 esac
3919         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3920                 echo "Found -l$thislib (shared)."
3921                 case " $dflt " in
3922                 *"-l$thislib "*);;
3923                 *) dflt="$dflt -l$thislib";;
3924                 esac
3925         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3926                 echo "Found -l$thislib."
3927                 case " $dflt " in
3928                 *"-l$thislib "*);;
3929                 *) dflt="$dflt -l$thislib";;
3930                 esac
3931         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3932                 echo "Found -l$thislib."
3933                 case " $dflt " in
3934                 *"-l$thislib "*);;
3935                 *) dflt="$dflt -l$thislib";;
3936                 esac
3937         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3938                 echo "Found -l${thislib}_s."
3939                 case " $dflt " in
3940                 *"-l$thislib "*);;
3941                 *) dflt="$dflt -l${thislib}_s";;
3942                 esac
3943         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3944                 echo "Found -l$thislib."
3945                 case " $dflt " in
3946                 *"-l$thislib "*);;
3947                 *) dflt="$dflt -l$thislib";;
3948                 esac
3949         else
3950                 echo "No -l$thislib."
3951         fi
3952 done
3953 set X $dflt
3954 shift
3955 dflt="$*"
3956 case "$libs" in
3957 '') dflt="$dflt";;
3958 *) dflt="$libs";;
3959 esac
3960 case "$dflt" in
3961 ' '|'') dflt='none';;
3962 esac
3963
3964 $cat <<EOM
3965  
3966 Some versions of Unix support shared libraries, which make executables smaller
3967 but make load time slightly longer.
3968
3969 On some systems, mostly System V Release 3's, the shared library is included
3970 by putting the option "-lc_s" as the last thing on the cc command line when
3971 linking.  Other systems use shared libraries by default.  There may be other
3972 libraries needed to compile $package on your machine as well.  If your system
3973 needs the "-lc_s" option, include it here.  Include any other special libraries
3974 here as well.  Say "none" for none.
3975 EOM
3976
3977 echo " "
3978 rp="Any additional libraries?"
3979 . ./myread
3980 case "$ans" in
3981 none) libs=' ';;
3982 *) libs="$ans";;
3983 esac
3984
3985 : determine optimize, if desired, or use for debug flag also
3986 case "$optimize" in
3987 ' '|$undef) dflt='none';;
3988 '') dflt='-O';;
3989 *) dflt="$optimize";;
3990 esac
3991 $cat <<EOH
3992
3993 Some C compilers have problems with their optimizers.  By default, $package
3994 compiles with the -O flag to use the optimizer.  Alternately, you might want
3995 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3996 systems).  Either flag can be specified here.  To use neither flag, specify
3997 the word "none".
3998
3999 EOH
4000 rp="What optimizer/debugger flag should be used?"
4001 . ./myread
4002 optimize="$ans"
4003 case "$optimize" in
4004 'none') optimize=" ";;
4005 esac
4006
4007 dflt=''
4008 : We will not override a previous value, but we might want to
4009 : augment a hint file
4010 case "$hint" in
4011 none|recommended)
4012         case "$gccversion" in
4013         1*) dflt='-fpcc-struct-return' ;;
4014         esac
4015         case "$optimize" in
4016         *-g*) dflt="$dflt -DDEBUGGING";;
4017         esac
4018         case "$gccversion" in
4019         2*) if test -d /etc/conf/kconfig.d &&
4020                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4021                 then
4022                         dflt="$dflt -posix"
4023                 fi
4024                 ;;
4025         esac
4026         ;;
4027 esac
4028
4029 case "$mips_type" in
4030 *BSD*|'') inclwanted="$locincpth $usrinc";;
4031 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4032 esac
4033 for thisincl in $inclwanted; do
4034         if $test -d $thisincl; then
4035                 if $test x$thisincl != x$usrinc; then
4036                         case "$dflt" in
4037                         *$thisincl*);;
4038                         *) dflt="$dflt -I$thisincl";;
4039                         esac
4040                 fi
4041         fi
4042 done
4043
4044 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4045         xxx=true;
4046 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4047         xxx=true;
4048 else
4049         xxx=false;
4050 fi;
4051 if $xxx; then
4052         case "$dflt" in
4053         *$2*);;
4054         *) dflt="$dflt -D$2";;
4055         esac;
4056 fi'
4057
4058 if ./osf1; then
4059         set signal.h __LANGUAGE_C__; eval $inctest
4060 else
4061         set signal.h LANGUAGE_C; eval $inctest
4062 fi
4063
4064 case "$hint" in
4065 none|recommended) dflt="$ccflags $dflt" ;;
4066 *) dflt="$ccflags";;
4067 esac
4068
4069 case "$dflt" in
4070 ''|' ') dflt=none;;
4071 esac
4072 $cat <<EOH
4073
4074 Your C compiler may want other flags.  For this question you should include
4075 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4076 but you should NOT include libraries or ld flags like -lwhatever.  If you
4077 want $package to honor its debug switch, you should include -DDEBUGGING here.
4078 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4079
4080 To use no flags, specify the word "none".
4081
4082 EOH
4083 set X $dflt
4084 shift
4085 dflt=${1+"$@"}
4086 rp="Any additional cc flags?"
4087 . ./myread
4088 case "$ans" in
4089 none) ccflags='';;
4090 *) ccflags="$ans";;
4091 esac
4092
4093 : the following weeds options from ccflags that are of no interest to cpp
4094 cppflags="$ccflags"
4095 case "$gccversion" in
4096 1*) cppflags="$cppflags -D__GNUC__"
4097 esac
4098 case "$mips_type" in
4099 '');;
4100 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4101 esac
4102 case "$cppflags" in
4103 '');;
4104 *)
4105         echo " "
4106         echo "Let me guess what the preprocessor flags are..." >&4
4107         set X $cppflags
4108         shift
4109         cppflags=''
4110         $cat >cpp.c <<'EOM'
4111 #define BLURFL foo
4112
4113 BLURFL xx LFRULB
4114 EOM
4115         previous=''
4116         for flag in $*
4117         do
4118                 case "$flag" in
4119                 -*) ftry="$flag";;
4120                 *) ftry="$previous $flag";;
4121                 esac
4122                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4123                         >cpp1.out 2>/dev/null && \
4124                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4125                         >cpp2.out 2>/dev/null && \
4126                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4127                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4128                 then
4129                         cppflags="$cppflags $ftry"
4130                         previous=''
4131                 else
4132                         previous="$flag"
4133                 fi
4134         done
4135         set X $cppflags
4136         shift
4137         cppflags=${1+"$@"}
4138         case "$cppflags" in
4139         *-*)  echo "They appear to be: $cppflags";;
4140         esac
4141         $rm -f cpp.c cpp?.out
4142         ;;
4143 esac
4144
4145 : flags used in final linking phase
4146 case "$ldflags" in
4147 '') if ./venix; then
4148                 dflt='-i -z'
4149         else
4150                 dflt=''
4151         fi
4152         case "$ccflags" in
4153         *-posix*) dflt="$dflt -posix" ;;
4154         esac
4155         ;;
4156 *) dflt="$ldflags";;
4157 esac
4158
4159 : Try to guess additional flags to pick up local libraries.
4160 for thislibdir in $libpth; do
4161         case " $loclibpth " in
4162         *" $thislibdir "*)
4163                 case "$dflt " in 
4164                 *"-L$thislibdir "*) ;;
4165                 *)  dflt="$dflt -L$thislibdir" ;;
4166                 esac
4167                 ;;
4168         esac
4169 done
4170
4171 case "$dflt" in
4172 '') dflt='none' ;;
4173 esac
4174
4175 $cat <<EOH
4176
4177 Your C linker may need flags.  For this question you should
4178 include -L/whatever and any other flags used by the C linker, but you
4179 should NOT include libraries like -lwhatever.
4180
4181 Make sure you include the appropriate -L/path flags if your C linker
4182 does not normally search all of the directories you specified above,
4183 namely
4184         $libpth
4185 To use no flags, specify the word "none".
4186
4187 EOH
4188
4189 rp="Any additional ld flags (NOT including libraries)?"
4190 . ./myread
4191 case "$ans" in
4192 none) ldflags='';;
4193 *) ldflags="$ans";;
4194 esac
4195 rmlist="$rmlist pdp11"
4196
4197 : coherency check
4198 echo " "
4199 echo "Checking your choice of C compiler and flags for coherency..." >&4
4200 $cat > try.c <<'EOF'
4201 #include <stdio.h>
4202 int main() { printf("Ok\n"); exit(0); }
4203 EOF
4204 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4205 shift
4206 $cat >try.msg <<'EOM'
4207 I've tried to compile and run the following simple program:
4208
4209 EOM
4210 $cat try.c >> try.msg
4211
4212 $cat >> try.msg <<EOM
4213
4214 I used the command:
4215
4216         $*
4217         ./try
4218
4219 and I got the following output:
4220
4221 EOM
4222 dflt=y
4223 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4224         if sh -c './try' >>try.msg 2>&1; then
4225                 xxx=`./try`
4226                 case "$xxx" in
4227                 "Ok") dflt=n ;;
4228                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4229                         case " $libs " in
4230                         *" -lsfio "*)
4231                                 cat >> try.msg <<'EOQS'
4232 If $libs contains -lsfio, and sfio is mis-configured, then it
4233 sometimes (apparently) runs and exits with a 0 status, but with no
4234 output!  It may have to do with sfio's use of _exit vs. exit.
4235
4236 EOQS
4237                                 rp="You have a big problem.  Shall I abort Configure"
4238                                 dflt=y
4239                                 ;;
4240                         esac
4241                         ;;
4242                 esac
4243         else
4244                 echo "The program compiled OK, but exited with status $?." >>try.msg
4245                 rp="You have a problem.  Shall I abort Configure"
4246                 dflt=y
4247         fi
4248 else
4249         echo "I can't compile the test program." >>try.msg
4250         rp="You have a BIG problem.  Shall I abort Configure"
4251         dflt=y
4252 fi
4253 case "$dflt" in
4254 y)
4255         $cat try.msg >&4
4256         case "$knowitall" in
4257         '')
4258                 echo "(The supplied flags or libraries might be incorrect.)"
4259                 ;;
4260         *) dflt=n;;
4261         esac
4262         echo " "
4263         . ./myread
4264         case "$ans" in
4265         n*|N*) ;;
4266         *)      echo "Ok.  Stopping Configure." >&4
4267                 exit 1
4268                 ;;
4269         esac
4270         ;;
4271 n) echo "OK, that should do.";;
4272 esac
4273 $rm -f try try.* core
4274
4275 : determine filename position in cpp output
4276 echo " "
4277 echo "Computing filename position in cpp output for #include directives..." >&4
4278 echo '#include <stdio.h>' > foo.c
4279 $cat >fieldn <<EOF
4280 $startsh
4281 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4282 $grep '^[       ]*#.*stdio\.h' | \
4283 while read cline; do
4284         pos=1
4285         set \$cline
4286         while $test \$# -gt 0; do
4287                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4288                         echo "\$pos"
4289                         exit 0
4290                 fi
4291                 shift
4292                 pos=\`expr \$pos + 1\`
4293         done
4294 done
4295 EOF
4296 chmod +x fieldn
4297 fieldn=`./fieldn`
4298 $rm -f foo.c fieldn
4299 case $fieldn in
4300 '') pos='???';;
4301 1) pos=first;;
4302 2) pos=second;;
4303 3) pos=third;;
4304 *) pos="${fieldn}th";;
4305 esac
4306 echo "Your cpp writes the filename in the $pos field of the line."
4307
4308 : locate header file
4309 $cat >findhdr <<EOF
4310 $startsh
4311 wanted=\$1
4312 name=''
4313 if test -f $usrinc/\$wanted; then
4314         echo "$usrinc/\$wanted"
4315         exit 0
4316 fi
4317 awkprg='{ print \$$fieldn }'
4318 echo "#include <\$wanted>" > foo\$\$.c
4319 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4320 $grep "^[       ]*#.*\$wanted" | \
4321 while read cline; do
4322         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4323         case "\$name" in
4324         */\$wanted) echo "\$name"; exit 0;;
4325         *) name='';;
4326         esac;
4327 done;
4328 $rm -f foo\$\$.c;
4329 case "\$name" in
4330 '') exit 1;;
4331 esac
4332 EOF
4333 chmod +x findhdr
4334
4335 : define an alternate in-header-list? function
4336 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4337 cont=true; xxf="echo \"<\$1> found.\" >&4";
4338 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4339 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4340 esac;
4341 case $# in 4) instead=instead;; *) instead="at last";; esac;
4342 while $test "$cont"; do
4343         xxx=`./findhdr $1`
4344         var=$2; eval "was=\$$2";
4345         if $test "$xxx" && $test -r "$xxx";
4346         then eval $xxf;
4347         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4348                 cont="";
4349         else eval $xxnf;
4350         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4351         set $yyy; shift; shift; yyy=$@;
4352         case $# in 0) cont="";;
4353         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4354                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4355         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4356                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4357         esac;
4358 done;
4359 while $test "$yyy";
4360 do set $yyy; var=$2; eval "was=\$$2";
4361         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4362         set $yyy; shift; shift; yyy=$@;
4363 done'
4364
4365 : see if this is a malloc.h system
4366 set malloc.h i_malloc
4367 eval $inhdr
4368
4369 : see if stdlib is available
4370 set stdlib.h i_stdlib
4371 eval $inhdr
4372
4373 : determine which malloc to compile in
4374 echo " "
4375 case "$usemymalloc" in
4376 ''|[yY]*|true|$define)  dflt='y' ;;
4377 *)      dflt='n' ;;
4378 esac
4379 rp="Do you wish to attempt to use the malloc that comes with $package?"
4380 . ./myread
4381 usemymalloc="$ans"
4382 case "$ans" in
4383 y*|true)
4384         usemymalloc='y'
4385         mallocsrc='malloc.c'
4386         mallocobj="malloc$_o"
4387         d_mymalloc="$define"
4388         case "$libs" in
4389         *-lmalloc*)
4390                 : Remove malloc from list of libraries to use
4391                 echo "Removing unneeded -lmalloc from library list" >&4
4392                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4393                 shift
4394                 libs="$*"
4395                 echo "libs = $libs" >&4
4396                 ;;
4397         esac
4398         ;;
4399 *)
4400         usemymalloc='n'
4401         mallocsrc=''
4402         mallocobj=''
4403         d_mymalloc="$undef"
4404         ;;
4405 esac
4406
4407 : compute the return types of malloc and free
4408 echo " "
4409 $cat >malloc.c <<END
4410 #$i_malloc I_MALLOC
4411 #$i_stdlib I_STDLIB
4412 #include <stdio.h>
4413 #include <sys/types.h>
4414 #ifdef I_MALLOC
4415 #include <malloc.h>
4416 #endif
4417 #ifdef I_STDLIB
4418 #include <stdlib.h>
4419 #endif
4420 #ifdef TRY_MALLOC
4421 void *malloc();
4422 #endif
4423 #ifdef TRY_FREE
4424 void free();
4425 #endif
4426 END
4427 case "$malloctype" in
4428 '')
4429         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4430                 malloctype='void *'
4431         else
4432                 malloctype='char *'
4433         fi
4434         ;;
4435 esac
4436 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4437
4438 case "$freetype" in
4439 '')
4440         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4441                 freetype='void'
4442         else
4443                 freetype='int'
4444         fi
4445         ;;
4446 esac
4447 echo "Your system uses $freetype free(), it would seem." >&4
4448 $rm -f malloc.[co]
4449 : Cruising for prototypes
4450 echo " "
4451 echo "Checking out function prototypes..." >&4
4452 $cat >prototype.c <<'EOCP'
4453 int main(int argc, char *argv[]) {
4454         exit(0);}
4455 EOCP
4456 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4457         echo "Your C compiler appears to support function prototypes."
4458         val="$define"
4459 else
4460         echo "Your C compiler doesn't seem to understand function prototypes."
4461         val="$undef"
4462 fi
4463 set prototype
4464 eval $setvar
4465 $rm -f prototype*
4466
4467 case "$prototype" in
4468 "$define") ;;
4469 *)      ansi2knr='ansi2knr'
4470         echo " "
4471         cat <<EOM >&4
4472
4473 $me:  FATAL ERROR:
4474 This version of $package can only be compiled by a compiler that 
4475 understands function prototypes.  Unfortunately, your C compiler 
4476         $cc $ccflags
4477 doesn't seem to understand them.  Sorry about that.
4478
4479 If GNU cc is available for your system, perhaps you could try that instead.  
4480
4481 Eventually, we hope to support building Perl with pre-ANSI compilers.
4482 If you would like to help in that effort, please contact <perlbug@perl.org>.
4483
4484 Aborting Configure now.
4485 EOM
4486         exit 2
4487         ;;
4488 esac
4489
4490 : determine where public executables go
4491 echo " "
4492 set dflt bin bin
4493 eval $prefixit
4494 fn=d~
4495 rp='Pathname where the public executables will reside?'
4496 . ./getfile
4497 if $test "X$ansexp" != "X$binexp"; then
4498         installbin=''
4499 fi
4500 bin="$ans"
4501 binexp="$ansexp"
4502 if $afs; then
4503         $cat <<EOM
4504
4505 Since you are running AFS, I need to distinguish the directory in which
4506 executables reside from the directory in which they are installed (and from
4507 which they are presumably copied to the former directory by occult means).
4508
4509 EOM
4510         case "$installbin" in
4511         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4512         *) dflt="$installbin";;
4513         esac
4514         fn=de~
4515         rp='Where will public executables be installed?'
4516         . ./getfile
4517         installbin="$ans"
4518 else
4519         installbin="$binexp"
4520 fi
4521
4522 : determine whether to install perl also as /usr/bin/perl
4523
4524 echo " "
4525 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4526         $cat <<EOM
4527 Many scripts expect to perl to be installed as /usr/bin/perl.
4528 I can install the perl you are about to compile also as /usr/bin/perl
4529 (in addition to $installbin/perl).
4530 EOM
4531         case "$installusrbinperl" in
4532         "$undef"|[nN]*) dflt='n';;
4533         *)              dflt='y';;
4534         esac
4535         rp="Do you want to install perl as /usr/bin/perl?"
4536         . ./myread
4537         case "$ans" in
4538         [yY]*)  val="$define";;
4539         *)      val="$undef" ;;
4540         esac
4541 else
4542         val="$undef"
4543 fi
4544 set installusrbinperl
4545 eval $setvar
4546
4547 : define a shorthand compile call
4548 compile='
4549 mc_file=$1;
4550 shift;
4551 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4552 : define a shorthand compile call for compilations that should be ok.
4553 compile_ok='
4554 mc_file=$1;
4555 shift;
4556 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4557
4558 echo " "
4559 echo "Checking for GNU C Library..." >&4
4560 cat >gnulibc.c <<EOM
4561 #include <stdio.h>
4562 int main()
4563 {
4564 #ifdef __GLIBC__
4565     exit(0);
4566 #else
4567     exit(1);
4568 #endif
4569 }
4570 EOM
4571 set gnulibc
4572 if eval $compile_ok && ./gnulibc; then
4573         val="$define"
4574         echo "You are using the GNU C Library"
4575 else
4576         val="$undef"
4577         echo "You are not using the GNU C Library"
4578 fi
4579 $rm -f gnulibc*
4580 set d_gnulibc
4581 eval $setvar
4582
4583 : see if nm is to be used to determine whether a symbol is defined or not
4584 case "$usenm" in
4585 '')
4586         dflt=''
4587         case "$d_gnulibc" in
4588         "$define")
4589                 echo " "
4590                 echo "nm probably won't work on the GNU C Library." >&4
4591                 dflt=n
4592                 ;;
4593         esac
4594         case "$dflt" in
4595         '') 
4596                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4597                         echo " "
4598                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4599                         echo "'nm' won't be sufficient on this sytem." >&4
4600                         dflt=n
4601                 fi
4602                 ;;
4603         esac
4604         case "$dflt" in
4605         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4606                 if $test $dflt -gt 20; then
4607                         dflt=y
4608                 else
4609                         dflt=n
4610                 fi
4611                 ;;
4612         esac
4613         ;;
4614 *)
4615         case "$usenm" in
4616         true|$define) dflt=y;;
4617         *) dflt=n;;
4618         esac
4619         ;;
4620 esac
4621 $cat <<EOM
4622
4623 I can use $nm to extract the symbols from your C libraries. This
4624 is a time consuming task which may generate huge output on the disk (up
4625 to 3 megabytes) but that should make the symbols extraction faster. The
4626 alternative is to skip the 'nm' extraction part and to compile a small
4627 test program instead to determine whether each symbol is present. If
4628 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4629 this may be the best solution.
4630
4631 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4632
4633 EOM
4634 rp="Shall I use $nm to extract C symbols from the libraries?"
4635 . ./myread
4636 case "$ans" in
4637 [Nn]*) usenm=false;;
4638 *) usenm=true;;
4639 esac
4640
4641 runnm=$usenm
4642 case "$reuseval" in
4643 true) runnm=false;;
4644 esac
4645
4646 : nm options which may be necessary
4647 case "$nm_opt" in
4648 '') if $test -f /mach_boot; then
4649                 nm_opt=''       # Mach
4650         elif $test -d /usr/ccs/lib; then
4651                 nm_opt='-p'     # Solaris (and SunOS?)
4652         elif $test -f /dgux; then
4653                 nm_opt='-p'     # DG-UX
4654         elif $test -f /lib64/rld; then
4655                 nm_opt='-p'     # 64-bit Irix
4656         else
4657                 nm_opt=''
4658         fi;;
4659 esac
4660
4661 : nm options which may be necessary for shared libraries but illegal
4662 : for archive libraries.  Thank you, Linux.
4663 case "$nm_so_opt" in
4664 '')     case "$myuname" in
4665         *linux*)
4666                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4667                         nm_so_opt='--dynamic'
4668                 fi
4669                 ;;
4670         esac
4671         ;;
4672 esac
4673
4674 case "$runnm" in
4675 true)
4676 : get list of predefined functions in a handy place
4677 echo " "
4678 case "$libc" in
4679 '') libc=unknown
4680         case "$libs" in
4681         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4682         esac
4683         ;;
4684 esac
4685 libnames='';
4686 case "$libs" in
4687 '') ;;
4688 *)  for thislib in $libs; do
4689         case "$thislib" in
4690         -lc|-lc_s)
4691                 : Handle C library specially below.
4692                 ;;
4693         -l*)
4694                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4695                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4696                         :
4697                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4698                         :
4699                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4700                         :
4701                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4702                         :
4703                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4704                         :
4705                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4706                         :
4707                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4708                         :
4709                 else
4710                         try=''
4711                 fi
4712                 libnames="$libnames $try"
4713                 ;;
4714         *) libnames="$libnames $thislib" ;;
4715         esac
4716         done
4717         ;;
4718 esac
4719 xxx=normal
4720 case "$libc" in
4721 unknown)
4722         set /lib/libc.$so
4723         for xxx in $libpth; do
4724                 $test -r $1 || set $xxx/libc.$so
4725                 : The messy sed command sorts on library version numbers.
4726                 $test -r $1 || \
4727                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4728                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4729                                 h
4730                                 s/[0-9][0-9]*/0000&/g
4731                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4732                                 G
4733                                 s/\n/ /' | \
4734                          sort | $sed -e 's/^.* //'`
4735                 eval set \$$#
4736         done
4737         $test -r $1 || set /usr/ccs/lib/libc.$so
4738         $test -r $1 || set /lib/libsys_s$_a
4739         ;;
4740 *)
4741         set blurfl
4742         ;;
4743 esac
4744 if $test -r "$1"; then
4745         echo "Your (shared) C library seems to be in $1."
4746         libc="$1"
4747 elif $test -r /lib/libc && $test -r /lib/clib; then
4748         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4749         xxx=apollo
4750         libc='/lib/clib /lib/libc'
4751         if $test -r /lib/syslib; then
4752                 echo "(Your math library is in /lib/syslib.)"
4753                 libc="$libc /lib/syslib"
4754         fi
4755 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4756         echo "Your C library seems to be in $libc, as you said before."
4757 elif $test -r $incpath/usr/lib/libc$_a; then
4758         libc=$incpath/usr/lib/libc$_a;
4759         echo "Your C library seems to be in $libc.  That's fine."
4760 elif $test -r /lib/libc$_a; then
4761         libc=/lib/libc$_a;
4762         echo "Your C library seems to be in $libc.  You're normal."
4763 else
4764         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4765                 :
4766         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4767                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4768         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4769                 :
4770         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4771                 :
4772         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4773                 :
4774         else
4775                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4776         fi
4777         if $test -r "$tans"; then
4778                 echo "Your C library seems to be in $tans, of all places."
4779                 libc=$tans
4780         else
4781                 libc='blurfl'
4782         fi
4783 fi
4784 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4785         dflt="$libc"
4786         cat <<EOM
4787
4788 If the guess above is wrong (which it might be if you're using a strange
4789 compiler, or your machine supports multiple models), you can override it here.
4790
4791 EOM
4792 else
4793         dflt=''
4794         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4795         cat >&4 <<EOM
4796 I can't seem to find your C library.  I've looked in the following places:
4797
4798 EOM
4799         $sed 's/^/      /' libpath
4800         cat <<EOM
4801
4802 None of these seems to contain your C library. I need to get its name...
4803
4804 EOM
4805 fi
4806 fn=f
4807 rp='Where is your C library?'
4808 . ./getfile
4809 libc="$ans"
4810
4811 echo " "
4812 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4813 set X `cat libnames`
4814 shift
4815 xxx=files
4816 case $# in 1) xxx=file; esac
4817 echo "Extracting names from the following $xxx for later perusal:" >&4
4818 echo " "
4819 $sed 's/^/      /' libnames >&4
4820 echo " "
4821 $echo $n "This may take a while...$c" >&4
4822
4823 for file in $*; do
4824         case $file in
4825         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4826         *) $nm $nm_opt $file 2>/dev/null;;
4827         esac
4828 done >libc.tmp
4829
4830 $echo $n ".$c"
4831 $grep fprintf libc.tmp > libc.ptf
4832 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4833 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4834 xxx='[ADTSIW]'
4835 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4836         eval $xscan;\
4837         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4838                 eval $xrun
4839 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4840         eval $xscan;\
4841         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4842                 eval $xrun
4843 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4844         eval $xscan;\
4845         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4846                 eval $xrun
4847 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4848         eval $xscan;\
4849         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4850                 eval $xrun
4851 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4852         eval $xscan;\
4853         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4854                 eval $xrun
4855 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4856         eval $xscan;\
4857         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4858                 eval $xrun
4859 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4860                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4861         eval $xscan;\
4862         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4863                 eval $xrun
4864 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4865         eval $xscan;\
4866         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4867                 eval $xrun
4868 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4869         eval $xscan;\
4870         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4871                 eval $xrun
4872 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4873         eval $xscan;\
4874         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4875                 eval $xrun
4876 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4877         eval $xscan;\
4878         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4879                 eval $xrun
4880 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4881         eval $xscan;\
4882         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4883                 eval $xrun
4884 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4885         eval $xscan;\
4886         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4887                 eval $xrun
4888 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4889         eval $xscan;\
4890         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4891                 eval $xrun
4892 else
4893         $nm -p $* 2>/dev/null >libc.tmp
4894         $grep fprintf libc.tmp > libc.ptf
4895         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4896                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4897         then
4898                 nm_opt='-p'
4899                 eval $xrun
4900         else
4901                 echo " "
4902                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4903                 com=''
4904                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4905                         for thisname in $libnames $libc; do
4906                                 $ar t $thisname >>libc.tmp
4907                         done
4908                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4909                         echo "Ok." >&4
4910                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4911                         # Repeat libc to extract forwarders to DLL entries too
4912                         for thisname in $libnames $libc; do
4913                                 $ar tv $thisname >>libc.tmp
4914                                 # Revision 50 of EMX has bug in $ar.
4915                                 # it will not extract forwarders to DLL entries
4916                                 # Use emximp which will extract exactly them.
4917                                 emximp -o tmp.imp $thisname \
4918                                     2>/dev/null && \
4919                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4920                                     < tmp.imp >>libc.tmp
4921                                 $rm tmp.imp
4922                         done
4923                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4924                         echo "Ok." >&4
4925                 else
4926                         echo "$ar didn't seem to work right." >&4
4927                         echo "Maybe this is a Cray...trying bld instead..." >&4
4928                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4929                         then
4930                                 for thisname in $libnames; do
4931                                         bld t $libnames | \
4932                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4933                                         $ar t $thisname >>libc.tmp
4934                                 done
4935                                 echo "Ok." >&4
4936                         else
4937                                 echo "That didn't work either.  Giving up." >&4
4938                                 exit 1
4939                         fi
4940                 fi
4941         fi
4942 fi
4943 nm_extract="$com"
4944 if $test -f /lib/syscalls.exp; then
4945         echo " "
4946         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4947         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4948 fi
4949 ;;
4950 esac
4951 $rm -f libnames libpath
4952
4953 : see if dld is available
4954 set dld.h i_dld
4955 eval $inhdr
4956
4957 : is a C symbol defined?
4958 csym='tlook=$1;
4959 case "$3" in
4960 -v) tf=libc.tmp; tc=""; tdc="";;
4961 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4962 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4963 esac;
4964 tx=yes;
4965 case "$reuseval-$4" in
4966 true-) ;;
4967 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4968 esac;
4969 case "$tx" in
4970 yes)
4971         case "$runnm" in
4972         true)
4973                 if $contains $tlook $tf >/dev/null 2>&1;
4974                 then tval=true;
4975                 else tval=false;
4976                 fi;;
4977         *)
4978                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4979                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4980                 then tval=true;
4981                 else tval=false;
4982                 fi;
4983                 $rm -f t t.c;;
4984         esac;;
4985 *)
4986         case "$tval" in
4987         $define) tval=true;;
4988         *) tval=false;;
4989         esac;;
4990 esac;
4991 eval "$2=$tval"'
4992
4993 : define an is-in-libc? function
4994 inlibc='echo " "; td=$define; tu=$undef;
4995 sym=$1; var=$2; eval "was=\$$2";
4996 tx=yes;
4997 case "$reuseval$was" in
4998 true) ;;
4999 true*) tx=no;;
5000 esac;
5001 case "$tx" in
5002 yes)
5003         set $sym tres -f;
5004         eval $csym;
5005         case "$tres" in
5006         true)
5007                 echo "$sym() found." >&4;
5008                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5009         *)
5010                 echo "$sym() NOT found." >&4;
5011                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5012         esac;;
5013 *)
5014         case "$was" in
5015         $define) echo "$sym() found." >&4;;
5016         *) echo "$sym() NOT found." >&4;;
5017         esac;;
5018 esac'
5019
5020 : see if dlopen exists
5021 xxx_runnm="$runnm"
5022 runnm=false
5023 set dlopen d_dlopen
5024 eval $inlibc
5025 runnm="$xxx_runnm"
5026
5027 : determine which dynamic loading, if any, to compile in
5028 echo " "
5029 dldir="ext/DynaLoader"
5030 case "$usedl" in
5031 $define|y|true)
5032         dflt='y'
5033         usedl="$define"
5034         ;;
5035 $undef|n|false)
5036         dflt='n'
5037         usedl="$undef"
5038         ;;
5039 *) 
5040         dflt='n'
5041         case "$d_dlopen" in
5042             $define) dflt='y' ;;
5043         esac
5044         case "$i_dld" in
5045             $define) dflt='y' ;;
5046         esac
5047         : Does a dl_xxx.xs file exist for this operating system
5048         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5049         ;;
5050 esac
5051 rp="Do you wish to use dynamic loading?"
5052 . ./myread
5053 usedl="$ans"
5054 case "$ans" in
5055 y*) usedl="$define"
5056         case "$dlsrc" in
5057         '')
5058                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5059                         dflt="$dldir/dl_${osname}.xs"
5060                 elif $test "$d_dlopen" = "$define" ; then
5061                         dflt="$dldir/dl_dlopen.xs"
5062                 elif $test "$i_dld" = "$define" ; then
5063                         dflt="$dldir/dl_dld.xs"
5064                 else
5065                         dflt=''
5066                 fi
5067                 ;;
5068         *)      dflt="$dldir/$dlsrc"
5069                 ;;
5070         esac
5071     echo "The following dynamic loading files are available:"
5072         : Can not go over to $dldir because getfile has path hard-coded in.
5073         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5074         rp="Source file to use for dynamic loading"
5075         fn="fne"
5076         # XXX This getfile call will fail the existence check if you try 
5077         # building away from $src (this is not supported yet).
5078         . ./getfile
5079         usedl="$define"
5080         : emulate basename
5081         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5082
5083         $cat << EOM
5084
5085 Some systems may require passing special flags to $cc -c to
5086 compile modules that will be used to create a shared library.
5087 To use no flags, say "none".
5088
5089 EOM
5090     case "$cccdlflags" in
5091     '') case "$gccversion" in
5092                 '') case "$osname" in
5093                         hpux)   dflt='+z' ;;
5094                         next)   dflt='none' ;;
5095                         irix*)  dflt='-KPIC' ;;
5096                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5097                         sunos)  dflt='-pic' ;;
5098                         *)      dflt='none' ;;
5099                     esac
5100                         ;;
5101                 *)  case "$osname" in
5102                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5103                         *)      dflt='-fpic' ;;
5104                     esac ;;
5105             esac ;;
5106         ' ') dflt='none' ;;
5107     *)  dflt="$cccdlflags" ;;
5108     esac
5109     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5110     . ./myread
5111     case "$ans" in
5112     none) cccdlflags=' ' ;;
5113     *) cccdlflags="$ans" ;;
5114     esac
5115
5116     cat << EOM
5117
5118 Some systems use ld to create libraries that can be dynamically loaded,
5119 while other systems (such as those using ELF) use $cc.
5120
5121 EOM
5122         case "$ld" in
5123         '')     $cat >try.c <<'EOM'
5124 /* Test for whether ELF binaries are produced */
5125 #include <fcntl.h>
5126 #include <stdlib.h>
5127 int main() {
5128         char b[4];
5129         int i = open("a.out",O_RDONLY);
5130         if(i == -1) 
5131                 exit(1); /* fail */
5132         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5133                 exit(0); /* succeed (yes, it's ELF) */
5134         else
5135                 exit(1); /* fail */
5136 }
5137 EOM
5138                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5139                         cat <<EOM
5140 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5141 EOM
5142                         dflt="$cc"
5143                 else
5144                         echo "I'll use ld to build dynamic libraries."
5145                         dflt='ld'
5146                 fi
5147                 rm -f try.c a.out
5148                 ;;
5149         *)      dflt="$ld"
5150                 ;;
5151         esac
5152
5153     rp="What command should be used to create dynamic libraries?"
5154     . ./myread
5155         ld="$ans"
5156
5157     cat << EOM
5158
5159 Some systems may require passing special flags to $ld to create a
5160 library that can be dynamically loaded.  If your ld flags include
5161 -L/other/path options to locate libraries outside your loader's normal
5162 search path, you may need to specify those -L options here as well.  To
5163 use no flags, say "none".
5164
5165 EOM
5166     case "$lddlflags" in
5167     '') case "$osname" in
5168                         beos) dflt='-nostart' ;;
5169                         hpux)  dflt='-b' ;;
5170                         linux|irix*)    dflt='-shared' ;;
5171                         next)  dflt='none' ;;
5172                         solaris) dflt='-G' ;;
5173                         sunos) dflt='-assert nodefinitions' ;;
5174                         svr4*|esix*) dflt="-G $ldflags" ;;
5175                 *)     dflt='none' ;;
5176                         esac
5177                         ;;
5178     *) dflt="$lddlflags" ;;
5179     esac
5180
5181         : Try to guess additional flags to pick up local libraries.
5182         : Be careful not to append to a plain 'none'
5183         case "$dflt" in
5184         none) dflt='' ;;
5185         esac
5186         for thisflag in $ldflags; do
5187                 case "$thisflag" in
5188                 -L*)
5189                         case " $dflt " in
5190                         *" $thisflag "*) ;;
5191                         *) dflt="$dflt $thisflag" ;;
5192                         esac
5193                         ;;
5194                 esac
5195         done
5196
5197         case "$dflt" in
5198         ''|' ') dflt='none' ;;
5199         esac
5200
5201     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5202     . ./myread
5203     case "$ans" in
5204     none) lddlflags=' ' ;;
5205     *) lddlflags="$ans" ;;
5206     esac
5207
5208         cat <<EOM
5209
5210 Some systems may require passing special flags to $cc to indicate that
5211 the resulting executable will use dynamic linking.  To use no flags,
5212 say "none".
5213
5214 EOM
5215     case "$ccdlflags" in
5216     '') case "$osname" in
5217                 hpux)   dflt='-Wl,-E' ;;
5218                 linux)  dflt='-rdynamic' ;;
5219                 next)   dflt='none' ;;
5220                 sunos)  dflt='none' ;;
5221                 *)      dflt='none' ;;
5222             esac ;;
5223     ' ')  dflt='none' ;;
5224     *)  dflt="$ccdlflags" ;;
5225     esac
5226     rp="Any special flags to pass to $cc to use dynamic loading?"
5227     . ./myread
5228     case "$ans" in
5229     none) ccdlflags=' ' ;;
5230     *) ccdlflags="$ans" ;;
5231     esac
5232     ;;
5233 *)  usedl="$undef"
5234         ld='ld'
5235     dlsrc='dl_none.xs'
5236     lddlflags=''
5237     ccdlflags=''
5238     ;;
5239 esac
5240
5241 also=''
5242 case "$usedl" in
5243 $undef)
5244         # No dynamic loading being used, so don't bother even to prompt.
5245         useshrplib='false'
5246         ;;
5247 *)      case "$useshrplib" in
5248         '')     case "$osname" in
5249                 svr4*|dgux|dynixptx|esix|powerux|beos)
5250                         dflt=y
5251                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5252                         ;;
5253                 next*)
5254                         case "$osvers" in
5255                         4*)     dflt=y
5256                                 also='Building a shared libperl is needed for MAB support.'
5257                                 ;;
5258                         *)      dflt=n
5259                                 ;;
5260                         esac
5261                         ;;
5262                 *)      dflt=n
5263                         ;;
5264                 esac
5265                 ;;
5266         $define|true|[Yy]*)
5267                 dflt=y
5268                 ;;
5269         *)      dflt=n
5270                 ;;
5271         esac
5272         $cat << EOM
5273
5274 The perl executable is normally obtained by linking perlmain.c with
5275 libperl${_a}, any static extensions (usually just DynaLoader), and
5276 any other libraries needed on this system (such as -lm, etc.).  Since
5277 your system supports dynamic loading, it is probably possible to build
5278 a shared libperl.$so.  If you will have more than one executable linked
5279 to libperl.$so, this will significantly reduce the size of each
5280 executable, but it may have a noticeable affect on performance.  The
5281 default is probably sensible for your system.
5282 $also
5283
5284 EOM
5285         rp="Build a shared libperl.$so (y/n)"
5286         . ./myread
5287         case "$ans" in
5288         true|$define|[Yy]*)
5289                 useshrplib='true'
5290                 # Why does next4 have to be so different?
5291                 case "${osname}${osvers}" in
5292                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5293                 os2*)   xxx='' ;; # Nothing special needed.
5294                 beos*)  xxx='' ;;
5295                 *)              xxx='LD_LIBRARY_PATH' ;;
5296                 esac
5297                 if test X"$xxx" != "X"; then
5298                         $cat <<EOM  | $tee -a ../config.msg >&4
5299
5300 To build perl, you must add the current working directory to your
5301 $xxx environment variable before running make.  You can do
5302 this with
5303    $xxx=\`pwd\`:\$$xxx; export $xxx
5304 for Bourne-style shells, or
5305    setenv $xxx \`pwd\`
5306 for Csh-style shells.  You *MUST* do this before running make.
5307
5308 EOM
5309                 fi
5310                 ;;
5311         *)      useshrplib='false' ;;
5312         esac
5313         ;;
5314 esac
5315
5316 case "$useshrplib" in
5317 true)
5318         case "$libperl" in
5319         '')
5320                 # Figure out a good name for libperl.so.  Since it gets stored in
5321                 # a version-specific architecture-dependent library, the version
5322                 # number isn't really that important, except for making cc/ld happy.
5323                 #
5324                 # A name such as libperl.so.3.1
5325                 majmin="libperl.$so.$patchlevel.$subversion"
5326                 # A name such as libperl.so.301
5327                 majonly=`echo $patchlevel $subversion |
5328                         $awk '{printf "%d%02d", $1, $2}'`
5329                 majonly=libperl.$so.$majonly
5330                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5331                 # rely on figuring it out from the naming of libc.
5332                 case "${osname}${osvers}" in
5333                 next4*)
5334                         dflt=libperl.5.$so
5335                         # XXX How handle the --version stuff for MAB?
5336                         ;;
5337                 linux*)  # ld won't link with a bare -lperl otherwise.
5338                         dflt=libperl.$so
5339                         ;;
5340                 *)      # Try to guess based on whether libc has major.minor.
5341                         case "$libc" in
5342                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5343                         *libc.$so.[0-9]*) dflt=$majonly ;;
5344                         *)      dflt=libperl.$so ;;
5345                         esac
5346                         ;;
5347                 esac
5348                 ;;
5349         *)      dflt=$libperl
5350                 ;;
5351         esac
5352         cat << EOM
5353
5354 I need to select a good name for the shared libperl.  If your system uses
5355 library names with major and minor numbers, then you might want something
5356 like $majmin.  Alternatively, if your system uses a single version
5357 number for shared libraries, then you might want to use $majonly.
5358 Or, your system might be quite happy with a simple libperl.$so.
5359
5360 Since the shared libperl will get installed into a version-specific
5361 architecture-dependent directory, the version number of the shared perl
5362 library probably isn't important, so the default should be o.k.
5363
5364 EOM
5365         rp='What name do you want to give to the shared libperl?'
5366         . ./myread
5367         libperl=$ans
5368         echo "Ok, I'll use $libperl"
5369         ;;
5370 *)
5371         libperl="libperl${_a}"
5372         ;;
5373 esac
5374
5375 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5376 case "$shrpdir" in
5377 '') ;;
5378 *)      $cat >&4 <<EOM
5379 WARNING:  Use of the shrpdir variable for the installation location of
5380 the shared $libperl is not supported.  It was never documented and
5381 will not work in this version.  Let me (perlbug@perl.com)
5382 know of any problems this may cause.
5383
5384 EOM
5385         case "$shrpdir" in
5386         "$archlibexp/CORE")
5387                 $cat >&4 <<EOM
5388 But your current setting of $shrpdir is
5389 the default anyway, so it's harmless.
5390 EOM
5391                 ;;
5392         *)
5393                 $cat >&4 <<EOM
5394 Further, your current attempted setting of $shrpdir
5395 conflicts with the value of $archlibexp/CORE
5396 that installperl will use.
5397 EOM
5398                 ;;
5399         esac
5400         ;;
5401 esac
5402
5403 # How will the perl executable find the installed shared $libperl?
5404 # Add $xxx to ccdlflags.
5405 # If we can't figure out a command-line option, use $shrpenv to
5406 # set env LD_RUN_PATH.  The main perl makefile uses this.
5407 shrpdir=$archlibexp/CORE
5408 xxx=''
5409 tmp_shrpenv=''
5410 if "$useshrplib"; then
5411     case "$osname" in 
5412         aix)
5413                 # We'll set it in Makefile.SH...
5414                 ;;
5415         solaris|netbsd)
5416                 xxx="-R $shrpdir"
5417                 ;;
5418         freebsd)
5419                 xxx="-Wl,-R$shrpdir"
5420                 ;;
5421         linux|irix*|dec_osf)
5422                 xxx="-Wl,-rpath,$shrpdir"
5423                 ;;
5424         next)
5425                 # next doesn't like the default...
5426                 ;;
5427         beos)
5428                 # beos doesn't like the default, either.
5429                 ;;
5430         *)
5431                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5432                 ;;
5433         esac
5434         case "$xxx" in
5435         '') ;;
5436         *)      
5437                 # Only add $xxx if it isn't already in ccdlflags.
5438                 case " $ccdlflags " in
5439                 *" $xxx "*)     ;;
5440                 *)      ccdlflags="$ccdlflags $xxx"
5441                         cat <<EOM >&4
5442
5443 Adding $xxx to the flags
5444 passed to $ld so that the perl executable will find the 
5445 installed shared $libperl.
5446
5447 EOM
5448                         ;;
5449                 esac
5450                 ;;
5451         esac
5452 fi
5453 # Respect a hint or command-line value.
5454 case "$shrpenv" in
5455 '') shrpenv="$tmp_shrpenv" ;;
5456 esac
5457
5458 : determine where manual pages go
5459 set man1dir man1dir none
5460 eval $prefixit
5461 $cat <<EOM
5462
5463 $spackage has manual pages available in source form.
5464 EOM
5465 case "$nroff" in
5466 nroff)
5467         echo "However, you don't have nroff, so they're probably useless to you."
5468         case "$man1dir" in
5469         '') man1dir="none";;
5470         esac;;
5471 esac
5472 echo "If you don't want the manual sources installed, answer 'none'."
5473 case "$man1dir" in
5474 ' ') dflt=none
5475         ;;
5476 '')
5477         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5478         lookpath="$lookpath $prefixexp/man/p_man/man1"
5479         lookpath="$lookpath $prefixexp/man/u_man/man1"
5480         lookpath="$lookpath $prefixexp/man/man.1"
5481         case "$sysman" in
5482         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5483         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5484         esac
5485         set dflt
5486         eval $prefixup
5487         ;;
5488 *)  dflt="$man1dir"
5489         ;;
5490 esac
5491 echo " "
5492 fn=dn+~
5493 rp="Where do the main $spackage manual pages (source) go?"
5494 . ./getfile
5495 if $test "X$man1direxp" != "X$ansexp"; then
5496         installman1dir=''
5497 fi
5498 man1dir="$ans"
5499 man1direxp="$ansexp"
5500 case "$man1dir" in
5501 '') man1dir=' '
5502         installman1dir='';;
5503 esac
5504 if $afs; then
5505         $cat <<EOM
5506
5507 Since you are running AFS, I need to distinguish the directory in which
5508 manual pages reside from the directory in which they are installed (and from
5509 which they are presumably copied to the former directory by occult means).
5510
5511 EOM
5512         case "$installman1dir" in
5513         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5514         *) dflt="$installman1dir";;
5515         esac
5516         fn=de~
5517         rp='Where will man pages be installed?'
5518         . ./getfile
5519         installman1dir="$ans"
5520 else
5521         installman1dir="$man1direxp"
5522 fi
5523
5524 : What suffix to use on installed man pages
5525
5526 case "$man1dir" in
5527 ' ')
5528         man1ext='0'
5529         ;;
5530 *)
5531         rp="What suffix should be used for the main $spackage man pages?"
5532         case "$man1ext" in
5533         '')     case "$man1dir" in
5534                 *1)  dflt=1 ;;
5535                 *1p) dflt=1p ;;
5536                 *1pm) dflt=1pm ;;
5537                 *l) dflt=l;;
5538                 *n) dflt=n;;
5539                 *o) dflt=o;;
5540                 *p) dflt=p;;
5541                 *C) dflt=C;;
5542                 *L) dflt=L;;
5543                 *L1) dflt=L1;;
5544                 *) dflt=1;;
5545                 esac
5546                 ;;
5547         *)      dflt="$man1ext";;
5548         esac
5549         . ./myread
5550         man1ext="$ans"
5551         ;;
5552 esac
5553
5554 : see if we can have long filenames
5555 echo " "
5556 rmlist="$rmlist /tmp/cf$$"
5557 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5558 first=123456789abcdef
5559 second=/tmp/cf$$/$first
5560 $rm -f $first $second
5561 if (echo hi >$first) 2>/dev/null; then
5562         if $test -f 123456789abcde; then
5563                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5564                 val="$undef"
5565         else
5566                 if (echo hi >$second) 2>/dev/null; then
5567                         if $test -f /tmp/cf$$/123456789abcde; then
5568                                 $cat <<'EOM'
5569 That's peculiar... You can have filenames longer than 14 characters, but only
5570 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5571 I shall consider your system cannot support long filenames at all.
5572 EOM
5573                                 val="$undef"
5574                         else
5575                                 echo 'You can have filenames longer than 14 characters.' >&4
5576                                 val="$define"
5577                         fi
5578                 else
5579                         $cat <<'EOM'
5580 How confusing! Some of your filesystems are sane enough to allow filenames
5581 longer than 14 characters but some others like /tmp can't even think about them.
5582 So, for now on, I shall assume your kernel does not allow them at all.
5583 EOM
5584                         val="$undef"
5585                 fi
5586         fi
5587 else
5588         $cat <<'EOM'
5589 You can't have filenames longer than 14 chars.  You can't even think about them!
5590 EOM
5591         val="$undef"
5592 fi 
5593 set d_flexfnam
5594 eval $setvar
5595 $rm -rf /tmp/cf$$ 123456789abcde*
5596
5597 : determine where library module manual pages go
5598 set man3dir man3dir none
5599 eval $prefixit
5600 $cat <<EOM
5601
5602 $spackage has manual pages for many of the library modules.
5603 EOM
5604
5605 case "$nroff" in
5606 nroff)
5607         $cat <<'EOM'
5608 However, you don't have nroff, so they're probably useless to you.
5609 EOM
5610         case "$man3dir" in
5611         '') man3dir="none";;
5612         esac;;
5613 esac
5614
5615 case "$d_flexfnam" in
5616 undef)
5617         $cat <<'EOM'
5618 However, your system can't handle the long file names like File::Basename.3. 
5619 EOM
5620         case "$man3dir" in
5621         '') man3dir="none";;
5622         esac;;
5623 esac
5624
5625 echo "If you don't want the manual sources installed, answer 'none'."
5626 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5627 case "$man3dir" in
5628 '')     case "$prefix" in 
5629         *$prog*) dflt=`echo $man1dir | 
5630                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5631         *)      dflt="$privlib/man/man3" ;;
5632         esac
5633         ;;
5634 ' ') dflt=none;;
5635 *)      dflt="$man3dir" ;;
5636 esac
5637 echo " "
5638
5639 fn=dn+~
5640 rp="Where do the $package library man pages (source) go?"
5641 . ./getfile
5642 if test "X$man3direxp" != "X$ansexp"; then
5643         installman3dir=''
5644 fi
5645
5646 man3dir="$ans"
5647 man3direxp="$ansexp"
5648 case "$man3dir" in
5649 '') man3dir=' '
5650         installman3dir='';;
5651 esac
5652 if $afs; then
5653         $cat <<EOM
5654
5655 Since you are running AFS, I need to distinguish the directory in which
5656 manual pages reside from the directory in which they are installed (and from
5657 which they are presumably copied to the former directory by occult means).
5658
5659 EOM
5660         case "$installman3dir" in
5661         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5662         *) dflt="$installman3dir";;
5663         esac
5664         fn=de~
5665         rp='Where will man pages be installed?'
5666         . ./getfile
5667         installman3dir="$ans"
5668 else
5669         installman3dir="$man3direxp"
5670 fi
5671
5672 : What suffix to use on installed man pages
5673
5674 case "$man3dir" in
5675 ' ')
5676         man3ext='0'
5677         ;;
5678 *)
5679         rp="What suffix should be used for the $package library man pages?"
5680         case "$man3ext" in
5681         '')     case "$man3dir" in
5682                 *3)  dflt=3 ;;
5683                 *3p) dflt=3p ;;
5684                 *3pm) dflt=3pm ;;
5685                 *l) dflt=l;;
5686                 *n) dflt=n;;
5687                 *o) dflt=o;;
5688                 *p) dflt=p;;
5689                 *C) dflt=C;;
5690                 *L) dflt=L;;
5691                 *L3) dflt=L3;;
5692                 *) dflt=3;;
5693                 esac
5694                 ;;
5695         *)      dflt="$man3ext";;
5696         esac
5697         . ./myread
5698         man3ext="$ans"
5699         ;;
5700 esac
5701
5702 : see if we have to deal with yellow pages, now NIS.
5703 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5704         if $test -f /usr/etc/nibindd; then
5705                 echo " "
5706                 echo "I'm fairly confident you're on a NeXT."
5707                 echo " "
5708                 rp='Do you get the hosts file via NetInfo?'
5709                 dflt=y
5710                 case "$hostcat" in
5711                 nidump*) ;;
5712                 '') ;;
5713                 *) dflt=n;;
5714                 esac
5715                 . ./myread
5716                 case "$ans" in
5717                 y*) hostcat='nidump hosts .';;
5718                 *)      case "$hostcat" in
5719                         nidump*) hostcat='';;
5720                         esac
5721                         ;;
5722                 esac
5723         fi
5724         case "$hostcat" in
5725         nidump*) ;;
5726         *)
5727                 case "$hostcat" in
5728                 *ypcat*) dflt=y;;
5729                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5730                                 dflt=y
5731                         else
5732                                 dflt=n
5733                         fi;;
5734                 *) dflt=n;;
5735                 esac
5736                 echo " "
5737                 rp='Are you getting the hosts file via yellow pages?'
5738                 . ./myread
5739                 case "$ans" in
5740                 y*) hostcat='ypcat hosts';;
5741                 *) hostcat='cat /etc/hosts';;
5742                 esac
5743                 ;;
5744         esac
5745 fi
5746 case "$hostcat" in
5747 '') hostcat='cat /etc/hosts';;
5748 esac
5749 case "$groupcat" in
5750 '') groupcat='cat /etc/group';;
5751 esac
5752 case "$passcat" in
5753 '') passcat='cat /etc/passwd';;
5754 esac
5755
5756 : now get the host name
5757 echo " "
5758 echo "Figuring out host name..." >&4
5759 case "$myhostname" in
5760 '') cont=true
5761         echo 'Maybe "hostname" will work...'
5762         if tans=`sh -c hostname 2>&1` ; then
5763                 myhostname=$tans
5764                 phostname=hostname
5765                 cont=''
5766         fi
5767         ;;
5768 *) cont='';;
5769 esac
5770 if $test "$cont"; then
5771         if ./xenix; then
5772                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5773                 if tans=`cat /etc/systemid 2>&1` ; then
5774                         myhostname=$tans
5775                         phostname='cat /etc/systemid'
5776                         echo "Whadyaknow.  Xenix always was a bit strange..."
5777                         cont=''
5778                 fi
5779         elif $test -r /etc/systemid; then
5780                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5781         fi
5782 fi
5783 if $test "$cont"; then
5784         echo 'No, maybe "uuname -l" will work...'
5785         if tans=`sh -c 'uuname -l' 2>&1` ; then
5786                 myhostname=$tans
5787                 phostname='uuname -l'
5788         else
5789                 echo 'Strange.  Maybe "uname -n" will work...'
5790                 if tans=`sh -c 'uname -n' 2>&1` ; then
5791                         myhostname=$tans
5792                         phostname='uname -n'
5793                 else
5794                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5795                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5796                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5797                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5798                         else
5799                                 case "$myhostname" in
5800                                 '') echo "Does this machine have an identity crisis or something?"
5801                                         phostname='';;
5802                                 *)
5803                                         echo "Well, you said $myhostname before..."
5804                                         phostname='echo $myhostname';;
5805                                 esac
5806                         fi
5807                 fi
5808         fi
5809 fi
5810 : you do not want to know about this
5811 set $myhostname
5812 myhostname=$1
5813
5814 : verify guess
5815 if $test "$myhostname" ; then
5816         dflt=y
5817         rp='Your host name appears to be "'$myhostname'".'" Right?"
5818         . ./myread
5819         case "$ans" in
5820         y*) ;;
5821         *) myhostname='';;
5822         esac
5823 fi
5824
5825 : bad guess or no guess
5826 while $test "X$myhostname" = X ; do
5827         dflt=''
5828         rp="Please type the (one word) name of your host:"
5829         . ./myread
5830         myhostname="$ans"
5831 done
5832
5833 : translate upper to lower if necessary
5834 case "$myhostname" in
5835 *[A-Z]*)
5836         echo "(Normalizing case in your host name)"
5837         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5838         ;;
5839 esac
5840
5841 case "$myhostname" in
5842 *.*)
5843         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5844         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5845         echo "(Trimming domain name from host name--host name is now $myhostname)"
5846         ;;
5847 *) case "$mydomain" in
5848         '')
5849                 {
5850                         test "X$hostcat" = "Xypcat hosts" &&
5851                         ypmatch "$myhostname" hosts 2>/dev/null |\
5852                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5853                         $test -s hosts
5854                 } || {
5855                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5856                                         /[       ]$myhostname[  . ]/p" > hosts
5857                 }
5858                 tmp_re="[       . ]"
5859                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5860                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5861                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5862                         hosts | $sort | $uniq | \
5863                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5864                 case `$echo X$dflt` in
5865                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5866                         dflt=.
5867                         ;;
5868                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5869                         ;;
5870                 esac
5871                 case "$dflt" in
5872                 .)
5873                         tans=`./loc resolv.conf X /etc /usr/etc`
5874                         if $test -f "$tans"; then
5875                                 echo "(Attempting domain name extraction from $tans)"
5876                                 dflt=.`$sed -n -e 's/   / /g' \
5877                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5878                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5879                                 case "$dflt" in
5880                                 .) dflt=.`$sed -n -e 's/        / /g' \
5881                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5882                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5883                                         ;;
5884                                 esac
5885                         fi
5886                         ;;
5887                 esac
5888                 case "$dflt" in
5889                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5890                         dflt=.`sh -c domainname 2>/dev/null`
5891                         case "$dflt" in
5892                         '') dflt='.';;
5893                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5894                         esac
5895                         ;;
5896                 esac
5897                 case "$dflt" in
5898                 .) echo "(Lost all hope -- silly guess then)"
5899                         dflt='.uucp'
5900                         ;;
5901                 esac
5902                 $rm -f hosts
5903                 ;;
5904         *) dflt="$mydomain";;
5905         esac;;
5906 esac
5907 echo " "
5908 rp="What is your domain name?"
5909 . ./myread
5910 tans="$ans"
5911 case "$ans" in
5912 '') ;;
5913 .*) ;;
5914 *) tans=".$tans";;
5915 esac
5916 mydomain="$tans"
5917
5918 : translate upper to lower if necessary
5919 case "$mydomain" in
5920 *[A-Z]*)
5921         echo "(Normalizing case in your domain name)"
5922         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5923         ;;
5924 esac
5925
5926 : a little sanity check here
5927 case "$phostname" in
5928 '') ;;
5929 *)
5930         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5931         $myhostname$mydomain|$myhostname) ;;
5932         *)
5933                 case "$phostname" in
5934                 sed*)
5935                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5936                         ;;
5937                 *)
5938                         echo "(That doesn't agree with your $phostname command, by the way.)"
5939                         ;;
5940                 esac
5941         ;;
5942         esac
5943         ;;
5944 esac
5945
5946 $cat <<EOM
5947
5948 I need to get your e-mail address in Internet format if possible, i.e.
5949 something like user@host.domain. Please answer accurately since I have
5950 no easy means to double check it. The default value provided below
5951 is most probably close to the reality but may not be valid from outside
5952 your organization...
5953
5954 EOM
5955 cont=x
5956 while test "$cont"; do
5957         case "$cf_email" in
5958         '') dflt="$cf_by@$myhostname$mydomain";;
5959         *) dflt="$cf_email";;
5960         esac
5961         rp='What is your e-mail address?'
5962         . ./myread
5963         cf_email="$ans"
5964         case "$cf_email" in
5965         *@*.*) cont='' ;;
5966         *)
5967                 rp='Address does not look like an Internet one.  Use it anyway?'
5968                 case "$fastread" in
5969                 yes) dflt=y ;;
5970                 *) dflt=n ;;
5971                 esac
5972                 . ./myread
5973                 case "$ans" in
5974                 y*) cont='' ;;
5975                 *) echo " " ;;
5976                 esac
5977                 ;;
5978         esac
5979 done
5980
5981 $cat <<EOM
5982
5983 If you or somebody else will be maintaining perl at your site, please
5984 fill in the correct e-mail address here so that they may be contacted
5985 if necessary. Currently, the "perlbug" program included with perl
5986 will send mail to this address in addition to perlbug@perl.com. You may
5987 enter "none" for no administrator.
5988
5989 EOM
5990 case "$perladmin" in
5991 '') dflt="$cf_email";;
5992 *) dflt="$perladmin";;
5993 esac
5994 rp='Perl administrator e-mail address'
5995 . ./myread
5996 perladmin="$ans"
5997
5998 : figure out how to guarantee perl startup
5999 case "$startperl" in
6000 '')
6001         case "$sharpbang" in
6002         *!)
6003                 $cat <<EOH
6004
6005 I can use the #! construct to start perl on your system. This will
6006 make startup of perl scripts faster, but may cause problems if you
6007 want to share those scripts and perl is not in a standard place
6008 ($binexp/perl) on all your platforms. The alternative is to force
6009 a shell by starting the script with a single ':' character.
6010
6011 EOH
6012                 dflt="$binexp/perl"
6013                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6014                 . ./myread
6015                 case "$ans" in
6016                 none)   startperl=": # use perl";;
6017                 *)      startperl="#!$ans"
6018                         if $test 30 -lt `echo "$ans" | wc -c`; then
6019                                 $cat >&4 <<EOM
6020
6021 WARNING:  Some systems limit the #! command to 32 characters.
6022 If you experience difficulty running Perl scripts with #!, try
6023 installing Perl in a directory with a shorter pathname.
6024
6025 EOM
6026                         fi ;;
6027                 esac
6028                 ;;
6029         *) startperl=": # use perl"
6030                 ;;
6031         esac
6032         ;;
6033 esac
6034 echo "I'll use $startperl to start perl scripts."
6035
6036 : figure best path for perl in scripts
6037 case "$perlpath" in
6038 '')
6039         perlpath="$binexp/perl"
6040         case "$startperl" in
6041         *!*) ;;
6042         *)
6043                 $cat <<EOH
6044
6045 I will use the "eval 'exec'" idiom to start Perl on your system.
6046 I can use the full path of your Perl binary for this purpose, but
6047 doing so may cause problems if you want to share those scripts and
6048 Perl is not always in a standard place ($binexp/perl).
6049
6050 EOH
6051                 dflt="$binexp/perl"
6052                 rp="What path shall I use in \"eval 'exec'\"?"
6053                 . ./myread
6054                 perlpath="$ans"
6055                 ;;
6056         esac
6057         ;;
6058 esac
6059 case "$startperl" in
6060 *!*)    ;;
6061 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6062 esac
6063
6064 : determine where public executable scripts go
6065 set scriptdir scriptdir
6066 eval $prefixit
6067 case "$scriptdir" in
6068 '')
6069         dflt="$bin"
6070         : guess some guesses
6071         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6072         $test -d /usr/share/bin && dflt=/usr/share/bin
6073         $test -d /usr/local/script && dflt=/usr/local/script
6074         $test -d $prefixexp/script && dflt=$prefixexp/script
6075         set dflt
6076         eval $prefixup
6077         ;;
6078 *)  dflt="$scriptdir"
6079         ;;
6080 esac
6081 $cat <<EOM
6082  
6083 Some installations have a separate directory just for executable scripts so
6084 that they can mount it across multiple architectures but keep the scripts in
6085 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6086 Or you might just lump your scripts in with all your other executables.
6087  
6088 EOM
6089 fn=d~
6090 rp='Where do you keep publicly executable scripts?'
6091 . ./getfile
6092 if $test "X$ansexp" != "X$scriptdirexp"; then
6093         installscript=''
6094 fi
6095 scriptdir="$ans"
6096 scriptdirexp="$ansexp"
6097 if $afs; then
6098         $cat <<EOM
6099
6100 Since you are running AFS, I need to distinguish the directory in which
6101 scripts reside from the directory in which they are installed (and from
6102 which they are presumably copied to the former directory by occult means).
6103
6104 EOM
6105         case "$installscript" in
6106         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6107         *) dflt="$installscript";;
6108         esac
6109         fn=de~
6110         rp='Where will public scripts be installed?'
6111         . ./getfile
6112         installscript="$ans"
6113 else
6114         installscript="$scriptdirexp"
6115 fi
6116
6117 : determine where site specific libraries go.
6118 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6119 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6120 case "$prefix" in
6121 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6122 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6123 esac
6124 eval $prefixit
6125 $cat <<EOM
6126
6127 The installation process will also create a directory for
6128 site-specific extensions and modules.  Some users find it convenient
6129 to place all local files in this directory rather than in the main
6130 distribution directory.
6131
6132 EOM
6133 fn=d~+
6134 rp='Pathname for the site-specific library files?'
6135 . ./getfile
6136 if $test "X$sitelibexp" != "X$ansexp"; then
6137         installsitelib=''
6138 fi
6139 sitelib="$ans"
6140 sitelibexp="$ansexp"
6141 if $afs; then
6142         $cat <<EOM
6143
6144 Since you are running AFS, I need to distinguish the directory in
6145 which site-specific files reside from the directory in which they are
6146 installed (and from which they are presumably copied to the former
6147 directory by occult means).
6148
6149 EOM
6150         case "$installsitelib" in
6151         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6152         *) dflt="$installsitelib";;
6153         esac
6154         fn=de~
6155         rp='Where will site-specific files be installed?'
6156         . ./getfile
6157         installsitelib="$ans"
6158 else
6159         installsitelib="$sitelibexp"
6160 fi
6161
6162 : determine where site specific architecture-dependent libraries go.
6163 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6164 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6165 : sitelib may have an optional trailing /share.
6166 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6167 tdflt="$tdflt/$archname"
6168 set sitearch sitearch none
6169 eval $prefixit
6170 case "$sitearch" in
6171 '')     dflt="$tdflt" ;;
6172 *)      dflt="$sitearch" ;;
6173 esac
6174 $cat <<EOM
6175
6176 The installation process will also create a directory for
6177 architecture-dependent site-specific extensions and modules.
6178
6179 EOM
6180 fn=nd~+
6181 rp='Pathname for the site-specific architecture-dependent library files?'
6182 . ./getfile
6183 if $test "X$sitearchexp" != "X$ansexp"; then
6184         installsitearch=''
6185 fi
6186 sitearch="$ans"
6187 sitearchexp="$ansexp"
6188 if $afs; then
6189         $cat <<EOM
6190
6191 Since you are running AFS, I need to distinguish the directory in
6192 which site-specific architecture-dependent library files reside from
6193 the directory in which they are installed (and from which they are
6194 presumably copied to the former directory by occult means).
6195
6196 EOM
6197         case "$installsitearch" in
6198         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6199         *) dflt="$installsitearch";;
6200         esac
6201         fn=de~
6202         rp='Where will site-specific architecture-dependent files be installed?'
6203         . ./getfile
6204         installsitearch="$ans"
6205 else
6206         installsitearch="$sitearchexp"
6207 fi
6208
6209 cat <<EOM
6210
6211 Previous version of $package used the standard IO mechanisms as defined
6212 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6213 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6214 the default.  This abstraction layer can use AT&T's sfio (if you already
6215 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6216 problems with some extension modules.  Using PerlIO with stdio is safe,
6217 but it is slower than plain stdio and therefore is not the default.
6218
6219 If this doesn't make any sense to you, just accept the default 'n'.
6220 EOM
6221 case "$useperlio" in
6222 $define|true|[yY]*)     dflt='y';;
6223 *) dflt='n';;
6224 esac
6225 rp='Use the experimental PerlIO abstraction layer?'
6226 . ./myread
6227 case "$ans" in
6228 y|Y) 
6229         val="$define"
6230         ;;     
6231 *)      
6232         echo "Ok, doing things the stdio way"
6233         val="$undef"
6234         ;;
6235 esac
6236 set useperlio
6237 eval $setvar 
6238
6239 : Check how to convert floats to strings.
6240 if test "X$d_Gconvert" = X; then
6241         echo " "
6242         echo "Checking for an efficient way to convert floats to strings."
6243         $cat >try.c <<'EOP'
6244 #ifdef TRY_gconvert
6245 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6246 char *myname = "gconvert";
6247 #endif
6248 #ifdef TRY_gcvt
6249 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6250 char *myname = "gcvt";
6251 #endif
6252 #ifdef TRY_sprintf
6253 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6254 char *myname = "sprintf";
6255 #endif
6256
6257 #include <stdio.h>
6258
6259 int
6260 checkit(expect, got)
6261 char *expect;
6262 char *got;
6263 {
6264     if (strcmp(expect, got)) {
6265                 printf("%s oddity:  Expected %s, got %s\n",
6266                         myname, expect, got);
6267                 exit(1);
6268         }
6269 }
6270
6271 int main()
6272
6273         char buf[64]; 
6274         buf[63] = '\0';
6275
6276         /* This must be 1st test on (which?) platform */
6277         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6278         Gconvert(0.1, 8, 0, buf);
6279         checkit("0.1", buf);
6280
6281         Gconvert(1.0, 8, 0, buf); 
6282         checkit("1", buf);
6283
6284         Gconvert(0.0, 8, 0, buf); 
6285         checkit("0", buf);
6286
6287         Gconvert(-1.0, 8, 0, buf); 
6288         checkit("-1", buf);
6289
6290         /* Some Linux gcvt's give 1.e+5 here. */
6291         Gconvert(100000.0, 8, 0, buf); 
6292         checkit("100000", buf);
6293         
6294         /* Some Linux gcvt's give -1.e+5 here. */
6295         Gconvert(-100000.0, 8, 0, buf); 
6296         checkit("-100000", buf);
6297
6298         exit(0);
6299 }
6300 EOP
6301         case "$d_Gconvert" in
6302         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6303         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6304         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6305         *) xxx_list='gconvert gcvt sprintf' ;;
6306         esac
6307
6308         for xxx_convert in $xxx_list; do
6309                 echo "Trying $xxx_convert"
6310                 $rm -f try try$_o
6311                 set try -DTRY_$xxx_convert
6312                 if eval $compile; then
6313                         echo "$xxx_convert" found. >&4
6314                         if ./try; then
6315                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6316                                 break;
6317                         else
6318                                 echo "...But $xxx_convert didn't work as I expected."
6319                         fi
6320                 else
6321                         echo "$xxx_convert NOT found." >&4
6322                 fi
6323         done
6324                 
6325         case "$xxx_convert" in
6326         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6327         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6328         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6329         esac
6330 fi
6331
6332 : Initialize h_fcntl
6333 h_fcntl=false
6334
6335 : Initialize h_sysfile
6336 h_sysfile=false
6337
6338 : access call always available on UNIX
6339 set access d_access
6340 eval $inlibc
6341
6342 : locate the flags for 'access()'
6343 case "$d_access" in
6344 "$define")
6345         echo " "
6346         $cat >access.c <<'EOCP'
6347 #include <sys/types.h>
6348 #ifdef I_FCNTL
6349 #include <fcntl.h>
6350 #endif
6351 #ifdef I_SYS_FILE
6352 #include <sys/file.h>
6353 #endif
6354 #ifdef I_UNISTD
6355 #include <unistd.h>
6356 #endif
6357 int main() {
6358         exit(R_OK);
6359 }
6360 EOCP
6361         : check sys/file.h first, no particular reason here
6362         if $test `./findhdr sys/file.h` && \
6363                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6364                 h_sysfile=true;
6365                 echo "<sys/file.h> defines the *_OK access constants." >&4
6366         elif $test `./findhdr fcntl.h` && \
6367                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6368                 h_fcntl=true;
6369                 echo "<fcntl.h> defines the *_OK access constants." >&4
6370         elif $test `./findhdr unistd.h` && \
6371                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6372                 echo "<unistd.h> defines the *_OK access constants." >&4
6373         else
6374                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6375         fi
6376         ;;
6377 esac
6378 $rm -f access*
6379
6380 : see if accessx exists
6381 set accessx d_accessx
6382 eval $inlibc
6383
6384 : see if alarm exists
6385 set alarm d_alarm
6386 eval $inlibc
6387
6388 : Look for GNU-cc style attribute checking
6389 echo " "
6390 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6391 $cat >attrib.c <<'EOCP'
6392 #include <stdio.h>
6393 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6394 EOCP
6395 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6396         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6397                 echo "Your C compiler doesn't fully support __attribute__."
6398                 val="$undef"
6399         else
6400                 echo "Your C compiler supports __attribute__."
6401                 val="$define"
6402         fi
6403 else
6404         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6405         val="$undef"
6406 fi
6407 set d_attribut
6408 eval $setvar
6409 $rm -f attrib*
6410
6411 : see if bcmp exists
6412 set bcmp d_bcmp
6413 eval $inlibc
6414
6415 : see if bcopy exists
6416 set bcopy d_bcopy
6417 eval $inlibc
6418
6419 : see if this is a unistd.h system
6420 set unistd.h i_unistd
6421 eval $inhdr
6422
6423 : see if getpgrp exists
6424 set getpgrp d_getpgrp
6425 eval $inlibc
6426
6427 case "$d_getpgrp" in
6428 "$define")
6429         echo " "
6430         echo "Checking to see which flavor of getpgrp is in use..."
6431         $cat >set.c <<EOP
6432 #$i_unistd I_UNISTD
6433 #include <sys/types.h>
6434 #ifdef I_UNISTD
6435 #  include <unistd.h>
6436 #endif
6437 int main()
6438 {
6439         if (getuid() == 0) {
6440                 printf("(I see you are running Configure as super-user...)\n");
6441                 setuid(1);
6442         }
6443 #ifdef TRY_BSD_PGRP
6444         if (getpgrp(1) == 0)
6445                 exit(0);
6446 #else
6447         if (getpgrp() > 0)
6448                 exit(0);
6449 #endif
6450         exit(1);
6451 }
6452 EOP
6453         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6454                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6455                 val="$define"
6456         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6457                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6458                 val="$undef"
6459         else
6460                 echo "I can't seem to compile and run the test program."
6461                 if ./usg; then
6462                         xxx="a USG one, i.e. you use getpgrp()."
6463                 else
6464                         # SVR4 systems can appear rather BSD-ish.
6465                         case "$i_unistd" in
6466                         $undef)
6467                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6468                                 val="$define"
6469                                 ;;
6470                         $define)
6471                                 xxx="probably a USG one, i.e. you use getpgrp()."
6472                                 val="$undef"
6473                                 ;;
6474                         esac
6475                 fi
6476                 echo "Assuming your getpgrp is $xxx" >&4
6477         fi
6478         ;;
6479 *) val="$undef";;
6480 esac
6481 set d_bsdgetpgrp
6482 eval $setvar
6483 $rm -f set set.c
6484
6485 : see if setpgrp exists
6486 set setpgrp d_setpgrp
6487 eval $inlibc
6488
6489 case "$d_setpgrp" in
6490 "$define")
6491         echo " "
6492         echo "Checking to see which flavor of setpgrp is in use..."
6493         $cat >set.c <<EOP
6494 #$i_unistd I_UNISTD
6495 #include <sys/types.h>
6496 #ifdef I_UNISTD
6497 #  include <unistd.h>
6498 #endif
6499 int main()
6500 {
6501         if (getuid() == 0) {
6502                 printf("(I see you are running Configure as super-user...)\n");
6503                 setuid(1);
6504         }
6505 #ifdef TRY_BSD_PGRP
6506         if (-1 == setpgrp(1, 1))
6507                 exit(0);
6508 #else
6509         if (setpgrp() != -1)
6510                 exit(0);
6511 #endif
6512         exit(1);
6513 }
6514 EOP
6515         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6516                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6517                 val="$define"
6518         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6519                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6520                 val="$undef"
6521         else
6522                 echo "(I can't seem to compile and run the test program.)"
6523                 if ./usg; then
6524                         xxx="a USG one, i.e. you use setpgrp()."
6525                 else
6526                         # SVR4 systems can appear rather BSD-ish.
6527                         case "$i_unistd" in
6528                         $undef)
6529                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6530                                 val="$define"
6531                                 ;;
6532                         $define)
6533                                 xxx="probably a USG one, i.e. you use setpgrp()."
6534                                 val="$undef"
6535                                 ;;
6536                         esac
6537                 fi
6538                 echo "Assuming your setpgrp is $xxx" >&4
6539         fi
6540         ;;
6541 *) val="$undef";;
6542 esac
6543 set d_bsdsetpgrp
6544 eval $setvar
6545 $rm -f set set.c
6546 : see if bzero exists
6547 set bzero d_bzero
6548 eval $inlibc
6549
6550 : check for lengths of integral types
6551 echo " "
6552 case "$intsize" in
6553 '')
6554         echo "Checking to see how big your integers are..." >&4
6555         $cat >intsize.c <<'EOCP'
6556 #include <stdio.h>
6557 int main()
6558 {
6559         printf("intsize=%d;\n", sizeof(int));
6560         printf("longsize=%d;\n", sizeof(long));
6561         printf("shortsize=%d;\n", sizeof(short));
6562         exit(0);
6563 }
6564 EOCP
6565         set intsize
6566         if eval $compile_ok && ./intsize > /dev/null; then
6567                 eval `./intsize`
6568                 echo "Your integers are $intsize bytes long."
6569                 echo "Your long integers are $longsize bytes long."
6570                 echo "Your short integers are $shortsize bytes long."
6571         else
6572                 $cat >&4 <<EOM
6573 !
6574 Help! I can't compile and run the intsize test program: please enlighten me!
6575 (This is probably a misconfiguration in your system or libraries, and
6576 you really ought to fix it.  Still, I'll try anyway.)
6577 !
6578 EOM
6579                 dflt=4
6580                 rp="What is the size of an integer (in bytes)?"
6581                 . ./myread
6582                 intsize="$ans"
6583                 dflt=$intsize
6584                 rp="What is the size of a long integer (in bytes)?"
6585                 . ./myread
6586                 longsize="$ans"
6587                 dflt=2
6588                 rp="What is the size of a short integer (in bytes)?"
6589                 . ./myread
6590                 shortsize="$ans"
6591         fi
6592         ;;
6593 esac
6594 $rm -f intsize intsize.*
6595
6596 : see if signal is declared as pointer to function returning int or void
6597 echo " "
6598 xxx=`./findhdr signal.h`
6599 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6600 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6601         echo "You have int (*signal())() instead of void." >&4
6602         val="$undef"
6603 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6604         echo "You have void (*signal())()." >&4
6605         val="$define"
6606 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6607         echo "You have int (*signal())() instead of void." >&4
6608         val="$undef"
6609 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6610         echo "You have void (*signal())()." >&4
6611         val="$define"
6612 else
6613         case "$d_voidsig" in
6614         '')
6615         echo "I can't determine whether signal handler returns void or int..." >&4
6616                 dflt=void
6617                 rp="What type does your signal handler return?"
6618                 . ./myread
6619                 case "$ans" in
6620                 v*) val="$define";;
6621                 *) val="$undef";;
6622                 esac;;
6623         "$define")
6624                 echo "As you already told me, signal handler returns void." >&4
6625                 val="$define"
6626                 ;;
6627         *)      echo "As you already told me, signal handler returns int." >&4
6628                 val="$undef"
6629                 ;;
6630         esac
6631 fi
6632 set d_voidsig
6633 eval $setvar
6634 case "$d_voidsig" in
6635 "$define") signal_t="void";;
6636 *) signal_t="int";;
6637 esac
6638 $rm -f $$.tmp
6639
6640 : check for ability to cast large floats to 32-bit ints.
6641 echo " "
6642 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6643 if $test "$intsize" -ge 4; then
6644         xxx=int
6645 else
6646         xxx=long
6647 fi
6648 $cat >try.c <<EOCP
6649 #include <stdio.h>
6650 #include <sys/types.h>
6651 #include <signal.h>
6652 $signal_t blech(s) int s; { exit(3); }
6653 int main()
6654 {
6655         $xxx i32;
6656         double f, g;
6657         int result = 0;
6658         char str[16];
6659         signal(SIGFPE, blech);
6660
6661         /* Don't let compiler optimize the test away.  Store the number 
6662            in a writable string for gcc to pass to sscanf under HP/UX.
6663         */
6664         sprintf(str, "2147483647");
6665         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6666         g = 10 * f;
6667         i32  = ($xxx) g;
6668
6669         /* x86 processors will probably give 0x8000 0000, which is a
6670        sign change.  We don't want that.  We want to mimic SPARC
6671            behavior here, which is to preserve the sign and give
6672            back 0x7fff ffff.
6673         */
6674         if (i32 != ($xxx) f)
6675                 result |= 1;
6676         exit(result);
6677 }
6678 EOCP
6679 set try
6680 if eval $compile_ok; then
6681         ./try
6682         yyy=$?
6683 else
6684         echo "(I can't seem to compile the test program--assuming it can't)"
6685         yyy=1
6686 fi
6687 case "$yyy" in
6688 0)      val="$define"
6689         echo "Yup, it can."
6690         ;;
6691 *)      val="$undef"
6692         echo "Nope, it can't."
6693         ;;
6694 esac
6695 set d_casti32
6696 eval $setvar
6697 $rm -f try try.*
6698
6699 : check for ability to cast negative floats to unsigned
6700 echo " "
6701 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6702 $cat >try.c <<EOCP
6703 #include <stdio.h>
6704 #include <sys/types.h>
6705 #include <signal.h>
6706 $signal_t blech(s) int s; { exit(7); }
6707 $signal_t blech_in_list(s) int s; { exit(4); }
6708 unsigned long dummy_long(p) unsigned long p; { return p; }
6709 unsigned int dummy_int(p) unsigned int p; { return p; }
6710 unsigned short dummy_short(p) unsigned short p; { return p; }
6711 int main()
6712 {
6713         double f;
6714         unsigned long along;
6715         unsigned int aint;
6716         unsigned short ashort;
6717         int result = 0;
6718         char str[16];
6719         
6720         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6721            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6722            optimized the whole file away
6723         */
6724         /* Store the number in a writable string for gcc to pass to 
6725            sscanf under HP/UX.
6726         */
6727         sprintf(str, "-123");
6728         sscanf(str, "%lf", &f);  /* f = -123.; */
6729
6730         signal(SIGFPE, blech);
6731         along = (unsigned long)f;
6732         aint = (unsigned int)f;
6733         ashort = (unsigned short)f;
6734         if (along != (unsigned long)-123)
6735                 result |= 1;
6736         if (aint != (unsigned int)-123)
6737                 result |= 1;
6738         if (ashort != (unsigned short)-123)
6739                 result |= 1;
6740         sprintf(str, "1073741824.");
6741         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6742         f = f + f;
6743         along = 0;
6744         along = (unsigned long)f;
6745         if (along != 0x80000000)
6746                 result |= 2;
6747         f -= 1.;
6748         along = 0;
6749         along = (unsigned long)f;
6750         if (along != 0x7fffffff)
6751                 result |= 1;
6752         f += 2.;
6753         along = 0;
6754         along = (unsigned long)f;
6755         if (along != 0x80000001)
6756                 result |= 2;
6757         if (result)
6758                 exit(result);
6759         signal(SIGFPE, blech_in_list);
6760         sprintf(str, "123.");
6761         sscanf(str, "%lf", &f);  /* f = 123.; */
6762         along = dummy_long((unsigned long)f);
6763         aint = dummy_int((unsigned int)f);
6764         ashort = dummy_short((unsigned short)f);
6765         if (along != (unsigned long)123)
6766                 result |= 4;
6767         if (aint != (unsigned int)123)
6768                 result |= 4;
6769         if (ashort != (unsigned short)123)
6770                 result |= 4;
6771         exit(result);
6772
6773 }
6774 EOCP
6775 set try
6776 if eval $compile_ok; then
6777         ./try
6778         castflags=$?
6779 else
6780         echo "(I can't seem to compile the test program--assuming it can't)"
6781         castflags=7
6782 fi
6783 case "$castflags" in
6784 0)      val="$define"
6785         echo "Yup, it can."
6786         ;;
6787 *)      val="$undef"
6788         echo "Nope, it can't."
6789         ;;
6790 esac
6791 set d_castneg
6792 eval $setvar
6793 $rm -f try.*
6794
6795 : see if vprintf exists
6796 echo " "
6797 if set vprintf val -f d_vprintf; eval $csym; $val; then
6798         echo 'vprintf() found.' >&4
6799         val="$define"
6800         $cat >vprintf.c <<'EOF'
6801 #include <varargs.h>
6802
6803 int main() { xxx("foo"); }
6804
6805 xxx(va_alist)
6806 va_dcl
6807 {
6808         va_list args;
6809         char buf[10];
6810
6811         va_start(args);
6812         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6813 }
6814 EOF
6815         set vprintf
6816         if eval $compile && ./vprintf; then
6817                 echo "Your vsprintf() returns (int)." >&4
6818                 val2="$undef"
6819         else
6820                 echo "Your vsprintf() returns (char*)." >&4
6821                 val2="$define"
6822         fi
6823 else
6824         echo 'vprintf() NOT found.' >&4
6825                 val="$undef"
6826                 val2="$undef"
6827 fi
6828 set d_vprintf
6829 eval $setvar
6830 val=$val2
6831 set d_charvspr
6832 eval $setvar
6833
6834 : see if chown exists
6835 set chown d_chown
6836 eval $inlibc
6837
6838 : see if chroot exists
6839 set chroot d_chroot
6840 eval $inlibc
6841
6842 : see if chsize exists
6843 set chsize d_chsize
6844 eval $inlibc
6845
6846 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6847 while $test $# -ge 2; do
6848         case "$1" in
6849         $define) echo "#include <$2>";;
6850         esac ;
6851     shift 2;
6852 done > try.c;
6853 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6854 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6855         val="$define";
6856 else
6857         val="$undef";
6858 fi;
6859 set $varname;
6860 eval $setvar;
6861 $rm -f try.c try.o'
6862
6863 : see if this is a sys/uio.h system
6864 set sys/uio.h i_sysuio
6865 eval $inhdr
6866
6867 echo "Checking to see if your system supports struct iovec..." >&4
6868 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6869 eval $hasfield
6870 case "$d_iovec_s" in
6871 "$define")      echo "Yup, it does." >&4
6872                 ;;
6873 *)              echo "Nope, it doesn't." >&4
6874                 ;;
6875 esac
6876
6877 socketlib=''
6878 sockethdr=''
6879 : see whether socket exists
6880 echo " "
6881 $echo $n "Hmm... $c" >&4
6882 if set socket val -f d_socket; eval $csym; $val; then
6883         echo "Looks like you have Berkeley networking support." >&4
6884         d_socket="$define"
6885         if set setsockopt val -f; eval $csym; $val; then
6886                 d_oldsock="$undef"
6887         else
6888                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6889                 d_oldsock="$define"
6890         fi
6891 else
6892         if $contains socklib libc.list >/dev/null 2>&1; then
6893                 echo "Looks like you have Berkeley networking support." >&4
6894                 d_socket="$define"
6895                 : we will have to assume that it supports the 4.2 BSD interface
6896                 d_oldsock="$undef"
6897         else
6898                 echo "You don't have Berkeley networking in libc$_a..." >&4
6899                 if test "X$d_socket" = "X$define"; then
6900                    echo "...but you seem to believe that you have sockets." >&4
6901                 else
6902                         for net in net socket
6903                         do
6904                                 if test -f /usr/lib/lib$net$_a; then
6905                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6906                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6907                                         if $contains socket libc.list >/dev/null 2>&1; then
6908                                                 d_socket="$define"
6909                                                 socketlib="-l$net"
6910                                                 case "$net" in
6911                                                 net)
6912                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6913                                                         sockethdr="-I/usr/netinclude"
6914                                                         ;;
6915                                                 esac
6916                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6917                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6918                                                         d_oldsock="$undef"
6919                                                 else
6920                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6921                                                         d_oldsock="$define"
6922                                                 fi
6923                                                 break
6924                                         fi
6925                                 fi
6926                         done
6927                         if test "X$d_socket" != "X$define"; then
6928                            echo "or anywhere else I see." >&4
6929                            d_socket="$undef"
6930                            d_oldsock="$undef"
6931                         fi
6932                 fi
6933         fi
6934 fi
6935
6936 : see if socketpair exists
6937 set socketpair d_sockpair
6938 eval $inlibc
6939
6940
6941 echo " "
6942 echo "Checking the availability of certain socket constants..." >& 4
6943 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6944         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6945         $cat >try.c <<EOF
6946 #include <sys/types.h>
6947 #include <sys/socket.h>
6948 int main() {
6949     int i = $ENUM;
6950 }
6951 EOF
6952         val="$undef"
6953         set try; if eval $compile; then
6954                 val="$define"
6955         fi
6956         set d_${enum}; eval $setvar
6957         $rm -f try.c try
6958 done
6959
6960 set sendmsg d_sendmsg
6961 eval $inlibc
6962
6963 set recvmsg d_recvmsg
6964 eval $inlibc
6965
6966 echo " "
6967 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6968 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6969 eval $hasfield
6970 case "$d_msghdr_s" in
6971 "$define")      echo "Yup, it does." >&4
6972                 ;;
6973 *)              echo "Nope, it doesn't." >&4
6974                 ;;
6975 esac
6976
6977 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6978 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6979 eval $hasfield
6980 case "$d_cmsghdr_s" in
6981 "$define")      echo "Yup, it does." >&4
6982                 ;;
6983 *)              echo "Nope, it doesn't." >&4
6984                 ;;
6985 esac
6986
6987 : check for const keyword
6988 echo " "
6989 echo 'Checking to see if your C compiler knows about "const"...' >&4
6990 $cat >const.c <<'EOCP'
6991 typedef struct spug { int drokk; } spug;
6992 int main()
6993 {
6994         const char *foo;
6995         const spug y;
6996 }
6997 EOCP
6998 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6999         val="$define"
7000         echo "Yup, it does."
7001 else
7002         val="$undef"
7003         echo "Nope, it doesn't."
7004 fi
7005 set d_const
7006 eval $setvar
7007
7008 : see if crypt exists
7009 echo " "
7010 if set crypt val -f d_crypt; eval $csym; $val; then
7011         echo 'crypt() found.' >&4
7012         val="$define"
7013         cryptlib=''
7014 else
7015         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7016         if $test -z "$cryptlib"; then
7017                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7018         else
7019                 cryptlib=-lcrypt
7020         fi
7021         if $test -z "$cryptlib"; then
7022                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7023         else
7024                 cryptlib=-lcrypt
7025         fi
7026         if $test -z "$cryptlib"; then
7027                 cryptlib=`./loc libcrypt$_a "" $libpth`
7028         else
7029                 cryptlib=-lcrypt
7030         fi
7031         if $test -z "$cryptlib"; then
7032                 echo 'crypt() NOT found.' >&4
7033                 val="$undef"
7034         else
7035                 val="$define"
7036         fi
7037 fi
7038 set d_crypt
7039 eval $setvar
7040
7041 : get csh whereabouts
7042 case "$csh" in
7043 'csh') val="$undef" ;;
7044 *) val="$define" ;;
7045 esac
7046 set d_csh
7047 eval $setvar
7048 : Respect a hint or command line value for full_csh.
7049 case "$full_csh" in
7050 '') full_csh=$csh ;;
7051 esac
7052
7053 : see if cuserid exists
7054 set cuserid d_cuserid
7055 eval $inlibc
7056
7057 : see if this is a limits.h system
7058 set limits.h i_limits
7059 eval $inhdr
7060
7061 : see if this is a float.h system
7062 set float.h i_float
7063 eval $inhdr
7064
7065 : See if number of significant digits in a double precision number is known
7066 echo " "
7067 $cat >dbl_dig.c <<EOM
7068 #$i_limits I_LIMITS
7069 #$i_float I_FLOAT
7070 #ifdef I_LIMITS
7071 #include <limits.h>
7072 #endif
7073 #ifdef I_FLOAT
7074 #include <float.h>
7075 #endif
7076 #ifdef DBL_DIG
7077 printf("Contains DBL_DIG");
7078 #endif
7079 EOM
7080 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7081 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7082         echo "DBL_DIG found." >&4
7083         val="$define"
7084 else
7085         echo "DBL_DIG NOT found." >&4
7086         val="$undef"
7087 fi
7088 $rm -f dbl_dig.?
7089 set d_dbl_dig
7090 eval $setvar
7091
7092
7093 if $test X"$use64bits" = X"$define"; then
7094         : see if dbminit64 exists
7095         set dbminit64 d_dbminit64
7096         eval $inlibc
7097
7098         : see if dbmclose64 exists
7099         set dbmclose64 d_dbmclose64
7100         eval $inlibc
7101
7102         : see if fetch64 exists
7103         set fetch64 d_fetch64
7104         eval $inlibc
7105
7106         : see if store64 exists
7107         set store64 d_store64
7108         eval $inlibc
7109
7110         : see if delete64 exists
7111         set delete64 d_delete64
7112         eval $inlibc
7113
7114         : see if firstkey64 exists
7115         set firstkey64 d_firstkey64
7116         eval $inlibc
7117
7118         : see if nextkey64 exists
7119         set nextkey64 d_nextkey64
7120         eval $inlibc
7121 else
7122         val="$undef"
7123         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7124         do
7125                 set $xxx
7126                 eval $setvar
7127         done
7128 fi
7129
7130 : see if difftime exists
7131 set difftime d_difftime
7132 eval $inlibc
7133
7134 : see if sys/stat.h is available
7135 set sys/stat.h i_sysstat
7136 eval $inhdr
7137
7138 : see if this is a dirent system
7139 echo " "
7140 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7141         val="$define"
7142         echo "<dirent.h> found." >&4
7143 else
7144         val="$undef"
7145         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7146                 echo "<sys/dir.h> found." >&4
7147                 echo " "
7148         else
7149                 xinc=`./findhdr sys/ndir.h`
7150         fi
7151         echo "<dirent.h> NOT found." >&4
7152 fi
7153 set i_dirent
7154 eval $setvar
7155
7156 : Look for type of directory structure.
7157 echo " "
7158 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7159
7160 case "$direntrytype" in
7161 ''|' ')
7162         case "$i_dirent" in
7163         $define) guess1='struct dirent' ;;
7164         *) guess1='struct direct'  ;;
7165         esac
7166         ;;
7167 *)      guess1="$direntrytype"
7168         ;;
7169 esac
7170
7171 case "$guess1" in
7172 'struct dirent') guess2='struct direct' ;;
7173 *) guess2='struct dirent' ;;
7174 esac
7175                 
7176 if $contains "$guess1" try.c >/dev/null 2>&1; then
7177         direntrytype="$guess1"
7178         echo "Your directory entries are $direntrytype." >&4
7179 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7180         direntrytype="$guess2"
7181         echo "Your directory entries seem to be $direntrytype." >&4
7182 else
7183         echo "I don't recognize your system's directory entries." >&4
7184         rp="What type is used for directory entries on this system?"
7185         dflt="$guess1"
7186         . ./myread
7187         direntrytype="$ans"
7188 fi
7189 $rm -f try.c
7190
7191
7192 : see if the directory entry stores field length
7193 echo " "
7194 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7195 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7196         echo "Good, your directory entry keeps length information in d_namlen." >&4
7197         val="$define"
7198 else
7199         echo "Your directory entry does not know about the d_namlen field." >&4
7200         val="$undef"
7201 fi
7202 set d_dirnamlen
7203 eval $setvar
7204 $rm -f try.c
7205
7206
7207 if $test X"$use64bits" = X"$define"; then
7208         : see if fstat64 exists
7209         set fstat64 d_fstat64
7210         eval $inlibc
7211
7212         : see if ftruncate64 exists
7213         set ftruncate64 d_ftruncate64
7214         eval $inlibc
7215
7216         : see if lockf64 exists
7217         set lockf64 d_lockf64
7218         eval $inlibc
7219
7220         : see if lseek64 exists
7221         set lseek64 d_lseek64
7222         eval $inlibc
7223
7224         : see if lstat64 exists
7225         set lstat64 d_lstat64
7226         eval $inlibc
7227
7228         : see if open64 exists
7229         set open64 d_open64
7230         eval $inlibc
7231
7232         : see if opendir64 exists
7233         set opendir64 d_opendir64
7234         eval $inlibc
7235
7236         : see if readdir64 exists
7237         set readdir64 d_readdir64
7238         eval $inlibc
7239
7240         : see if seekdir64 exists
7241         set seekdir64 d_seekdir64
7242         eval $inlibc
7243
7244         : see if stat64 exists
7245         set stat64 d_stat64
7246         eval $inlibc
7247
7248         : see if telldir64 exists
7249         set telldir64 d_telldir64
7250         eval $inlibc
7251
7252         : see if truncate64 exists
7253         set truncate64 d_truncate64
7254         eval $inlibc
7255
7256         : check for off64_t
7257         echo " "
7258         echo $n "Checking to see if your system supports off64_t...$c" >&4
7259         $cat >try.c <<EOCP
7260 #include <sys/types.h>
7261 off64_t foo() { off64_t x; x = 7; return x; }'
7262 EOCP
7263         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7264                 val="$define"
7265                 echo " Yup, it does." >&4
7266         else
7267                 val="$undef"
7268                 echo " Nope, it doesn't." >&4
7269         fi
7270         $rm -f try.*
7271         set d_off64t
7272         eval $setvar
7273
7274         : check for ino64_t
7275         echo " "
7276         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7277         val="$undef"
7278         case "$i_sysstat" in
7279         "$define" )
7280                 $cat >try.c <<EOCP
7281 #include <sys/types.h>
7282 #include <sys/stat.h>
7283 ino64_t foo() { ino64_t x; x = 7; return x; }'
7284 EOCP
7285                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7286                         val="$define"
7287                 fi
7288                 $rm -f try.*
7289                 ;;
7290         esac
7291         if $test "X$val" = X"$define"; then
7292                 echo " Yup, it does." >&4
7293         else
7294                 echo " Nope, it doesn't." >&4
7295         fi
7296         set d_ino64t
7297         eval $setvar
7298
7299         : check for struct flock64
7300         echo " "
7301         echo "Checking to see if your system supports struct flock64..." >&4
7302         if $h_fcntl; then
7303                 set d_flock64_s flock64 l_len define fcntl.h
7304                 eval $hasfield
7305         else
7306                 val="$undef"
7307                 set d_flock64_s
7308                 eval $setvar
7309         fi
7310         case "$d_flock64_s" in
7311         "$define")      echo "Yup, it does." >&4
7312                         ;;
7313         *)              echo "Nope, it doesn't." >&4
7314                         ;;
7315         esac
7316
7317         : check for struct dirent64
7318         echo " "
7319         echo "Checking to see if your system supports struct dirent64..." >&4
7320         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7321         eval $hasfield
7322         case "$d_dirent64_s" in
7323         "$define")      echo "Yup, it does." >&4
7324                         ;;
7325         *)              echo "Nope, it doesn't." >&4
7326                         ;;
7327         esac
7328
7329 else
7330         val="$undef"
7331         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
7332         do
7333                 set $xxx
7334                 eval $setvar
7335         done
7336 fi
7337
7338 : see if dlerror exists
7339 xxx_runnm="$runnm"
7340 runnm=false
7341 set dlerror d_dlerror
7342 eval $inlibc
7343 runnm="$xxx_runnm"
7344
7345 : see if dlfcn is available
7346 set dlfcn.h i_dlfcn
7347 eval $inhdr
7348
7349 case "$usedl" in
7350 $define|y|true)
7351         $cat << EOM
7352
7353 On a few systems, the dynamically loaded modules that perl generates and uses
7354 will need a different extension than shared libs. The default will probably
7355 be appropriate.
7356
7357 EOM
7358         case "$dlext" in
7359         '')     dflt="$so" ;;
7360         *)      dflt="$dlext" ;;
7361         esac
7362         rp='What is the extension of dynamically loaded modules'
7363         . ./myread
7364         dlext="$ans"
7365         ;;
7366 *)
7367         dlext="none"
7368         ;;
7369 esac
7370
7371 : Check if dlsym need a leading underscore
7372 echo " "
7373 val="$undef"
7374
7375 case "$dlsrc" in
7376 dl_dlopen.xs)
7377         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7378         $cat >dyna.c <<'EOM'
7379 fred () { }
7380 EOM
7381
7382 $cat >fred.c<<EOM
7383
7384 #include <stdio.h>
7385 #$i_dlfcn I_DLFCN
7386 #ifdef I_DLFCN
7387 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7388 #else
7389 #include <sys/types.h>
7390 #include <nlist.h>
7391 #include <link.h>
7392 #endif
7393
7394 extern int fred() ;
7395
7396 int main()
7397 {
7398     void * handle ;
7399     void * symbol ;
7400 #ifndef RTLD_LAZY
7401     int mode = 1 ;
7402 #else
7403     int mode = RTLD_LAZY ;
7404 #endif
7405     handle = dlopen("./dyna.$dlext", mode) ;
7406     if (handle == NULL) {
7407         printf ("1\n") ;
7408         fflush (stdout) ;
7409         exit(0);
7410     }
7411     symbol = dlsym(handle, "fred") ;
7412     if (symbol == NULL) {
7413         /* try putting a leading underscore */
7414         symbol = dlsym(handle, "_fred") ;
7415         if (symbol == NULL) {
7416             printf ("2\n") ;
7417             fflush (stdout) ;
7418             exit(0);
7419         }
7420         printf ("3\n") ;
7421     }
7422     else
7423         printf ("4\n") ;
7424     fflush (stdout) ;
7425     exit(0);
7426 }
7427 EOM
7428         : Call the object file tmp-dyna.o in case dlext=o.
7429         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7430                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7431                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7432                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7433                 xxx=`./fred`
7434                 case $xxx in
7435                 1)      echo "Test program failed using dlopen." >&4
7436                         echo "Perhaps you should not use dynamic loading." >&4;;
7437                 2)      echo "Test program failed using dlsym." >&4
7438                         echo "Perhaps you should not use dynamic loading." >&4;;
7439                 3)      echo "dlsym needs a leading underscore" >&4
7440                         val="$define" ;;
7441                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7442                 esac
7443         else
7444                 echo "I can't compile and run the test program." >&4
7445         fi
7446         ;;
7447 esac
7448                 
7449 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7450
7451 set d_dlsymun
7452 eval $setvar
7453
7454 hasproto='varname=$1; func=$2; shift; shift;
7455 while $test $# -ge 2; do
7456         case "$1" in
7457         $define) echo "#include <$2>";;
7458         esac ;
7459     shift 2;
7460 done > try.c;
7461 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7462 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7463         echo "$func() prototype found.";
7464         val="$define";
7465 else
7466         echo "$func() prototype NOT found.";
7467         val="$undef";
7468 fi;
7469 set $varname;
7470 eval $setvar;
7471 $rm -f try.c tryout.c'
7472
7473 : see if prototype for drand48 is available
7474 echo " "
7475 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7476 eval $hasproto
7477
7478 : see if dup2 exists
7479 set dup2 d_dup2
7480 eval $inlibc
7481
7482 : see if eaccess exists
7483 set eaccess d_eaccess
7484 eval $inlibc
7485
7486 : see if endgrent exists
7487 set endgrent d_endgrent
7488 eval $inlibc
7489
7490 : see if endhostent exists
7491 set endhostent d_endhent
7492 eval $inlibc
7493
7494 : see if endnetent exists
7495 set endnetent d_endnent
7496 eval $inlibc
7497
7498 : see if endprotoent exists
7499 set endprotoent d_endpent
7500 eval $inlibc
7501
7502 : see if endpwent exists
7503 set endpwent d_endpwent
7504 eval $inlibc
7505
7506 : see if endservent exists
7507 set endservent d_endsent
7508 eval $inlibc
7509
7510 : Locate the flags for 'open()'
7511 echo " "
7512 $cat >open3.c <<'EOCP'
7513 #include <sys/types.h>
7514 #ifdef I_FCNTL
7515 #include <fcntl.h>
7516 #endif
7517 #ifdef I_SYS_FILE
7518 #include <sys/file.h>
7519 #endif
7520 int main() {
7521         if(O_RDONLY);
7522 #ifdef O_TRUNC
7523         exit(0);
7524 #else
7525         exit(1);
7526 #endif
7527 }
7528 EOCP
7529 : check sys/file.h first to get FREAD on Sun
7530 if $test `./findhdr sys/file.h` && \
7531                 set open3 -DI_SYS_FILE && eval $compile; then
7532         h_sysfile=true;
7533         echo "<sys/file.h> defines the O_* constants..." >&4
7534         if ./open3; then
7535                 echo "and you have the 3 argument form of open()." >&4
7536                 val="$define"
7537         else
7538                 echo "but not the 3 argument form of open().  Oh, well." >&4
7539                 val="$undef"
7540         fi
7541 elif $test `./findhdr fcntl.h` && \
7542                 set open3 -DI_FCNTL && eval $compile; then
7543         h_fcntl=true;
7544         echo "<fcntl.h> defines the O_* constants..." >&4
7545         if ./open3; then
7546                 echo "and you have the 3 argument form of open()." >&4
7547                 val="$define"
7548         else
7549                 echo "but not the 3 argument form of open().  Oh, well." >&4
7550                 val="$undef"
7551         fi
7552 else
7553         val="$undef"
7554         echo "I can't find the O_* constant definitions!  You got problems." >&4
7555 fi
7556 set d_open3
7557 eval $setvar
7558 $rm -f open3*
7559
7560 : check for non-blocking I/O stuff
7561 case "$h_sysfile" in
7562 true) echo "#include <sys/file.h>" > head.c;;
7563 *)
7564         case "$h_fcntl" in
7565         true) echo "#include <fcntl.h>" > head.c;;
7566         *) echo "#include <sys/fcntl.h>" > head.c;;
7567         esac
7568         ;;
7569 esac
7570 echo " "
7571 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7572 case "$o_nonblock" in
7573 '')
7574         $cat head.c > try.c
7575         $cat >>try.c <<'EOCP'
7576 int main() {
7577 #ifdef O_NONBLOCK
7578         printf("O_NONBLOCK\n");
7579         exit(0);
7580 #endif
7581 #ifdef O_NDELAY
7582         printf("O_NDELAY\n");
7583         exit(0);
7584 #endif
7585 #ifdef FNDELAY
7586         printf("FNDELAY\n");
7587         exit(0);
7588 #endif
7589         exit(0);
7590 }
7591 EOCP
7592         set try
7593         if eval $compile_ok; then
7594                 o_nonblock=`./try`
7595                 case "$o_nonblock" in
7596                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7597                 *) echo "Seems like we can use $o_nonblock.";;
7598                 esac
7599         else
7600                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7601         fi
7602         ;;
7603 *) echo "Using $hint value $o_nonblock.";;
7604 esac
7605 $rm -f try try.* .out core
7606
7607 echo " "
7608 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7609 case "$eagain" in
7610 '')
7611         $cat head.c > try.c
7612         $cat >>try.c <<EOCP
7613 #include <errno.h>
7614 #include <sys/types.h>
7615 #include <signal.h>
7616 #define MY_O_NONBLOCK $o_nonblock
7617 #ifndef errno  /* XXX need better Configure test */
7618 extern int errno;
7619 #endif
7620 $signal_t blech(x) int x; { exit(3); }
7621 EOCP
7622         $cat >> try.c <<'EOCP'
7623 int main()
7624 {
7625         int pd[2];
7626         int pu[2];
7627         char buf[1];
7628         char string[100];
7629
7630         pipe(pd);       /* Down: child -> parent */
7631         pipe(pu);       /* Up: parent -> child */
7632         if (0 != fork()) {
7633                 int ret;
7634                 close(pd[1]);   /* Parent reads from pd[0] */
7635                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7636                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7637                         exit(1);
7638                 signal(SIGALRM, blech);
7639                 alarm(5);
7640                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7641                         exit(2);
7642                 sprintf(string, "%d\n", ret);
7643                 write(2, string, strlen(string));
7644                 alarm(0);
7645 #ifdef EAGAIN
7646                 if (errno == EAGAIN) {
7647                         printf("EAGAIN\n");
7648                         goto ok;
7649                 }
7650 #endif
7651 #ifdef EWOULDBLOCK
7652                 if (errno == EWOULDBLOCK)
7653                         printf("EWOULDBLOCK\n");
7654 #endif
7655         ok:
7656                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7657                 sleep(2);                               /* Give it time to close our pipe */
7658                 alarm(5);
7659                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7660                 alarm(0);
7661                 sprintf(string, "%d\n", ret);
7662                 write(3, string, strlen(string));
7663                 exit(0);
7664         }
7665
7666         close(pd[0]);                   /* We write to pd[1] */
7667         close(pu[1]);                   /* We read from pu[0] */
7668         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7669         close(pd[1]);                   /* Pipe pd is now fully closed! */
7670         exit(0);                                /* Bye bye, thank you for playing! */
7671 }
7672 EOCP
7673         set try
7674         if eval $compile_ok; then
7675                 echo "$startsh" >mtry
7676                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7677                 chmod +x mtry
7678                 ./mtry >/dev/null 2>&1
7679                 case $? in
7680                 0) eagain=`$cat try.out`;;
7681                 1) echo "Could not perform non-blocking setting!";;
7682                 2) echo "I did a successful read() for something that was not there!";;
7683                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7684                 *) echo "Something terribly wrong happened during testing.";;
7685                 esac
7686                 rd_nodata=`$cat try.ret`
7687                 echo "A read() system call with no data present returns $rd_nodata."
7688                 case "$rd_nodata" in
7689                 0|-1) ;;
7690                 *)
7691                         echo "(That's peculiar, fixing that to be -1.)"
7692                         rd_nodata=-1
7693                         ;;
7694                 esac
7695                 case "$eagain" in
7696                 '')
7697                         echo "Forcing errno EAGAIN on read() with no data available."
7698                         eagain=EAGAIN
7699                         ;;
7700                 *)
7701                         echo "Your read() sets errno to $eagain when no data is available."
7702                         ;;
7703                 esac
7704                 status=`$cat try.err`
7705                 case "$status" in
7706                 0) echo "And it correctly returns 0 to signal EOF.";;
7707                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7708                 *) echo "However, your read() returns '$status' on EOF??";;
7709                 esac
7710                 val="$define"
7711                 if test "$status" = "$rd_nodata"; then
7712                         echo "WARNING: you can't distinguish between EOF and no data!"
7713                         val="$undef"
7714                 fi
7715         else
7716                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7717                 eagain=EAGAIN
7718         fi
7719         set d_eofnblk
7720         eval $setvar
7721         ;;
7722 *)
7723         echo "Using $hint value $eagain."
7724         echo "Your read() returns $rd_nodata when no data is present."
7725         case "$d_eofnblk" in
7726         "$define") echo "And you can see EOF because read() returns 0.";;
7727         "$undef") echo "But you can't see EOF status from read() returned value.";;
7728         *)
7729                 echo "(Assuming you can't see EOF status from read anyway.)"
7730                 d_eofnblk=$undef
7731                 ;;
7732         esac
7733         ;;
7734 esac
7735 $rm -f try try.* .out core head.c mtry
7736
7737 : see if fchmod exists
7738 set fchmod d_fchmod
7739 eval $inlibc
7740
7741 : see if fchown exists
7742 set fchown d_fchown
7743 eval $inlibc
7744
7745 : see if this is an fcntl system
7746 set fcntl d_fcntl
7747 eval $inlibc
7748
7749 : see if sys/select.h has to be included
7750 set sys/select.h i_sysselct
7751 eval $inhdr
7752
7753 : see if we should include time.h, sys/time.h, or both
7754 echo " "
7755 if test "X$timeincl" = X; then
7756         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7757         $echo $n "I'm now running the test program...$c"
7758         $cat >try.c <<'EOCP'
7759 #include <sys/types.h>
7760 #ifdef I_TIME
7761 #include <time.h>
7762 #endif
7763 #ifdef I_SYSTIME
7764 #ifdef SYSTIMEKERNEL
7765 #define KERNEL
7766 #endif
7767 #include <sys/time.h>
7768 #endif
7769 #ifdef I_SYSSELECT
7770 #include <sys/select.h>
7771 #endif
7772 int main()
7773 {
7774         struct tm foo;
7775 #ifdef S_TIMEVAL
7776         struct timeval bar;
7777 #endif
7778 #ifdef S_TIMEZONE
7779         struct timezone tzp;
7780 #endif
7781         if (foo.tm_sec == foo.tm_sec)
7782                 exit(0);
7783 #ifdef S_TIMEVAL
7784         if (bar.tv_sec == bar.tv_sec)
7785                 exit(0);
7786 #endif
7787         exit(1);
7788 }
7789 EOCP
7790         flags=''
7791         for s_timezone in '-DS_TIMEZONE' ''; do
7792         sysselect=''
7793         for s_timeval in '-DS_TIMEVAL' ''; do
7794         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7795         for i_time in '' '-DI_TIME'; do
7796         for i_systime in '-DI_SYSTIME' ''; do
7797                 case "$flags" in
7798                 '') $echo $n ".$c"
7799                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7800                         if eval $compile; then
7801                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7802                                 shift
7803                                 flags="$*"
7804                                 echo " "
7805                                 $echo $n "Succeeded with $flags$c"
7806                         fi
7807                         ;;
7808                 esac
7809         done
7810         done
7811         done
7812         done
7813         done
7814         timeincl=''
7815         echo " "
7816         case "$flags" in
7817         *SYSTIMEKERNEL*) i_systimek="$define"
7818                 timeincl=`./findhdr sys/time.h`
7819                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7820         *) i_systimek="$undef";;
7821         esac
7822         case "$flags" in
7823         *I_TIME*) i_time="$define"
7824                 timeincl=`./findhdr time.h`" $timeincl"
7825                 echo "We'll include <time.h>." >&4;;
7826         *) i_time="$undef";;
7827         esac
7828         case "$flags" in
7829         *I_SYSTIME*) i_systime="$define"
7830                 timeincl=`./findhdr sys/time.h`" $timeincl"
7831                 echo "We'll include <sys/time.h>." >&4;;
7832         *) i_systime="$undef";;
7833         esac
7834         $rm -f try.c try
7835 fi
7836
7837 : check for fd_set items
7838 $cat <<EOM
7839
7840 Checking to see how well your C compiler handles fd_set and friends ...
7841 EOM
7842 $cat >fd_set.c <<EOCP
7843 #$i_systime I_SYS_TIME
7844 #$i_sysselct I_SYS_SELECT
7845 #$d_socket HAS_SOCKET
7846 #include <sys/types.h>
7847 #ifdef HAS_SOCKET
7848 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7849 #endif
7850 #ifdef I_SYS_TIME
7851 #include <sys/time.h>
7852 #endif
7853 #ifdef I_SYS_SELECT
7854 #include <sys/select.h>
7855 #endif
7856 int main() {
7857         fd_set fds;
7858
7859 #ifdef TRYBITS
7860         if(fds.fds_bits);
7861 #endif
7862
7863 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7864         exit(0);
7865 #else
7866         exit(1);
7867 #endif
7868 }
7869 EOCP
7870 set fd_set -DTRYBITS
7871 if eval $compile; then
7872         d_fds_bits="$define"
7873         d_fd_set="$define"
7874         echo "Well, your system knows about the normal fd_set typedef..." >&4
7875         if ./fd_set; then
7876                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7877                 d_fd_macros="$define"
7878         else
7879                 $cat >&4 <<'EOM'
7880 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7881 EOM
7882                 d_fd_macros="$undef"
7883         fi
7884 else
7885         $cat <<'EOM'
7886 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7887 EOM
7888         set fd_set
7889         if eval $compile; then
7890                 d_fds_bits="$undef"
7891                 d_fd_set="$define"
7892                 echo "Well, your system has some sort of fd_set available..." >&4
7893                 if ./fd_set; then
7894                         echo "and you have the normal fd_set macros." >&4
7895                         d_fd_macros="$define"
7896                 else
7897                         $cat <<'EOM'
7898 but not the normal fd_set macros!  Gross!  More work for me...
7899 EOM
7900                         d_fd_macros="$undef"
7901                 fi
7902         else
7903         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7904                 d_fd_set="$undef"
7905                 d_fds_bits="$undef"
7906                 d_fd_macros="$undef"
7907         fi
7908 fi
7909 $rm -f fd_set*
7910
7911 : see if fgetpos exists
7912 set fgetpos d_fgetpos
7913 eval $inlibc
7914
7915
7916 if $test X"$use64bits" = X"$define"; then
7917         : see if fgetpos64 exists
7918         set fgetpos64 d_fgetpos64
7919         eval $inlibc
7920
7921         : see if fopen64 exists
7922         set freopen64 d_fopen64
7923         eval $inlibc
7924
7925         : see if freopen64 exists
7926         set freopen64 d_freopen64
7927         eval $inlibc
7928
7929         : see if fseek64 exists
7930         set fseek64 d_fseek64
7931         eval $inlibc
7932
7933         : see if fseeko64 exists
7934         set fseeko64 d_fseeko64
7935         eval $inlibc
7936
7937         : see if fsetpos64 exists
7938         set fsetpos64 d_fsetpos64
7939         eval $inlibc
7940
7941         : see if ftell64 exists
7942         set ftell64 d_ftell64
7943         eval $inlibc
7944
7945         : see if ftello64 exists
7946         set ftello64 d_ftello64
7947         eval $inlibc
7948
7949         : see if tmpfile64 exists
7950         set tmpfile64 d_tmpfile64
7951         eval $inlibc
7952 else
7953         val="$undef"
7954         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7955         do
7956                 set $xxx
7957                 eval $setvar
7958         done
7959 fi
7960
7961 : see if flock exists
7962 set flock d_flock
7963 eval $inlibc
7964
7965 : see if fork exists
7966 set fork d_fork
7967 eval $inlibc
7968
7969 : see if pathconf exists
7970 set pathconf d_pathconf
7971 eval $inlibc
7972
7973 : see if fpathconf exists
7974 set fpathconf d_fpathconf
7975 eval $inlibc
7976
7977 : see if fseeko exists
7978 set fseeko d_fseeko
7979 eval $inlibc
7980
7981 : see if fsetpos exists
7982 set fsetpos d_fsetpos
7983 eval $inlibc
7984
7985 : see if this is a sys/param system
7986 set sys/param.h i_sysparam
7987 eval $inhdr
7988
7989 : see if this is a sys/mount.h system
7990 set sys/mount.h i_sysmount
7991 eval $inhdr
7992
7993
7994 : see if statfs exists
7995 set statfs d_statfs
7996 eval $inlibc
7997
7998 : see if fstatfs exists
7999 set fstatfs d_fstatfs
8000 eval $inlibc
8001
8002 : see if statfs knows about mount flags
8003 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8004 eval $hasfield
8005
8006
8007 : see if statvfs exists
8008 set statvfs d_statvfs
8009 eval $inlibc
8010
8011 : see if fstatvfs exists
8012 set fstatvfs d_fstatvfs
8013 eval $inlibc
8014
8015
8016 : see if ftello exists
8017 set ftello d_ftello
8018 eval $inlibc
8019
8020 : see if getgrent exists
8021 set getgrent d_getgrent
8022 eval $inlibc
8023
8024 : see if gethostbyaddr exists
8025 set gethostbyaddr d_gethbyaddr
8026 eval $inlibc
8027
8028 : see if gethostbyname exists
8029 set gethostbyname d_gethbyname
8030 eval $inlibc
8031
8032 : see if gethostent exists
8033 set gethostent d_gethent
8034 eval $inlibc
8035
8036 : see how we will look up host name
8037 echo " "
8038 if false; then
8039         : dummy stub to allow use of elif
8040 elif set gethostname val -f d_gethname; eval $csym; $val; then
8041         echo 'gethostname() found.' >&4
8042         d_gethname="$define"
8043         call=gethostname
8044 elif set uname val -f d_uname; eval $csym; $val; then
8045         if ./xenix; then
8046                 $cat <<'EOM'
8047 uname() was found, but you're running xenix, and older versions of xenix
8048 have a broken uname(). If you don't really know whether your xenix is old
8049 enough to have a broken system call, use the default answer.
8050
8051 EOM
8052                 dflt=y
8053                 case "$d_uname" in
8054                 "$define") dflt=n;;
8055                 esac
8056                 rp='Is your uname() broken?'
8057                 . ./myread
8058                 case "$ans" in
8059                 n*) d_uname="$define"; call=uname;;
8060                 esac
8061         else
8062                 echo 'uname() found.' >&4
8063                 d_uname="$define"
8064                 call=uname
8065         fi
8066 fi
8067 case "$d_gethname" in
8068 '') d_gethname="$undef";;
8069 esac
8070 case "$d_uname" in
8071 '') d_uname="$undef";;
8072 esac
8073 case "$d_uname$d_gethname" in
8074 *define*)
8075         dflt=n
8076         cat <<EOM
8077  
8078 Every now and then someone has a $call() that lies about the hostname
8079 but can't be fixed for political or economic reasons.  If you wish, I can
8080 pretend $call() isn't there and maybe compute hostname at run-time
8081 thanks to the '$phostname' command.
8082
8083 EOM
8084         rp="Shall I ignore $call() from now on?"
8085         . ./myread
8086         case "$ans" in
8087         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8088         esac;;
8089 esac
8090 case "$phostname" in
8091 '') aphostname='';;
8092 *) case "$aphostname" in
8093         /*) ;;
8094         *) set X $phostname
8095                 shift
8096                 file=$1
8097                 shift
8098                 file=`./loc $file $file $pth`
8099                 aphostname=`echo $file $*`
8100                 ;;
8101         esac
8102         ;;
8103 esac
8104 case "$d_uname$d_gethname" in
8105 *define*) ;;
8106 *)
8107         case "$phostname" in
8108         '')
8109                 echo "There will be no way for $package to get your hostname." >&4;;
8110         *)
8111         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8112                 ;;
8113         esac;;
8114 esac
8115 case "$d_phostname" in
8116 '') d_phostname="$undef";;
8117 esac
8118
8119 : see if this is a netdb.h system
8120 set netdb.h i_netdb
8121 eval $inhdr
8122
8123 : see if prototypes for various gethostxxx netdb.h functions are available
8124 echo " "
8125 set d_gethostprotos gethostent $i_netdb netdb.h
8126 eval $hasproto
8127
8128 : see if getlogin exists
8129 set getlogin d_getlogin
8130 eval $inlibc
8131
8132 : see if getnetbyaddr exists
8133 set getnetbyaddr d_getnbyaddr
8134 eval $inlibc
8135
8136 : see if getnetbyname exists
8137 set getnetbyname d_getnbyname
8138 eval $inlibc
8139
8140 : see if getnetent exists
8141 set getnetent d_getnent
8142 eval $inlibc
8143
8144 : see if prototypes for various getnetxxx netdb.h functions are available
8145 echo " "
8146 set d_getnetprotos getnetent $i_netdb netdb.h
8147 eval $hasproto
8148
8149
8150 : see if getprotobyname exists
8151 set getprotobyname d_getpbyname
8152 eval $inlibc
8153
8154 : see if getprotobynumber exists
8155 set getprotobynumber d_getpbynumber
8156 eval $inlibc
8157
8158 : see if getprotoent exists
8159 set getprotoent d_getpent
8160 eval $inlibc
8161
8162 : see if getpgid exists
8163 set getpgid d_getpgid
8164 eval $inlibc
8165
8166 : see if getpgrp2 exists
8167 set getpgrp2 d_getpgrp2
8168 eval $inlibc
8169
8170 : see if getppid exists
8171 set getppid d_getppid
8172 eval $inlibc
8173
8174 : see if getpriority exists
8175 set getpriority d_getprior
8176 eval $inlibc
8177
8178 : see if prototypes for various getprotoxxx netdb.h functions are available
8179 echo " "
8180 set d_getprotoprotos getprotoent $i_netdb netdb.h
8181 eval $hasproto
8182
8183 : see if getpwent exists
8184 set getpwent d_getpwent
8185 eval $inlibc
8186
8187
8188 : see if getservbyname exists
8189 set getservbyname d_getsbyname
8190 eval $inlibc
8191
8192 : see if getservbyport exists
8193 set getservbyport d_getsbyport
8194 eval $inlibc
8195
8196 : see if getservent exists
8197 set getservent d_getsent
8198 eval $inlibc
8199
8200 : see if prototypes for various getservxxx netdb.h functions are available
8201 echo " "
8202 set d_getservprotos getservent $i_netdb netdb.h
8203 eval $hasproto
8204
8205 : see if gettimeofday or ftime exists
8206 set gettimeofday d_gettimeod
8207 eval $inlibc
8208 case "$d_gettimeod" in
8209 "$undef")
8210         set ftime d_ftime 
8211         eval $inlibc
8212         ;;
8213 *)
8214         val="$undef"; set d_ftime; eval $setvar
8215         ;;
8216 esac
8217 case "$d_gettimeod$d_ftime" in
8218 "$undef$undef")
8219         echo " "
8220         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8221         ;;
8222 esac
8223
8224 : see if this is an grp system
8225 set grp.h i_grp
8226 eval $inhdr
8227
8228 case "$i_grp" in
8229 $define)
8230         xxx=`./findhdr grp.h`
8231         $cppstdin $cppflags $cppminus < $xxx >$$.h
8232
8233         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8234                 val="$define"
8235         else
8236                 val="$undef"
8237         fi
8238         set d_grpasswd
8239         eval $setvar
8240
8241         $rm -f $$.h
8242         ;;
8243 *)
8244         val="$undef";
8245         set d_grpasswd; eval $setvar
8246         ;;
8247 esac
8248
8249 : see if this is a netinet/in.h or sys/in.h system
8250 set netinet/in.h i_niin sys/in.h i_sysin
8251 eval $inhdr
8252
8253 : see if arpa/inet.h has to be included
8254 set arpa/inet.h i_arpainet
8255 eval $inhdr
8256
8257 : see if htonl --and friends-- exists
8258 val=''
8259 set htonl val
8260 eval $inlibc
8261
8262 : Maybe they are macros.
8263 case "$val" in
8264 $undef)
8265         $cat >htonl.c <<EOM
8266 #include <stdio.h>
8267 #include <sys/types.h>
8268 #$i_niin I_NETINET_IN
8269 #$i_sysin I_SYS_IN
8270 #$i_arpainet I_ARPA_INET
8271 #ifdef I_NETINET_IN
8272 #include <netinet/in.h>
8273 #endif
8274 #ifdef I_SYS_IN
8275 #include <sys/in.h>
8276 #endif
8277 #ifdef I_ARPA_INET
8278 #include <arpa/inet.h>
8279 #endif
8280 #ifdef htonl
8281 printf("Defined as a macro.");
8282 #endif
8283 EOM
8284         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8285         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8286                 val="$define"
8287                 echo "But it seems to be defined as a macro." >&4
8288         fi
8289         $rm -f htonl.?
8290         ;;
8291 esac
8292 set d_htonl
8293 eval $setvar
8294
8295 : see which of string.h or strings.h is needed
8296 echo " "
8297 strings=`./findhdr string.h`
8298 if $test "$strings" && $test -r "$strings"; then
8299         echo "Using <string.h> instead of <strings.h>." >&4
8300         val="$define"
8301 else
8302         val="$undef"
8303         strings=`./findhdr strings.h`
8304         if $test "$strings" && $test -r "$strings"; then
8305                 echo "Using <strings.h> instead of <string.h>." >&4
8306         else
8307                 echo "No string header found -- You'll surely have problems." >&4
8308         fi
8309 fi
8310 set i_string
8311 eval $setvar
8312 case "$i_string" in
8313 "$undef") strings=`./findhdr strings.h`;;
8314 *)        strings=`./findhdr string.h`;;
8315 esac
8316
8317 : index or strchr
8318 echo " "
8319 if set index val -f; eval $csym; $val; then
8320         if set strchr val -f d_strchr; eval $csym; $val; then
8321                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8322                         val="$define"
8323                         vali="$undef"
8324                         echo "strchr() found." >&4
8325                 else
8326                         val="$undef"
8327                         vali="$define"
8328                         echo "index() found." >&4
8329                 fi
8330         else
8331                 val="$undef"
8332                 vali="$define"
8333                 echo "index() found." >&4
8334         fi
8335 else
8336         if set strchr val -f d_strchr; eval $csym; $val; then
8337                 val="$define"
8338                 vali="$undef"
8339                 echo "strchr() found." >&4
8340         else
8341                 echo "No index() or strchr() found!" >&4
8342                 val="$undef"
8343                 vali="$undef"
8344         fi
8345 fi
8346 set d_strchr; eval $setvar
8347 val="$vali"
8348 set d_index; eval $setvar
8349
8350 : check whether inet_aton exists
8351 set inet_aton d_inetaton
8352 eval $inlibc
8353
8354 : see if inttypes.h is available
8355 : we want a real compile instead of Inhdr because some systems
8356 : have an inttypes.h which includes non-existent headers
8357 echo " "
8358 $cat >try.c <<EOCP
8359 #include <inttypes.h>
8360 int main() {
8361         static int32_t foo32 = 0x12345678;
8362 }
8363 EOCP
8364 set try
8365 if eval $compile; then
8366         echo "<inttypes.h> found." >&4
8367         val="$define"
8368 else
8369         echo "<inttypes.h> NOT found." >&4
8370         val="$undef"
8371 fi
8372 $rm -f try.c try
8373 set i_inttypes
8374 eval $setvar
8375
8376 : check for int64_t
8377 case "$use64bits" in
8378 "$define" )
8379         echo " "
8380         echo $n "Checking to see if your system supports int64_t...$c" >&4
8381         $cat >try.c <<EOCP
8382 #include <sys/types.h>
8383 #$i_inttypes I_INTTYPES
8384 #ifdef I_INTTYPES
8385 #include <inttypes.h>
8386 #endif
8387 int64_t foo() { int64_t x; x = 7; return x; }
8388 EOCP
8389         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8390                 val="$define"
8391                 echo " Yup, it does." >&4
8392         else
8393                 val="$undef"
8394                 echo " Nope, it doesn't." >&4
8395         fi
8396         $rm -f try.*
8397         ;;
8398 *)      val="$undef"
8399         ;;
8400 esac
8401 set d_int64t
8402 eval $setvar
8403
8404
8405 : Look for isascii
8406 echo " "
8407 $cat >isascii.c <<'EOCP'
8408 #include <stdio.h>
8409 #include <ctype.h>
8410 int main() {
8411         int c = 'A';
8412         if (isascii(c))
8413                 exit(0);
8414         else
8415                 exit(1);
8416 }
8417 EOCP
8418 set isascii
8419 if eval $compile; then
8420         echo "isascii() found." >&4
8421         val="$define"
8422 else
8423         echo "isascii() NOT found." >&4
8424         val="$undef"
8425 fi
8426 set d_isascii
8427 eval $setvar
8428 $rm -f isascii*
8429
8430 : see if killpg exists
8431 set killpg d_killpg
8432 eval $inlibc
8433
8434 : see if lchown exists
8435 echo " "
8436 $cat > try.c <<'EOCP'
8437 /* System header to define __stub macros and hopefully few prototypes,
8438     which can conflict with char lchown(); below.  */
8439 #include <assert.h>
8440 /* Override any gcc2 internal prototype to avoid an error.  */
8441 /* We use char because int might match the return type of a gcc2
8442    builtin and then its argument prototype would still apply.  */
8443 char lchown();
8444 int main() {
8445     /*  The GNU C library defines this for functions which it implements
8446         to always fail with ENOSYS.  Some functions are actually named
8447         something starting with __ and the normal name is an alias.  */
8448 #if defined (__stub_lchown) || defined (__stub___lchown)
8449 choke me
8450 #else
8451 lchown();
8452 #endif
8453 ; return 0; }
8454 EOCP
8455 set try
8456 if eval $compile; then
8457     $echo "lchown() found." >&4
8458     val="$define"
8459 else
8460     $echo "lchown() NOT found." >&4
8461     val="$undef"
8462 fi
8463 set d_lchown
8464 eval $setvar
8465
8466 : see if link exists
8467 set link d_link
8468 eval $inlibc
8469
8470 : see if localeconv exists
8471 set localeconv d_locconv
8472 eval $inlibc
8473
8474 : see if lockf exists
8475 set lockf d_lockf
8476 eval $inlibc
8477
8478 : check for length of double
8479 echo " "
8480 case "$doublesize" in
8481 '')
8482         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8483         $cat >try.c <<'EOCP'
8484 #include <stdio.h>
8485 int main()
8486 {
8487         printf("%d\n", sizeof(double));
8488 }
8489 EOCP
8490         set try
8491         if eval $compile_ok; then
8492                 doublesize=`./try`
8493                 $echo " $doublesize bytes." >&4
8494         else
8495                 dflt='8'
8496                 echo "(I can't seem to compile the test program.  Guessing...)"
8497                 rp="What is the size of a double precision number (in bytes)?"
8498                 . ./myread
8499                 doublesize="$ans"
8500         fi
8501         ;;
8502 esac
8503 $rm -f try.c try
8504
8505 : check for long doubles
8506 echo " "
8507 echo $n "Checking to see if your system supports long doubles...$c" >&4
8508 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8509 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8510         val="$define"
8511         echo " Yup, it does." >&4
8512 else
8513         val="$undef"
8514         echo " Nope, it doesn't." >&4
8515 fi
8516 $rm try.*
8517 set d_longdbl
8518 eval $setvar
8519
8520 : check for length of long double
8521 case "${d_longdbl}${longdblsize}" in
8522 $define)
8523         echo " "
8524         $echo $n "Checking to see how big your long doubles are...$c" >&4
8525         $cat >try.c <<'EOCP'
8526 #include <stdio.h>
8527 int main()
8528 {
8529         printf("%d\n", sizeof(long double));
8530 }
8531 EOCP
8532         set try
8533         if eval $compile; then
8534                 longdblsize=`./try`
8535                 $echo " $longdblsize bytes." >&4
8536         else
8537                 dflt='8'
8538                 echo " "
8539                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8540                 rp="What is the size of a long double (in bytes)?"
8541                 . ./myread
8542                 longdblsize="$ans"
8543         fi
8544         if $test "X$doublesize" = "X$longdblsize"; then
8545                 echo "(That isn't any different from an ordinary double.)"
8546         fi      
8547         ;;
8548 esac
8549 $rm -f try.c try
8550
8551 : check for long long
8552 echo " "
8553 echo $n "Checking to see if your system supports long long...$c" >&4
8554 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8555 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8556         val="$define"
8557         echo " Yup, it does." >&4
8558 else
8559         val="$undef"
8560         echo " Nope, it doesn't." >&4
8561 fi
8562 $rm try.*
8563 set d_longlong
8564 eval $setvar
8565
8566 : check for length of long long
8567 case "${d_longlong}${longlongsize}" in
8568 $define)
8569         echo " "
8570         $echo $n "Checking to see how big your long longs are...$c" >&4
8571         $cat >try.c <<'EOCP'
8572 #include <stdio.h>
8573 int main()
8574 {
8575         printf("%d\n", sizeof(long long));
8576 }
8577 EOCP
8578         set try
8579         if eval $compile_ok; then
8580                 longlongsize=`./try`
8581                 $echo " $longlongsize bytes." >&4
8582         else
8583                 dflt='8'
8584                 echo " "
8585                 echo "(I can't seem to compile the test program.  Guessing...)"
8586                 rp="What is the size of a long long (in bytes)?"
8587                 . ./myread
8588                 longlongsize="$ans"
8589         fi
8590         if $test "X$longsize" = "X$longlongsize"; then
8591                 echo "(That isn't any different from an ordinary long.)"
8592         fi      
8593         ;;
8594 esac
8595 $rm -f try.c try
8596
8597 : see if lstat exists
8598 set lstat d_lstat
8599 eval $inlibc
8600
8601 : see if mblen exists
8602 set mblen d_mblen
8603 eval $inlibc
8604
8605 : see if mbstowcs exists
8606 set mbstowcs d_mbstowcs
8607 eval $inlibc
8608
8609 : see if mbtowc exists
8610 set mbtowc d_mbtowc
8611 eval $inlibc
8612
8613 : see if memcmp exists
8614 set memcmp d_memcmp
8615 eval $inlibc
8616
8617 : see if memcpy exists
8618 set memcpy d_memcpy
8619 eval $inlibc
8620
8621 : see if memmove exists
8622 set memmove d_memmove
8623 eval $inlibc
8624
8625 : see if memset exists
8626 set memset d_memset
8627 eval $inlibc
8628
8629 : see if mkdir exists
8630 set mkdir d_mkdir
8631 eval $inlibc
8632
8633 : see if mkfifo exists
8634 set mkfifo d_mkfifo
8635 eval $inlibc
8636
8637 : see if mktime exists
8638 set mktime d_mktime
8639 eval $inlibc
8640
8641 : see if msgctl exists
8642 set msgctl d_msgctl
8643 eval $inlibc
8644
8645 : see if msgget exists
8646 set msgget d_msgget
8647 eval $inlibc
8648
8649 : see if msgsnd exists
8650 set msgsnd d_msgsnd
8651 eval $inlibc
8652
8653 : see if msgrcv exists
8654 set msgrcv d_msgrcv
8655 eval $inlibc
8656
8657 : see how much of the 'msg*(2)' library is present.
8658 h_msg=true
8659 echo " "
8660 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8661 *"$undef"*) h_msg=false;;
8662 esac
8663 case "$osname" in
8664 freebsd)
8665     case "`ipcs 2>&1`" in
8666     "SVID messages"*"not configured"*)
8667         echo "Your $osname does not have the msg*(2) configured." >&4
8668         h_msg=false
8669         val="$undef"
8670         set msgctl d_msgctl
8671         eval $setvar
8672         set msgget d_msgget
8673         eval $setvar
8674         set msgsnd d_msgsnd
8675         eval $setvar
8676         set msgrcv d_msgrcv
8677         eval $setvar
8678         ;;
8679     esac
8680     ;;
8681 esac
8682 : we could also check for sys/ipc.h ...
8683 if $h_msg && $test `./findhdr sys/msg.h`; then
8684         echo "You have the full msg*(2) library." >&4
8685         val="$define"
8686 else
8687         echo "You don't have the full msg*(2) library." >&4
8688         val="$undef"
8689 fi
8690 set d_msg
8691 eval $setvar
8692
8693 : see if nice exists
8694 set nice d_nice
8695 eval $inlibc
8696
8697 : how to create joinable pthreads
8698 if test "X$usethreads" = "X$define"; then
8699         echo " "
8700         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8701         $cat >try.c <<'EOCP'
8702 #include <pthread.h>
8703 int main() {
8704     int detachstate = JOINABLE;
8705 }
8706 EOCP
8707         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8708         if eval $compile; then
8709                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8710                 val="$undef" # Yes, undef.
8711                 set d_old_pthread_create_joinable
8712                 eval $setvar
8713                 val=""
8714                 set old_pthread_create_joinable
8715                 eval $setvar
8716         else
8717                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8718                 if eval $compile; then
8719                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8720                         val="$define"
8721                         set d_old_pthread_create_joinable
8722                         eval $setvar
8723                         val=PTHREAD_CREATE_UNDETACHED
8724                         set old_pthread_create_joinable
8725                         eval $setvar
8726                 else            
8727                         set try -DJOINABLE=__UNDETACHED
8728                         if eval $compile; then
8729                                 echo "You seem to use __UNDETACHED." >&2
8730                                 val="$define"
8731                                 set d_old_pthread_create_joinable
8732                                 eval $setvar
8733                                 val=__UNDETACHED
8734                                 set old_pthread_create_joinable
8735                                 eval $setvar
8736                         else
8737                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
8738                                 val="$define"
8739                                 set d_old_pthread_create_joinable
8740                                 eval $setvar
8741                                 val=0
8742                                 set old_pthread_create_joinable
8743                                 eval $setvar
8744                         fi
8745                 fi
8746         fi
8747         $rm -f try try.*
8748 else
8749     d_old_pthread_create_joinable="$undef"
8750     old_pthread_create_joinable=""
8751 fi
8752
8753 : see if pause exists
8754 set pause d_pause
8755 eval $inlibc
8756
8757 : see if pipe exists
8758 set pipe d_pipe
8759 eval $inlibc
8760
8761 : see if poll exists
8762 set poll d_poll
8763 eval $inlibc
8764
8765
8766 : see whether the various POSIXish _yields exist
8767 $cat >try.c <<EOP
8768 #include <pthread.h>
8769 #include <stdio.h>
8770 int main() {
8771 #ifdef SCHED_YIELD
8772         sched_yield();
8773 #else
8774 #ifdef PTHREAD_YIELD
8775         pthread_yield();
8776 #else
8777 #ifdef PTHREAD_YIELD_NULL
8778         pthread_yield(NULL);
8779 #endif
8780 #endif
8781 #endif
8782 }
8783 EOP
8784 : see if sched_yield exists
8785 set try -DSCHED_YIELD
8786 if eval $compile; then
8787     val="$define"
8788     sched_yield='sched_yield()'
8789 else
8790     val="$undef"
8791 fi
8792 case "$usethreads" in
8793 $define)
8794         case "$val" in
8795         $define) echo 'sched_yield() found.' >&4        ;;
8796         *)       echo 'sched_yield() NOT found.' >&4    ;;
8797         esac
8798 esac
8799 set d_sched_yield
8800 eval $setvar
8801
8802 : see if pthread_yield exists
8803 set try -DPTHREAD_YIELD
8804 if eval $compile; then
8805     val="$define"
8806     case "$sched_yield" in
8807     '') sched_yield='pthread_yield()' ;;
8808     esac
8809 else
8810     set try -DPTHREAD_YIELD_NULL
8811     if eval $compile; then
8812         val="$define"
8813         case "$sched_yield" in
8814         '') sched_yield='pthread_yield(NULL)' ;;
8815         esac
8816     else
8817         val="$undef"
8818     fi
8819 fi
8820 case "$usethreads" in
8821 $define)
8822         case "$val" in
8823         $define) echo 'pthread_yield() found.' >&4      ;;
8824         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8825         esac
8826         ;;
8827 esac
8828 set d_pthread_yield
8829 eval $setvar
8830
8831 case "$sched_yield" in
8832 '') sched_yield=undef ;;
8833 esac
8834
8835 $rm -f try try.*
8836
8837 : see if this is a pwd.h system
8838 set pwd.h i_pwd
8839 eval $inhdr
8840
8841 case "$i_pwd" in
8842 $define)
8843         xxx=`./findhdr pwd.h`
8844         $cppstdin $cppflags $cppminus < $xxx >$$.h
8845
8846         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8847                 val="$define"
8848         else
8849                 val="$undef"
8850         fi
8851         set d_pwquota
8852         eval $setvar
8853
8854         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8855                 val="$define"
8856         else
8857                 val="$undef"
8858         fi
8859         set d_pwage
8860         eval $setvar
8861
8862         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8863                 val="$define"
8864         else
8865                 val="$undef"
8866         fi
8867         set d_pwchange
8868         eval $setvar
8869
8870         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8871                 val="$define"
8872         else
8873                 val="$undef"
8874         fi
8875         set d_pwclass
8876         eval $setvar
8877
8878         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8879                 val="$define"
8880         else
8881                 val="$undef"
8882         fi
8883         set d_pwexpire
8884         eval $setvar
8885
8886         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8887                 val="$define"
8888         else
8889                 val="$undef"
8890         fi
8891         set d_pwcomment
8892         eval $setvar
8893
8894         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8895                 val="$define"
8896         else
8897                 val="$undef"
8898         fi
8899         set d_pwgecos
8900         eval $setvar
8901
8902         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8903                 val="$define"
8904         else
8905                 val="$undef"
8906         fi
8907         set d_pwpasswd
8908         eval $setvar
8909
8910         $rm -f $$.h
8911         ;;
8912 *)
8913         val="$undef"; 
8914         set d_pwquota; eval $setvar
8915         set d_pwage; eval $setvar
8916         set d_pwchange; eval $setvar
8917         set d_pwclass; eval $setvar
8918         set d_pwexpire; eval $setvar
8919         set d_pwcomment; eval $setvar
8920         set d_pwgecos; eval $setvar
8921         set d_pwpasswd; eval $setvar
8922         ;;
8923 esac
8924
8925 : see if readdir and friends exist
8926 set readdir d_readdir
8927 eval $inlibc
8928 set seekdir d_seekdir
8929 eval $inlibc
8930 set telldir d_telldir
8931 eval $inlibc
8932 set rewinddir d_rewinddir
8933 eval $inlibc
8934
8935 : see if readlink exists
8936 set readlink d_readlink
8937 eval $inlibc
8938
8939 : see if readv exists
8940 set readv d_readv
8941 eval $inlibc
8942
8943 : see if rename exists
8944 set rename d_rename
8945 eval $inlibc
8946
8947 : see if rmdir exists
8948 set rmdir d_rmdir
8949 eval $inlibc
8950
8951 : see if memory.h is available.
8952 val=''
8953 set memory.h val
8954 eval $inhdr
8955
8956 : See if it conflicts with string.h
8957 case "$val" in
8958 $define)
8959         case "$strings" in
8960         '') ;;
8961         *)
8962                 $cppstdin $cppflags $cppminus < $strings > mem.h
8963                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8964                         echo " "
8965                         echo "We won't be including <memory.h>."
8966                         val="$undef"
8967                 fi
8968                 $rm -f mem.h
8969                 ;;
8970         esac
8971 esac
8972 set i_memory
8973 eval $setvar
8974
8975 : can bcopy handle overlapping blocks?
8976 val="$undef"
8977 case "$d_bcopy" in
8978 "$define")
8979         echo " "
8980         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8981         $cat >try.c <<EOCP
8982 #$i_memory I_MEMORY
8983 #$i_stdlib I_STDLIB
8984 #$i_string I_STRING
8985 #$i_unistd I_UNISTD
8986 EOCP
8987         $cat >>try.c <<'EOCP'
8988 #include <stdio.h>
8989 #ifdef I_MEMORY
8990 #  include <memory.h>
8991 #endif
8992 #ifdef I_STDLIB
8993 #  include <stdlib.h>
8994 #endif
8995 #ifdef I_STRING
8996 #  include <string.h>
8997 #else
8998 #  include <strings.h>
8999 #endif
9000 #ifdef I_UNISTD
9001 #  include <unistd.h>  /* Needed for NetBSD */
9002 #endif
9003 int main()
9004 {
9005 char buf[128], abc[128];
9006 char *b;
9007 int len;
9008 int off;
9009 int align;
9010
9011 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9012
9013 for (align = 7; align >= 0; align--) {
9014         for (len = 36; len; len--) {
9015                 b = buf+align;
9016                 bcopy(abc, b, len);
9017                 for (off = 1; off <= len; off++) {
9018                         bcopy(b, b+off, len);
9019                         bcopy(b+off, b, len);
9020                         if (bcmp(b, abc, len))
9021                                 exit(1);
9022                 }
9023         }
9024 }
9025 exit(0);
9026 }
9027 EOCP
9028         set try
9029         if eval $compile_ok; then
9030                 if ./try 2>/dev/null; then
9031                         echo "Yes, it can."
9032                         val="$define"
9033                 else
9034                         echo "It can't, sorry."
9035                         case "$d_memmove" in
9036                         "$define") echo "But that's Ok since you have memmove()." ;;
9037                         esac
9038                 fi
9039         else
9040                 echo "(I can't compile the test program, so we'll assume not...)"
9041                 case "$d_memmove" in
9042                 "$define") echo "But that's Ok since you have memmove()." ;;
9043                 esac
9044         fi
9045         ;;
9046 esac
9047 $rm -f try.* try core
9048 set d_safebcpy
9049 eval $setvar
9050
9051 : can memcpy handle overlapping blocks?
9052 val="$undef"
9053 case "$d_memcpy" in
9054 "$define")
9055         echo " "
9056         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9057         $cat >try.c <<EOCP
9058 #$i_memory I_MEMORY
9059 #$i_stdlib I_STDLIB
9060 #$i_string I_STRING
9061 #$i_unistd I_UNISTD
9062 EOCP
9063         $cat >>try.c <<'EOCP'
9064 #include <stdio.h>
9065 #ifdef I_MEMORY
9066 #  include <memory.h>
9067 #endif
9068 #ifdef I_STDLIB
9069 #  include <stdlib.h>
9070 #endif
9071 #ifdef I_STRING
9072 #  include <string.h>
9073 #else
9074 #  include <strings.h>
9075 #endif
9076 #ifdef I_UNISTD
9077 #  include <unistd.h>  /* Needed for NetBSD */
9078 #endif
9079 int main()
9080 {
9081 char buf[128], abc[128];
9082 char *b;
9083 int len;
9084 int off;
9085 int align;
9086
9087 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9088    try to store the string in read-only memory. */
9089 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9090
9091 for (align = 7; align >= 0; align--) {
9092         for (len = 36; len; len--) {
9093                 b = buf+align;
9094                 memcpy(b, abc, len);
9095                 for (off = 1; off <= len; off++) {
9096                         memcpy(b+off, b, len);
9097                         memcpy(b, b+off, len);
9098                         if (memcmp(b, abc, len))
9099                                 exit(1);
9100                 }
9101         }
9102 }
9103 exit(0);
9104 }
9105 EOCP
9106         set try
9107         if eval $compile_ok; then
9108                 if ./try 2>/dev/null; then
9109                         echo "Yes, it can."
9110                         val="$define"
9111                 else
9112                         echo "It can't, sorry."
9113                         case "$d_memmove" in
9114                         "$define") echo "But that's Ok since you have memmove()." ;;
9115                         esac
9116                 fi
9117         else
9118                 echo "(I can't compile the test program, so we'll assume not...)"
9119                 case "$d_memmove" in
9120                 "$define") echo "But that's Ok since you have memmove()." ;;
9121                 esac
9122         fi
9123         ;;
9124 esac
9125 $rm -f try.* try core
9126 set d_safemcpy
9127 eval $setvar
9128
9129 : can memcmp be trusted to compare relative magnitude?
9130 val="$undef"
9131 case "$d_memcmp" in
9132 "$define")
9133         echo " "
9134         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9135         $cat >try.c <<EOCP
9136 #$i_memory I_MEMORY
9137 #$i_stdlib I_STDLIB
9138 #$i_string I_STRING
9139 #$i_unistd I_UNISTD
9140 EOCP
9141         $cat >>try.c <<'EOCP'
9142 #include <stdio.h>
9143 #ifdef I_MEMORY
9144 #  include <memory.h>
9145 #endif
9146 #ifdef I_STDLIB
9147 #  include <stdlib.h>
9148 #endif
9149 #ifdef I_STRING
9150 #  include <string.h>
9151 #else
9152 #  include <strings.h>
9153 #endif
9154 #ifdef I_UNISTD
9155 #  include <unistd.h>  /* Needed for NetBSD */
9156 #endif
9157 int main()
9158 {
9159 char a = -1;
9160 char b = 0;
9161 if ((a < b) && memcmp(&a, &b, 1) < 0)
9162         exit(1);
9163 exit(0);
9164 }
9165 EOCP
9166         set try
9167         if eval $compile_ok; then
9168                 if ./try 2>/dev/null; then
9169                         echo "Yes, it can."
9170                         val="$define"
9171                 else
9172                         echo "No, it can't (it uses signed chars)."
9173                 fi
9174         else
9175                 echo "(I can't compile the test program, so we'll assume not...)"
9176         fi
9177         ;;
9178 esac
9179 $rm -f try.* try core
9180 set d_sanemcmp
9181 eval $setvar
9182
9183 : see if select exists
9184 set select d_select
9185 eval $inlibc
9186
9187 : see if semctl exists
9188 set semctl d_semctl
9189 eval $inlibc
9190
9191 : see if semget exists
9192 set semget d_semget
9193 eval $inlibc
9194
9195 : see if semop exists
9196 set semop d_semop
9197 eval $inlibc
9198
9199 : see how much of the 'sem*(2)' library is present.
9200 h_sem=true
9201 echo " "
9202 case "$d_semctl$d_semget$d_semop" in
9203 *"$undef"*) h_sem=false;;
9204 esac
9205 case "$osname" in
9206 freebsd)
9207     case "`ipcs 2>&1`" in
9208     "SVID messages"*"not configured"*)
9209         echo "Your $osname does not have the sem*(2) configured." >&4
9210         h_sem=false
9211         val="$undef"
9212         set semctl d_semctl
9213         eval $setvar
9214         set semget d_semget
9215         eval $setvar
9216         set semop d_semop
9217         eval $setvar
9218         ;;
9219     esac
9220     ;;
9221 esac
9222 : we could also check for sys/ipc.h ...
9223 if $h_sem && $test `./findhdr sys/sem.h`; then
9224         echo "You have the full sem*(2) library." >&4
9225         val="$define"
9226 else
9227         echo "You don't have the full sem*(2) library." >&4
9228         val="$undef"
9229 fi
9230 set d_sem
9231 eval $setvar
9232
9233 : see whether sys/sem.h defines union semun
9234 echo " "
9235 $cat > try.c <<'END'
9236 #include <sys/types.h>
9237 #include <sys/ipc.h>
9238 #include <sys/sem.h>
9239 int main () { union semun semun; semun.buf = 0; }
9240 END
9241 set try
9242 if eval $compile; then
9243     echo "You have union semun in <sys/sem.h>." >&4
9244     val="$define"
9245 else
9246     echo "You do not have union semun in <sys/sem.h>." >&4
9247     val="$undef"
9248 fi
9249 $rm -f try try.c try.h
9250 set d_union_semun
9251 eval $setvar
9252
9253 : see how to do semctl IPC_STAT
9254 case "$d_sem" in
9255 $define)
9256     : see whether semctl IPC_STAT can use union semun
9257     echo " "
9258     $cat > try.h <<END
9259 #ifndef S_IRUSR
9260 #   ifdef S_IREAD
9261 #       define S_IRUSR S_IREAD
9262 #       define S_IWUSR S_IWRITE
9263 #       define S_IXUSR S_IEXEC
9264 #   else
9265 #       define S_IRUSR 0400
9266 #       define S_IWUSR 0200
9267 #       define S_IXUSR 0100
9268 #   endif
9269 #   define S_IRGRP (S_IRUSR>>3)
9270 #   define S_IWGRP (S_IWUSR>>3)
9271 #   define S_IXGRP (S_IXUSR>>3)
9272 #   define S_IROTH (S_IRUSR>>6)
9273 #   define S_IWOTH (S_IWUSR>>6)
9274 #   define S_IXOTH (S_IXUSR>>6)
9275 #endif
9276 #ifndef S_IRWXU
9277 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9278 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9279 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9280 #endif
9281 END
9282
9283     $cat > try.c <<END
9284 #include <sys/types.h>
9285 #include <sys/ipc.h>
9286 #include <sys/sem.h>
9287 #include <sys/stat.h>
9288 #include <stdio.h>
9289 #include <errno.h>
9290 #include "try.h"
9291 #ifndef errno
9292 extern int errno;
9293 #endif
9294 #$d_union_semun HAS_UNION_SEMUN
9295 int main() {
9296     union semun
9297 #ifndef HAS_UNION_SEMUN
9298     {
9299         int val;
9300         struct semid_ds *buf;
9301         unsigned short *array;
9302     }
9303 #endif
9304     arg;
9305     int sem, st;
9306
9307 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9308     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9309     if (sem > -1) {
9310         struct semid_ds argbuf;
9311         arg.buf = &argbuf;
9312 #       ifdef IPC_STAT
9313         st = semctl(sem, 0, IPC_STAT, arg);
9314         if (st == 0)
9315             printf("semun\n");
9316         else
9317 #       endif /* IPC_STAT */
9318             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9319 #       ifdef IPC_RMID
9320         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9321 #       endif /* IPC_RMID */
9322             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9323     } else
9324 #endif /* IPC_PRIVATE && ... */
9325         printf("semget failed: errno = %d\n", errno);
9326   return 0;
9327 }
9328 END
9329     val="$undef"
9330     set try
9331     if eval $compile; then
9332         xxx=`./try`
9333         case "$xxx" in
9334         semun) val="$define" ;;
9335         esac
9336     fi
9337     $rm -f try try.c
9338     set d_semctl_semun
9339     eval $setvar
9340     case "$d_semctl_semun" in
9341     $define)
9342         echo "You can use union semun for semctl IPC_STAT." >&4
9343         also='also'
9344         ;;
9345     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9346         also=''
9347         ;;
9348     esac
9349
9350     : see whether semctl IPC_STAT can use struct semid_ds pointer
9351     $cat > try.c <<'END'
9352 #include <sys/types.h>
9353 #include <sys/ipc.h>
9354 #include <sys/sem.h>
9355 #include <sys/stat.h>
9356 #include "try.h"
9357 #include <stdio.h>
9358 #include <errno.h>
9359 #ifndef errno
9360 extern int errno;
9361 #endif
9362 int main() {
9363     struct semid_ds arg;
9364     int sem, st;
9365
9366 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9367     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9368     if (sem > -1) {
9369 #       ifdef IPC_STAT
9370         st = semctl(sem, 0, IPC_STAT, &arg);
9371         if (st == 0)
9372             printf("semid_ds\n");
9373         else
9374 #       endif /* IPC_STAT */
9375             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9376 #       ifdef IPC_RMID
9377         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9378 #       endif /* IPC_RMID */
9379             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9380     } else
9381 #endif /* IPC_PRIVATE && ... */
9382         printf("semget failed: errno = %d\n", errno);
9383
9384     return 0;
9385 }
9386 END
9387     val="$undef"
9388     set try
9389     if eval $compile; then
9390         xxx=`./try`
9391         case "$xxx" in
9392         semid_ds) val="$define" ;;
9393         esac
9394     fi
9395     $rm -f try try.c
9396     set d_semctl_semid_ds
9397     eval $setvar
9398     case "$d_semctl_semid_ds" in
9399     $define)
9400         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9401         ;;
9402     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9403         ;;
9404     esac
9405     $rm -f try.h
9406     ;;
9407 *)  val="$undef"
9408
9409     # We do not have the full sem*(2) library, so assume we can not
9410     # use either.
9411
9412     set d_semctl_semun
9413     eval $setvar
9414
9415     set d_semctl_semid_ds
9416     eval $setvar
9417     ;;
9418 esac
9419
9420 : see if setegid exists
9421 set setegid d_setegid
9422 eval $inlibc
9423
9424 : see if seteuid exists
9425 set seteuid d_seteuid
9426 eval $inlibc
9427
9428 : see if setgrent exists
9429 set setgrent d_setgrent
9430 eval $inlibc
9431
9432 : see if sethostent exists
9433 set sethostent d_sethent
9434 eval $inlibc
9435
9436 : see if setlinebuf exists
9437 set setlinebuf d_setlinebuf
9438 eval $inlibc
9439
9440 : see if setlocale exists
9441 set setlocale d_setlocale
9442 eval $inlibc
9443
9444 : see if setnetent exists
9445 set setnetent d_setnent
9446 eval $inlibc
9447
9448 : see if setprotoent exists
9449 set setprotoent d_setpent
9450 eval $inlibc
9451
9452 : see if setpgid exists
9453 set setpgid d_setpgid
9454 eval $inlibc
9455
9456 : see if setpgrp2 exists
9457 set setpgrp2 d_setpgrp2
9458 eval $inlibc
9459
9460 : see if setpriority exists
9461 set setpriority d_setprior
9462 eval $inlibc
9463
9464 : see if setpwent exists
9465 set setpwent d_setpwent
9466 eval $inlibc
9467
9468 : see if setregid exists
9469 set setregid d_setregid
9470 eval $inlibc
9471 set setresgid d_setresgid
9472 eval $inlibc
9473
9474 : see if setreuid exists
9475 set setreuid d_setreuid
9476 eval $inlibc
9477 set setresuid d_setresuid
9478 eval $inlibc
9479
9480 : see if setrgid exists
9481 set setrgid d_setrgid
9482 eval $inlibc
9483
9484 : see if setruid exists
9485 set setruid d_setruid
9486 eval $inlibc
9487
9488 : see if setservent exists
9489 set setservent d_setsent
9490 eval $inlibc
9491
9492 : see if setsid exists
9493 set setsid d_setsid
9494 eval $inlibc
9495
9496 : see if setvbuf exists
9497 set setvbuf d_setvbuf
9498 eval $inlibc
9499
9500 : see if sfio.h is available
9501 set sfio.h i_sfio
9502 eval $inhdr
9503
9504
9505 : see if sfio library is available
9506 case "$i_sfio" in
9507 $define)
9508         val=''
9509         set sfreserve val
9510         eval $inlibc
9511         ;;
9512 *)
9513         val="$undef"
9514         ;;
9515 esac
9516 : Ok, but do we want to use it.
9517 case "$val" in
9518 $define)
9519         case "$usesfio" in
9520         true|$define|[yY]*) dflt='y';;
9521         *) dflt='n';;
9522         esac
9523         echo "$package can use the sfio library, but it is experimental."
9524         rp="You seem to have sfio available, do you want to try using it?"
9525         . ./myread
9526         case "$ans" in
9527         y|Y) ;;
9528         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9529                 val="$undef"
9530                 : Remove sfio from list of libraries to use
9531                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9532                 shift
9533                 libs="$*"
9534                 echo "libs = $libs" >&4
9535                 ;;
9536         esac
9537         ;;
9538 *)      case "$usesfio" in
9539         true|$define|[yY]*)
9540                 echo "Sorry, cannot find sfio on this machine" >&4
9541                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9542                 ;;
9543         esac
9544         ;;
9545 esac
9546 set d_sfio
9547 eval $setvar
9548 case "$d_sfio" in
9549 $define) usesfio='true';;
9550 *) usesfio='false';;
9551 esac
9552
9553 : see if shmctl exists
9554 set shmctl d_shmctl
9555 eval $inlibc
9556
9557 : see if shmget exists
9558 set shmget d_shmget
9559 eval $inlibc
9560
9561 : see if shmat exists
9562 set shmat d_shmat
9563 eval $inlibc
9564 : see what shmat returns
9565 case "$d_shmat" in
9566 "$define")
9567         $cat >shmat.c <<'END'
9568 #include <sys/shm.h>
9569 void *shmat();
9570 END
9571         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9572                 shmattype='void *'
9573         else
9574                 shmattype='char *'
9575         fi
9576         echo "and it returns ($shmattype)." >&4
9577         : see if a prototype for shmat is available
9578         xxx=`./findhdr sys/shm.h`
9579         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9580         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9581                 val="$define"
9582         else
9583                 val="$undef"
9584         fi
9585         $rm -f shmat.[co]
9586         ;;
9587 *)
9588         val="$undef"
9589         ;;
9590 esac
9591 set d_shmatprototype
9592 eval $setvar
9593
9594 : see if shmdt exists
9595 set shmdt d_shmdt
9596 eval $inlibc
9597
9598 : see how much of the 'shm*(2)' library is present.
9599 h_shm=true
9600 echo " "
9601 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9602 *"$undef"*) h_shm=false;;
9603 esac
9604 case "$osname" in
9605 freebsd)
9606     case "`ipcs 2>&1`" in
9607     "SVID shared memory"*"not configured"*)
9608         echo "Your $osname does not have the shm*(2) configured." >&4
9609         h_shm=false
9610         val="$undef"
9611         set shmctl d_shmctl
9612         evat $setvar
9613         set shmget d_shmget
9614         evat $setvar
9615         set shmat d_shmat
9616         evat $setvar
9617         set shmdt d_shmdt
9618         evat $setvar
9619         ;;
9620     esac
9621     ;;
9622 esac
9623 : we could also check for sys/ipc.h ...
9624 if $h_shm && $test `./findhdr sys/shm.h`; then
9625         echo "You have the full shm*(2) library." >&4
9626         val="$define"
9627 else
9628         echo "You don't have the full shm*(2) library." >&4
9629         val="$undef"
9630 fi
9631 set d_shm
9632 eval $setvar
9633
9634 echo " "
9635 : see if we have sigaction
9636 if set sigaction val -f d_sigaction; eval $csym; $val; then
9637         echo 'sigaction() found.' >&4
9638         $cat > try.c <<'EOP'
9639 #include <stdio.h>
9640 #include <sys/types.h>
9641 #include <signal.h>
9642 int main()
9643 {
9644     struct sigaction act, oact;
9645 }
9646 EOP
9647         set try
9648         if eval $compile_ok; then
9649                 val="$define"
9650         else
9651                 echo "But you don't seem to have a useable struct sigaction." >&4
9652                 val="$undef"
9653         fi
9654 else
9655         echo 'sigaction NOT found.' >&4
9656         val="$undef"
9657 fi
9658 set d_sigaction; eval $setvar
9659 $rm -f try try$_o try.c
9660
9661 : see if sigsetjmp exists
9662 echo " "
9663 case "$d_sigsetjmp" in
9664 '')
9665         $cat >try.c <<'EOP'
9666 #include <setjmp.h>
9667 sigjmp_buf env;
9668 int set = 1;
9669 int main()
9670 {
9671         if (sigsetjmp(env,1))
9672                 exit(set);
9673         set = 0;
9674         siglongjmp(env, 1);
9675         exit(1);
9676 }
9677 EOP
9678         set try
9679         if eval $compile; then
9680                 if ./try >/dev/null 2>&1; then
9681                         echo "POSIX sigsetjmp found." >&4
9682                         val="$define"
9683                 else
9684                         $cat >&4 <<EOM
9685 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9686 I'll ignore them.
9687 EOM
9688                         val="$undef"
9689                 fi
9690         else
9691                 echo "sigsetjmp not found." >&4
9692                 val="$undef"
9693         fi
9694         ;;
9695 *) val="$d_sigsetjmp"
9696         case "$d_sigsetjmp" in
9697         $define) echo "POSIX sigsetjmp found." >&4;;
9698         $undef) echo "sigsetjmp not found." >&4;;
9699         esac
9700         ;;
9701 esac
9702 set d_sigsetjmp
9703 eval $setvar
9704 $rm -f try.c try
9705
9706 : see if stat knows about block sizes
9707 echo " "
9708 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9709 eval $hasfield
9710
9711 : see if _ptr and _cnt from stdio act std
9712 echo " "
9713 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9714         echo "(Looks like you have stdio.h from Linux.)"
9715         case "$stdio_ptr" in
9716         '') stdio_ptr='((fp)->_IO_read_ptr)'
9717                 ptr_lval=$define
9718                 ;;
9719         *)      ptr_lval=$d_stdio_ptr_lval;;
9720         esac
9721         case "$stdio_cnt" in
9722         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9723                 cnt_lval=$undef
9724                 ;;
9725         *)      cnt_lval=$d_stdio_cnt_lval;;
9726         esac
9727         case "$stdio_base" in
9728         '') stdio_base='((fp)->_IO_read_base)';;
9729         esac
9730         case "$stdio_bufsiz" in
9731         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9732         esac
9733 else
9734         case "$stdio_ptr" in
9735         '') stdio_ptr='((fp)->_ptr)'
9736                 ptr_lval=$define
9737                 ;;
9738         *)      ptr_lval=$d_stdio_ptr_lval;;
9739         esac
9740         case "$stdio_cnt" in
9741         '') stdio_cnt='((fp)->_cnt)'
9742                 cnt_lval=$define
9743                 ;;
9744         *)      cnt_lval=$d_stdio_cnt_lval;;
9745         esac
9746         case "$stdio_base" in
9747         '') stdio_base='((fp)->_base)';;
9748         esac
9749         case "$stdio_bufsiz" in
9750         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9751         esac
9752 fi
9753 : test whether _ptr and _cnt really work
9754 echo "Checking how std your stdio is..." >&4
9755 $cat >try.c <<EOP
9756 #include <stdio.h>
9757 #define FILE_ptr(fp)    $stdio_ptr
9758 #define FILE_cnt(fp)    $stdio_cnt
9759 int main() {
9760         FILE *fp = fopen("try.c", "r");
9761         char c = getc(fp);
9762         if (
9763                 18 <= FILE_cnt(fp) &&
9764                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9765         )
9766                 exit(0);
9767         exit(1);
9768 }
9769 EOP
9770 val="$undef"
9771 set try
9772 if eval $compile; then
9773         if ./try; then
9774                 echo "Your stdio acts pretty std."
9775                 val="$define"
9776         else
9777                 echo "Your stdio isn't very std."
9778         fi
9779 else
9780         echo "Your stdio doesn't appear very std."
9781 fi
9782 $rm -f try.c try
9783 set d_stdstdio
9784 eval $setvar
9785
9786 : Can _ptr be used as an lvalue?
9787 case "$d_stdstdio$ptr_lval" in
9788 $define$define) val=$define ;;
9789 *) val=$undef ;;
9790 esac
9791 set d_stdio_ptr_lval
9792 eval $setvar
9793
9794 : Can _cnt be used as an lvalue?
9795 case "$d_stdstdio$cnt_lval" in
9796 $define$define) val=$define ;;
9797 *) val=$undef ;;
9798 esac
9799 set d_stdio_cnt_lval
9800 eval $setvar
9801
9802 : see if _base is also standard
9803 val="$undef"
9804 case "$d_stdstdio" in
9805 $define)
9806         $cat >try.c <<EOP
9807 #include <stdio.h>
9808 #define FILE_base(fp)   $stdio_base
9809 #define FILE_bufsiz(fp) $stdio_bufsiz
9810 int main() {
9811         FILE *fp = fopen("try.c", "r");
9812         char c = getc(fp);
9813         if (
9814                 19 <= FILE_bufsiz(fp) &&
9815                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9816         )
9817                 exit(0);
9818         exit(1);
9819 }
9820 EOP
9821         set try
9822         if eval $compile; then
9823                 if ./try; then
9824                         echo "And its _base field acts std."
9825                         val="$define"
9826                 else
9827                         echo "But its _base field isn't std."
9828                 fi
9829         else
9830                 echo "However, it seems to be lacking the _base field."
9831         fi
9832         $rm -f try.c try
9833         ;;
9834 esac
9835 set d_stdiobase
9836 eval $setvar
9837
9838 : see if strcoll exists
9839 set strcoll d_strcoll
9840 eval $inlibc
9841
9842 : check for structure copying
9843 echo " "
9844 echo "Checking to see if your C compiler can copy structs..." >&4
9845 $cat >try.c <<'EOCP'
9846 int main()
9847 {
9848         struct blurfl {
9849                 int dyick;
9850         } foo, bar;
9851
9852         foo = bar;
9853 }
9854 EOCP
9855 if $cc -c try.c >/dev/null 2>&1 ; then
9856         val="$define"
9857         echo "Yup, it can."
9858 else
9859         val="$undef"
9860         echo "Nope, it can't."
9861 fi
9862 set d_strctcpy
9863 eval $setvar
9864 $rm -f try.*
9865
9866 : see if strerror and/or sys_errlist[] exist
9867 echo " "
9868 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9869     if set strerror val -f d_strerror; eval $csym; $val; then
9870                 echo 'strerror() found.' >&4
9871                 d_strerror="$define"
9872                 d_strerrm='strerror(e)'
9873                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9874                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9875                         d_syserrlst="$define"
9876                 else
9877                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9878                         d_syserrlst="$undef"
9879                 fi
9880     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9881                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9882                 echo 'strerror() found in string header.' >&4
9883                 d_strerror="$define"
9884                 d_strerrm='strerror(e)'
9885                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9886                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9887                                 d_syserrlst="$define"
9888                 else
9889                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9890                         d_syserrlst="$undef"
9891                 fi
9892     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9893                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9894                 d_strerror="$undef"
9895                 d_syserrlst="$define"
9896                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9897     else
9898                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9899                 d_strerror="$undef"
9900                 d_syserrlst="$undef"
9901                 d_strerrm='"unknown"'
9902     fi
9903 fi
9904
9905 : see if strtod exists
9906 set strtod d_strtod
9907 eval $inlibc
9908
9909 : see if strtol exists
9910 set strtol d_strtol
9911 eval $inlibc
9912
9913 : see if strtoul exists
9914 set strtoul d_strtoul
9915 eval $inlibc
9916
9917 : see if strxfrm exists
9918 set strxfrm d_strxfrm
9919 eval $inlibc
9920
9921 : see if symlink exists
9922 set symlink d_symlink
9923 eval $inlibc
9924
9925 : see if syscall exists
9926 set syscall d_syscall
9927 eval $inlibc
9928
9929 : see if sysconf exists
9930 set sysconf d_sysconf
9931 eval $inlibc
9932
9933 : see if system exists
9934 set system d_system
9935 eval $inlibc
9936
9937 : see if tcgetpgrp exists
9938 set tcgetpgrp d_tcgetpgrp
9939 eval $inlibc
9940
9941 : see if tcsetpgrp exists
9942 set tcsetpgrp d_tcsetpgrp
9943 eval $inlibc
9944
9945 : define an is-a-typedef? function
9946 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9947 case "$inclist" in
9948 "") inclist="sys/types.h";;
9949 esac;
9950 eval "varval=\$$var";
9951 case "$varval" in
9952 "")
9953         $rm -f temp.c;
9954         for inc in $inclist; do
9955                 echo "#include <$inc>" >>temp.c;
9956         done;
9957         echo "#ifdef $type" >> temp.c;
9958         echo "printf(\"We have $type\");" >> temp.c;
9959         echo "#endif" >> temp.c;
9960         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9961         if $contains $type temp.E >/dev/null 2>&1; then
9962                 eval "$var=\$type";
9963         else
9964                 eval "$var=\$def";
9965         fi;
9966         $rm -f temp.?;;
9967 *) eval "$var=\$varval";;
9968 esac'
9969
9970 : define an is-a-typedef? function that prompts if the type is not available.
9971 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9972 case "$inclist" in
9973 "") inclist="sys/types.h";;
9974 esac;
9975 eval "varval=\$$var";
9976 case "$varval" in
9977 "")
9978         $rm -f temp.c;
9979         for inc in $inclist; do
9980                 echo "#include <$inc>" >>temp.c;
9981         done;
9982         echo "#ifdef $type" >> temp.c;
9983         echo "printf(\"We have $type\");" >> temp.c;
9984         echo "#endif" >> temp.c;
9985         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9986         echo " " ;
9987         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9988         if $contains $type temp.E >/dev/null 2>&1; then
9989                 echo "$type found." >&4;
9990                 eval "$var=\$type";
9991         else
9992                 echo "$type NOT found." >&4;
9993                 dflt="$def";
9994                 . ./myread ;
9995                 eval "$var=\$ans";
9996         fi;
9997         $rm -f temp.?;;
9998 *) eval "$var=\$varval";;
9999 esac'
10000
10001 : see if this is a sys/times.h system
10002 set sys/times.h i_systimes
10003 eval $inhdr
10004
10005 : see if times exists
10006 echo " "
10007 if set times val -f d_times; eval $csym; $val; then
10008         echo 'times() found.' >&4
10009         d_times="$define"
10010         inc=''
10011         case "$i_systimes" in
10012         "$define") inc='sys/times.h';;
10013         esac
10014         rp="What is the type returned by times() on this system?"
10015         set clock_t clocktype long stdio.h sys/types.h $inc
10016         eval $typedef_ask
10017 else
10018         echo 'times() NOT found, hope that will do.' >&4
10019         d_times="$undef"
10020         clocktype='int'
10021 fi
10022
10023 : see if truncate exists
10024 set truncate d_truncate
10025 eval $inlibc
10026
10027 : see if tzname[] exists
10028 echo " "
10029 if set tzname val -a d_tzname; eval $csym; $val; then
10030         val="$define"
10031         echo 'tzname[] found.' >&4
10032 else
10033         val="$undef"
10034         echo 'tzname[] NOT found.' >&4
10035 fi
10036 set d_tzname
10037 eval $setvar
10038
10039 : see if umask exists
10040 set umask d_umask
10041 eval $inlibc
10042
10043 : backward compatibility for d_hvfork
10044 if test X$d_hvfork != X; then
10045         d_vfork="$d_hvfork"
10046         d_hvfork=''
10047 fi
10048 : see if there is a vfork
10049 val=''
10050 set vfork val
10051 eval $inlibc
10052
10053 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10054 : perl on Solaris 2.x, and probably elsewhere.
10055 case "$val" in
10056 $define)
10057         echo " "
10058         case "$usevfork" in
10059         false) dflt='n';;
10060         *) dflt='y';;
10061         esac
10062         rp="Some systems have problems with vfork().  Do you want to use it?"
10063         . ./myread
10064         case "$ans" in
10065         y|Y) ;;
10066         *)
10067                 echo "Ok, we won't use vfork()."
10068                 val="$undef"
10069                 ;;
10070         esac
10071         ;;
10072 esac
10073 set d_vfork
10074 eval $setvar
10075 case "$d_vfork" in
10076 $define) usevfork='true';;
10077 *) usevfork='false';;
10078 esac
10079
10080 : see if this is an sysdir system
10081 set sys/dir.h i_sysdir
10082 eval $inhdr
10083
10084 : see if this is an sysndir system
10085 set sys/ndir.h i_sysndir
10086 eval $inhdr
10087
10088 : see if sys/types.h has to be included
10089 set sys/types.h i_systypes
10090 eval $inhdr
10091
10092 : see if closedir exists
10093 set closedir d_closedir
10094 eval $inlibc
10095
10096 case "$d_closedir" in
10097 "$define")
10098         echo " "
10099         echo "Checking whether closedir() returns a status..." >&4
10100         cat > closedir.c <<EOM
10101 #$i_dirent I_DIRENT             /**/
10102 #$i_sysdir I_SYS_DIR            /**/
10103 #$i_sysndir I_SYS_NDIR          /**/
10104 #$i_systypes I_SYS_TYPES        /**/
10105
10106 #if defined(I_SYS_TYPES)
10107 #include <sys/types.h>
10108 #endif
10109 #if defined(I_DIRENT)
10110 #include <dirent.h>
10111 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10112 #include <sys/dir.h>
10113 #endif
10114 #else
10115 #ifdef I_SYS_NDIR
10116 #include <sys/ndir.h>
10117 #else
10118 #ifdef I_SYS_DIR
10119 #ifdef hp9000s500
10120 #include <ndir.h>       /* may be wrong in the future */
10121 #else
10122 #include <sys/dir.h>
10123 #endif
10124 #endif
10125 #endif
10126 #endif 
10127 int main() { return closedir(opendir(".")); }
10128 EOM
10129         set closedir
10130         if eval $compile_ok; then
10131                 if ./closedir > /dev/null 2>&1 ; then
10132                         echo "Yes, it does."
10133                         val="$undef"
10134                 else
10135                         echo "No, it doesn't."
10136                         val="$define"
10137                 fi
10138         else
10139                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10140                 val="$define"
10141         fi
10142         ;;
10143 *)
10144         val="$undef";
10145         ;;
10146 esac
10147 set d_void_closedir
10148 eval $setvar
10149 $rm -f closedir*
10150 : check for volatile keyword
10151 echo " "
10152 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10153 $cat >try.c <<'EOCP'
10154 int main()
10155 {
10156         typedef struct _goo_struct goo_struct;
10157         goo_struct * volatile goo = ((goo_struct *)0);
10158         struct _goo_struct {
10159                 long long_int;
10160                 int reg_int;
10161                 char char_var;
10162         };
10163         typedef unsigned short foo_t;
10164         char *volatile foo;
10165         volatile int bar;
10166         volatile foo_t blech;
10167         foo = foo;
10168 }
10169 EOCP
10170 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10171         val="$define"
10172         echo "Yup, it does."
10173 else
10174         val="$undef"
10175         echo "Nope, it doesn't."
10176 fi
10177 set d_volatile
10178 eval $setvar
10179 $rm -f try.*
10180
10181 : see if there is a wait4
10182 set wait4 d_wait4
10183 eval $inlibc
10184
10185 : see if waitpid exists
10186 set waitpid d_waitpid
10187 eval $inlibc
10188
10189 : see if wcstombs exists
10190 set wcstombs d_wcstombs
10191 eval $inlibc
10192
10193 : see if wctomb exists
10194 set wctomb d_wctomb
10195 eval $inlibc
10196
10197 : see if writev exists
10198 set writev d_writev
10199 eval $inlibc
10200
10201 : preserve RCS keywords in files with variable substitution, grrr
10202 Date='$Date'
10203 Id='$Id'
10204 Log='$Log'
10205 RCSfile='$RCSfile'
10206 Revision='$Revision'
10207
10208 : check for alignment requirements
10209 echo " "
10210 case "$alignbytes" in
10211 '') echo "Checking alignment constraints..." >&4
10212         $cat >try.c <<'EOCP'
10213 struct foobar {
10214         char foo;
10215         double bar;
10216 } try;
10217 int main()
10218 {
10219         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10220 }
10221 EOCP
10222         set try
10223         if eval $compile_ok; then
10224                 dflt=`./try`
10225         else
10226                 dflt='8'
10227                 echo "(I can't seem to compile the test program...)"
10228         fi
10229         ;;
10230 *) dflt="$alignbytes"
10231         ;;
10232 esac
10233 rp="Doubles must be aligned on a how-many-byte boundary?"
10234 . ./myread
10235 alignbytes="$ans"
10236 $rm -f try.c try
10237
10238 : check for ordering of bytes in a long
10239 case "$byteorder" in
10240 '')
10241         $cat <<'EOM'
10242   
10243 In the following, larger digits indicate more significance.  A big-endian
10244 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10245 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10246 machines may have weird orders like 3412.  A Cray will report 87654321. If
10247 the test program works the default is probably right.
10248 I'm now running the test program...
10249 EOM
10250         $cat >try.c <<'EOCP'
10251 #include <stdio.h>
10252 int main()
10253 {
10254         int i;
10255         union {
10256                 unsigned long l;
10257                 char c[sizeof(long)];
10258         } u;
10259
10260         if (sizeof(long) > 4)
10261                 u.l = (0x08070605L << 32) | 0x04030201L;
10262         else
10263                 u.l = 0x04030201L;
10264         for (i = 0; i < sizeof(long); i++)
10265                 printf("%c", u.c[i]+'0');
10266         printf("\n");
10267         exit(0);
10268 }
10269 EOCP
10270         xxx_prompt=y
10271         set try
10272         if eval $compile && ./try > /dev/null; then
10273                 dflt=`./try`
10274                 case "$dflt" in
10275                 [1-4][1-4][1-4][1-4]|12345678|87654321)
10276                         echo "(The test program ran ok.)"
10277                         echo "byteorder=$dflt"
10278                         xxx_prompt=n
10279                         ;;
10280                 ????|????????) echo "(The test program ran ok.)" ;;
10281                 *) echo "(The test program didn't run right for some reason.)" ;;
10282                 esac
10283         else
10284                 dflt='4321'
10285                 cat <<'EOM'
10286 (I can't seem to compile the test program.  Guessing big-endian...)
10287 EOM
10288         fi
10289         case "$xxx_prompt" in
10290         y)
10291                 rp="What is the order of bytes in a long?"
10292                 . ./myread
10293                 byteorder="$ans"
10294                 ;;
10295         *)      byteorder=$dflt
10296                 ;;
10297         esac
10298         ;;
10299 esac
10300 $rm -f try.c try
10301
10302 : how do we catenate cpp tokens here?
10303 echo " "
10304 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10305 $cat >cpp_stuff.c <<'EOCP'
10306 #define RCAT(a,b)a/**/b
10307 #define ACAT(a,b)a ## b
10308 RCAT(Rei,ser)
10309 ACAT(Cir,cus)
10310 EOCP
10311 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10312 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10313         echo "Oh!  Smells like ANSI's been here." >&4
10314         echo "We can catify or stringify, separately or together!"
10315         cpp_stuff=42
10316 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10317         echo "Ah, yes!  The good old days!" >&4
10318         echo "However, in the good old days we don't know how to stringify and"
10319         echo "catify at the same time."
10320         cpp_stuff=1
10321 else
10322         $cat >&4 <<EOM
10323 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10324 to have to edit the values of CAT[2-5] in config.h...
10325 EOM
10326         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10327 fi
10328 $rm -f cpp_stuff.*
10329
10330 : see if this is a db.h system
10331 set db.h i_db
10332 eval $inhdr
10333
10334 case "$i_db" in
10335 $define)
10336         : Check db version.
10337         echo " "
10338         echo "Checking Berkeley DB version ..." >&4
10339         $cat >try.c <<EOCP
10340 #$d_const HASCONST
10341 #ifndef HASCONST
10342 #define const
10343 #endif
10344 #include <sys/types.h>
10345 #include <stdio.h>
10346 #include <db.h>
10347 int main()
10348 {
10349 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10350     int Major, Minor, Patch ;
10351     unsigned long Version ;
10352     (void)db_version(&Major, &Minor, &Patch) ;
10353     printf("You have Berkeley DB Version 2 or greater\n");
10354
10355     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10356                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10357     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10358                 Major, Minor, Patch) ;
10359
10360     /* check that db.h & libdb are compatible */
10361     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10362         printf("db.h and libdb are incompatible\n") ;
10363         exit(3);        
10364     }
10365
10366     printf("db.h and libdb are compatible\n") ;
10367
10368     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10369                 + DB_VERSION_PATCH ;
10370
10371     /* needs to be >= 2.3.4 */
10372     if (Version < 2003004) {
10373     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10374         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10375         exit(2);        
10376     }
10377
10378     exit(0);
10379 #else
10380 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10381     printf("You have Berkeley DB Version 1\n");
10382     exit(0);    /* DB version < 2: the coast is clear. */
10383 #else
10384     exit(1);    /* <db.h> not Berkeley DB? */
10385 #endif
10386 #endif
10387 }
10388 EOCP
10389         set try
10390         if eval $compile && ./try; then
10391                 echo 'Looks OK.' >&4
10392         else
10393                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10394                 i_db=$undef
10395                 case " $libs " in
10396                 *"-ldb "*)
10397                         : Remove db from list of libraries to use
10398                         echo "Removing unusable -ldb from library list" >&4
10399                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10400                         shift
10401                         libs="$*"
10402                         echo "libs = $libs" >&4
10403                         ;;
10404                 esac
10405         fi
10406         $rm -f try.*
10407         ;;
10408 esac
10409
10410 case "$i_db" in
10411 define)
10412         : Check the return type needed for hash 
10413         echo " "
10414         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10415         $cat >try.c <<EOCP
10416 #$d_const HASCONST
10417 #ifndef HASCONST
10418 #define const
10419 #endif
10420 #include <sys/types.h>
10421 #include <db.h>
10422
10423 #ifndef DB_VERSION_MAJOR
10424 u_int32_t hash_cb (ptr, size)
10425 const void *ptr;
10426 size_t size;
10427 {
10428 }
10429 HASHINFO info;
10430 int main()
10431 {
10432         info.hash = hash_cb;
10433 }
10434 #endif
10435 EOCP
10436         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10437                 if $contains warning try.out >>/dev/null 2>&1 ; then
10438                         db_hashtype='int'
10439                 else
10440                         db_hashtype='u_int32_t'
10441                 fi
10442         else
10443                 : XXX Maybe we should just give up here.
10444                 db_hashtype=u_int32_t
10445                 $cat try.out >&4
10446                 echo "Help:  I can't seem to compile the db test program." >&4
10447                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10448         fi
10449         $rm -f try.*
10450         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10451         ;;
10452 *)      db_hashtype=u_int32_t
10453         ;;
10454 esac
10455 case "$i_db" in
10456 define)
10457         : Check the return type needed for prefix 
10458         echo " "
10459         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10460         cat >try.c <<EOCP
10461 #$d_const HASCONST
10462 #ifndef HASCONST
10463 #define const
10464 #endif
10465 #include <sys/types.h>
10466 #include <db.h>
10467
10468 #ifndef DB_VERSION_MAJOR
10469 size_t prefix_cb (key1, key2)
10470 const DBT *key1;
10471 const DBT *key2;
10472 {
10473 }
10474 BTREEINFO info;
10475 int main()
10476 {
10477         info.prefix = prefix_cb;
10478 }
10479 #endif
10480 EOCP
10481         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10482                 if $contains warning try.out >>/dev/null 2>&1 ; then
10483                         db_prefixtype='int'
10484                 else
10485                         db_prefixtype='size_t'
10486                 fi
10487         else
10488                 db_prefixtype='size_t'
10489                 : XXX Maybe we should just give up here.
10490                 $cat try.out >&4
10491                 echo "Help:  I can't seem to compile the db test program." >&4
10492                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10493         fi
10494         $rm -f try.*
10495         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10496         ;;
10497 *)      db_prefixtype='size_t'
10498         ;;
10499 esac
10500
10501 : check for void type
10502 echo " "
10503 echo "Checking to see how well your C compiler groks the void type..." >&4
10504 case "$voidflags" in
10505 '')
10506         $cat >try.c <<'EOCP'
10507 #if TRY & 1
10508 void sub() {
10509 #else
10510 sub() {
10511 #endif
10512         extern void moo();      /* function returning void */
10513         void (*goo)();          /* ptr to func returning void */
10514 #if TRY & 8
10515         void *hue;              /* generic ptr */
10516 #endif
10517 #if TRY & 2
10518         void (*foo[10])();
10519 #endif
10520
10521 #if TRY & 4
10522         if(goo == moo) {
10523                 exit(0);
10524         }
10525 #endif
10526         exit(0);
10527 }
10528 int main() { sub(); }
10529 EOCP
10530         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10531                 voidflags=$defvoidused
10532         echo "Good.  It appears to support void to the level $package wants.">&4
10533                 if $contains warning .out >/dev/null 2>&1; then
10534                         echo "However, you might get some warnings that look like this:"
10535                         $cat .out
10536                 fi
10537         else
10538 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10539                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10540                         echo "It supports 1..."
10541                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10542                                 echo "It also supports 2..."
10543                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10544                                         voidflags=7
10545                                         echo "And it supports 4 but not 8 definitely."
10546                                 else
10547                                         echo "It doesn't support 4..."
10548                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10549                                                 voidflags=11
10550                                                 echo "But it supports 8."
10551                                         else
10552                                                 voidflags=3
10553                                                 echo "Neither does it support 8."
10554                                         fi
10555                                 fi
10556                         else
10557                                 echo "It does not support 2..."
10558                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10559                                         voidflags=13
10560                                         echo "But it supports 4 and 8."
10561                                 else
10562                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10563                                                 voidflags=5
10564                                                 echo "And it supports 4 but has not heard about 8."
10565                                         else
10566                                                 echo "However it supports 8 but not 4."
10567                                         fi
10568                                 fi
10569                         fi
10570                 else
10571                         echo "There is no support at all for void."
10572                         voidflags=0
10573                 fi
10574         fi
10575 esac
10576 case "$voidflags" in
10577 "$defvoidused") ;;
10578 *)      $cat >&4 <<'EOM'
10579   Support flag bits are:
10580     1: basic void declarations.
10581     2: arrays of pointers to functions returning void.
10582     4: operations between pointers to and addresses of void functions.
10583     8: generic void pointers.
10584 EOM
10585         dflt="$voidflags";
10586         rp="Your void support flags add up to what?"
10587         . ./myread
10588         voidflags="$ans"
10589         ;;
10590 esac
10591 $rm -f try.* .out
10592
10593
10594 : How can we generate normalized random numbers ?
10595 echo " "
10596 echo "Looking for a random number function..." >&4
10597 case "$randfunc" in
10598 '')
10599         if set drand48 val -f; eval $csym; $val; then
10600                 dflt="drand48"
10601                 echo "Good, found drand48()." >&4
10602         elif set random val -f; eval $csym; $val; then
10603                 dflt="random"
10604                 echo "OK, found random()." >&4
10605         else
10606                 dflt="rand"
10607                 echo "Yick, looks like I have to use rand()." >&4
10608         fi
10609         echo " "
10610         ;;
10611 *)
10612         dflt="$randfunc"
10613         ;;
10614 esac
10615 cont=true
10616
10617 case "$ccflags" in
10618 *-Dmy_rand=*|*-Dmy_srand=*)
10619         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10620         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10621         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10622         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10623         ;;
10624 esac
10625
10626 while $test "$cont"; do
10627         rp="Use which function to generate random numbers?"
10628         . ./myread
10629         if $test "$ans" = "$dflt"; then
10630                 : null
10631         else
10632                 randbits=''
10633         fi
10634         randfunc="$ans"
10635         if set $ans val -f; eval $csym; $val; then
10636                 cont=''
10637         else
10638                 dflt=y
10639                 rp="I cannot find function $ans. Use that name anyway?"
10640                 . ./myread
10641                 dflt=rand
10642                 case "$ans" in
10643                         [yY]*) cont='';;
10644                 esac
10645         fi
10646         case "$cont" in
10647         '')
10648                 case "$randfunc" in
10649                 drand48)
10650                         drand01="drand48()"
10651                         seedfunc="srand48"
10652                         randbits=48
10653                         randseedtype=long
10654                         ;;
10655                 rand|random)
10656                         case "$randbits" in
10657                         '')
10658 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10659                                 $cat >try.c <<EOCP
10660 #$i_unistd I_UNISTD
10661 #$i_stdlib I_STDLIB
10662 #include <stdio.h>
10663 #ifdef I_UNISTD
10664 #  include <unistd.h>
10665 #endif
10666 #ifdef I_STDLIB
10667 #  include <stdlib.h>
10668 #endif
10669 int main()
10670 {
10671         register int i;
10672         register unsigned long tmp;
10673         register unsigned long max = 0L;
10674
10675         for (i = 1000; i; i--) {
10676                 tmp = (unsigned long) $randfunc();
10677                 if (tmp > max) max = tmp;
10678         }
10679         for (i = 0; max; i++)
10680                 max /= 2;
10681         printf("%d\n",i);
10682 }
10683 EOCP
10684                                 set try
10685                                 if eval $compile_ok; then
10686                                         dflt=`try`
10687                                 else
10688                                         dflt='?'
10689                                         echo "(I can't seem to compile the test program...)"
10690                                 fi
10691                                 ;;
10692                         *)
10693                                 dflt="$randbits"
10694                                 ;;
10695                         esac
10696                         rp="How many bits does your $randfunc() function produce?"
10697                         . ./myread
10698                         randbits="$ans"
10699                         $rm -f try.c try
10700                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10701                         seedfunc="s$randfunc"
10702                         randseedtype=unsigned
10703                         ;;
10704                 *)
10705                         dflt="31"
10706                         rp="How many bits does your $randfunc() function produce?"
10707                         . ./myread
10708                         randbits="$ans"
10709                         seedfunc="s$randfunc"
10710                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10711                         if set $seedfunc val -f; eval $csym; $val; then
10712                                 echo "(Using $seedfunc() to seed random generator)"
10713                         else
10714                                 echo "(Warning: no $seedfunc() to seed random generator)"
10715                                 seedfunc=rand
10716                         fi
10717                         randseedtype=unsigned
10718                         ;;
10719                 esac
10720                 ;;
10721         esac
10722 done
10723
10724 echo " "
10725 echo "Determining whether or not we are on an EBCDIC system..." >&4
10726 $cat >tebcdic.c <<'EOM'
10727 int main()
10728 {
10729   if ('M'==0xd4) return 0;
10730   return 1;
10731 }
10732 EOM
10733
10734 val=$undef
10735 set tebcdic
10736 if eval $compile_ok; then
10737         if ./tebcdic; then
10738                 echo "You have EBCDIC." >&4
10739                 val="$define"
10740         else
10741                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10742         fi
10743 else
10744         echo "I'm unable to compile the test program." >&4
10745         echo "I'll assume ASCII or some ISO Latin." >&4
10746 fi
10747 $rm -f tebcdic.c tebcdic
10748 set ebcdic
10749 eval $setvar
10750
10751 : see what type file positions are declared as in the library
10752 rp="What is the type for file position used by fsetpos()?"
10753 set fpos_t fpostype long stdio.h sys/types.h
10754 eval $typedef_ask
10755
10756 : Store the full pathname to the sed program for use in the C program
10757 full_sed=$sed
10758
10759 : see what type gids are declared as in the kernel
10760 echo " "
10761 echo "Looking for the type for group ids returned by getgid()."
10762 set gid_t gidtype xxx stdio.h sys/types.h
10763 eval $typedef
10764 case "$gidtype" in
10765 xxx)
10766         xxx=`./findhdr sys/user.h`
10767         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10768         case $1 in
10769         unsigned) dflt="$1 $2" ;;
10770         *) dflt="$1" ;;
10771         esac
10772         ;;
10773 *) dflt="$gidtype";;
10774 esac
10775 case "$gidtype" in
10776 gid_t) echo "gid_t found." ;;
10777 *)      rp="What is the type for group ids returned by getgid()?"
10778         . ./myread
10779         gidtype="$ans"
10780         ;;
10781 esac
10782
10783 : see if getgroups exists
10784 set getgroups d_getgrps
10785 eval $inlibc
10786
10787 : see if setgroups exists
10788 set setgroups d_setgrps
10789 eval $inlibc
10790
10791
10792 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10793 echo " "
10794 case "$d_getgrps$d_setgrps" in
10795 *define*)
10796         case "$groupstype" in
10797         '') dflt="$gidtype" ;;
10798         *)  dflt="$groupstype" ;;
10799         esac
10800         $cat <<EOM
10801 What type of pointer is the second argument to getgroups() and setgroups()?
10802 Usually this is the same as group ids, $gidtype, but not always.
10803
10804 EOM
10805         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10806         . ./myread
10807         groupstype="$ans"
10808         ;;
10809 *)  groupstype="$gidtype";;
10810 esac
10811
10812 : see what type lseek is declared as in the kernel
10813 rp="What is the type used for lseek's offset on this system?"
10814 set off_t lseektype long stdio.h sys/types.h
10815 eval $typedef_ask
10816
10817 echo " "
10818 $echo $n "Checking to see how big your file offsets are...$c" >&4
10819 $cat >try.c <<EOCP
10820 #include <sys/types.h>
10821 #include <stdio.h>
10822 int main()
10823 {
10824         printf("%d\n", sizeof($lseektype));
10825 }
10826 EOCP
10827 set try
10828 if eval $compile_ok; then
10829         lseeksize=`./try`
10830         $echo " $lseeksize bytes." >&4
10831 else
10832         dflt='4'
10833         echo " "
10834         echo "(I can't seem to compile the test program.  Guessing...)"
10835         rp="What is the size of your file offsets (in bytes)?"
10836         . ./myread
10837         lseeksize="$ans"
10838 fi
10839 $rm -f try.c try
10840
10841 echo " "
10842 echo "Checking if your $make program sets \$(MAKE)..." >&4
10843 case "$make_set_make" in
10844 '')
10845         $sed 's/^X //' > testmake.mak << 'EOF'
10846 Xall:
10847 X       @echo 'maketemp="$(MAKE)"'
10848 EOF
10849         case "`$make -f testmake.mak 2>/dev/null`" in
10850         *maketemp=*) make_set_make='#' ;;
10851         *)      make_set_make="MAKE=$make" ;;
10852         esac
10853         $rm -f testmake.mak
10854         ;;
10855 esac
10856 case "$make_set_make" in
10857 '#') echo "Yup, it does.";;
10858 *) echo "Nope, it doesn't.";;
10859 esac
10860
10861 : see what type is used for mode_t
10862 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10863 set mode_t modetype int stdio.h sys/types.h
10864 eval $typedef_ask
10865
10866 : define a fucntion to check prototypes
10867 $cat > protochk <<EOSH
10868 $startsh
10869 cc="$cc"
10870 optimize="$optimize"
10871 ccflags="$ccflags"
10872 prototype="$prototype"
10873 define="$define"
10874 rm=$rm
10875 EOSH
10876
10877 $cat >> protochk <<'EOSH'
10878
10879 $rm -f try.c
10880 foo="$1"
10881 shift
10882 while test $# -ge 2; do
10883         case "$1" in
10884                 $define) echo "#include <$2>" >> try.c ;;
10885                 literal) echo "$2" >> try.c ;;
10886         esac
10887     shift 2
10888 done
10889 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
10890 cat >> try.c <<'EOCP'
10891 #ifdef CAN_PROTOTYPE
10892 #define _(args) args
10893 #else
10894 #define _(args) ()
10895 #endif
10896 EOCP
10897 echo "$foo" >> try.c
10898 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10899 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10900 status=$?
10901 $rm -f try.[co]
10902 exit $status
10903 EOSH
10904 chmod +x protochk
10905 $eunicefix protochk
10906
10907 : see what type is used for size_t
10908 rp="What is the type used for the length parameter for string functions?"
10909 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10910 eval $typedef_ask
10911
10912 : check for type of arguments to gethostbyaddr. 
10913 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10914         case "$d_gethbyaddr" in
10915         $define)
10916                 $cat <<EOM
10917
10918 Checking to see what type of arguments are accepted by gethostbyaddr().
10919 EOM
10920                 hdrs="$define sys/types.h
10921                         $d_socket sys/socket.h 
10922                         $i_niin netinet/in.h 
10923                         $i_netdb netdb.h
10924                         $i_unistd unistd.h"
10925                 : The first arg can 'char *' or 'void *'
10926                 : The second arg is some of integral type
10927                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10928                         for yyy in size_t long int; do
10929                                 case "$netdb_host_type" in
10930                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10931                                         if ./protochk "$try" $hdrs; then
10932                                                 echo "Your system accepts $xxx for the first arg."
10933                                                 echo "...and $yyy for the second arg."
10934                                                 netdb_host_type="$xxx"
10935                                                 netdb_hlen_type="$yyy"
10936                                         fi
10937                                         ;;
10938                                 esac
10939                         done
10940                 done
10941                 : In case none of those worked, prompt the user.
10942                 case "$netdb_host_type" in
10943                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
10944                         dflt='char *'
10945                         . ./myread
10946                         netdb_host_type=$ans
10947                         rp='What is the type for the 2nd argument to gethostbyaddr?'
10948                         dflt="$sizetype"
10949                         . ./myread
10950                         netdb_hlen_type=$ans
10951                         ;;
10952                 esac
10953                 ;;
10954         *)      : no gethostbyaddr, so pick harmless defaults
10955                 netdb_host_type='char *'
10956                 netdb_hlen_type="$sizetype"
10957                 ;;
10958         esac
10959         # Remove the "const" if needed. -- but then we'll have a 
10960         # prototype clash!
10961         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10962 fi
10963
10964 : check for type of argument to gethostbyname. 
10965 if test "X$netdb_name_type" = X ; then
10966         case "$d_gethbyname" in
10967         $define)
10968                 $cat <<EOM
10969
10970 Checking to see what type of argument is accepted by gethostbyname().
10971 EOM
10972                 hdrs="$define sys/types.h
10973                         $d_socket sys/socket.h 
10974                         $i_niin netinet/in.h 
10975                         $i_netdb netdb.h
10976                         $i_unistd unistd.h"
10977                 for xxx in "const char *" "char *"; do
10978                         case "$netdb_name_type" in
10979                         '')     try="extern struct hostent *gethostbyname($xxx);"
10980                                 if ./protochk "$try" $hdrs; then
10981                                         echo "Your system accepts $xxx."
10982                                         netdb_name_type="$xxx"
10983                                 fi
10984                                 ;;
10985                         esac
10986                 done
10987                 : In case none of those worked, prompt the user.
10988                 case "$netdb_name_type" in
10989                 '')     rp='What is the type for the 1st argument to gethostbyname?'
10990                         dflt='char *'
10991                         . ./myread
10992                         netdb_name_type=$ans
10993                         ;;
10994                 esac
10995                 ;;
10996         *)      : no gethostbyname, so pick harmless default
10997                 netdb_name_type='char *'
10998                 ;;
10999         esac
11000 fi
11001
11002 : check for type of 1st argument to getnetbyaddr. 
11003 if test "X$netdb_net_type" = X ; then
11004         case "$d_getnbyaddr" in
11005         $define)
11006                 $cat <<EOM
11007
11008 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11009 EOM
11010                 hdrs="$define sys/types.h
11011                         $d_socket sys/socket.h 
11012                         $i_niin netinet/in.h 
11013                         $i_netdb netdb.h
11014                         $i_unistd unistd.h"
11015                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11016                         case "$netdb_net_type" in
11017                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11018                                 if ./protochk "$try" $hdrs; then
11019                                         echo "Your system accepts $xxx."
11020                                         netdb_net_type="$xxx"
11021                                 fi
11022                                 ;;
11023                         esac
11024                 done
11025                 : In case none of those worked, prompt the user.
11026                 case "$netdb_net_type" in
11027                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11028                         dflt='long'
11029                         . ./myread
11030                         netdb_net_type=$ans
11031                         ;;
11032                 esac
11033                 ;;
11034         *)      : no getnetbyaddr, so pick harmless default
11035                 netdb_net_type='long'
11036                 ;;
11037         esac
11038 fi
11039 : locate the preferred pager for this system
11040 case "$pager" in
11041 '')
11042         dflt=''
11043         case "$pg" in
11044         /*) dflt=$pg;;
11045         esac
11046         case "$more" in
11047         /*) dflt=$more;;
11048         esac
11049         case "$less" in
11050         /*) dflt=$less;;
11051         esac
11052         case "$dflt" in
11053         '') dflt=/usr/ucb/more;;
11054         esac
11055         ;;
11056 *) dflt="$pager";;
11057 esac
11058 echo " "
11059 fn=f/
11060 rp='What pager is used on your system?'
11061 . ./getfile
11062 pager="$ans"
11063
11064 : see what type pids are declared as in the kernel
11065 rp="What is the type of process ids on this system?"
11066 set pid_t pidtype int stdio.h sys/types.h
11067 eval $typedef_ask
11068
11069 : check for length of pointer
11070 echo " "
11071 case "$ptrsize" in
11072 '')
11073         $echo $n "Checking to see how big your pointers are...$c" >&4
11074         if test "$voidflags" -gt 7; then
11075                 echo '#define VOID_PTR char *' > try.c
11076         else
11077                 echo '#define VOID_PTR void *' > try.c
11078         fi
11079         $cat >>try.c <<'EOCP'
11080 #include <stdio.h>
11081 int main()
11082 {
11083         printf("%d\n", sizeof(VOID_PTR));
11084         exit(0);
11085 }
11086 EOCP
11087         set try
11088         if eval $compile_ok; then
11089                 ptrsize=`./try`
11090                 $echo " $ptrsize bytes." >&4
11091         else
11092                 dflt='4'
11093                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11094                 rp="What is the size of a pointer (in bytes)?"
11095                 . ./myread
11096                 ptrsize="$ans"
11097         fi
11098         ;;
11099 esac
11100 $rm -f try.c try
11101
11102 : see if ar generates random libraries by itself
11103 echo " "
11104 echo "Checking how to generate random libraries on your machine..." >&4
11105 echo 'int bar1() { return bar2(); }' > bar1.c
11106 echo 'int bar2() { return 2; }' > bar2.c
11107 $cat > foo.c <<'EOP'
11108 int main() { printf("%d\n", bar1()); exit(0); }
11109 EOP
11110 $cc $ccflags -c bar1.c >/dev/null 2>&1
11111 $cc $ccflags -c bar2.c >/dev/null 2>&1
11112 $cc $ccflags -c foo.c >/dev/null 2>&1
11113 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11114 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11115         ./foobar >/dev/null 2>&1; then
11116         echo "$ar appears to generate random libraries itself."
11117         orderlib=false
11118         ranlib=":"
11119 elif $ar ts bar$_a >/dev/null 2>&1 &&
11120         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11121         ./foobar >/dev/null 2>&1; then
11122                 echo "a table of contents needs to be added with '$ar ts'."
11123                 orderlib=false
11124                 ranlib="$ar ts"
11125 else
11126         case "$ranlib" in
11127         :) ranlib='';;
11128         '')
11129                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11130                 $test -f $ranlib || ranlib=''
11131                 ;;
11132         esac
11133         if $test -n "$ranlib"; then
11134                 echo "your system has '$ranlib'; we'll use that."
11135                 orderlib=false
11136         else
11137                 echo "your system doesn't seem to support random libraries"
11138                 echo "so we'll use lorder and tsort to order the libraries."
11139                 orderlib=true
11140                 ranlib=":"
11141         fi
11142 fi
11143 $rm -f foo* bar* 
11144
11145 : check for type of arguments to select. 
11146 case "$selecttype" in
11147 '') case "$d_select" in
11148         $define)
11149                 $cat <<EOM
11150 Checking to see what type of arguments are accepted by select().
11151 EOM
11152                 hdrs="$define sys/types.h
11153                         $i_systime sys/time.h 
11154                         $i_sysselct sys/select.h
11155                         $d_socket sys/socket.h"
11156                 : The first arg can be int, unsigned, or size_t
11157                 : The last arg may or may not be 'const'
11158                 val=''
11159                 : void pointer has been seen but using that
11160                 : breaks the selectminbits test
11161                 for xxx in 'fd_set *' 'int *'; do
11162                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11163                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11164                                         case "$val" in
11165                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11166                                                 if ./protochk "$try" $hdrs; then
11167                                                         echo "Your system accepts $xxx."
11168                                                         val="$xxx"
11169                                                 fi
11170                                                 ;;
11171                                         esac
11172                                 done
11173                         done
11174                 done
11175                 case "$val" in
11176                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11177                         case "$d_fd_set" in
11178                                 $define) dflt="fd_set *" ;;
11179                                 *)              dflt="int *" ;;
11180                         esac
11181                         . ./myread
11182                         val=$ans
11183                         ;;
11184                 esac
11185                 selecttype="$val"
11186                 ;;
11187         *)      : no select, so pick a harmless default
11188                 selecttype='int *'
11189                 ;;
11190         esac
11191         ;;
11192 esac
11193
11194 : check for the select 'width'
11195 case "$selectminbits" in
11196 '') case "$d_select" in
11197         $define)
11198                 $cat <<EOM
11199
11200 Checking to see on how many bits at a time your select() operates...
11201 EOM
11202                 $cat >try.c <<EOCP
11203 #include <sys/types.h>
11204 #$i_time I_TIME
11205 #$i_systime I_SYS_TIME
11206 #$i_systimek I_SYS_TIME_KERNEL
11207 #ifdef I_TIME
11208 #   include <time.h>
11209 #endif
11210 #ifdef I_SYS_TIME
11211 #   ifdef I_SYS_TIME_KERNEL
11212 #       define KERNEL
11213 #   endif
11214 #   include <sys/time.h>
11215 #   ifdef I_SYS_TIME_KERNEL
11216 #       undef KERNEL
11217 #   endif
11218 #endif
11219 #$i_sysselct I_SYS_SELECT
11220 #ifdef I_SYS_SELECT
11221 #include <sys/select.h>
11222 #endif
11223 #include <stdio.h>
11224 $selecttype b;
11225 #define S sizeof(*(b))
11226 #define MINBITS 64
11227 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11228 #define NBITS  (NBYTES * 8)
11229 int main() {
11230     char s[NBYTES];
11231     struct timeval t;
11232     int i;
11233     FILE* fp;
11234     int fd;
11235
11236     fclose(stdin);
11237     fp = fopen("try.c", "r");
11238     if (fp == 0)
11239       exit(1);
11240     fd = fileno(fp);
11241     if (fd < 0)
11242       exit(2);
11243     b = ($selecttype)s;
11244     for (i = 0; i < NBITS; i++)
11245         FD_SET(i, b);
11246     t.tv_sec  = 0;
11247     t.tv_usec = 0;
11248     select(fd + 1, b, 0, 0, &t);
11249     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11250     printf("%d\n", i + 1);
11251     return 0;
11252 }
11253 EOCP
11254                 set try
11255                 if eval $compile_ok; then
11256                         selectminbits=`./try`
11257                         case "$selectminbits" in
11258                         '')     cat >&4 <<EOM
11259 Cannot figure out on how many bits at a time your select() operates.
11260 I'll play safe and guess it is 32 bits.
11261 EOM
11262                                 selectminbits=32
11263                                 bits="32 bits"
11264                                 ;;
11265                         1)      bits="1 bit" ;;
11266                         *)      bits="$selectminbits bits" ;;
11267                         esac
11268                         echo "Your select() operates on $bits at a time." >&4
11269                 else
11270                         rp='What is the minimum number of bits your select() operates on?'
11271                         case "$byteorder" in
11272                         1234|12345678)  dflt=32 ;;
11273                         *)              dflt=1  ;;
11274                         esac
11275                         . ./myread
11276                         val=$ans
11277                         selectminbits="$val"
11278                 fi
11279                 $rm -f try.* try
11280                 ;;
11281         *)      : no select, so pick a harmless default
11282                 selectminbits='32'
11283                 ;;
11284         esac
11285         ;;
11286 esac
11287
11288 : Trace out the files included by signal.h, then look for SIGxxx names.
11289 : Remove SIGARRAYSIZE used by HPUX.
11290 : Remove SIGTYP void lines used by OS2.
11291 xxx=`echo '#include <signal.h>' |
11292         $cppstdin $cppminus $cppflags 2>/dev/null |
11293         $grep '^[       ]*#.*include' | 
11294         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11295 : Check this list of files to be sure we have parsed the cpp output ok.
11296 : This will also avoid potentially non-existent files, such 
11297 : as ../foo/bar.h
11298 xxxfiles=''
11299 for xx in $xxx /dev/null ; do
11300         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11301 done
11302 : If we have found no files, at least try signal.h
11303 case "$xxxfiles" in
11304 '')     xxxfiles=`./findhdr signal.h` ;;
11305 esac
11306 xxx=`awk '
11307 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11308         print substr($2, 4, 20)
11309 }
11310 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11311         print substr($3, 4, 20)
11312 }' $xxxfiles`
11313 : Append some common names just in case the awk scan failed.
11314 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11315 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11316 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11317 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11318 : generate a few handy files for later
11319 $cat > signal.c <<'EOCP'
11320 #include <sys/types.h>
11321 #include <signal.h>
11322 #include <stdio.h>
11323 int main() {
11324
11325 /* Strange style to avoid deeply-nested #if/#else/#endif */
11326 #ifndef NSIG
11327 #  ifdef _NSIG
11328 #    define NSIG (_NSIG)
11329 #  endif
11330 #endif
11331
11332 #ifndef NSIG
11333 #  ifdef SIGMAX
11334 #    define NSIG (SIGMAX+1)
11335 #  endif
11336 #endif
11337
11338 #ifndef NSIG
11339 #  ifdef SIG_MAX
11340 #    define NSIG (SIG_MAX+1)
11341 #  endif
11342 #endif
11343
11344 #ifndef NSIG
11345 #  ifdef MAXSIG
11346 #    define NSIG (MAXSIG+1)
11347 #  endif
11348 #endif
11349
11350 #ifndef NSIG
11351 #  ifdef MAX_SIG
11352 #    define NSIG (MAX_SIG+1)
11353 #  endif
11354 #endif
11355
11356 #ifndef NSIG
11357 #  ifdef SIGARRAYSIZE
11358 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11359 #  endif
11360 #endif
11361
11362 #ifndef NSIG
11363 #  ifdef _sys_nsig
11364 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11365 #  endif
11366 #endif
11367
11368 /* Default to some arbitrary number that's big enough to get most
11369    of the common signals.
11370 */
11371 #ifndef NSIG
11372 #    define NSIG 50
11373 #endif
11374
11375 printf("NSIG %d\n", NSIG);
11376
11377 #ifndef JUST_NSIG
11378
11379 EOCP
11380
11381 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11382 {
11383         printf "#ifdef SIG"; printf $1; printf "\n"
11384         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11385         printf $1; printf ");\n"
11386         printf "#endif\n"
11387 }
11388 END {
11389         printf "#endif /* JUST_NSIG */\n";
11390         printf "}\n";
11391 }
11392 ' >>signal.c
11393 $cat >signal.awk <<'EOP'
11394 BEGIN { ndups = 0 }
11395 $1 ~ /^NSIG$/ { nsig = $2 }
11396 ($1 !~ /^NSIG$/) && (NF == 2) {
11397     if ($2 > maxsig) { maxsig = $2 }
11398     if (sig_name[$2]) {
11399         dup_name[ndups] = $1
11400         dup_num[ndups] = $2
11401         ndups++ 
11402     }
11403     else {
11404         sig_name[$2] = $1
11405         sig_num[$2] = $2
11406     }
11407
11408 }
11409 END { 
11410     if (nsig == 0) { nsig = maxsig + 1 }
11411         for (n = 1; n < nsig; n++) {
11412                 if (sig_name[n]) {
11413                         printf("%s %d\n", sig_name[n], sig_num[n])
11414                 }
11415                 else {
11416                         printf("NUM%d %d\n", n, n) 
11417                 }
11418         }
11419     for (n = 0; n < ndups; n++) {
11420                 printf("%s %d\n", dup_name[n], dup_num[n])
11421     }
11422 }
11423 EOP
11424 $cat >signal_cmd <<EOS
11425 $startsh
11426 if $test -s signal.lst; then
11427     echo "Using your existing signal.lst file"
11428         exit 0
11429 fi
11430 xxx="$xxx"
11431 EOS
11432 $cat >>signal_cmd <<'EOS'
11433
11434 set signal
11435 if eval $compile_ok; then
11436         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11437 else
11438         echo "(I can't seem be able to compile the whole test program)" >&4
11439         echo "(I'll try it in little pieces.)" >&4
11440         set signal -DJUST_NSIG
11441         if eval $compile_ok; then
11442                 ./signal$_exe > signal.nsg
11443                 $cat signal.nsg
11444         else
11445                 echo "I can't seem to figure out how many signals you have." >&4
11446                 echo "Guessing 50." >&4
11447                 echo 'NSIG 50' > signal.nsg
11448         fi
11449         : Now look at all the signal names, one at a time.
11450         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11451                 $cat > signal.c <<EOCP
11452 #include <sys/types.h>
11453 #include <signal.h>
11454 #include <stdio.h>
11455 int main() {
11456 printf("$xx %d\n", SIG${xx});
11457 return 0;
11458 }
11459 EOCP
11460                 set signal
11461                 if eval $compile; then
11462                         echo "SIG${xx} found."
11463                         ./signal$_exe  >> signal.ls1
11464                 else
11465                         echo "SIG${xx} NOT found."
11466                 fi
11467         done
11468         if $test -s signal.ls1; then
11469                 $cat signal.nsg signal.ls1 |
11470                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11471         fi
11472
11473 fi
11474 if $test -s signal.lst; then
11475         :
11476 else
11477         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11478         echo 'kill -l' >signal
11479         set X `csh -f <signal`
11480         $rm -f signal
11481         shift
11482         case $# in
11483         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11484         esac
11485         echo $@ | $tr ' ' $trnl | \
11486                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11487 fi
11488 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11489 EOS
11490 chmod a+x signal_cmd
11491 $eunicefix signal_cmd
11492
11493 : generate list of signal names
11494 echo " "
11495 case "$sig_name_init" in
11496 '') doinit=yes ;;
11497 *)  case "$sig_num_init" in
11498     ''|*,*) doinit=yes ;;
11499     esac ;;
11500 esac
11501 case "$doinit" in
11502 yes)
11503         echo "Generating a list of signal names and numbers..." >&4
11504         . ./signal_cmd
11505         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11506         sig_name="ZERO $sig_name"
11507         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11508                                                 { printf "\"%s\", ", $1 }
11509                                                 END { printf "0\n" }' signal.lst`
11510         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11511         sig_num="0 $sig_num"
11512         sig_num_init=`$awk 'BEGIN { printf "0, " }
11513                                         { printf "%d, ", $2}
11514                                         END { printf "0\n"}' signal.lst`
11515         ;;
11516 esac
11517 echo "The following signals are available:"
11518 echo " "
11519 echo $sig_name | $awk \
11520 'BEGIN { linelen = 0 }
11521 {
11522         for (i = 1; i <= NF; i++) {
11523                 name = "SIG" $i " "
11524                 linelen = linelen + length(name)
11525                 if (linelen > 70) {
11526                         printf "\n"
11527                         linelen = length(name)
11528                 }
11529                 printf "%s", name
11530         }
11531         printf "\n"
11532 }'
11533 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11534
11535 : see what type is used for signed size_t
11536 set ssize_t ssizetype int stdio.h sys/types.h
11537 eval $typedef
11538 dflt="$ssizetype"
11539 $cat > ssize.c <<EOM
11540 #include <stdio.h>
11541 #include <sys/types.h>
11542 #define Size_t $sizetype
11543 #define SSize_t $dflt
11544 int main()
11545 {
11546         if (sizeof(Size_t) == sizeof(SSize_t))
11547                 printf("$dflt\n");
11548         else if (sizeof(Size_t) == sizeof(int))
11549                 printf("int\n");
11550         else 
11551                 printf("long\n");
11552         exit(0);
11553 }
11554 EOM
11555 echo " "
11556 set ssize
11557 if eval $compile_ok && ./ssize > /dev/null; then
11558         ssizetype=`./ssize`
11559         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11560 else
11561         $cat >&4 <<EOM
11562 Help! I can't compile and run the ssize_t test program: please enlighten me!
11563 (This is probably a misconfiguration in your system or libraries, and
11564 you really ought to fix it.  Still, I'll try anyway.)
11565
11566 I need a type that is the same size as $sizetype, but is guaranteed to
11567 be signed.  Common values are ssize_t, int and long.
11568
11569 EOM
11570         rp="What signed type is the same size as $sizetype?"
11571         . ./myread
11572         ssizetype="$ans"
11573 fi
11574 $rm -f ssize ssize.*
11575
11576 : see what type of char stdio uses.
11577 echo " "
11578 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11579         echo "Your stdio uses unsigned chars." >&4
11580         stdchar="unsigned char"
11581 else
11582         echo "Your stdio uses signed chars." >&4
11583         stdchar="char"
11584 fi
11585
11586 : see if time exists
11587 echo " "
11588 if test "X$d_time" = X -o X"$timetype" = X; then
11589     if set time val -f d_time; eval $csym; $val; then
11590                 echo 'time() found.' >&4
11591                 val="$define"
11592                 rp="What is the type returned by time() on this system?"
11593                 set time_t timetype long stdio.h sys/types.h
11594                 eval $typedef_ask
11595     else
11596                 echo 'time() not found, hope that will do.' >&4
11597                 val="$undef"
11598                 timetype='int';
11599     fi
11600     set d_time
11601     eval $setvar
11602 fi
11603
11604 : see what type uids are declared as in the kernel
11605 echo " "
11606 echo "Looking for the type for user ids returned by getuid()."
11607 set uid_t uidtype xxx stdio.h sys/types.h
11608 eval $typedef
11609 case "$uidtype" in
11610 xxx)
11611         xxx=`./findhdr sys/user.h`
11612         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11613         case $1 in
11614         unsigned) dflt="$1 $2" ;;
11615         *) dflt="$1" ;;
11616         esac
11617         ;;
11618 *) dflt="$uidtype";;
11619 esac
11620 case "$uidtype" in
11621 uid_t)  echo "uid_t found." ;;
11622 *)      rp="What is the type for user ids returned by getuid()?"
11623         . ./myread
11624         uidtype="$ans"
11625         ;;
11626 esac
11627
11628 : see if dbm.h is available
11629 : see if dbmclose exists
11630 set dbmclose d_dbmclose
11631 eval $inlibc
11632
11633 case "$d_dbmclose" in
11634 $define)
11635         set dbm.h i_dbm
11636         eval $inhdr
11637         case "$i_dbm" in
11638         $define)
11639                 val="$undef"
11640                 set i_rpcsvcdbm
11641                 eval $setvar
11642                 ;;
11643         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11644                 eval $inhdr
11645                 ;;
11646         esac
11647         ;;
11648 *)      echo "We won't be including <dbm.h>"
11649         val="$undef"
11650         set i_dbm
11651         eval $setvar
11652         val="$undef"
11653         set i_rpcsvcdbm
11654         eval $setvar
11655         ;;
11656 esac
11657
11658 : see if this is a sys/file.h system
11659 val=''
11660 set sys/file.h val
11661 eval $inhdr
11662
11663 : do we need to include sys/file.h ?
11664 case "$val" in
11665 "$define")
11666         echo " "
11667         if $h_sysfile; then
11668                 val="$define"
11669                 echo "We'll be including <sys/file.h>." >&4
11670         else
11671                 val="$undef"
11672                 echo "We won't be including <sys/file.h>." >&4
11673         fi
11674         ;;
11675 *)
11676         h_sysfile=false
11677         ;;
11678 esac
11679 set i_sysfile
11680 eval $setvar
11681
11682 : see if fcntl.h is there
11683 val=''
11684 set fcntl.h val
11685 eval $inhdr
11686
11687 : see if we can include fcntl.h
11688 case "$val" in
11689 "$define")
11690         echo " "
11691         if $h_fcntl; then
11692                 val="$define"
11693                 echo "We'll be including <fcntl.h>." >&4
11694         else
11695                 val="$undef"
11696                 if $h_sysfile; then
11697         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11698                 else
11699                         echo "We won't be including <fcntl.h>." >&4
11700                 fi
11701         fi
11702         ;;
11703 *)
11704         h_fcntl=false
11705         val="$undef"
11706         ;;
11707 esac
11708 set i_fcntl
11709 eval $setvar
11710
11711 : see if locale.h is available
11712 set locale.h i_locale
11713 eval $inhdr
11714
11715 : see if mach cthreads are available
11716 if test "X$usethreads" = "X$define"; then
11717         set mach/cthreads.h i_machcthr
11718         eval $inhdr
11719 else
11720         i_machcthr="$undef"
11721 fi
11722
11723
11724
11725 : see if this is a math.h system
11726 set math.h i_math
11727 eval $inhdr
11728
11729 : see if this is a mntent.h system
11730 set mntent.h i_mntent
11731 eval $inhdr
11732
11733 : see if ndbm.h is available
11734 set ndbm.h t_ndbm
11735 eval $inhdr
11736 case "$t_ndbm" in
11737 $define)
11738         : see if dbm_open exists
11739         set dbm_open d_dbm_open
11740         eval $inlibc
11741         case "$d_dbm_open" in
11742         $undef)
11743                 t_ndbm="$undef"
11744                 echo "We won't be including <ndbm.h>"
11745                 ;;
11746         esac
11747         ;;
11748 esac
11749 val="$t_ndbm"
11750 set i_ndbm
11751 eval $setvar
11752
11753 : see if net/errno.h is available
11754 val=''
11755 set net/errno.h val
11756 eval $inhdr
11757
11758 : Unfortunately, it causes problems on some systems.  Arrgh.
11759 case "$val" in
11760 $define)
11761         cat > try.c <<'EOM'
11762 #include <stdio.h>
11763 #include <errno.h>
11764 #include <net/errno.h>
11765 int func()
11766 {
11767         return ENOTSOCK;
11768 }
11769 EOM
11770         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11771                 echo "We'll be including <net/errno.h>." >&4
11772         else
11773                 echo "We won't be including <net/errno.h>." >&4
11774                 val="$undef"
11775         fi
11776         $rm -f try.* try
11777         ;;
11778 esac
11779 set i_neterrno
11780 eval $setvar
11781
11782 : see if this is a poll.h system
11783 set poll.h i_poll
11784 eval $inhdr
11785
11786 : get C preprocessor symbols handy
11787 echo " "
11788 $echo $n "Hmm... $c"
11789 echo $al | $tr ' ' $trnl >Cppsym.know
11790 $cat <<EOSS >Cppsym
11791 $startsh
11792 case "\$1" in
11793 -l) list=true
11794         shift
11795         ;;
11796 esac
11797 unknown=''
11798 case "\$list\$#" in
11799 1|2)
11800         for sym do
11801                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11802                         exit 0
11803                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11804                         :
11805                 else
11806                         unknown="\$unknown \$sym"
11807                 fi
11808         done
11809         set X \$unknown
11810         shift
11811         ;;
11812 esac
11813 case \$# in
11814 0) exit 1;;
11815 esac
11816 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11817 #ifdef \1\\
11818 exit 0; _ _ _ _\1\\      \1\\
11819 #endif\\
11820 /' >Cppsym\$\$
11821 echo "exit 1; _ _ _" >>Cppsym\$\$
11822 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11823 case "\$list" in
11824 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11825 *)
11826         sh Cppsym2\$\$
11827         status=\$?
11828         ;;
11829 esac
11830 $rm -f Cppsym\$\$ Cppsym2\$\$
11831 exit \$status
11832 EOSS
11833 chmod +x Cppsym
11834 $eunicefix Cppsym
11835 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11836
11837 : now check the C compiler for additional symbols
11838 $cat >ccsym <<EOS
11839 $startsh
11840 $cat >tmp.c <<EOF
11841 extern int foo;
11842 EOF
11843 for i in \`$cc -v -c tmp.c 2>&1\`
11844 do
11845         case "\$i" in
11846         -D*) echo "\$i" | $sed 's/^-D//';;
11847         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11848         esac
11849 done
11850 $rm -f try.c
11851 EOS
11852 chmod +x ccsym
11853 $eunicefix ccsym
11854 ./ccsym > ccsym1.raw
11855 if $test -s ccsym1.raw; then
11856        $sort ccsym1.raw | $uniq >ccsym.raw
11857 else
11858        mv ccsym1.raw ccsym.raw
11859 fi
11860
11861 $awk '/\=/ { print $0; next }
11862         { print $0"=1" }' ccsym.raw >ccsym.list
11863 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11864 $comm -13 ccsym.true ccsym.list >ccsym.own
11865 $comm -12 ccsym.true ccsym.list >ccsym.com
11866 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11867 also=''
11868 symbols='symbols'
11869 if $test -z ccsym.raw; then
11870         echo "Your C compiler doesn't seem to define any symbol!" >&4
11871         echo " "
11872         echo "However, your C preprocessor defines the following ones:"
11873         $cat Cppsym.true
11874 else
11875         if $test -s ccsym.com; then
11876                 echo "Your C compiler and pre-processor define these symbols:"
11877                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11878                 also='also '
11879                 symbols='ones'
11880                 $test "$silent" || sleep 1
11881         fi
11882         if $test -s ccsym.cpp; then
11883                 $test "$also" && echo " "
11884                 echo "Your C pre-processor ${also}defines the following $symbols:"
11885                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11886                 also='further '
11887                 $test "$silent" || sleep 1
11888         fi
11889         if $test -s ccsym.own; then
11890                 $test "$also" && echo " "
11891                 echo "Your C compiler ${also}defines the following cpp variables:"
11892                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11893                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11894                 $test "$silent" || sleep 1
11895         fi
11896 fi
11897 $rm -f ccsym*
11898
11899 : see if this is a termio system
11900 val="$undef"
11901 val2="$undef"
11902 val3="$undef"
11903 if $test `./findhdr termios.h`; then
11904         set tcsetattr i_termios
11905         eval $inlibc
11906         val3="$i_termios"
11907 fi
11908 echo " "
11909 case "$val3" in
11910 "$define") echo "You have POSIX termios.h... good!" >&4;;
11911 *) if ./Cppsym pyr; then
11912                 case "`/bin/universe`" in
11913                 ucb) if $test `./findhdr sgtty.h`; then
11914                                 val2="$define"
11915                                 echo "<sgtty.h> found." >&4
11916                         else
11917                                 echo "System is pyramid with BSD universe."
11918                                 echo "<sgtty.h> not found--you could have problems." >&4
11919                         fi;;
11920                 *) if $test `./findhdr termio.h`; then
11921                                 val="$define"
11922                                 echo "<termio.h> found." >&4
11923                         else
11924                                 echo "System is pyramid with USG universe."
11925                                 echo "<termio.h> not found--you could have problems." >&4
11926                         fi;;
11927                 esac
11928         elif ./usg; then
11929                 if $test `./findhdr termio.h`; then
11930                         echo "<termio.h> found." >&4
11931                         val="$define"
11932                 elif $test `./findhdr sgtty.h`; then
11933                         echo "<sgtty.h> found." >&4
11934                         val2="$define"
11935                 else
11936 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11937                 fi
11938         else
11939                 if $test `./findhdr sgtty.h`; then
11940                         echo "<sgtty.h> found." >&4
11941                         val2="$define"
11942                 elif $test `./findhdr termio.h`; then
11943                         echo "<termio.h> found." >&4
11944                         val="$define"
11945                 else
11946 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11947                 fi
11948         fi;;
11949 esac
11950 set i_termio; eval $setvar
11951 val=$val2; set i_sgtty; eval $setvar
11952 val=$val3; set i_termios; eval $setvar
11953
11954 : see if stdarg is available
11955 echo " "
11956 if $test `./findhdr stdarg.h`; then
11957         echo "<stdarg.h> found." >&4
11958         valstd="$define"
11959 else
11960         echo "<stdarg.h> NOT found." >&4
11961         valstd="$undef"
11962 fi
11963
11964 : see if varags is available
11965 echo " "
11966 if $test `./findhdr varargs.h`; then
11967         echo "<varargs.h> found." >&4
11968 else
11969         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11970 fi
11971
11972 : set up the varargs testing programs
11973 $cat > varargs.c <<EOP
11974 #ifdef I_STDARG
11975 #include <stdarg.h>
11976 #endif
11977 #ifdef I_VARARGS
11978 #include <varargs.h>
11979 #endif
11980
11981 #ifdef I_STDARG
11982 int f(char *p, ...)
11983 #else
11984 int f(va_alist)
11985 va_dcl
11986 #endif
11987 {
11988         va_list ap;
11989 #ifndef I_STDARG
11990         char *p;
11991 #endif
11992 #ifdef I_STDARG
11993         va_start(ap,p);
11994 #else
11995         va_start(ap);
11996         p = va_arg(ap, char *);
11997 #endif
11998         va_end(ap);
11999 }
12000 EOP
12001 $cat > varargs <<EOP
12002 $startsh
12003 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12004         echo "true"
12005 else
12006         echo "false"
12007 fi
12008 $rm -f varargs$_o
12009 EOP
12010 chmod +x varargs
12011
12012 : now check which varargs header should be included
12013 echo " "
12014 i_varhdr=''
12015 case "$valstd" in
12016 "$define")
12017         if `./varargs I_STDARG`; then
12018                 val='stdarg.h'
12019         elif `./varargs I_VARARGS`; then
12020                 val='varargs.h'
12021         fi
12022         ;;
12023 *)
12024         if `./varargs I_VARARGS`; then
12025                 val='varargs.h'
12026         fi
12027         ;;
12028 esac
12029 case "$val" in
12030 '')
12031 echo "I could not find the definition for va_dcl... You have problems..." >&4
12032         val="$undef"; set i_stdarg; eval $setvar
12033         val="$undef"; set i_varargs; eval $setvar
12034         ;;
12035 *) 
12036         set i_varhdr
12037         eval $setvar
12038         case "$i_varhdr" in
12039         stdarg.h)
12040                 val="$define"; set i_stdarg; eval $setvar
12041                 val="$undef"; set i_varargs; eval $setvar
12042                 ;;
12043         varargs.h)
12044                 val="$undef"; set i_stdarg; eval $setvar
12045                 val="$define"; set i_varargs; eval $setvar
12046                 ;;
12047         esac
12048         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12049 esac
12050 $rm -f varargs*
12051
12052 : see if stddef is available
12053 set stddef.h i_stddef
12054 eval $inhdr
12055
12056 : see if sys/access.h is available
12057 set sys/access.h i_sysaccess
12058 eval $inhdr
12059
12060 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12061 set sys/filio.h i_sysfilio
12062 eval $inhdr
12063 echo " "
12064 if $test `./findhdr sys/ioctl.h`; then
12065         val="$define"
12066         echo '<sys/ioctl.h> found.' >&4
12067 else
12068         val="$undef"
12069         if $test $i_sysfilio = "$define"; then
12070             echo '<sys/ioctl.h> NOT found.' >&4
12071         else
12072                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12073                 $test $i_termio = "$define" && xxx="termio.h"
12074                 $test $i_termios = "$define" && xxx="termios.h"
12075 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12076         fi
12077 fi
12078 set i_sysioctl
12079 eval $setvar
12080
12081 : see if sys/resource.h has to be included
12082 set sys/resource.h i_sysresrc
12083 eval $inhdr
12084
12085 : see if sys/security.h is available
12086 set sys/security.h i_syssecrt
12087 eval $inhdr
12088
12089 : see if this is a sys/statvfs.h system
12090 set sys/statvfs.h i_sysstatvfs
12091 eval $inhdr
12092
12093 : see if this is a sys/un.h system
12094 set sys/un.h i_sysun
12095 eval $inhdr
12096
12097 : see if this is a syswait system
12098 set sys/wait.h i_syswait
12099 eval $inhdr
12100
12101 : see if this is an utime system
12102 set utime.h i_utime
12103 eval $inhdr
12104
12105 : see if this is a values.h system
12106 set values.h i_values
12107 eval $inhdr
12108
12109 : see if this is a vfork system
12110 case "$d_vfork" in
12111 "$define")
12112         set vfork.h i_vfork
12113         eval $inhdr
12114         ;;
12115 *)
12116         i_vfork="$undef"
12117         ;;
12118 esac
12119
12120 : see if gdbm.h is available
12121 set gdbm.h t_gdbm
12122 eval $inhdr
12123 case "$t_gdbm" in
12124 $define)
12125         : see if gdbm_open exists
12126         set gdbm_open d_gdbm_open
12127         eval $inlibc
12128         case "$d_gdbm_open" in
12129         $undef)
12130                 t_gdbm="$undef"
12131                 echo "We won't be including <gdbm.h>"
12132                 ;;
12133         esac
12134         ;;
12135 esac
12136 val="$t_gdbm"
12137 set i_gdbm
12138 eval $setvar
12139
12140 echo " "
12141 echo "Looking for extensions..." >&4
12142 tdir=`pwd`
12143 cd $rsrc/ext
12144 : If we are using the old config.sh, known_extensions may contain
12145 : old or inaccurate or duplicate values.
12146 known_extensions=''
12147 nonxs_extensions=''
12148 : We do not use find because it might not be available.
12149 : We do not just use MANIFEST because the user may have dropped
12150 : some additional extensions into the source tree and expect them
12151 : to be built.
12152 for xxx in * ; do
12153         case "$xxx" in
12154         DynaLoader|dynaload) ;;
12155         *)      if $test -f $xxx/$xxx.xs; then
12156                         known_extensions="$known_extensions $xxx"
12157                 elif $test -f $xxx/Makefile.PL; then
12158                         nonxs_extensions="$nonxs_extensions $xxx"
12159                 else
12160                         if $test -d $xxx; then
12161                                 # Look for nested extensions, eg. Devel/Dprof.
12162                                 cd $xxx
12163                                 for yyy in * ; do
12164                                 if $test -f $yyy/$yyy.xs; then
12165                                         known_extensions="$known_extensions $xxx/$yyy"
12166                                 elif $test -f $yyy/Makefile.PL; then
12167                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12168                                 fi
12169                                 done
12170                                 cd ..
12171                         fi
12172                 fi 
12173                 ;;
12174         esac
12175 done
12176 set X $nonxs_extensions
12177 shift
12178 nonxs_extensions="$*"
12179 set X $known_extensions
12180 shift
12181 known_extensions="$*"
12182 cd $tdir
12183
12184 : Now see which are supported on this system.
12185 avail_ext=''
12186 for xxx in $known_extensions ; do
12187         case "$xxx" in
12188         DB_File|db_file)
12189                 case "$i_db" in
12190                 $define) avail_ext="$avail_ext $xxx" ;;
12191                 esac
12192                 ;;
12193         GDBM_File|gdbm_fil)
12194                 case "$i_gdbm" in 
12195                 $define) avail_ext="$avail_ext $xxx" ;;
12196                 esac
12197                 ;;
12198         NDBM_File|ndbm_fil)
12199                 case "$i_ndbm" in
12200                 $define) avail_ext="$avail_ext $xxx" ;;
12201                 esac
12202                 ;;
12203         ODBM_File|odbm_fil) 
12204                 case "${i_dbm}${i_rpcsvcdbm}" in
12205                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12206                 esac
12207                 ;;
12208         POSIX|posix)
12209                 case "$useposix" in
12210                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12211                 esac
12212                 ;;
12213         Opcode|opcode)
12214                 case "$useopcode" in
12215                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12216                 esac
12217                 ;;
12218         Socket|socket)
12219                 case "$d_socket" in 
12220                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12221                 esac
12222                 ;;
12223         Thread|thread)
12224                 case "$usethreads" in 
12225                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12226                 esac
12227                 ;;
12228         IPC/SysV|ipc/sysv)
12229                 : XXX Do we need a useipcsysv variable here
12230                 case "${d_msg}${d_sem}${d_shm}" in 
12231                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12232                 esac
12233                 ;;
12234         *)      avail_ext="$avail_ext $xxx"
12235                 ;;
12236         esac
12237 done
12238
12239 set X $avail_ext
12240 shift
12241 avail_ext="$*"
12242
12243 : Now see which nonxs extensions are supported on this system.
12244 : For now assume all are.
12245 nonxs_ext=''
12246 for xxx in $nonxs_extensions ; do
12247         case "$xxx" in
12248         *)      nonxs_ext="$nonxs_ext $xxx"
12249                 ;;
12250         esac
12251 done
12252
12253 set X $nonxs_ext
12254 shift
12255 nonxs_ext="$*"
12256
12257 case $usedl in
12258 $define)
12259         $cat <<EOM
12260 A number of extensions are supplied with $package.  You may choose to
12261 compile these extensions for dynamic loading (the default), compile
12262 them into the $package executable (static loading), or not include
12263 them at all.  Answer "none" to include no extensions.
12264 Note that DynaLoader is always built and need not be mentioned here.
12265
12266 EOM
12267         case "$dynamic_ext" in
12268         '') dflt="$avail_ext" ;;
12269         *)      dflt="$dynamic_ext"
12270                 # Perhaps we are reusing an old out-of-date config.sh.
12271                 case "$hint" in
12272                 previous)
12273                         if test X"$dynamic_ext" != X"$avail_ext"; then
12274                                 $cat <<EOM
12275 NOTICE:  Your previous config.sh list may be incorrect. 
12276 The extensions now available to you are 
12277         ${avail_ext}
12278 but the default list from your previous config.sh is
12279         ${dynamic_ext} 
12280
12281 EOM
12282                         fi
12283                         ;;
12284                 esac
12285                 ;;
12286         esac
12287         case "$dflt" in
12288         '')     dflt=none;;
12289         esac
12290         rp="What extensions do you wish to load dynamically?"
12291         . ./myread
12292         case "$ans" in
12293         none) dynamic_ext=' ' ;;
12294         *) dynamic_ext="$ans" ;;
12295         esac
12296
12297         case "$static_ext" in
12298         '')
12299                 : Exclude those already listed in dynamic linking
12300                 dflt=''
12301                 for xxx in $avail_ext; do
12302                         case " $dynamic_ext " in
12303                         *" $xxx "*) ;;
12304                         *) dflt="$dflt $xxx" ;;
12305                         esac
12306                 done
12307                 set X $dflt
12308                 shift
12309                 dflt="$*"
12310                 ;;
12311         *)  dflt="$static_ext" 
12312                 ;;
12313         esac
12314
12315         case "$dflt" in
12316         '')     dflt=none;;
12317         esac
12318         rp="What extensions do you wish to load statically?"
12319         . ./myread
12320         case "$ans" in
12321         none) static_ext=' ' ;;
12322         *) static_ext="$ans" ;;
12323         esac
12324         ;;
12325 *)
12326         $cat <<EOM
12327 A number of extensions are supplied with $package.  Answer "none" 
12328 to include no extensions. 
12329 Note that DynaLoader is always built and need not be mentioned here.
12330
12331 EOM
12332         case "$static_ext" in
12333         '') dflt="$avail_ext" ;;
12334         *)      dflt="$static_ext"
12335                 # Perhaps we are reusing an old out-of-date config.sh.
12336                 case "$hint" in
12337                 previous)
12338                         if test X"$static_ext" != X"$avail_ext"; then
12339                                 $cat <<EOM
12340 NOTICE:  Your previous config.sh list may be incorrect. 
12341 The extensions now available to you are 
12342         ${avail_ext}
12343 but the default list from your previous config.sh is
12344         ${static_ext} 
12345
12346 EOM
12347                         fi
12348                         ;;
12349                 esac
12350                 ;;
12351         esac
12352         : Exclude those that are not xs extensions
12353         case "$dflt" in
12354         '')     dflt=none;;
12355         esac
12356         rp="What extensions do you wish to include?"
12357         . ./myread
12358         case "$ans" in
12359         none) static_ext=' ' ;;
12360         *) static_ext="$ans" ;;
12361         esac
12362         ;;
12363 esac
12364
12365 set X $dynamic_ext $static_ext $nonxs_ext
12366 shift
12367 extensions="$*"
12368
12369 : Remove build directory name from cppstdin so it can be used from
12370 : either the present location or the final installed location.
12371 echo " "
12372 : Get out of the UU directory to get correct path name.
12373 cd ..
12374 case "$cppstdin" in
12375 `pwd`/cppstdin)
12376         echo "Stripping down cppstdin path name"
12377         cppstdin=cppstdin
12378         ;;
12379 esac
12380 cd UU
12381
12382 : end of configuration questions
12383 echo " "
12384 echo "End of configuration questions."
12385 echo " "
12386
12387 : back to where it started
12388 if test -d ../UU; then
12389         cd ..
12390 fi
12391
12392 : configuration may be patched via a 'config.over' file
12393 if $test -f config.over; then
12394         echo " "
12395         dflt=y
12396         rp='I see a config.over file.  Do you wish to load it?'
12397         . UU/myread
12398         case "$ans" in
12399         n*) echo "OK, I'll ignore it.";;
12400         *)      . ./config.over
12401                 echo "Configuration override changes have been loaded."
12402                 ;;
12403         esac
12404 fi
12405
12406 : in case they want portability, strip down executable paths
12407 case "$d_portable" in
12408 "$define")
12409         echo " "
12410         echo "Stripping down executable paths..." >&4
12411         for file in $loclist $trylist; do
12412                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12413                         eval $file="\$file"
12414                 fi
12415         done
12416         ;;
12417 esac
12418
12419 : create config.sh file
12420 echo " "
12421 echo "Creating config.sh..." >&4
12422 $spitshell <<EOT >config.sh
12423 $startsh
12424 #
12425 # This file was produced by running the Configure script. It holds all the
12426 # definitions figured out by Configure. Should you modify one of these values,
12427 # do not forget to propagate your changes by running "Configure -der". You may
12428 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12429 #
12430
12431 # Package name      : $package
12432 # Source directory  : $src
12433 # Configuration time: $cf_time
12434 # Configured by     : $cf_by
12435 # Target system     : $myuname
12436
12437 Author='$Author'
12438 Date='$Date'
12439 Header='$Header'
12440 Id='$Id'
12441 Locker='$Locker'
12442 Log='$Log'
12443 Mcc='$Mcc'
12444 RCSfile='$RCSfile'
12445 Revision='$Revision'
12446 Source='$Source'
12447 State='$State'
12448 _a='$_a'
12449 _exe='$_exe'
12450 _o='$_o'
12451 afs='$afs'
12452 alignbytes='$alignbytes'
12453 ansi2knr='$ansi2knr'
12454 aphostname='$aphostname'
12455 apiversion='$apiversion'
12456 ar='$ar'
12457 archlib='$archlib'
12458 archlibexp='$archlibexp'
12459 archname64='$archname64'
12460 archname='$archname'
12461 archobjs='$archobjs'
12462 awk='$awk'
12463 baserev='$baserev'
12464 bash='$bash'
12465 bin='$bin'
12466 binexp='$binexp'
12467 bison='$bison'
12468 byacc='$byacc'
12469 byteorder='$byteorder'
12470 c='$c'
12471 castflags='$castflags'
12472 cat='$cat'
12473 cc='$cc'
12474 cccdlflags='$cccdlflags'
12475 ccdlflags='$ccdlflags'
12476 ccflags='$ccflags'
12477 cf_by='$cf_by'
12478 cf_email='$cf_email'
12479 cf_time='$cf_time'
12480 chgrp='$chgrp'
12481 chmod='$chmod'
12482 chown='$chown'
12483 clocktype='$clocktype'
12484 comm='$comm'
12485 compress='$compress'
12486 contains='$contains'
12487 cp='$cp'
12488 cpio='$cpio'
12489 cpp='$cpp'
12490 cpp_stuff='$cpp_stuff'
12491 cppflags='$cppflags'
12492 cpplast='$cpplast'
12493 cppminus='$cppminus'
12494 cpprun='$cpprun'
12495 cppstdin='$cppstdin'
12496 cryptlib='$cryptlib'
12497 csh='$csh'
12498 d_Gconvert='$d_Gconvert'
12499 d_access='$d_access'
12500 d_accessx='$d_accessx'
12501 d_alarm='$d_alarm'
12502 d_archlib='$d_archlib'
12503 d_attribut='$d_attribut'
12504 d_bcmp='$d_bcmp'
12505 d_bcopy='$d_bcopy'
12506 d_bsd='$d_bsd'
12507 d_bsdgetpgrp='$d_bsdgetpgrp'
12508 d_bsdsetpgrp='$d_bsdsetpgrp'
12509 d_bzero='$d_bzero'
12510 d_casti32='$d_casti32'
12511 d_castneg='$d_castneg'
12512 d_charvspr='$d_charvspr'
12513 d_chown='$d_chown'
12514 d_chroot='$d_chroot'
12515 d_chsize='$d_chsize'
12516 d_closedir='$d_closedir'
12517 d_cmsghdr_s='$d_cmsghdr_s'
12518 d_const='$d_const'
12519 d_crypt='$d_crypt'
12520 d_csh='$d_csh'
12521 d_cuserid='$d_cuserid'
12522 d_dbl_dig='$d_dbl_dig'
12523 d_dbmclose64='$d_dbmclose64'
12524 d_dbminit64='$d_dbminit64'
12525 d_delete64='$d_delete64'
12526 d_difftime='$d_difftime'
12527 d_dirent64_s='$d_dirent64_s'
12528 d_dirnamlen='$d_dirnamlen'
12529 d_dlerror='$d_dlerror'
12530 d_dlopen='$d_dlopen'
12531 d_dlsymun='$d_dlsymun'
12532 d_dosuid='$d_dosuid'
12533 d_drand48proto='$d_drand48proto'
12534 d_dup2='$d_dup2'
12535 d_eaccess='$d_eaccess'
12536 d_endgrent='$d_endgrent'
12537 d_endhent='$d_endhent'
12538 d_endnent='$d_endnent'
12539 d_endpent='$d_endpent'
12540 d_endpwent='$d_endpwent'
12541 d_endsent='$d_endsent'
12542 d_eofnblk='$d_eofnblk'
12543 d_eunice='$d_eunice'
12544 d_fchmod='$d_fchmod'
12545 d_fchown='$d_fchown'
12546 d_fcntl='$d_fcntl'
12547 d_fd_macros='$d_fd_macros'
12548 d_fd_set='$d_fd_set'
12549 d_fds_bits='$d_fds_bits'
12550 d_fetch64='$d_fetch64'
12551 d_fgetpos64='$d_fgetpos64'
12552 d_fgetpos='$d_fgetpos'
12553 d_firstkey64='$d_firstkey64'
12554 d_flexfnam='$d_flexfnam'
12555 d_flock64_s='$d_flock64_s'
12556 d_flock='$d_flock'
12557 d_fopen64='$d_fopen64'
12558 d_fork='$d_fork'
12559 d_fpathconf='$d_fpathconf'
12560 d_freopen64='$d_freopen64'
12561 d_fseek64='$d_fseek64'
12562 d_fseeko64='$d_fseeko64'
12563 d_fseeko='$d_fseeko'
12564 d_fsetpos64='$d_fsetpos64'
12565 d_fsetpos='$d_fsetpos'
12566 d_fstat64='$d_fstat64'
12567 d_fstatfs='$d_fstatfs'
12568 d_fstatvfs='$d_fstatvfs'
12569 d_ftell64='$d_ftell64'
12570 d_ftello64='$d_ftello64'
12571 d_ftello='$d_ftello'
12572 d_ftime='$d_ftime'
12573 d_ftruncate64='$d_ftruncate64'
12574 d_getgrent='$d_getgrent'
12575 d_getgrps='$d_getgrps'
12576 d_gethbyaddr='$d_gethbyaddr'
12577 d_gethbyname='$d_gethbyname'
12578 d_gethent='$d_gethent'
12579 d_gethname='$d_gethname'
12580 d_gethostprotos='$d_gethostprotos'
12581 d_getlogin='$d_getlogin'
12582 d_getnbyaddr='$d_getnbyaddr'
12583 d_getnbyname='$d_getnbyname'
12584 d_getnent='$d_getnent'
12585 d_getnetprotos='$d_getnetprotos'
12586 d_getpbyname='$d_getpbyname'
12587 d_getpbynumber='$d_getpbynumber'
12588 d_getpent='$d_getpent'
12589 d_getpgid='$d_getpgid'
12590 d_getpgrp2='$d_getpgrp2'
12591 d_getpgrp='$d_getpgrp'
12592 d_getppid='$d_getppid'
12593 d_getprior='$d_getprior'
12594 d_getprotoprotos='$d_getprotoprotos'
12595 d_getpwent='$d_getpwent'
12596 d_getsbyname='$d_getsbyname'
12597 d_getsbyport='$d_getsbyport'
12598 d_getsent='$d_getsent'
12599 d_getservprotos='$d_getservprotos'
12600 d_gettimeod='$d_gettimeod'
12601 d_gnulibc='$d_gnulibc'
12602 d_grpasswd='$d_grpasswd'
12603 d_htonl='$d_htonl'
12604 d_index='$d_index'
12605 d_inetaton='$d_inetaton'
12606 d_ino64t='$d_ino64t'
12607 d_int64t='$d_int64t'
12608 d_iovec_s='$d_iovec_s'
12609 d_isascii='$d_isascii'
12610 d_killpg='$d_killpg'
12611 d_lchown='$d_lchown'
12612 d_link='$d_link'
12613 d_locconv='$d_locconv'
12614 d_lockf64='$d_lockf64'
12615 d_lockf='$d_lockf'
12616 d_longdbl='$d_longdbl'
12617 d_longlong='$d_longlong'
12618 d_lseek64='$d_lseek64'
12619 d_lstat64='$d_lstat64'
12620 d_lstat='$d_lstat'
12621 d_mblen='$d_mblen'
12622 d_mbstowcs='$d_mbstowcs'
12623 d_mbtowc='$d_mbtowc'
12624 d_memcmp='$d_memcmp'
12625 d_memcpy='$d_memcpy'
12626 d_memmove='$d_memmove'
12627 d_memset='$d_memset'
12628 d_mkdir='$d_mkdir'
12629 d_mkfifo='$d_mkfifo'
12630 d_mktime='$d_mktime'
12631 d_msg='$d_msg'
12632 d_msg_ctrunc='$d_msg_ctrunc'
12633 d_msg_dontroute='$d_msg_dontroute'
12634 d_msg_oob='$d_msg_oob'
12635 d_msg_peek='$d_msg_peek'
12636 d_msg_proxy='$d_msg_proxy'
12637 d_msgctl='$d_msgctl'
12638 d_msgget='$d_msgget'
12639 d_msghdr_s='$d_msghdr_s'
12640 d_msgrcv='$d_msgrcv'
12641 d_msgsnd='$d_msgsnd'
12642 d_mymalloc='$d_mymalloc'
12643 d_nextkey64='$d_nextkey64'
12644 d_nice='$d_nice'
12645 d_off64t='$d_off64t'
12646 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12647 d_oldpthreads='$d_oldpthreads'
12648 d_oldsock='$d_oldsock'
12649 d_open3='$d_open3'
12650 d_open64='$d_open64'
12651 d_opendir64='$d_opendir64'
12652 d_pathconf='$d_pathconf'
12653 d_pause='$d_pause'
12654 d_phostname='$d_phostname'
12655 d_pipe='$d_pipe'
12656 d_poll='$d_poll'
12657 d_portable='$d_portable'
12658 d_pthread_yield='$d_pthread_yield'
12659 d_pwage='$d_pwage'
12660 d_pwchange='$d_pwchange'
12661 d_pwclass='$d_pwclass'
12662 d_pwcomment='$d_pwcomment'
12663 d_pwexpire='$d_pwexpire'
12664 d_pwgecos='$d_pwgecos'
12665 d_pwpasswd='$d_pwpasswd'
12666 d_pwquota='$d_pwquota'
12667 d_readdir64='$d_readdir64'
12668 d_readdir='$d_readdir'
12669 d_readlink='$d_readlink'
12670 d_readv='$d_readv'
12671 d_recvmsg='$d_recvmsg'
12672 d_rename='$d_rename'
12673 d_rewinddir='$d_rewinddir'
12674 d_rmdir='$d_rmdir'
12675 d_safebcpy='$d_safebcpy'
12676 d_safemcpy='$d_safemcpy'
12677 d_sanemcmp='$d_sanemcmp'
12678 d_sched_yield='$d_sched_yield'
12679 d_scm_rights='$d_scm_rights'
12680 d_seekdir64='$d_seekdir64'
12681 d_seekdir='$d_seekdir'
12682 d_select='$d_select'
12683 d_sem='$d_sem'
12684 d_semctl='$d_semctl'
12685 d_semctl_semid_ds='$d_semctl_semid_ds'
12686 d_semctl_semun='$d_semctl_semun'
12687 d_semget='$d_semget'
12688 d_semop='$d_semop'
12689 d_sendmsg='$d_sendmsg'
12690 d_setegid='$d_setegid'
12691 d_seteuid='$d_seteuid'
12692 d_setgrent='$d_setgrent'
12693 d_setgrps='$d_setgrps'
12694 d_sethent='$d_sethent'
12695 d_setlinebuf='$d_setlinebuf'
12696 d_setlocale='$d_setlocale'
12697 d_setnent='$d_setnent'
12698 d_setpent='$d_setpent'
12699 d_setpgid='$d_setpgid'
12700 d_setpgrp2='$d_setpgrp2'
12701 d_setpgrp='$d_setpgrp'
12702 d_setprior='$d_setprior'
12703 d_setpwent='$d_setpwent'
12704 d_setregid='$d_setregid'
12705 d_setresgid='$d_setresgid'
12706 d_setresuid='$d_setresuid'
12707 d_setreuid='$d_setreuid'
12708 d_setrgid='$d_setrgid'
12709 d_setruid='$d_setruid'
12710 d_setsent='$d_setsent'
12711 d_setsid='$d_setsid'
12712 d_setvbuf='$d_setvbuf'
12713 d_sfio='$d_sfio'
12714 d_shm='$d_shm'
12715 d_shmat='$d_shmat'
12716 d_shmatprototype='$d_shmatprototype'
12717 d_shmctl='$d_shmctl'
12718 d_shmdt='$d_shmdt'
12719 d_shmget='$d_shmget'
12720 d_sigaction='$d_sigaction'
12721 d_sigsetjmp='$d_sigsetjmp'
12722 d_socket='$d_socket'
12723 d_sockpair='$d_sockpair'
12724 d_stat64='$d_stat64'
12725 d_statblks='$d_statblks'
12726 d_statfs='$d_statfs'
12727 d_statfsflags='$d_statfsflags'
12728 d_statvfs='$d_statvfs'
12729 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12730 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12731 d_stdiobase='$d_stdiobase'
12732 d_stdstdio='$d_stdstdio'
12733 d_store64='$d_store64'
12734 d_strchr='$d_strchr'
12735 d_strcoll='$d_strcoll'
12736 d_strctcpy='$d_strctcpy'
12737 d_strerrm='$d_strerrm'
12738 d_strerror='$d_strerror'
12739 d_strtod='$d_strtod'
12740 d_strtol='$d_strtol'
12741 d_strtoul='$d_strtoul'
12742 d_strxfrm='$d_strxfrm'
12743 d_suidsafe='$d_suidsafe'
12744 d_symlink='$d_symlink'
12745 d_syscall='$d_syscall'
12746 d_sysconf='$d_sysconf'
12747 d_sysernlst='$d_sysernlst'
12748 d_syserrlst='$d_syserrlst'
12749 d_system='$d_system'
12750 d_tcgetpgrp='$d_tcgetpgrp'
12751 d_tcsetpgrp='$d_tcsetpgrp'
12752 d_telldir64='$d_telldir64'
12753 d_telldir='$d_telldir'
12754 d_time='$d_time'
12755 d_times='$d_times'
12756 d_tmpfile64='$d_tmpfile64'
12757 d_truncate64='$d_truncate64'
12758 d_truncate='$d_truncate'
12759 d_tzname='$d_tzname'
12760 d_umask='$d_umask'
12761 d_uname='$d_uname'
12762 d_union_semun='$d_union_semun'
12763 d_vfork='$d_vfork'
12764 d_void_closedir='$d_void_closedir'
12765 d_voidsig='$d_voidsig'
12766 d_voidtty='$d_voidtty'
12767 d_volatile='$d_volatile'
12768 d_vprintf='$d_vprintf'
12769 d_wait4='$d_wait4'
12770 d_waitpid='$d_waitpid'
12771 d_wcstombs='$d_wcstombs'
12772 d_wctomb='$d_wctomb'
12773 d_writev='$d_writev'
12774 d_xenix='$d_xenix'
12775 date='$date'
12776 db_hashtype='$db_hashtype'
12777 db_prefixtype='$db_prefixtype'
12778 defvoidused='$defvoidused'
12779 direntrytype='$direntrytype'
12780 dlext='$dlext'
12781 dlsrc='$dlsrc'
12782 doublesize='$doublesize'
12783 drand01='$drand01'
12784 dynamic_ext='$dynamic_ext'
12785 eagain='$eagain'
12786 ebcdic='$ebcdic'
12787 echo='$echo'
12788 egrep='$egrep'
12789 emacs='$emacs'
12790 eunicefix='$eunicefix'
12791 exe_ext='$exe_ext'
12792 expr='$expr'
12793 extensions='$extensions'
12794 find='$find'
12795 firstmakefile='$firstmakefile'
12796 flex='$flex'
12797 fpostype='$fpostype'
12798 freetype='$freetype'
12799 full_csh='$full_csh'
12800 full_sed='$full_sed'
12801 gccversion='$gccversion'
12802 gidtype='$gidtype'
12803 glibpth='$glibpth'
12804 grep='$grep'
12805 groupcat='$groupcat'
12806 groupstype='$groupstype'
12807 gzip='$gzip'
12808 h_fcntl='$h_fcntl'
12809 h_sysfile='$h_sysfile'
12810 hint='$hint'
12811 hostcat='$hostcat'
12812 huge='$huge'
12813 i_arpainet='$i_arpainet'
12814 i_bsdioctl='$i_bsdioctl'
12815 i_db='$i_db'
12816 i_dbm='$i_dbm'
12817 i_dirent='$i_dirent'
12818 i_dld='$i_dld'
12819 i_dlfcn='$i_dlfcn'
12820 i_fcntl='$i_fcntl'
12821 i_float='$i_float'
12822 i_gdbm='$i_gdbm'
12823 i_grp='$i_grp'
12824 i_inttypes='$i_inttypes'
12825 i_limits='$i_limits'
12826 i_locale='$i_locale'
12827 i_machcthr='$i_machcthr'
12828 i_malloc='$i_malloc'
12829 i_math='$i_math'
12830 i_memory='$i_memory'
12831 i_mntent='$i_mntent'
12832 i_ndbm='$i_ndbm'
12833 i_netdb='$i_netdb'
12834 i_neterrno='$i_neterrno'
12835 i_niin='$i_niin'
12836 i_poll='$i_poll'
12837 i_pwd='$i_pwd'
12838 i_rpcsvcdbm='$i_rpcsvcdbm'
12839 i_sfio='$i_sfio'
12840 i_sgtty='$i_sgtty'
12841 i_stdarg='$i_stdarg'
12842 i_stddef='$i_stddef'
12843 i_stdlib='$i_stdlib'
12844 i_string='$i_string'
12845 i_sysaccess='$i_sysaccess'
12846 i_sysdir='$i_sysdir'
12847 i_sysfile='$i_sysfile'
12848 i_sysfilio='$i_sysfilio'
12849 i_sysin='$i_sysin'
12850 i_sysioctl='$i_sysioctl'
12851 i_sysmount='$i_sysmount'
12852 i_sysndir='$i_sysndir'
12853 i_sysparam='$i_sysparam'
12854 i_sysresrc='$i_sysresrc'
12855 i_syssecrt='$i_syssecrt'
12856 i_sysselct='$i_sysselct'
12857 i_syssockio='$i_syssockio'
12858 i_sysstat='$i_sysstat'
12859 i_sysstatvfs='$i_sysstatvfs'
12860 i_systime='$i_systime'
12861 i_systimek='$i_systimek'
12862 i_systimes='$i_systimes'
12863 i_systypes='$i_systypes'
12864 i_sysuio='$i_sysuio'
12865 i_sysun='$i_sysun'
12866 i_syswait='$i_syswait'
12867 i_termio='$i_termio'
12868 i_termios='$i_termios'
12869 i_time='$i_time'
12870 i_unistd='$i_unistd'
12871 i_utime='$i_utime'
12872 i_values='$i_values'
12873 i_varargs='$i_varargs'
12874 i_varhdr='$i_varhdr'
12875 i_vfork='$i_vfork'
12876 ignore_versioned_solibs='$ignore_versioned_solibs'
12877 incpath='$incpath'
12878 inews='$inews'
12879 installarchlib='$installarchlib'
12880 installbin='$installbin'
12881 installman1dir='$installman1dir'
12882 installman3dir='$installman3dir'
12883 installprivlib='$installprivlib'
12884 installscript='$installscript'
12885 installsitearch='$installsitearch'
12886 installsitelib='$installsitelib'
12887 installusrbinperl='$installusrbinperl'
12888 intsize='$intsize'
12889 known_extensions='$known_extensions'
12890 ksh='$ksh'
12891 large='$large'
12892 ld='$ld'
12893 lddlflags='$lddlflags'
12894 ldflags='$ldflags'
12895 less='$less'
12896 lib_ext='$lib_ext'
12897 libc='$libc'
12898 libperl='$libperl'
12899 libpth='$libpth'
12900 libs='$libs'
12901 libswanted='$libswanted'
12902 line='$line'
12903 lint='$lint'
12904 lkflags='$lkflags'
12905 ln='$ln'
12906 lns='$lns'
12907 locincpth='$locincpth'
12908 loclibpth='$loclibpth'
12909 longdblsize='$longdblsize'
12910 longlongsize='$longlongsize'
12911 longsize='$longsize'
12912 lp='$lp'
12913 lpr='$lpr'
12914 ls='$ls'
12915 lseeksize='$lseeksize'
12916 lseektype='$lseektype'
12917 mail='$mail'
12918 mailx='$mailx'
12919 make='$make'
12920 make_set_make='$make_set_make'
12921 mallocobj='$mallocobj'
12922 mallocsrc='$mallocsrc'
12923 malloctype='$malloctype'
12924 man1dir='$man1dir'
12925 man1direxp='$man1direxp'
12926 man1ext='$man1ext'
12927 man3dir='$man3dir'
12928 man3direxp='$man3direxp'
12929 man3ext='$man3ext'
12930 medium='$medium'
12931 mips='$mips'
12932 mips_type='$mips_type'
12933 mkdir='$mkdir'
12934 models='$models'
12935 modetype='$modetype'
12936 more='$more'
12937 mv='$mv'
12938 myarchname='$myarchname'
12939 mydomain='$mydomain'
12940 myhostname='$myhostname'
12941 myuname='$myuname'
12942 n='$n'
12943 netdb_hlen_type='$netdb_hlen_type'
12944 netdb_host_type='$netdb_host_type'
12945 netdb_name_type='$netdb_name_type'
12946 netdb_net_type='$netdb_net_type'
12947 nm='$nm'
12948 nm_opt='$nm_opt'
12949 nm_so_opt='$nm_so_opt'
12950 nonxs_ext='$nonxs_ext'
12951 nroff='$nroff'
12952 o_nonblock='$o_nonblock'
12953 obj_ext='$obj_ext'
12954 old_pthread_create_joinable='$old_pthread_create_joinable'
12955 optimize='$optimize'
12956 orderlib='$orderlib'
12957 osname='$osname'
12958 osvers='$osvers'
12959 package='$package'
12960 pager='$pager'
12961 passcat='$passcat'
12962 patchlevel='$patchlevel'
12963 path_sep='$path_sep'
12964 perl='$perl'
12965 perladmin='$perladmin'
12966 perlpath='$perlpath'
12967 pg='$pg'
12968 phostname='$phostname'
12969 pidtype='$pidtype'
12970 plibpth='$plibpth'
12971 pmake='$pmake'
12972 pr='$pr'
12973 prefix='$prefix'
12974 prefixexp='$prefixexp'
12975 privlib='$privlib'
12976 privlibexp='$privlibexp'
12977 prototype='$prototype'
12978 ptrsize='$ptrsize'
12979 randbits='$randbits'
12980 randfunc='$randfunc'
12981 randseedtype='$randseedtype'
12982 ranlib='$ranlib'
12983 rd_nodata='$rd_nodata'
12984 rm='$rm'
12985 rmail='$rmail'
12986 runnm='$runnm'
12987 sched_yield='$sched_yield'
12988 scriptdir='$scriptdir'
12989 scriptdirexp='$scriptdirexp'
12990 sed='$sed'
12991 seedfunc='$seedfunc'
12992 selectminbits='$selectminbits'
12993 selecttype='$selecttype'
12994 sendmail='$sendmail'
12995 sh='$sh'
12996 shar='$shar'
12997 sharpbang='$sharpbang'
12998 shmattype='$shmattype'
12999 shortsize='$shortsize'
13000 shrpenv='$shrpenv'
13001 shsharp='$shsharp'
13002 sig_name='$sig_name'
13003 sig_name_init='$sig_name_init'
13004 sig_num='$sig_num'
13005 sig_num_init='$sig_num_init'
13006 signal_t='$signal_t'
13007 sitearch='$sitearch'
13008 sitearchexp='$sitearchexp'
13009 sitelib='$sitelib'
13010 sitelibexp='$sitelibexp'
13011 sizetype='$sizetype'
13012 sleep='$sleep'
13013 smail='$smail'
13014 small='$small'
13015 so='$so'
13016 sockethdr='$sockethdr'
13017 socketlib='$socketlib'
13018 sort='$sort'
13019 spackage='$spackage'
13020 spitshell='$spitshell'
13021 split='$split'
13022 src='$src'
13023 ssizetype='$ssizetype'
13024 startperl='$startperl'
13025 startsh='$startsh'
13026 static_ext='$static_ext'
13027 stdchar='$stdchar'
13028 stdio_base='$stdio_base'
13029 stdio_bufsiz='$stdio_bufsiz'
13030 stdio_cnt='$stdio_cnt'
13031 stdio_filbuf='$stdio_filbuf'
13032 stdio_ptr='$stdio_ptr'
13033 strings='$strings'
13034 submit='$submit'
13035 subversion='$subversion'
13036 sysman='$sysman'
13037 tail='$tail'
13038 tar='$tar'
13039 tbl='$tbl'
13040 tee='$tee'
13041 test='$test'
13042 timeincl='$timeincl'
13043 timetype='$timetype'
13044 touch='$touch'
13045 tr='$tr'
13046 trnl='$trnl'
13047 troff='$troff'
13048 uidtype='$uidtype'
13049 uname='$uname'
13050 uniq='$uniq'
13051 use64bits='$use64bits'
13052 usedl='$usedl'
13053 usemultiplicity='$usemultiplicity'
13054 usemymalloc='$usemymalloc'
13055 usenm='$usenm'
13056 useopcode='$useopcode'
13057 useperlio='$useperlio'
13058 useposix='$useposix'
13059 usesfio='$usesfio'
13060 useshrplib='$useshrplib'
13061 usethreads='$usethreads'
13062 usevfork='$usevfork'
13063 usrinc='$usrinc'
13064 uuname='$uuname'
13065 version='$version'
13066 vi='$vi'
13067 voidflags='$voidflags'
13068 xlibpth='$xlibpth'
13069 zcat='$zcat'
13070 zip='$zip'
13071 EOT
13072
13073 : Add in command line options if available
13074 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13075
13076 : add special variables
13077 $test -f $src/patchlevel.h && \
13078 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13079 echo "CONFIG=true" >>config.sh
13080
13081 : propagate old symbols
13082 if $test -f UU/config.sh; then
13083         <UU/config.sh sort | uniq >UU/oldconfig.sh
13084         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13085         sort | uniq -u >UU/oldsyms
13086         set X `cat UU/oldsyms`
13087         shift
13088         case $# in
13089         0) ;;
13090         *)
13091                 cat <<EOM
13092 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13093 EOM
13094                 echo "# Variables propagated from previous config.sh file." >>config.sh
13095                 for sym in `cat UU/oldsyms`; do
13096                         echo "    Propagating $hint variable "'$'"$sym..."
13097                         eval 'tmp="$'"${sym}"'"'
13098                         echo "$tmp" | \
13099                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13100                 done
13101                 ;;
13102         esac
13103 fi
13104
13105 : Finish up by extracting the .SH files
13106 case "$alldone" in
13107 exit)
13108         $rm -rf UU
13109         echo "Done."
13110         exit 0
13111         ;;
13112 cont)
13113         ;;
13114 '')
13115         dflt=''
13116         nostick=true
13117         $cat <<EOM
13118
13119 If you'd like to make any changes to the config.sh file before I begin
13120 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13121
13122 EOM
13123         rp="Press return or use a shell escape to edit config.sh:"
13124         . UU/myread
13125         nostick=''
13126         case "$ans" in
13127         '') ;;
13128         *) : in case they cannot read
13129                 sh 1>&4 -c "$ans";;
13130         esac
13131         ;;
13132 esac
13133
13134 : if this fails, just run all the .SH files by hand
13135 . ./config.sh
13136
13137 echo " "
13138 exec 1>&4
13139 . ./UU/extract
13140
13141 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13142         dflt=y
13143         case "$silent" in
13144         true) ;;
13145         *)
13146                 $cat <<EOM
13147
13148 Now you need to generate make dependencies by running "$make depend".
13149 You might prefer to run it in background: "$make depend > makedepend.out &"
13150 It can take a while, so you might not want to run it right now.
13151
13152 EOM
13153                 ;;
13154         esac
13155         rp="Run $make depend now?"
13156         . UU/myread
13157         case "$ans" in
13158         y*)
13159                 $make depend && echo "Now you must run a $make."
13160                 ;;
13161         *)
13162                 echo "You must run '$make depend' then '$make'."
13163                 ;;
13164         esac
13165 elif test -f [Mm]akefile; then
13166         echo " "
13167         echo "Now you must run a $make."
13168 else
13169         echo "Done."
13170 fi
13171
13172 if $test -f Policy.sh; then
13173     $cat <<EOM
13174
13175 If you compile $package on a different machine or from a different object
13176 directory, copy the Policy.sh file from this object directory to the
13177 new one before you run Configure -- this will help you with most of
13178 the policy defaults.
13179
13180 EOM
13181 fi
13182 if $test -f config.msg; then
13183     echo "Hmm.  I also noted the following information while running:"
13184     echo " "
13185     $cat config.msg >&4
13186     $rm -f config.msg
13187 fi
13188 $rm -f kit*isdone ark*isdone
13189 $rm -rf UU
13190
13191 : End of Configure
13192