82249314004e154aa307c06d30023392cc4d5d00
[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 Mar  9 14:37:57 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 ccsymbols=''
157 cppccsymbols=''
158 cppsymbols=''
159 dynamic_ext=''
160 extensions=''
161 known_extensions=''
162 nonxs_ext=''
163 static_ext=''
164 useopcode=''
165 useposix=''
166 d_bsd=''
167 d_eunice=''
168 d_xenix=''
169 eunicefix=''
170 Mcc=''
171 ar=''
172 awk=''
173 bash=''
174 bison=''
175 byacc=''
176 cat=''
177 chgrp=''
178 chmod=''
179 chown=''
180 comm=''
181 compress=''
182 cp=''
183 cpio=''
184 cpp=''
185 csh=''
186 date=''
187 echo=''
188 egrep=''
189 emacs=''
190 expr=''
191 find=''
192 flex=''
193 grep=''
194 gzip=''
195 inews=''
196 ksh=''
197 less=''
198 line=''
199 lint=''
200 ln=''
201 lp=''
202 lpr=''
203 ls=''
204 mail=''
205 mailx=''
206 make=''
207 mkdir=''
208 more=''
209 mv=''
210 nm=''
211 nroff=''
212 perl=''
213 pg=''
214 pmake=''
215 pr=''
216 rm=''
217 rmail=''
218 sed=''
219 sendmail=''
220 shar=''
221 sleep=''
222 smail=''
223 sort=''
224 submit=''
225 tail=''
226 tar=''
227 tbl=''
228 tee=''
229 test=''
230 touch=''
231 tr=''
232 troff=''
233 uname=''
234 uniq=''
235 uuname=''
236 vi=''
237 zcat=''
238 zip=''
239 full_ar=''
240 full_sed=''
241 libswanted=''
242 hint=''
243 myuname=''
244 osname=''
245 osvers=''
246 Author=''
247 Date=''
248 Header=''
249 Id=''
250 Locker=''
251 Log=''
252 RCSfile=''
253 Revision=''
254 Source=''
255 State=''
256 _a=''
257 _exe=''
258 _o=''
259 archobjs=''
260 exe_ext=''
261 firstmakefile=''
262 lib_ext=''
263 obj_ext=''
264 path_sep=''
265 afs=''
266 alignbytes=''
267 ansi2knr=''
268 archlib=''
269 archlibexp=''
270 d_archlib=''
271 installarchlib=''
272 archname=''
273 myarchname=''
274 baserev=''
275 bin=''
276 binexp=''
277 installbin=''
278 byteorder=''
279 cc=''
280 gccversion=''
281 ccflags=''
282 cppflags=''
283 ldflags=''
284 lkflags=''
285 locincpth=''
286 optimize=''
287 cf_email=''
288 cf_by=''
289 cf_time=''
290 contains=''
291 cpp_stuff=''
292 cpplast=''
293 cppminus=''
294 cpprun=''
295 cppstdin=''
296 crosscompile=''
297 d_access=''
298 d_accessx=''
299 d_alarm=''
300 d_attribut=''
301 d_bcmp=''
302 d_bcopy=''
303 d_bzero=''
304 d_casti32=''
305 castflags=''
306 d_castneg=''
307 d_chown=''
308 d_chroot=''
309 d_chsize=''
310 d_closedir=''
311 d_void_closedir=''
312 d_const=''
313 cryptlib=''
314 d_crypt=''
315 d_csh=''
316 full_csh=''
317 d_cuserid=''
318 d_dbl_dig=''
319 d_difftime=''
320 d_dlerror=''
321 d_dlopen=''
322 d_dlsymun=''
323 d_dosuid=''
324 d_suidsafe=''
325 d_drand48proto=''
326 d_dup2=''
327 d_eaccess=''
328 d_endgrent=''
329 d_endhent=''
330 d_endnent=''
331 d_endpent=''
332 d_endpwent=''
333 d_endsent=''
334 d_fchmod=''
335 d_fchown=''
336 d_fcntl=''
337 d_fd_macros=''
338 d_fd_set=''
339 d_fds_bits=''
340 d_fgetpos=''
341 d_flexfnam=''
342 d_flock=''
343 d_fork=''
344 d_fseeko=''
345 d_fsetpos=''
346 d_ftello=''
347 d_ftime=''
348 d_gettimeod=''
349 d_Gconvert=''
350 d_getgrent=''
351 d_getgrps=''
352 d_gethbyaddr=''
353 d_gethbyname=''
354 d_gethent=''
355 aphostname=''
356 d_gethname=''
357 d_phostname=''
358 d_uname=''
359 d_gethostprotos=''
360 d_getlogin=''
361 d_getmntent=''
362 d_getnbyaddr=''
363 d_getnbyname=''
364 d_getnent=''
365 d_getnetprotos=''
366 d_getpent=''
367 d_getpgid=''
368 d_getpgrp2=''
369 d_bsdgetpgrp=''
370 d_getpgrp=''
371 d_getppid=''
372 d_getprior=''
373 d_getpbyname=''
374 d_getpbynumber=''
375 d_getprotoprotos=''
376 d_getpwent=''
377 d_getsent=''
378 d_getservprotos=''
379 d_getsbyname=''
380 d_getsbyport=''
381 d_gnulibc=''
382 d_hasmntopt=''
383 d_htonl=''
384 d_inetaton=''
385 d_isascii=''
386 d_killpg=''
387 d_lchown=''
388 d_link=''
389 d_locconv=''
390 d_lockf=''
391 d_longdbl=''
392 longdblsize=''
393 d_longlong=''
394 longlongsize=''
395 d_lstat=''
396 d_madvise=''
397 d_mblen=''
398 d_mbstowcs=''
399 d_mbtowc=''
400 d_memcmp=''
401 d_memcpy=''
402 d_memmove=''
403 d_memset=''
404 d_mkdir=''
405 d_mkfifo=''
406 d_mktime=''
407 d_mmap=''
408 mmaptype=''
409 d_mprotect=''
410 d_msg=''
411 d_msgctl=''
412 d_msgget=''
413 d_msgrcv=''
414 d_msgsnd=''
415 d_msync=''
416 d_munmap=''
417 d_nice=''
418 d_open3=''
419 d_fpathconf=''
420 d_pathconf=''
421 d_pause=''
422 d_pipe=''
423 d_poll=''
424 d_portable=''
425 d_old_pthread_create_joinable=''
426 old_pthread_create_joinable=''
427 d_pthread_yield=''
428 d_sched_yield=''
429 sched_yield=''
430 d_readdir=''
431 d_rewinddir=''
432 d_seekdir=''
433 d_telldir=''
434 d_readlink=''
435 d_readv=''
436 d_rename=''
437 d_rmdir=''
438 d_safebcpy=''
439 d_safemcpy=''
440 d_sanemcmp=''
441 d_select=''
442 d_sem=''
443 d_semctl=''
444 d_semget=''
445 d_semop=''
446 d_setegid=''
447 d_seteuid=''
448 d_setgrent=''
449 d_setgrps=''
450 d_sethent=''
451 d_setlinebuf=''
452 d_setlocale=''
453 d_setnent=''
454 d_setpent=''
455 d_setpgid=''
456 d_setpgrp2=''
457 d_bsdsetpgrp=''
458 d_setpgrp=''
459 d_setprior=''
460 d_setpwent=''
461 d_setregid=''
462 d_setresgid=''
463 d_setresuid=''
464 d_setreuid=''
465 d_setrgid=''
466 d_setruid=''
467 d_setsent=''
468 d_setsid=''
469 d_setvbuf=''
470 d_sfio=''
471 usesfio=''
472 d_shm=''
473 d_shmat=''
474 d_shmatprototype=''
475 shmattype=''
476 d_shmctl=''
477 d_shmdt=''
478 d_shmget=''
479 d_sigaction=''
480 d_sigsetjmp=''
481 d_cmsghdr_s=''
482 d_msg_ctrunc=''
483 d_msg_dontroute=''
484 d_msg_oob=''
485 d_msg_peek=''
486 d_msg_proxy=''
487 d_msghdr_s=''
488 d_oldsock=''
489 d_recvmsg=''
490 d_scm_rights=''
491 d_sendmsg=''
492 d_socket=''
493 d_sockpair=''
494 sockethdr=''
495 socketlib=''
496 d_statblks=''
497 d_fstatfs=''
498 d_statfs=''
499 d_statfsflags=''
500 d_fstatvfs=''
501 d_statvfs=''
502 d_stdio_cnt_lval=''
503 d_stdio_ptr_lval=''
504 d_stdiobase=''
505 d_stdstdio=''
506 stdio_base=''
507 stdio_bufsiz=''
508 stdio_cnt=''
509 stdio_filbuf=''
510 stdio_ptr=''
511 d_index=''
512 d_strchr=''
513 d_strcoll=''
514 d_strctcpy=''
515 d_strerrm=''
516 d_strerror=''
517 d_sysernlst=''
518 d_syserrlst=''
519 d_strtod=''
520 d_strtol=''
521 d_strtoul=''
522 d_strxfrm=''
523 d_symlink=''
524 d_syscall=''
525 d_sysconf=''
526 d_system=''
527 d_tcgetpgrp=''
528 d_tcsetpgrp=''
529 d_telldirproto=''
530 d_time=''
531 timetype=''
532 clocktype=''
533 d_times=''
534 d_truncate=''
535 d_tzname=''
536 d_umask=''
537 d_semctl_semid_ds=''
538 d_semctl_semun=''
539 d_union_semun=''
540 d_vfork=''
541 usevfork=''
542 d_voidsig=''
543 signal_t=''
544 d_volatile=''
545 d_charvspr=''
546 d_vprintf=''
547 d_wait4=''
548 d_waitpid=''
549 d_wcstombs=''
550 d_wctomb=''
551 d_writev=''
552 d_dbmclose64=''
553 d_dbminit64=''
554 d_delete64=''
555 d_fetch64=''
556 d_firstkey64=''
557 d_nextkey64=''
558 d_store64=''
559 dlext=''
560 cccdlflags=''
561 ccdlflags=''
562 dlsrc=''
563 ld=''
564 lddlflags=''
565 usedl=''
566 doublesize=''
567 ebcdic=''
568 fpostype=''
569 gidtype=''
570 groupstype=''
571 h_fcntl=''
572 h_sysfile=''
573 i_arpainet=''
574 db_hashtype=''
575 db_prefixtype=''
576 i_db=''
577 i_dbm=''
578 i_rpcsvcdbm=''
579 d_dirnamlen=''
580 direntrytype=''
581 i_dirent=''
582 i_dld=''
583 i_dlfcn=''
584 i_fcntl=''
585 i_float=''
586 i_gdbm=''
587 d_grpasswd=''
588 i_grp=''
589 d_int64t=''
590 i_inttypes=''
591 i_limits=''
592 i_locale=''
593 i_machcthr=''
594 i_malloc=''
595 i_math=''
596 i_memory=''
597 i_mntent=''
598 i_ndbm=''
599 i_netdb=''
600 i_neterrno=''
601 i_niin=''
602 i_sysin=''
603 i_poll=''
604 i_pthread=''
605 d_pwage=''
606 d_pwchange=''
607 d_pwclass=''
608 d_pwcomment=''
609 d_pwexpire=''
610 d_pwgecos=''
611 d_pwpasswd=''
612 d_pwquota=''
613 i_pwd=''
614 i_sfio=''
615 i_stddef=''
616 i_stdlib=''
617 i_string=''
618 strings=''
619 i_sysaccess=''
620 i_sysdir=''
621 i_sysfile=''
622 d_voidtty=''
623 i_bsdioctl=''
624 i_sysfilio=''
625 i_sysioctl=''
626 i_syssockio=''
627 i_sysmman=''
628 i_sysmount=''
629 i_sysndir=''
630 i_sysparam=''
631 i_sysresrc=''
632 i_syssecrt=''
633 i_sysselct=''
634 i_sysstat=''
635 i_sysstatvfs=''
636 i_systimes=''
637 i_systypes=''
638 d_iovec_s=''
639 i_sysuio=''
640 i_sysun=''
641 i_syswait=''
642 i_sgtty=''
643 i_termio=''
644 i_termios=''
645 i_systime=''
646 i_systimek=''
647 i_time=''
648 timeincl=''
649 i_unistd=''
650 i_utime=''
651 i_values=''
652 i_stdarg=''
653 i_varargs=''
654 i_varhdr=''
655 i_vfork=''
656 installusrbinperl=''
657 intsize=''
658 longsize=''
659 shortsize=''
660 d_dirent64_s=''
661 d_flock64_s=''
662 d_fstat64=''
663 d_ftruncate64=''
664 d_ino64t=''
665 d_lockf64=''
666 d_lseek64=''
667 d_lstat64=''
668 d_off64t=''
669 d_open64=''
670 d_opendir64=''
671 d_readdir64=''
672 d_seekdir64=''
673 d_stat64=''
674 d_telldir64=''
675 d_truncate64=''
676 libc=''
677 libperl=''
678 shrpenv=''
679 useshrplib=''
680 glibpth=''
681 libpth=''
682 loclibpth=''
683 plibpth=''
684 xlibpth=''
685 ignore_versioned_solibs=''
686 libs=''
687 lns=''
688 lseeksize=''
689 lseektype=''
690 make_set_make=''
691 d_mymalloc=''
692 freetype=''
693 mallocobj=''
694 mallocsrc=''
695 malloctype=''
696 usemymalloc=''
697 installman1dir=''
698 man1dir=''
699 man1direxp=''
700 man1ext=''
701 installman3dir=''
702 man3dir=''
703 man3direxp=''
704 man3ext=''
705 huge=''
706 large=''
707 medium=''
708 models=''
709 small=''
710 split=''
711 modetype=''
712 multiarch=''
713 mydomain=''
714 myhostname=''
715 phostname=''
716 c=''
717 n=''
718 d_eofnblk=''
719 eagain=''
720 o_nonblock=''
721 rd_nodata=''
722 netdb_hlen_type=''
723 netdb_host_type=''
724 netdb_name_type=''
725 netdb_net_type=''
726 groupcat=''
727 hostcat=''
728 passcat=''
729 orderlib=''
730 ranlib=''
731 package=''
732 spackage=''
733 pager=''
734 apiversion=''
735 patchlevel=''
736 subversion=''
737 version=''
738 perladmin=''
739 perlpath=''
740 pidtype=''
741 prefix=''
742 prefixexp=''
743 installprivlib=''
744 privlib=''
745 privlibexp=''
746 prototype=''
747 ptrsize=''
748 drand01=''
749 randbits=''
750 randfunc=''
751 randseedtype=''
752 seedfunc=''
753 installscript=''
754 scriptdir=''
755 scriptdirexp=''
756 selectminbits=''
757 selecttype=''
758 sh=''
759 sig_name=''
760 sig_name_init=''
761 sig_num=''
762 sig_num_init=''
763 installsitearch=''
764 sitearch=''
765 sitearchexp=''
766 installsitelib=''
767 sitelib=''
768 sitelibexp=''
769 sizetype=''
770 so=''
771 sharpbang=''
772 shsharp=''
773 spitshell=''
774 src=''
775 ssizetype=''
776 startperl=''
777 startsh=''
778 stdchar=''
779 d_fgetpos64=''
780 d_fopen64=''
781 d_freopen64=''
782 d_fseek64=''
783 d_fseeko64=''
784 d_fsetpos64=''
785 d_ftell64=''
786 d_ftello64=''
787 d_tmpfile64=''
788 sysman=''
789 trnl=''
790 uidtype=''
791 archname64=''
792 use64bits=''
793 usemultiplicity=''
794 nm_opt=''
795 nm_so_opt=''
796 runnm=''
797 usenm=''
798 useperlio=''
799 d_oldpthreads=''
800 usethreads=''
801 incpath=''
802 mips=''
803 mips_type=''
804 usrinc=''
805 defvoidused=''
806 voidflags=''
807 CONFIG=''
808
809 define='define'
810 undef='undef'
811 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
812 rmlist=''
813
814 : We must find out about Eunice early
815 eunicefix=':'
816 if test -f /etc/unixtovms; then
817         eunicefix=/etc/unixtovms
818 fi
819 if test -f /etc/unixtovms.exe; then
820         eunicefix=/etc/unixtovms.exe
821 fi
822
823 i_whoami=''
824 : Possible local include directories to search.
825 : Set locincpth to "" in a hint file to defeat local include searches.
826 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
827 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
828 :
829 : no include file wanted by default
830 inclwanted=''
831
832 : list of known cpp symbols, sorted alphabetically
833 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
834 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
835 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
836 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
837 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
838 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
839 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
840 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
841 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
842 al="$al VMS Xenix286"
843 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
844 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
845 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
846 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
847 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
848 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
849 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
850 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
851 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
852 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
853 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
854 al="$al __SVR4_2__ __UMAXV__"
855 al="$al ____386BSD____ __alpha __alpha__ __amiga"
856 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
857 al="$al __host_mips__"
858 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
859 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
860 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
861 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
862 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
863 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
864 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
865 al="$al __mc88100 __mc88100__ __mips __mips__"
866 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
867 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
868 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
869 al="$al _host_mips _mips _unix"
870 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
871 al="$al apollo ardent att386 att3b"
872 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
873 al="$al cadmus clipper concurrent convex cray ctix"
874 al="$al dmert encore gcos gcx gimpel gould"
875 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
876 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
877 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
878 al="$al i186 i286 i386 i486 i8086"
879 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
880 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
881 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
882 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
883 al="$al mc88000 mc88100 merlin mert mips mvs n16"
884 al="$al ncl_el ncl_mr"
885 al="$al news1500 news1700 news1800 news1900 news3700"
886 al="$al news700 news800 news900 ns16000 ns32000"
887 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
888 al="$al parisc pc532 pdp11 plexus posix pyr"
889 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
890 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
891 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
892 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
893 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
894 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
895 al="$al xenix z8000"
896
897 : Trailing extension.  Override this in a hint file, if needed.
898 _exe=''
899 : Extra object files, if any, needed on this platform.
900 archobjs=''
901 groupstype=''
902 : change the next line if compiling for Xenix/286 on Xenix/386
903 xlibpth='/usr/lib/386 /lib/386'
904
905 : Possible local library directories to search.
906 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
907 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
908
909 : general looking path for locating libraries
910 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
911 glibpth="$glibpth /lib /usr/lib $xlibpth"
912 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
913 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
914
915 : Private path used by Configure to find libraries.  Its value
916 : is prepended to libpth. This variable takes care of special
917 : machines, like the mips.  Usually, it should be empty.
918 plibpth=''
919
920 : default library list
921 libswanted=''
922 : some systems want to use only the non-versioned libso:s
923 ignore_versioned_solibs=''
924 : full support for void wanted by default
925 defvoidused=15
926
927 : set useposix=false in your hint file to disable the POSIX extension.
928 useposix=true
929 : set useopcode=false in your hint file to disable the Opcode extension.
930 useopcode=true
931 : set usemultiplicity on the Configure command line to enable multiplicity.
932 : set usethreads on the Configure command line to enable threads.
933 : List of libraries we want.
934 : If anyone needs -lnet, put it in a hint file.
935 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
936 libswanted="$libswanted dld ld sun m rt c cposix posix"
937 libswanted="$libswanted ndir dir crypt"
938 libswanted="$libswanted ucb bsd BSD PW x"
939 : We probably want to search /usr/shlib before most other libraries.
940 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
941 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
942 glibpth="/usr/shlib $glibpth"
943 : Do not use vfork unless overridden by a hint file.
944 usevfork=false
945
946 : Find the basic shell for Bourne shell scripts
947 case "$sh" in
948 '')
949         case "$SYSTYPE" in
950         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
951         *) xxx='/bin/sh';;
952         esac
953         if test -f "$xxx"; then
954                 sh="$xxx"
955         else
956                 : Build up a list and do a single loop so we can 'break' out.
957                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
958                 for xxx in sh bash ksh pdksh ash; do
959                         for p in $pth; do
960                                 try="$try ${p}/${xxx}"
961                         done
962                 done
963                 for xxx in $try; do
964                         if test -f "$xxx"; then
965                                 sh="$xxx";
966                                 break
967                         elif test -f "$xxx.exe"; then
968                                 sh="$xxx";
969                                 break
970                         fi
971                 done
972         fi
973         ;;
974 esac
975
976 case "$sh" in
977 '')     cat <<EOM >&2
978 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
979
980 Usually it's in /bin/sh.  How did you even get this far?
981 Please contact me (Perl Maintainers) at perlbug@perl.com and 
982 we'll try to straighten this all out.
983 EOM
984         exit 1
985         ;;
986 esac
987
988 : see if sh knows # comments
989 if `$sh -c '#' >/dev/null 2>&1`; then
990         shsharp=true
991         spitshell=cat
992         xcat=/bin/cat
993         test -f $xcat || xcat=/usr/bin/cat
994         echo "#!$xcat" >try
995         $eunicefix try
996         chmod +x try
997         ./try > today
998         if test -s today; then
999                 sharpbang='#!'
1000         else
1001                 echo "#! $xcat" > try
1002                 $eunicefix try
1003                 chmod +x try
1004                 ./try > today
1005                 if test -s today; then
1006                         sharpbang='#! '
1007                 else
1008                         sharpbang=': use '
1009                 fi
1010         fi
1011 else
1012         echo " "
1013         echo "Your $sh doesn't grok # comments--I will strip them later on."
1014         shsharp=false
1015         cd ..
1016         echo "exec grep -v '^[  ]*#'" >spitshell
1017         chmod +x spitshell
1018         $eunicefix spitshell
1019         spitshell=`pwd`/spitshell
1020         cd UU
1021         echo "I presume that if # doesn't work, #! won't work either!"
1022         sharpbang=': use '
1023 fi
1024 rm -f try today
1025
1026 : figure out how to guarantee sh startup
1027 case "$startsh" in
1028 '') startsh=${sharpbang}${sh} ;;
1029 *)
1030 esac
1031 cat >try <<EOSS
1032 $startsh
1033 set abc
1034 test "$?abc" != 1
1035 EOSS
1036
1037 chmod +x try
1038 $eunicefix try
1039 if ./try; then
1040         : echo "Yup, it does."
1041 else
1042         echo "Hmm... '$startsh' does not guarantee sh startup..."
1043         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1044 fi
1045 rm -f try
1046
1047
1048 : Save command line options in file UU/cmdline.opt for later use in
1049 : generating config.sh.
1050 cat > cmdline.opt <<EOSH
1051 # Configure command line arguments.
1052 config_arg0='$0'
1053 config_args='$*'
1054 config_argc=$#
1055 EOSH
1056 argn=1
1057 for arg in "$@"; do
1058         cat >>cmdline.opt <<EOSH
1059 config_arg$argn='$arg'
1060 EOSH
1061         argn=`expr $argn + 1`
1062 done
1063
1064 : produce awk script to parse command line options
1065 cat >options.awk <<'EOF'
1066 BEGIN {
1067         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1068
1069         len = length(optstr);
1070         for (i = 1; i <= len; i++) {
1071                 c = substr(optstr, i, 1);
1072                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1073                 if (a == ":") {
1074                         arg[c] = 1;
1075                         i++;
1076                 }
1077                 opt[c] = 1;
1078         }
1079 }
1080 {
1081         expect = 0;
1082         str = $0;
1083         if (substr(str, 1, 1) != "-") {
1084                 printf("'%s'\n", str);
1085                 next;
1086         }
1087         len = length($0);
1088         for (i = 2; i <= len; i++) {
1089                 c = substr(str, i, 1);
1090                 if (!opt[c]) {
1091                         printf("-%s\n", substr(str, i));
1092                         next;
1093                 }
1094                 printf("-%s\n", c);
1095                 if (arg[c]) {
1096                         if (i < len)
1097                                 printf("'%s'\n", substr(str, i + 1));
1098                         else
1099                                 expect = 1;
1100                         next;
1101                 }
1102         }
1103 }
1104 END {
1105         if (expect)
1106                 print "?";
1107 }
1108 EOF
1109
1110 : process the command line options
1111 set X `for arg in "$@"; do echo "X$arg"; done |
1112         sed -e s/X// | awk -f options.awk`
1113 eval "set $*"
1114 shift
1115 rm -f options.awk
1116
1117 : set up default values
1118 fastread=''
1119 reuseval=false
1120 config_sh=''
1121 alldone=''
1122 error=''
1123 silent=''
1124 extractsh=''
1125 override=''
1126 knowitall=''
1127 rm -f optdef.sh
1128 cat >optdef.sh <<EOS
1129 $startsh
1130 EOS
1131
1132
1133 : option parsing
1134 while test $# -gt 0; do
1135         case "$1" in
1136         -d) shift; fastread=yes;;
1137         -e) shift; alldone=cont;;
1138         -f)
1139                 shift
1140                 cd ..
1141                 if test -r "$1"; then
1142                         config_sh="$1"
1143                 else
1144                         echo "$me: cannot read config file $1." >&2
1145                         error=true
1146                 fi
1147                 cd UU
1148                 shift;;
1149         -h) shift; error=true;;
1150         -r) shift; reuseval=true;;
1151         -s) shift; silent=true; realsilent=true;;
1152         -E) shift; alldone=exit;;
1153         -K) shift; knowitall=true;;
1154         -O) shift; override=true;;
1155         -S) shift; silent=true; extractsh=true;;
1156         -D)
1157                 shift
1158                 case "$1" in
1159                 *=)
1160                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1161                         echo "$me: ignoring -D $1" >&2
1162                         ;;
1163                 *=*) echo "$1" | \
1164                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1165                 *) echo "$1='define'" >> optdef.sh;;
1166                 esac
1167                 shift
1168                 ;;
1169         -U)
1170                 shift
1171                 case "$1" in
1172                 *=) echo "$1" >> optdef.sh;;
1173                 *=*)
1174                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1175                         echo "$me: ignoring -U $1" >&2
1176                         ;;
1177                 *) echo "$1='undef'" >> optdef.sh;;
1178                 esac
1179                 shift
1180                 ;;
1181         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1182                 exit 0;;
1183         --) break;;
1184         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1185         *) break;;
1186         esac
1187 done
1188
1189 case "$error" in
1190 true)
1191         cat >&2 <<EOM
1192 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1193                  [-U symbol] [-U symbol=]
1194   -d : use defaults for all answers.
1195   -e : go on without questioning past the production of config.sh.
1196   -f : specify an alternate default configuration file.
1197   -h : print this help message and exit (with an error status).
1198   -r : reuse C symbols value if possible (skips costly nm extraction).
1199   -s : silent mode, only echoes questions and essential information.
1200   -D : define symbol to have some value:
1201          -D symbol         symbol gets the value 'define'
1202          -D symbol=value   symbol gets the value 'value'
1203   -E : stop at the end of questions, after having produced config.sh.
1204   -K : do not use unless you know what you are doing.
1205   -O : let -D and -U override definitions from loaded configuration file.
1206   -S : perform variable substitutions on all .SH files (can mix with -f)
1207   -U : undefine symbol:
1208          -U symbol    symbol gets the value 'undef'
1209          -U symbol=   symbol gets completely empty
1210   -V : print version number and exit (with a zero status).
1211 EOM
1212         exit 1
1213         ;;
1214 esac
1215
1216 : Sanity checks
1217 case "$fastread$alldone" in
1218 yescont|yesexit) ;;
1219 *)
1220         if test ! -t 0; then
1221                 echo "Say 'sh Configure', not 'sh <Configure'"
1222                 exit 1
1223         fi
1224         ;;
1225 esac
1226
1227 exec 4>&1
1228 case "$silent" in
1229 true) exec 1>/dev/null;;
1230 esac
1231
1232 : run the defines and the undefines, if any, but leave the file out there...
1233 touch optdef.sh
1234 . ./optdef.sh
1235
1236 : set package name
1237 package=perl5
1238 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1239 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1240 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1241 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1242 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1243 esac
1244
1245 : Some greps do not return status, grrr.
1246 echo "grimblepritz" >grimble
1247 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1248         contains=contains
1249 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1250         contains=grep
1251 else
1252         contains=contains
1253 fi
1254 rm -f grimble
1255 : the following should work in any shell
1256 case "$contains" in
1257 contains*)
1258         echo " "
1259         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1260         cat >contains <<'EOSS'
1261 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1262 EOSS
1263 chmod +x contains
1264 esac
1265
1266 : Find the path to the source tree
1267 case "$src" in
1268 '') case "$0" in
1269     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1270     *)   src='.';;
1271     esac;;
1272 esac
1273 case "$src" in
1274 '')     src=/
1275         rsrc=/
1276         ;;
1277 /*) rsrc="$src";;
1278 *) rsrc="../$src";;
1279 esac
1280 if test -f $rsrc/Configure && \
1281         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1282 then
1283    : found it, so we are ok.
1284 else
1285         rsrc=''
1286         for src in . .. ../.. ../../.. ../../../..; do
1287                 if test -f ../$src/Configure && \
1288                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1289                 then
1290                         rsrc=../$src
1291                         break
1292                 fi
1293         done
1294 fi
1295 case "$rsrc" in
1296 '')
1297         cat <<EOM >&4
1298
1299 Sorry, I can't seem to locate the source dir for $package.  Please start
1300 Configure with an explicit path -- i.e. /some/path/Configure.
1301
1302 EOM
1303         exit 1
1304         ;;
1305 ../.)   rsrc='..';;
1306 *)
1307         echo " "
1308         echo "Sources for $package found in \"$src\"." >&4
1309         ;;
1310 esac
1311
1312 : script used to extract .SH files with variable substitutions
1313 cat >extract <<'EOS'
1314 CONFIG=true
1315 echo "Doing variable substitutions on .SH files..."
1316 if test -f $src/MANIFEST; then
1317         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1318 else
1319         echo "(Looking for .SH files under the source directory.)"
1320         set x `(cd $src; find . -name "*.SH" -print)`
1321 fi
1322 shift
1323 case $# in
1324 0) set x `(cd $src; echo *.SH)`; shift;;
1325 esac
1326 if test ! -f $src/$1; then
1327         shift
1328 fi
1329 mkdir_p='
1330 name=$1;
1331 create="";
1332 while test $name; do
1333         if test ! -d "$name"; then
1334                 create="$name $create";
1335                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1336                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1337         else
1338                 name="";
1339         fi;
1340 done;
1341 for file in $create; do
1342         mkdir $file;
1343 done
1344 '
1345 for file in $*; do
1346         case "$src" in
1347         ".")
1348                 case "$file" in
1349                 */*)
1350                         dir=`expr X$file : 'X\(.*\)/'`
1351                         file=`expr X$file : 'X.*/\(.*\)'`
1352                         (cd $dir && . ./$file)
1353                         ;;
1354                 *)
1355                         . ./$file
1356                         ;;
1357                 esac
1358                 ;;
1359         *)
1360                 case "$file" in
1361                 */*)
1362                         dir=`expr X$file : 'X\(.*\)/'`
1363                         file=`expr X$file : 'X.*/\(.*\)'`
1364                         (set x $dir; shift; eval $mkdir_p)
1365                         sh <$src/$dir/$file
1366                         ;;
1367                 *)
1368                         sh <$src/$file
1369                         ;;
1370                 esac
1371                 ;;
1372         esac
1373 done
1374 if test -f $src/config_h.SH; then
1375         if test ! -f config.h; then
1376         : oops, they left it out of MANIFEST, probably, so do it anyway.
1377         . $src/config_h.SH
1378         fi
1379 fi
1380 EOS
1381
1382 : extract files and exit if asked to do so
1383 case "$extractsh" in
1384 true)
1385         case "$realsilent" in
1386         true) ;;
1387         *) exec 1>&4;;
1388         esac
1389         case "$config_sh" in
1390         '') config_sh='config.sh';;
1391         esac
1392         echo " "
1393         echo "Fetching answers from $config_sh..."
1394         cd ..
1395         . $config_sh
1396         test "$override" && . ./optdef.sh
1397         echo " "
1398         . UU/extract
1399         rm -rf UU
1400         echo "Done."
1401         exit 0
1402         ;;
1403 esac
1404
1405 : Eunice requires " " instead of "", can you believe it
1406 echo " "
1407 : Here we go...
1408 echo "Beginning of configuration questions for $package."
1409
1410 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1411
1412 : first determine how to suppress newline on echo command
1413 echo " "
1414 echo "Checking echo to see how to suppress newlines..."
1415 (echo "hi there\c" ; echo " ") >.echotmp
1416 if $contains c .echotmp >/dev/null 2>&1 ; then
1417         echo "...using -n."
1418         n='-n'
1419         c=''
1420 else
1421         cat <<'EOM'
1422 ...using \c
1423 EOM
1424         n=''
1425         c='\c'
1426 fi
1427 echo $n "The star should be here-->$c"
1428 echo '*'
1429 rm -f .echotmp
1430
1431 : Now test for existence of everything in MANIFEST
1432 echo " "
1433 if test -f $rsrc/MANIFEST; then
1434         echo "First let's make sure your kit is complete.  Checking..." >&4
1435         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1436         rm -f missing
1437         tmppwd=`pwd`
1438         for filelist in x??; do
1439                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1440         done
1441         if test -s missing; then
1442                 cat missing >&4
1443                 cat >&4 <<'EOM'
1444
1445 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1446
1447 You have the option of continuing the configuration process, despite the
1448 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1449 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1450 and contact the author (perlbug@perl.com).
1451
1452 EOM
1453                 echo $n "Continue? [n] $c" >&4
1454                 read ans
1455                 case "$ans" in
1456                 y*)
1457                         echo "Continuing..." >&4
1458                         rm -f missing
1459                         ;;
1460                 *)
1461                         echo "ABORTING..." >&4
1462                         kill $$
1463                         ;;
1464                 esac
1465         else
1466                 echo "Looks good..."
1467         fi
1468 else
1469         echo "There is no MANIFEST file.  I hope your kit is complete !"
1470 fi
1471 rm -f missing x??
1472
1473 echo " "
1474 : Find the appropriate value for a newline for tr
1475 if test -n "$DJGPP"; then
1476        trnl='\012'
1477 fi
1478 if test X"$trnl" = X; then
1479         case "`echo foo|tr '\n' x 2>/dev/null`" in
1480         foox) trnl='\n' ;;
1481         esac
1482 fi
1483 if test X"$trnl" = X; then
1484         case "`echo foo|tr '\012' x 2>/dev/null`" in
1485         foox) trnl='\012' ;;
1486         esac
1487 fi
1488 if test X"$trnl" = X; then
1489         cat <<EOM >&2
1490
1491 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1492
1493 EOM
1494         exit 1
1495 fi
1496
1497 : compute the number of columns on the terminal for proper question formatting
1498 case "$COLUMNS" in
1499 '') COLUMNS='80';;
1500 esac
1501
1502 : set up the echo used in my read
1503 myecho="case \"\$xxxm\" in
1504 '') echo $n \"\$rp $c\" >&4;;
1505 *) case \"\$rp\" in
1506         '') echo $n \"[\$xxxm] $c\";;
1507         *)
1508                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1509                         echo \"\$rp\" >&4
1510                         echo $n \"[\$xxxm] $c\" >&4
1511                 else
1512                         echo $n \"\$rp [\$xxxm] $c\" >&4
1513                 fi
1514                 ;;
1515         esac;;
1516 esac"
1517
1518 : now set up to do reads with possible shell escape and default assignment
1519 cat <<EOSC >myread
1520 $startsh
1521 xxxm=\$dflt
1522 $myecho
1523 ans='!'
1524 case "\$fastread" in
1525 yes) case "\$dflt" in
1526         '') ;;
1527         *) ans='';
1528                 case "\$silent-\$rp" in
1529                 true-) ;;
1530                 *) echo " " >&4;;
1531                 esac;;
1532         esac;;
1533 *) case "\$silent" in
1534         true) case "\$rp" in
1535                 '') ans='';;
1536                 esac;;
1537         esac;;
1538 esac
1539 while expr "X\$ans" : "X!" >/dev/null; do
1540         read answ
1541         set x \$xxxm
1542         shift
1543         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1544         case  "\$answ" in
1545         "!")
1546                 sh 1>&4
1547                 echo " "
1548                 $myecho
1549                 ;;
1550         !*)
1551                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1552                 shift
1553                 sh 1>&4 -c "\$*"
1554                 echo " "
1555                 $myecho
1556                 ;;
1557         "\$ans")
1558                 case "\$ans" in
1559                 \\&*)
1560                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1561                         shift
1562                         case "\$1" in
1563                         -d)
1564                                 fastread=yes
1565                                 echo "(OK, I'll run with -d after this question.)" >&4
1566                                 ;;
1567                         -*)
1568                                 echo "*** Sorry, \$1 not supported yet." >&4
1569                                 ;;
1570                         esac
1571                         $myecho
1572                         ans=!
1573                         ;;
1574                 esac;;
1575         *)
1576                 case "\$aok" in
1577                 y)
1578                         echo "*** Substitution done -- please confirm."
1579                         xxxm="\$ans"
1580                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1581                         xxxm="\$ans"
1582                         ans=!
1583                         ;;
1584                 *)
1585                         echo "*** Error -- try again."
1586                         ans=!
1587                         ;;
1588                 esac
1589                 $myecho
1590                 ;;
1591         esac
1592         case "\$ans\$xxxm\$nostick" in
1593         '')
1594                 ans=!
1595                 $myecho
1596                 ;;
1597         esac
1598 done
1599 case "\$ans" in
1600 '') ans="\$xxxm";;
1601 esac
1602 EOSC
1603
1604 : create .config dir to save info across Configure sessions
1605 test -d ../.config || mkdir ../.config
1606 cat >../.config/README <<EOF
1607 This directory created by Configure to save information that should
1608 persist across sessions for $package.
1609
1610 You may safely delete it if you wish.
1611 EOF
1612
1613 : general instructions
1614 needman=true
1615 firsttime=true
1616 user=`(logname) 2>/dev/null`
1617 case "$user" in
1618 '') user=`whoami 2>&1`;;
1619 esac
1620 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1621         firsttime=false
1622         echo " "
1623         rp='Would you like to see the instructions?'
1624         dflt=n
1625         . ./myread
1626         case "$ans" in
1627         [yY]*) ;;
1628         *) needman=false;;
1629         esac
1630 fi
1631 if $needman; then
1632         cat <<EOH
1633
1634 This installation shell script will examine your system and ask you questions
1635 to determine how the perl5 package should be installed. If you get
1636 stuck on a question, you may use a ! shell escape to start a subshell or
1637 execute a command.  Many of the questions will have default answers in square
1638 brackets; typing carriage return will give you the default.
1639
1640 On some of the questions which ask for file or directory names you are allowed
1641 to use the ~name construct to specify the login directory belonging to "name",
1642 even if you don't have a shell which knows about that.  Questions where this is
1643 allowed will be marked "(~name ok)".
1644
1645 EOH
1646         rp=''
1647         dflt='Type carriage return to continue'
1648         . ./myread
1649         cat <<'EOH'
1650
1651 The prompter used in this script allows you to use shell variables and
1652 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1653 in the default answer, as if the default line was a set of arguments given to a
1654 script shell.  This means you may also use $* to repeat the whole default line,
1655 so you do not have to re-type everything to add something to the default.
1656
1657 Everytime there is a substitution, you will have to confirm.  If there is an
1658 error (e.g. an unmatched backtick), the default answer will remain unchanged
1659 and you will be prompted again.
1660
1661 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1662 the questions and use the computed defaults (or the previous answers if there
1663 was already a config.sh file). Type 'Configure -h' for a list of options.
1664 You may also start interactively and then answer '& -d' at any prompt to turn
1665 on the non-interactive behaviour for the remainder of the execution.
1666
1667 EOH
1668         . ./myread
1669         cat <<EOH
1670
1671 Much effort has been expended to ensure that this shell script will run on any
1672 Unix system.  If despite that it blows up on yours, your best bet is to edit
1673 Configure and run it again.  If you can't run Configure for some reason,
1674 you'll have to generate a config.sh file by hand.  Whatever problems you
1675 have, let me (perlbug@perl.com) know how I blew it.
1676
1677 This installation script affects things in two ways:
1678
1679 1) it may do direct variable substitutions on some of the files included
1680    in this kit.
1681 2) it builds a config.h file for inclusion in C programs.  You may edit
1682    any of these files as the need arises after running this script.
1683
1684 If you make a mistake on a question, there is no easy way to back up to it
1685 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1686 files.  Configure will offer to let you do this before it runs the SH files.
1687
1688 EOH
1689         dflt='Type carriage return to continue'
1690         . ./myread
1691         case "$firsttime" in
1692         true) echo $user >>../.config/instruct;;
1693         esac
1694 fi
1695
1696 : find out where common programs are
1697 echo " "
1698 echo "Locating common programs..." >&4
1699 cat <<EOSC >loc
1700 $startsh
1701 case \$# in
1702 0) exit 1;;
1703 esac
1704 thing=\$1
1705 shift
1706 dflt=\$1
1707 shift
1708 for dir in \$*; do
1709         case "\$thing" in
1710         .)
1711         if test -d \$dir/\$thing; then
1712                 echo \$dir
1713                 exit 0
1714         fi
1715         ;;
1716         *)
1717         for thisthing in \$dir/\$thing; do
1718                 : just loop through to pick last item
1719         done
1720         if test -f \$thisthing; then
1721                 echo \$thisthing
1722                 exit 0
1723         elif test -f \$dir/\$thing.exe; then
1724                 if test -n "$DJGPP"; then
1725                         echo \$dir/\$thing.exe
1726                 else
1727                         : on Eunice apparently
1728                         echo \$dir/\$thing
1729                 fi
1730                 exit 0
1731         fi
1732         ;;
1733         esac
1734 done
1735 echo \$dflt
1736 exit 1
1737 EOSC
1738 chmod +x loc
1739 $eunicefix loc
1740 loclist="
1741 awk
1742 cat
1743 comm
1744 cp
1745 echo
1746 expr
1747 grep
1748 ls
1749 make
1750 mkdir
1751 rm
1752 sed
1753 sort
1754 touch
1755 tr
1756 uniq
1757 "
1758 trylist="
1759 Mcc
1760 ar
1761 byacc
1762 cpp
1763 csh
1764 date
1765 egrep
1766 gzip
1767 less
1768 ln
1769 more
1770 nm
1771 nroff
1772 pg
1773 tee
1774 test
1775 uname
1776 zip
1777 "
1778 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1779 pth="$pth /lib /usr/lib"
1780 for file in $loclist; do
1781         eval xxx=\$$file
1782         case "$xxx" in
1783         /*|?:[\\/]*)
1784                 if test -f "$xxx"; then
1785                         : ok
1786                 else
1787                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1788                         xxx=`./loc $file $file $pth`
1789                 fi
1790                 ;;
1791         '') xxx=`./loc $file $file $pth`;;
1792         *) xxx=`./loc $xxx $xxx $pth`;;
1793         esac
1794         eval $file=$xxx
1795         eval _$file=$xxx
1796         case "$xxx" in
1797         /*)
1798                 echo $file is in $xxx.
1799                 ;;
1800         ?:[\\/]*)
1801                 echo $file is in $xxx.
1802                 ;;
1803         *)
1804                 echo "I don't know where '$file' is, and my life depends on it." >&4
1805                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1806                 exit 1
1807                 ;;
1808         esac
1809 done
1810 echo " "
1811 echo "Don't worry if any of the following aren't found..."
1812 say=offhand
1813 for file in $trylist; do
1814         eval xxx=\$$file
1815         case "$xxx" in
1816         /*|?:[\\/]*)
1817                 if test -f "$xxx"; then
1818                         : ok
1819                 else
1820                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1821                         xxx=`./loc $file $file $pth`
1822                 fi
1823                 ;;
1824         '') xxx=`./loc $file $file $pth`;;
1825         *) xxx=`./loc $xxx $xxx $pth`;;
1826         esac
1827         eval $file=$xxx
1828         eval _$file=$xxx
1829         case "$xxx" in
1830         /*)
1831                 echo $file is in $xxx.
1832                 ;;
1833         ?:[\\/]*)
1834                 echo $file is in $xxx.
1835                 ;;
1836         *)
1837                 echo "I don't see $file out there, $say."
1838                 say=either
1839                 ;;
1840         esac
1841 done
1842 case "$egrep" in
1843 egrep)
1844         echo "Substituting grep for egrep."
1845         egrep=$grep
1846         ;;
1847 esac
1848 case "$ln" in
1849 ln)
1850         echo "Substituting cp for ln."
1851         ln=$cp
1852         ;;
1853 esac
1854 case "$test" in
1855 test)
1856         echo "Hopefully test is built into your sh."
1857         ;;
1858 *)
1859         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1860                 echo "Using the test built into your sh."
1861                 test=test
1862                 _test=test
1863         fi
1864         ;;
1865 esac
1866 case "$echo" in
1867 echo)
1868         echo "Hopefully echo is built into your sh."
1869         ;;
1870 '') ;;
1871 *)
1872         echo " "
1873 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1874         $echo $n "hi there$c" >foo1
1875         echo $n "hi there$c" >foo2
1876         if cmp foo1 foo2 >/dev/null 2>&1; then
1877                 echo "They are compatible.  In fact, they may be identical."
1878         else
1879                 case "$n" in
1880                 '-n') n='' c='\c';;
1881                 *) n='-n' c='';;
1882                 esac
1883                 cat <<FOO
1884 They are not compatible!  You are probably running ksh on a non-USG system.
1885 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1886 have echo built in and we may have to run some Bourne shell scripts.  That
1887 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1888
1889 FOO
1890                 $echo $n "The star should be here-->$c"
1891                 $echo "*"
1892         fi
1893         $rm -f foo1 foo2
1894         ;;
1895 esac
1896
1897 : determine whether symbolic links are supported
1898 echo " "
1899 $touch blurfl
1900 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1901         echo "Symbolic links are supported." >&4
1902         lns="$ln -s"
1903 else
1904         echo "Symbolic links are NOT supported." >&4
1905         lns="$ln"
1906 fi
1907 $rm -f blurfl sym
1908
1909 : see whether [:lower:] and [:upper:] are supported character classes
1910 echo " "
1911 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1912 ABYZ)
1913         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1914         up='[:upper:]'
1915         low='[:lower:]'
1916         ;;
1917 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1918         # (0xc9 and 0xd1), therefore that is a nice testing point.
1919         if test "X$up" = X -o "X$low" = X; then
1920             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1921             ij) up='[A-Z]'
1922                 low='[a-z]'
1923                 ;;
1924             esac
1925         fi
1926         if test "X$up" = X -o "X$low" = X; then
1927             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1928             ij) up='A-Z'
1929                 low='a-z'
1930                 ;;
1931             esac
1932         fi
1933         if test "X$up" = X -o "X$low" = X; then
1934             case "`echo IJ | od -x 2>/dev/null`" in
1935             *C9D1*|*c9d1*)
1936                 echo "Hey, this might be EBCDIC." >&4
1937                 if test "X$up" = X -o "X$low" = X; then
1938                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1939                     ij) up='[A-IJ-RS-Z]'
1940                         low='[a-ij-rs-z]'
1941                         ;;
1942                     esac
1943                 fi
1944                 if test "X$up" = X -o "X$low" = X; then
1945                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1946                     ij) up='A-IJ-RS-Z'
1947                         low='a-ij-rs-z'
1948                         ;;
1949                     esac
1950                 fi
1951                 ;;
1952             esac
1953         fi
1954 esac
1955 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1956 ij)
1957     echo "Using $up and $low to convert case." >&4
1958     ;;
1959 *)
1960     echo "I don't know how to translate letters from upper to lower case." >&4
1961     echo "Your tr is not acting any way I know of." >&4
1962     exit 1
1963     ;;
1964 esac
1965 : set up the translation script tr, must be called with ./tr of course
1966 cat >tr <<EOSC
1967 $startsh
1968 case "\$1\$2" in
1969 '[A-Z][a-z]') exec $tr '$up' '$low';;
1970 '[a-z][A-Z]') exec $tr '$low' '$up';;
1971 esac
1972 exec $tr "\$@"
1973 EOSC
1974 chmod +x tr
1975 $eunicefix tr
1976
1977 : Try to determine whether config.sh was made on this system
1978 case "$config_sh" in
1979 '')
1980 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1981 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1982 # because the A-Z/a-z are not consecutive.
1983 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1984         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1985 newmyuname="$myuname"
1986 dflt=n
1987 case "$knowitall" in
1988 '')
1989         if test -f ../config.sh; then
1990                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1991                         eval "`grep myuname= ../config.sh`"
1992                 fi
1993                 if test "X$myuname" = "X$newmyuname"; then
1994                         dflt=y
1995                 fi
1996         fi
1997         ;;
1998 *) dflt=y;;
1999 esac
2000
2001 : Get old answers from old config file if Configure was run on the
2002 : same system, otherwise use the hints.
2003 hint=default
2004 cd ..
2005 if test -f config.sh; then
2006         echo " "
2007         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2008         . UU/myread
2009         case "$ans" in
2010         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2011         *)  echo "Fetching default answers from your old config.sh file..." >&4
2012                 tmp_n="$n"
2013                 tmp_c="$c"
2014                 tmp_sh="$sh"
2015                 . ./config.sh
2016                 cp config.sh UU
2017                 n="$tmp_n"
2018                 c="$tmp_c"
2019                 : Older versions did not always set $sh.  Catch re-use of such
2020                 : an old config.sh.
2021                 case "$sh" in
2022                 '') sh="$tmp_sh" ;;
2023                 esac
2024                 hint=previous
2025                 ;;
2026         esac
2027 fi
2028 if test ! -f config.sh; then
2029         $cat <<EOM
2030
2031 First time through, eh?  I have some defaults handy for some systems
2032 that need some extra help getting the Configure answers right:
2033
2034 EOM
2035         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2036         dflt=''
2037         : Half the following guesses are probably wrong... If you have better
2038         : tests or hints, please send them to perlbug@perl.com
2039         : The metaconfig authors would also appreciate a copy...
2040         $test -f /irix && osname=irix
2041         $test -f /xenix && osname=sco_xenix
2042         $test -f /dynix && osname=dynix
2043         $test -f /dnix && osname=dnix
2044         $test -f /lynx.os && osname=lynxos
2045         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2046         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2047         $test -f /bin/mips && /bin/mips && osname=mips
2048         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2049                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2050         $test -d /usr/apollo/bin && osname=apollo
2051         $test -f /etc/saf/_sactab && osname=svr4
2052         $test -d /usr/include/minix && osname=minix
2053         if $test -d /MachTen -o -d /MachTen_Folder; then
2054                 osname=machten
2055                 if $test -x /sbin/version; then
2056                         osvers=`/sbin/version | $awk '{print $2}' |
2057                         $sed -e 's/[A-Za-z]$//'`
2058                 elif $test -x /usr/etc/version; then
2059                         osvers=`/usr/etc/version | $awk '{print $2}' |
2060                         $sed -e 's/[A-Za-z]$//'`
2061                 else
2062                         osvers="$2.$3"
2063                 fi
2064         fi
2065        $test -f /sys/posix.dll &&
2066                $test -f /usr/bin/what &&
2067                set X `/usr/bin/what /sys/posix.dll` &&
2068                $test "$3" = UWIN &&
2069                osname=uwin &&
2070                osvers="$5"
2071         if $test -f $uname; then
2072                 set X $myuname
2073                 shift
2074
2075                 case "$5" in
2076                 fps*) osname=fps ;;
2077                 mips*)
2078                         case "$4" in
2079                         umips) osname=umips ;;
2080                         *) osname=mips ;;
2081                         esac;;
2082                 [23]100) osname=mips ;;
2083                 next*) osname=next ;;
2084                 i386*)
2085                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2086                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2087                                 osname='sco'
2088                                 osvers=$tmp
2089                         elif $test -f /etc/kconfig; then
2090                                 osname=isc
2091                                 if test "$lns" = "ln -s"; then
2092                                         osvers=4
2093                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2094                                         osvers=3
2095                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2096                                         osvers=2
2097                                 fi
2098                         fi
2099                         unset tmp
2100                         ;;
2101                 pc*)
2102                         if test -n "$DJGPP"; then
2103                                 osname=dos
2104                                 osvers=djgpp
2105                         fi
2106                         ;;
2107                 esac
2108
2109                 case "$1" in
2110                 aix) osname=aix
2111                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2112                         case "$tmp" in
2113                         'not found') osvers="$4"."$3" ;;
2114                         '<3240'|'<>3240') osvers=3.2.0 ;;
2115                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2116                         '=3250'|'>3250') osvers=3.2.5 ;;
2117                         *) osvers=$tmp;;
2118                         esac
2119                         ;;
2120                 *dc.osx) osname=dcosx
2121                         osvers="$3"
2122                         ;;
2123                 dnix) osname=dnix
2124                         osvers="$3"
2125                         ;;
2126                 domainos) osname=apollo
2127                         osvers="$3"
2128                         ;;
2129                 dgux) osname=dgux 
2130                         osvers="$3"
2131                         ;;
2132                 dynixptx*) osname=dynixptx
2133                         osvers=`echo "$4"|sed 's/^v//'`
2134                         ;;
2135                 freebsd) osname=freebsd 
2136                         osvers="$3" ;;
2137                 genix) osname=genix ;;
2138                 hp*) osname=hpux 
2139                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2140                         ;;
2141                 irix*) osname=irix
2142                         case "$3" in
2143                         4*) osvers=4 ;;
2144                         5*) osvers=5 ;;
2145                         *)      osvers="$3" ;;
2146                         esac
2147                         ;;
2148                 linux) osname=linux
2149                         case "$3" in
2150                         *)      osvers="$3" ;;
2151                         esac
2152                         ;;
2153                 MiNT) osname=mint
2154                         ;;
2155                 netbsd*) osname=netbsd
2156                         osvers="$3"
2157                         ;;
2158                 news-os) osvers="$3"
2159                         case "$3" in
2160                         4*) osname=newsos4 ;;
2161                         *) osname=newsos ;;
2162                         esac
2163                         ;;
2164                 bsd386) osname=bsd386
2165                         osvers=`$uname -r`
2166                         ;;
2167                 POSIX-BC | posix-bc ) osname=posix-bc
2168                         osvers="$3"
2169                         ;;
2170                 powerux | power_ux | powermax_os | powermaxos | \
2171                 powerunix | power_unix) osname=powerux
2172                         osvers="$3"
2173                         ;;
2174                 next*) osname=next ;;
2175                 solaris) osname=solaris
2176                         case "$3" in
2177                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2178                         *)      osvers="$3" ;;
2179                         esac
2180                         ;;
2181                 sunos) osname=sunos
2182                         case "$3" in
2183                         5*) osname=solaris
2184                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2185                         *)      osvers="$3" ;;
2186                         esac
2187                         ;;
2188                 titanos) osname=titanos
2189                         case "$3" in
2190                         1*) osvers=1 ;;
2191                         2*) osvers=2 ;;
2192                         3*) osvers=3 ;;
2193                         4*) osvers=4 ;;
2194                         *)      osvers="$3" ;;
2195                         esac
2196                         ;;
2197                 ultrix) osname=ultrix
2198                         osvers="$3"
2199                         ;;
2200                 osf1|mls+)      case "$5" in
2201                                 alpha)
2202                                         osname=dec_osf
2203                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2204                                         ;;
2205                         hp*)    osname=hp_osf1  ;;
2206                         mips)   osname=mips_osf1 ;;
2207                         esac
2208                         ;;
2209                 uts) osname=uts 
2210                         osvers="$3"
2211                         ;;
2212                 qnx) osname=qnx
2213                         osvers="$4"
2214                         ;;
2215                 $2) case "$osname" in
2216                         *isc*) ;;
2217                         *freebsd*) ;;
2218                         svr*)
2219                                 : svr4.x or possibly later
2220                                 case "svr$3" in 
2221                                 ${osname}*)
2222                                         osname=svr$3
2223                                         osvers=$4
2224                                         ;;
2225                                 esac
2226                                 case "$osname" in
2227                                 svr4.0)
2228                                         : Check for ESIX
2229                                         if test -f /stand/boot ; then
2230                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2231                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2232                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2233                                                         if test -n "$isesix"; then
2234                                                                 osname=esix4
2235                                                         fi
2236                                                 fi
2237                                         fi
2238                                         ;;
2239                                 esac
2240                                 ;;
2241                         *)      if test -f /etc/systemid; then
2242                                         osname=sco
2243                                         set `echo $3 | $sed 's/\./ /g'` $4
2244                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2245                                                 osvers=$1.$2.$3
2246                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2247                                                 osvers=$1.$2
2248                                         elif $test -f $src/hints/sco_$1.sh; then
2249                                                 osvers=$1
2250                                         fi
2251                                 else
2252                                         case "$osname" in
2253                                         '') : Still unknown.  Probably a generic Sys V.
2254                                                 osname="sysv"
2255                                                 osvers="$3"
2256                                                 ;;
2257                                         esac
2258                                 fi
2259                                 ;;
2260                         esac
2261                         ;;
2262                 *)      case "$osname" in
2263                         '') : Still unknown.  Probably a generic BSD.
2264                                 osname="$1"
2265                                 osvers="$3"
2266                                 ;;
2267                         esac
2268                         ;;
2269                 esac
2270         else
2271                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2272                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2273                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2274                                 osname=news_os
2275                         fi
2276                         $rm -f UU/kernel.what
2277                 elif test -d c:/.; then
2278                         set X $myuname
2279                         osname=os2
2280                         osvers="$5"
2281                 fi
2282         fi
2283         
2284         : Now look for a hint file osname_osvers, unless one has been
2285         : specified already.
2286         case "$hintfile" in
2287         ''|' ')
2288                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2289                 : Also try without trailing minor version numbers.
2290                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2291                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2292                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2293                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2294                 case "$file" in
2295                 '') dflt=none ;;
2296                 *)  case "$osvers" in
2297                         '') dflt=$file
2298                                 ;;
2299                         *)  if $test -f $src/hints/$file.sh ; then
2300                                         dflt=$file
2301                                 elif $test -f $src/hints/$xfile.sh ; then
2302                                         dflt=$xfile
2303                                 elif $test -f $src/hints/$xxfile.sh ; then
2304                                         dflt=$xxfile
2305                                 elif $test -f $src/hints/$xxxfile.sh ; then
2306                                         dflt=$xxxfile
2307                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2308                                         dflt=$xxxxfile
2309                                 elif $test -f "$src/hints/${osname}.sh" ; then
2310                                         dflt="${osname}"
2311                                 else
2312                                         dflt=none
2313                                 fi
2314                                 ;;
2315                         esac
2316                         ;;
2317                 esac
2318                 if $test -f Policy.sh ; then
2319                         case "$dflt" in
2320                         *Policy*) ;;
2321                         none) dflt="Policy" ;;
2322                         *) dflt="Policy $dflt" ;;
2323                         esac
2324                 fi
2325                 ;;
2326         *)
2327                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2328                 ;;
2329         esac
2330
2331         if $test -f Policy.sh ; then
2332                 $cat <<EOM
2333
2334 There's also a Policy hint file available, which should make the
2335 site-specific (policy) questions easier to answer.
2336 EOM
2337
2338         fi
2339
2340         $cat <<EOM
2341
2342 You may give one or more space-separated answers, or "none" if appropriate.
2343 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2344 is a good thing.  DO NOT give a wrong version.
2345
2346 EOM
2347
2348         rp="Which of these apply, if any?"
2349         . UU/myread
2350         tans=$ans
2351         for file in $tans; do
2352                 if $test X$file = XPolicy -a -f Policy.sh; then
2353                         . Policy.sh
2354                         $cat Policy.sh >> UU/config.sh
2355                 elif $test -f $src/hints/$file.sh; then
2356                         . $src/hints/$file.sh
2357                         $cat $src/hints/$file.sh >> UU/config.sh
2358                 elif $test X$tans = X -o X$tans = Xnone ; then
2359                         : nothing
2360                 else
2361                         : Give one chance to correct a possible typo.
2362                         echo "$file.sh does not exist"
2363                         dflt=$file
2364                         rp="hint to use instead?"
2365                         . UU/myread
2366                         for file in $ans; do
2367                                 if $test -f "$src/hints/$file.sh"; then
2368                                         . $src/hints/$file.sh
2369                                         $cat $src/hints/$file.sh >> UU/config.sh
2370                                 elif $test X$ans = X -o X$ans = Xnone ; then
2371                                         : nothing
2372                                 else
2373                                         echo "$file.sh does not exist -- ignored."
2374                                 fi
2375                         done
2376                 fi
2377         done
2378
2379         hint=recommended
2380         : Remember our hint file for later.
2381         if $test -f "$src/hints/$file.sh" ; then
2382                 hintfile="$file"
2383         else
2384                 hintfile=''
2385         fi
2386 fi
2387 cd UU
2388 ;;
2389 *)
2390         echo " "
2391         echo "Fetching default answers from $config_sh..." >&4
2392         tmp_n="$n"
2393         tmp_c="$c"
2394         cd ..
2395         cp $config_sh config.sh 2>/dev/null
2396         chmod +w config.sh
2397         . ./config.sh
2398         cd UU
2399         cp ../config.sh .
2400         n="$tmp_n"
2401         c="$tmp_c"
2402         hint=previous
2403         ;;
2404 esac
2405 test "$override" && . ./optdef.sh
2406 myuname="$newmyuname"
2407
2408 : Restore computed paths
2409 for file in $loclist $trylist; do
2410         eval $file="\$_$file"
2411 done
2412
2413 cat << EOM
2414
2415 Configure uses the operating system name and version to set some defaults.
2416 The default value is probably right if the name rings a bell. Otherwise,
2417 since spelling matters for me, either accept the default or answer "none"
2418 to leave it blank.
2419
2420 EOM
2421 case "$osname" in
2422         ''|' ')
2423                 case "$hintfile" in
2424                 ''|' '|none) dflt=none ;;
2425                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2426                 esac
2427                 ;;
2428         *) dflt="$osname" ;;
2429 esac
2430 rp="Operating system name?"
2431 . ./myread
2432 case "$ans" in
2433 none)  osname='' ;;
2434 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2435 esac
2436 echo " "
2437 case "$osvers" in
2438         ''|' ')
2439                 case "$hintfile" in
2440                 ''|' '|none) dflt=none ;;
2441                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2442                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2443                         case "$dflt" in
2444                         ''|' ') dflt=none ;;
2445                         esac
2446                         ;;
2447                 esac
2448                 ;;
2449         *) dflt="$osvers" ;;
2450 esac
2451 rp="Operating system version?"
2452 . ./myread
2453 case "$ans" in
2454 none)  osvers='' ;;
2455 *) osvers="$ans" ;;
2456 esac
2457
2458 : who configured the system
2459 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2460 cf_by=`(logname) 2>/dev/null`
2461 case "$cf_by" in
2462 "")
2463         cf_by=`(whoami) 2>/dev/null`
2464         case "$cf_by" in
2465         "") cf_by=unknown ;;
2466         esac ;;
2467 esac
2468
2469 : set up the script used to warn in case of inconsistency
2470 cat <<EOS >whoa
2471 $startsh
2472 EOS
2473 cat <<'EOSC' >>whoa
2474 dflt=y
2475 echo " "
2476 echo "*** WHOA THERE!!! ***" >&4
2477 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2478 rp="    Keep the $hint value?"
2479 . ./myread
2480 case "$ans" in
2481 y) td=$was; tu=$was;;
2482 esac
2483 EOSC
2484
2485 : function used to set $1 to $val
2486 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2487 case "$val$was" in
2488 $define$undef) . ./whoa; eval "$var=\$td";;
2489 $undef$define) . ./whoa; eval "$var=\$tu";;
2490 *) eval "$var=$val";;
2491 esac'
2492
2493 cat <<EOM
2494
2495 Perl can be built to take advantage of threads, on some systems.
2496 To do so, Configure must be run with -Dusethreads.
2497
2498 Note that threading is a highly experimental feature, and
2499 some known race conditions still remain.  If you choose to try
2500 it, be very sure to not actually deploy it for production
2501 purposes.  README.threads has more details, and is required
2502 reading if you enable threads.
2503 EOM
2504 case "$usethreads" in
2505 $define|true|[yY]*)     dflt='y';;
2506 *) dflt='n';;
2507 esac
2508 rp='Build a threading Perl?'
2509 . ./myread
2510 case "$ans" in
2511 y|Y)    val="$define" ;;     
2512 *)      val="$undef" ;;
2513 esac
2514 set usethreads
2515 eval $setvar 
2516
2517 case "$d_oldpthreads" in
2518 '')     : Configure tests would be welcome here.  For now, assume undef.
2519         val="$undef" ;;
2520 *)      val="$d_oldpthreads" ;;
2521 esac
2522 set d_oldpthreads
2523 eval $setvar
2524
2525
2526 case "$usethreads" in
2527 "$define"|true|[yY]*)
2528 : Look for a hint-file generated 'call-back-unit'.  If the
2529 : user has specified that a threading perl is to be built,
2530 : we may need to set or change some other defaults.
2531         if $test -f usethreads.cbu; then
2532                 . ./usethreads.cbu
2533         fi
2534         case "$osname" in
2535         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
2536                 # Known thread-capable platforms.
2537                 ;;
2538         *)
2539                 cat >&4 <<EOM
2540 $osname is not known to support threads.
2541 Please let perlbug@perl.com know how to do that.
2542
2543 Cannot continue, aborting.
2544 EOM
2545                 exit 1
2546         ;;
2547         esac # $osname
2548     ;;
2549 esac # $usethreads
2550
2551 cat <<EOM
2552
2553 Perl can be built so that multiple Perl interpreters can coexist
2554 within the same Perl executable.  To do so, Configure must be run with
2555 -Dusemultiplicity.
2556
2557 Normally you do not need this and you should answer no.
2558
2559 EOM
2560 case "$usemultiplicity" in
2561 $define|true|[yY]*)     dflt='y';;
2562 *) dflt='n';;
2563 esac
2564 rp='Build Perl for multiplicity?'
2565 . ./myread
2566 case "$ans" in
2567 y|Y)    val="$define" ;;     
2568 *)      val="$undef" ;;
2569 esac
2570 set usemultiplicity
2571 eval $setvar 
2572
2573 cat <<EOM
2574
2575 Perl can be built to take advantage of explicit 64-bit interfaces,
2576 on some systems.  To do so, Configure must be run with -Duse64bits.
2577
2578 If this doesn't make any sense to you, just accept the default 'n'.
2579 EOM
2580 case "$use64bits" in
2581 $define|true|[yY]*)     dflt='y';;
2582 *) dflt='n';;
2583 esac
2584 rp='Try to use explicit 64-bit interfaces, if available?'
2585 . ./myread
2586 case "$ans" in
2587 y|Y) 
2588         val="$define"
2589         ;;     
2590 *)      
2591         val="$undef"
2592         ;;
2593 esac
2594 set use64bits
2595 eval $setvar
2596
2597 case "$archname64" in
2598 '') archname64='' ;;    # not a typo
2599 esac
2600
2601 case "$use64bits" in
2602 "$define"|true|[yY]*)
2603 : Look for a hint-file generated 'call-back-unit'.  If the
2604 : user has specified that a threading perl is to be built,
2605 : we may need to set or change some other defaults.
2606         if $test -f use64bits.cbu; then
2607                 . ./use64bits.cbu
2608         fi
2609         case "$osname" in
2610         dec_osf|hpux|irix|solaris|unicos)
2611                 # Known 64-bit capable platforms.
2612                 ;;
2613         *)
2614                 cat >&4 <<EOM
2615 $osname is not known to support 64-bit interfaces.
2616 Please let perlbug@perl.com know how to do that.
2617
2618 Cannot continue, aborting.
2619 EOM
2620                 exit 1
2621                 ;;
2622         esac
2623         ;;
2624 esac
2625
2626 : determine the architecture name
2627 echo " "
2628 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2629         tarch=`arch`"-$osname"
2630 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2631         if uname -m > tmparch 2>&1 ; then
2632                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2633                         -e 's/$/'"-$osname/" tmparch`
2634         else
2635                 tarch="$osname"
2636         fi
2637         $rm -f tmparch
2638 else
2639         tarch="$osname"
2640 fi
2641 case "$myarchname" in
2642 ''|"$tarch") ;;
2643 *)
2644         echo "(Your architecture name used to be $myarchname.)"
2645         archname=''
2646         ;;
2647 esac
2648 myarchname="$tarch"
2649 case "$archname" in
2650 '') dflt="$tarch";;
2651 *) dflt="$archname";;
2652 esac
2653 rp='What is your architecture name'
2654 . ./myread
2655 archname="$ans"
2656 case "$usethreads" in
2657 $define)
2658         echo "Threads selected." >&4
2659         case "$archname" in
2660         *-thread*) echo "...and architecture name already has -thread." >&4
2661                 ;;
2662         *)      archname="$archname-thread"
2663                 echo "...setting architecture name to $archname." >&4
2664                 ;;
2665         esac
2666         ;;
2667 esac
2668 case "$usemultiplicity" in
2669 $define)
2670         echo "Multiplicity selected." >&4
2671         case "$archname" in
2672         *-multi*) echo "...and architecture name already has -multi." >&4
2673                 ;;
2674         *)      archname="$archname-multi"
2675                 echo "...setting architecture name to $archname." >&4
2676                 ;;
2677         esac
2678         ;;
2679 esac
2680 case "$use64bits" in
2681 $define)
2682         echo "Explicit 64-bitness selected." >&4
2683         case "$archname64" in
2684         '')
2685                 ;;
2686         *)
2687                 case "$archname" in
2688                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2689                         ;;
2690                 *)      archname="$archname-$archname64"
2691                         echo "...setting architecture name to $archname." >&4
2692                         ;;
2693                 esac
2694                 ;;
2695         esac
2696 esac
2697
2698 : is AFS running?
2699 echo " "
2700 case "$afs" in
2701 $define|true)   afs=true ;;
2702 $undef|false)   afs=false ;;
2703 *)      if test -d /afs; then
2704                 afs=true
2705         else
2706                 afs=false
2707         fi
2708         ;;
2709 esac
2710 if $afs; then
2711         echo "AFS may be running... I'll be extra cautious then..." >&4
2712 else
2713         echo "AFS does not seem to be running..." >&4
2714 fi
2715
2716 : decide how portable to be.  Allow command line overrides.
2717 case "$d_portable" in
2718 "$undef") ;;
2719 *)      d_portable="$define" ;;
2720 esac
2721
2722 : set up shell script to do ~ expansion
2723 cat >filexp <<EOSS
2724 $startsh
2725 : expand filename
2726 case "\$1" in
2727  ~/*|~)
2728         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2729         ;;
2730  ~*)
2731         if $test -f /bin/csh; then
2732                 /bin/csh -f -c "glob \$1"
2733                 failed=\$?
2734                 echo ""
2735                 exit \$failed
2736         else
2737                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2738                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2739                 if $test ! -d "\$dir"; then
2740                         me=\`basename \$0\`
2741                         echo "\$me: can't locate home directory for: \$name" >&2
2742                         exit 1
2743                 fi
2744                 case "\$1" in
2745                 */*)
2746                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2747                         ;;
2748                 *)
2749                         echo \$dir
2750                         ;;
2751                 esac
2752         fi
2753         ;;
2754 *)
2755         echo \$1
2756         ;;
2757 esac
2758 EOSS
2759 chmod +x filexp
2760 $eunicefix filexp
2761
2762 : now set up to get a file name
2763 cat <<EOS >getfile
2764 $startsh
2765 EOS
2766 cat <<'EOSC' >>getfile
2767 tilde=''
2768 fullpath=''
2769 already=''
2770 skip=''
2771 none_ok=''
2772 exp_file=''
2773 nopath_ok=''
2774 orig_rp="$rp"
2775 orig_dflt="$dflt"
2776
2777 case "$fn" in
2778 *\(*)
2779         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2780         fn=`echo $fn | sed 's/(.*)//'`
2781         ;;
2782 esac
2783
2784 case "$fn" in
2785 *:*)
2786         loc_file=`expr $fn : '.*:\(.*\)'`
2787         fn=`expr $fn : '\(.*\):.*'`
2788         ;;
2789 esac
2790
2791 case "$fn" in
2792 *~*) tilde=true;;
2793 esac
2794 case "$fn" in
2795 */*) fullpath=true;;
2796 esac
2797 case "$fn" in
2798 *+*) skip=true;;
2799 esac
2800 case "$fn" in
2801 *n*) none_ok=true;;
2802 esac
2803 case "$fn" in
2804 *e*) exp_file=true;;
2805 esac
2806 case "$fn" in
2807 *p*) nopath_ok=true;;
2808 esac
2809
2810 case "$fn" in
2811 *f*) type='File';;
2812 *d*) type='Directory';;
2813 *l*) type='Locate';;
2814 esac
2815
2816 what="$type"
2817 case "$what" in
2818 Locate) what='File';;
2819 esac
2820
2821 case "$exp_file" in
2822 '')
2823         case "$d_portable" in
2824         "$define") ;;
2825         *) exp_file=true;;
2826         esac
2827         ;;
2828 esac
2829
2830 cd ..
2831 while test "$type"; do
2832         redo=''
2833         rp="$orig_rp"
2834         dflt="$orig_dflt"
2835         case "$tilde" in
2836         true) rp="$rp (~name ok)";;
2837         esac
2838         . UU/myread
2839         if test -f UU/getfile.ok && \
2840                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2841         then
2842                 value="$ans"
2843                 ansexp="$ans"
2844                 break
2845         fi
2846         case "$ans" in
2847         none)
2848                 value=''
2849                 ansexp=''
2850                 case "$none_ok" in
2851                 true) type='';;
2852                 esac
2853                 ;;
2854         *)
2855                 case "$tilde" in
2856                 '') value="$ans"
2857                         ansexp="$ans";;
2858                 *)
2859                         value=`UU/filexp $ans`
2860                         case $? in
2861                         0)
2862                                 if test "$ans" != "$value"; then
2863                                         echo "(That expands to $value on this system.)"
2864                                 fi
2865                                 ;;
2866                         *) value="$ans";;
2867                         esac
2868                         ansexp="$value"
2869                         case "$exp_file" in
2870                         '') value="$ans";;
2871                         esac
2872                         ;;
2873                 esac
2874                 case "$fullpath" in
2875                 true)
2876                         case "$ansexp" in
2877                         /*) value="$ansexp" ;;
2878                         *)
2879                                 redo=true
2880                                 case "$already" in
2881                                 true)
2882                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2883                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2884                                         ;;
2885                                 *)
2886                                 echo "Please give a full path name, starting with slash." >&4
2887                                         case "$tilde" in
2888                                         true)
2889                                 echo "Note that using ~name is ok provided it expands well." >&4
2890                                                 already=true
2891                                                 ;;
2892                                         esac
2893                                 esac
2894                                 ;;
2895                         esac
2896                         ;;
2897                 esac
2898                 case "$redo" in
2899                 '')
2900                         case "$type" in
2901                         File)
2902                                 if test -f "$ansexp"; then
2903                                         type=''
2904                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2905                                 then
2906                                         echo "($value is not a plain file, but that's ok.)"
2907                                         type=''
2908                                 fi
2909                                 ;;
2910                         Directory)
2911                                 if test -d "$ansexp"; then
2912                                         type=''
2913                                 fi
2914                                 ;;
2915                         Locate)
2916                                 if test -d "$ansexp"; then
2917                                         echo "(Looking for $loc_file in directory $value.)"
2918                                         value="$value/$loc_file"
2919                                         ansexp="$ansexp/$loc_file"
2920                                 fi
2921                                 if test -f "$ansexp"; then
2922                                         type=''
2923                                 fi
2924                                 case "$nopath_ok" in
2925                                 true)   case "$value" in
2926                                         */*) ;;
2927                                         *)      echo "Assuming $value will be in people's path."
2928                                                 type=''
2929                                                 ;;
2930                                         esac
2931                                         ;;
2932                                 esac
2933                                 ;;
2934                         esac
2935
2936                         case "$skip" in
2937                         true) type='';
2938                         esac
2939
2940                         case "$type" in
2941                         '') ;;
2942                         *)
2943                                 if test "$fastread" = yes; then
2944                                         dflt=y
2945                                 else
2946                                         dflt=n
2947                                 fi
2948                                 rp="$what $value doesn't exist.  Use that name anyway?"
2949                                 . UU/myread
2950                                 dflt=''
2951                                 case "$ans" in
2952                                 y*) type='';;
2953                                 *) echo " ";;
2954                                 esac
2955                                 ;;
2956                         esac
2957                         ;;
2958                 esac
2959                 ;;
2960         esac
2961 done
2962 cd UU
2963 ans="$value"
2964 rp="$orig_rp"
2965 dflt="$orig_dflt"
2966 rm -f getfile.ok
2967 EOSC
2968
2969 : determine root of directory hierarchy where package will be installed.
2970 case "$prefix" in
2971 '')
2972         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2973         ;;
2974 *)
2975         dflt="$prefix"
2976         ;;
2977 esac
2978 $cat <<EOM
2979
2980 By default, $package will be installed in $dflt/bin, manual
2981 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2982 all installation directories. Typically set to /usr/local, but you
2983 may choose /usr if you wish to install $package among your system
2984 binaries. If you wish to have binaries under /bin but manual pages
2985 under /usr/local/man, that's ok: you will be prompted separately
2986 for each of the installation directories, the prefix being only used
2987 to set the defaults.
2988
2989 EOM
2990 fn=d~
2991 rp='Installation prefix to use?'
2992 . ./getfile
2993 oldprefix=''
2994 case "$prefix" in
2995 '') ;;
2996 *)
2997         case "$ans" in
2998         "$prefix") ;;
2999         *) oldprefix="$prefix";;
3000         esac
3001         ;;
3002 esac
3003 prefix="$ans"
3004 prefixexp="$ansexp"
3005
3006 : set the prefixit variable, to compute a suitable default value
3007 prefixit='case "$3" in
3008 ""|none)
3009         case "$oldprefix" in
3010         "") eval "$1=\"\$$2\"";;
3011         *)
3012                 case "$3" in
3013                 "") eval "$1=";;
3014                 none)
3015                         eval "tp=\"\$$2\"";
3016                         case "$tp" in
3017                         ""|" ") eval "$1=\"\$$2\"";;
3018                         *) eval "$1=";;
3019                         esac;;
3020                 esac;;
3021         esac;;
3022 *)
3023         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3024         case "$tp" in
3025         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3026         /*-$oldprefix/*|\~*-$oldprefix/*)
3027                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3028         *) eval "$1=\"\$$2\"";;
3029         esac;;
3030 esac'
3031
3032 : set the base revision
3033 baserev=5.0
3034
3035 : get the patchlevel
3036 echo " "
3037 echo "Getting the current patchlevel..." >&4
3038 if $test -r $rsrc/patchlevel.h;then
3039         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3040         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3041 else
3042         patchlevel=0
3043         subversion=0
3044 fi
3045 $echo $n "(You have $package" $c
3046 case "$package" in
3047 "*$baserev")    ;;
3048 *)              $echo $n " $baserev" $c ;;
3049 esac
3050 $echo $n " patchlevel $patchlevel" $c
3051 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3052 echo ".)"
3053
3054 if test 0 -eq "$subversion"; then
3055         version=`LC_ALL=C; export LC_ALL; \
3056                  echo $baserev $patchlevel | \
3057                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3058 else
3059         version=`LC_ALL=C; export LC_ALL; \
3060                  echo $baserev $patchlevel $subversion | \
3061                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3062 fi
3063 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3064 if test "$subversion" -lt 50; then
3065         apiversion=`LC_ALL=C; export LC_ALL; \
3066                  LANGUAGE=C; export LANGUAGE; \
3067                  echo $baserev $patchlevel | \
3068                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3069 else
3070         apiversion="$version"
3071 fi
3072
3073 : determine where private library files go
3074 : Usual default is /usr/local/lib/perl5/$version.
3075 : Also allow things like /opt/perl/lib/$version, since 
3076 : /opt/perl/lib/perl5... would be redundant.
3077 case "$prefix" in
3078 *perl*) set dflt privlib lib/$version ;;
3079 *)       set dflt privlib lib/$package/$version ;;
3080 esac
3081 eval $prefixit
3082 $cat <<EOM
3083
3084 There are some auxiliary files for $package that need to be put into a
3085 private library directory that is accessible by everyone.
3086
3087 EOM
3088 fn=d~+
3089 rp='Pathname where the private library files will reside?'
3090 . ./getfile
3091 if $test "X$privlibexp" != "X$ansexp"; then
3092         installprivlib=''
3093 fi
3094 privlib="$ans"
3095 privlibexp="$ansexp"
3096 if $afs; then
3097         $cat <<EOM
3098
3099 Since you are running AFS, I need to distinguish the directory in which
3100 private files reside from the directory in which they are installed (and from
3101 which they are presumably copied to the former directory by occult means).
3102
3103 EOM
3104         case "$installprivlib" in
3105         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3106         *) dflt="$installprivlib";;
3107         esac
3108         fn=de~
3109         rp='Where will private files be installed?'
3110         . ./getfile
3111         installprivlib="$ans"
3112 else
3113         installprivlib="$privlibexp"
3114 fi
3115
3116 : set the prefixup variable, to restore leading tilda escape
3117 prefixup='case "$prefixexp" in
3118 "$prefix") ;;
3119 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3120 esac'
3121
3122 : determine where public architecture dependent libraries go
3123 set archlib archlib
3124 eval $prefixit
3125 : privlib default is /usr/local/lib/$package/$version
3126 : archlib default is /usr/local/lib/$package/$version/$archname
3127 : privlib may have an optional trailing /share.
3128 tdflt=`echo $privlib | $sed 's,/share$,,'`
3129 tdflt=$tdflt/$archname
3130 case "$archlib" in
3131 '')     dflt=$tdflt
3132         ;;
3133 *)      dflt="$archlib"
3134     ;;
3135 esac
3136 cat <<EOM
3137
3138 $spackage contains architecture-dependent library files.  If you are
3139 sharing libraries in a heterogeneous environment, you might store
3140 these files in a separate location.  Otherwise, you can just include
3141 them with the rest of the public library files.
3142
3143 EOM
3144 fn=d+~
3145 rp='Where do you want to put the public architecture-dependent libraries?'
3146 . ./getfile
3147 archlib="$ans"
3148 archlibexp="$ansexp"
3149
3150 if $afs; then
3151         $cat <<EOM
3152
3153 Since you are running AFS, I need to distinguish the directory in
3154 which architecture-dependent library files reside from the directory
3155 in which they are installed (and from which they are presumably copied
3156 to the former directory by occult means).
3157
3158 EOM
3159         case "$installarchlib" in
3160         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3161         *) dflt="$installarchlib";;
3162         esac
3163         fn=de~
3164         rp='Where will architecture-dependent library files be installed?'
3165         . ./getfile
3166         installarchlib="$ans"
3167 else
3168         installarchlib="$archlibexp"
3169 fi
3170 if $test X"$archlib" = X"$privlib"; then
3171         d_archlib="$undef"
3172 else
3173         d_archlib="$define"
3174 fi
3175
3176 : make some quick guesses about what we are up against
3177 echo " "
3178 $echo $n "Hmm...  $c"
3179 echo exit 1 >bsd
3180 echo exit 1 >usg
3181 echo exit 1 >v7
3182 echo exit 1 >osf1
3183 echo exit 1 >eunice
3184 echo exit 1 >xenix
3185 echo exit 1 >venix
3186 echo exit 1 >os2
3187 d_bsd="$undef"
3188 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3189 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3190 then
3191         echo "Looks kind of like an OSF/1 system, but we'll see..."
3192         echo exit 0 >osf1
3193 elif test `echo abc | tr a-z A-Z` = Abc ; then
3194         xxx=`./loc addbib blurfl $pth`
3195         if $test -f $xxx; then
3196         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3197                 echo exit 0 >bsd
3198                 echo exit 0 >usg
3199         else
3200                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3201                         echo "Looks kind of like an extended USG system, but we'll see..."
3202                 else
3203                         echo "Looks kind of like a USG system, but we'll see..."
3204                 fi
3205                 echo exit 0 >usg
3206         fi
3207 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3208         echo "Looks kind of like a BSD system, but we'll see..."
3209         d_bsd="$define"
3210         echo exit 0 >bsd
3211 else
3212         echo "Looks kind of like a Version 7 system, but we'll see..."
3213         echo exit 0 >v7
3214 fi
3215 case "$eunicefix" in
3216 *unixtovms*)
3217         $cat <<'EOI'
3218 There is, however, a strange, musty smell in the air that reminds me of
3219 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3220 EOI
3221         echo exit 0 >eunice
3222         d_eunice="$define"
3223 : it so happens the Eunice I know will not run shell scripts in Unix format
3224         ;;
3225 *)
3226         echo " "
3227         echo "Congratulations.  You aren't running Eunice."
3228         d_eunice="$undef"
3229         ;;
3230 esac
3231 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3232 case "$p_" in
3233 :) ;;
3234 *)
3235         $cat <<'EOI'
3236 I have the feeling something is not exactly right, however...don't tell me...
3237 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3238 EOI
3239         echo exit 0 >os2
3240         ;;
3241 esac
3242 if test -f /xenix; then
3243         echo "Actually, this looks more like a XENIX system..."
3244         echo exit 0 >xenix
3245         d_xenix="$define"
3246 else
3247         echo " "
3248         echo "It's not Xenix..."
3249         d_xenix="$undef"
3250 fi
3251 chmod +x xenix
3252 $eunicefix xenix
3253 if test -f /venix; then
3254         echo "Actually, this looks more like a VENIX system..."
3255         echo exit 0 >venix
3256 else
3257         echo " "
3258         if ./xenix; then
3259                 : null
3260         else
3261                 echo "Nor is it Venix..."
3262         fi
3263 fi
3264 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3265 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3266 $rm -f foo
3267
3268 : see if setuid scripts can be secure
3269 $cat <<EOM
3270
3271 Some kernels have a bug that prevents setuid #! scripts from being
3272 secure.  Some sites have disabled setuid #! scripts because of this.
3273
3274 First let's decide if your kernel supports secure setuid #! scripts.
3275 (If setuid #! scripts would be secure but have been disabled anyway,
3276 don't say that they are secure if asked.)
3277
3278 EOM
3279
3280 val="$undef"
3281 if $test -d /dev/fd; then
3282         echo "#!$ls" >reflect
3283         chmod +x,u+s reflect
3284         ./reflect >flect 2>&1
3285         if $contains "/dev/fd" flect >/dev/null; then
3286                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3287                 val="$define"
3288         else
3289                 $cat <<EOM
3290 If you are not sure if they are secure, I can check but I'll need a
3291 username and password different from the one you are using right now.
3292 If you don't have such a username or don't want me to test, simply
3293 enter 'none'.
3294
3295 EOM
3296                 rp='Other username to test security of setuid scripts with?'
3297                 dflt='none'
3298                 . ./myread
3299                 case "$ans" in
3300                 n|none)
3301                         case "$d_suidsafe" in
3302                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3303                                 dflt=n;;
3304                         "$undef")
3305                                 echo "Well, the $hint value is *not* secure." >&4
3306                                 dflt=n;;
3307                         *)      echo "Well, the $hint value *is* secure." >&4
3308                                 dflt=y;;
3309                         esac
3310                         ;;
3311                 *)
3312                         $rm -f reflect flect
3313                         echo "#!$ls" >reflect
3314                         chmod +x,u+s reflect
3315                         echo >flect
3316                         chmod a+w flect
3317                         echo '"su" will (probably) prompt you for '"$ans's password."
3318                         su $ans -c './reflect >flect'
3319                         if $contains "/dev/fd" flect >/dev/null; then
3320                                 echo "Okay, it looks like setuid scripts are secure." >&4
3321                                 dflt=y
3322                         else
3323                                 echo "I don't think setuid scripts are secure." >&4
3324                                 dflt=n
3325                         fi
3326                         ;;
3327                 esac
3328                 rp='Does your kernel have *secure* setuid scripts?'
3329                 . ./myread
3330                 case "$ans" in
3331                 [yY]*)  val="$define";;
3332                 *)      val="$undef";;
3333                 esac
3334         fi
3335 else
3336         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3337         echo "(That's for file descriptors, not floppy disks.)"
3338         val="$undef"
3339 fi
3340 set d_suidsafe
3341 eval $setvar
3342
3343 $rm -f reflect flect
3344
3345 : now see if they want to do setuid emulation
3346 echo " "
3347 val="$undef"
3348 case "$d_suidsafe" in
3349 "$define")
3350         val="$undef"
3351         echo "No need to emulate SUID scripts since they are secure here." >& 4
3352         ;;
3353 *)
3354         $cat <<EOM
3355 Some systems have disabled setuid scripts, especially systems where
3356 setuid scripts cannot be secure.  On systems where setuid scripts have
3357 been disabled, the setuid/setgid bits on scripts are currently
3358 useless.  It is possible for $package to detect those bits and emulate
3359 setuid/setgid in a secure fashion.  This emulation will only work if
3360 setuid scripts have been disabled in your kernel.
3361
3362 EOM
3363         case "$d_dosuid" in
3364         "$define") dflt=y ;;
3365         *) dflt=n ;;
3366         esac
3367         rp="Do you want to do setuid/setgid emulation?"
3368         . ./myread
3369         case "$ans" in
3370         [yY]*)  val="$define";;
3371         *)      val="$undef";;
3372         esac
3373         ;;
3374 esac
3375 set d_dosuid
3376 eval $setvar
3377
3378 : determine where manual pages are on this system
3379 echo " "
3380 case "$sysman" in
3381 '') 
3382         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3383         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3384         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3385         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3386         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3387         sysman=`./loc . /usr/man/man1 $syspath`
3388         ;;
3389 esac
3390 if $test -d "$sysman"; then
3391         echo "System manual is in $sysman." >&4
3392 else
3393         echo "Could not find manual pages in source form." >&4
3394 fi
3395
3396 : see what memory models we can support
3397 case "$models" in
3398 '')
3399         $cat >pdp11.c <<'EOP'
3400 int main() {
3401 #ifdef pdp11
3402         exit(0);
3403 #else
3404         exit(1);
3405 #endif
3406 }
3407 EOP
3408         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3409         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3410                 dflt='unsplit split'
3411         else
3412                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3413                 case "$tans" in
3414                 X) dflt='none';;
3415                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3416                                 dflt='small'
3417                         else
3418                                 dflt=''
3419                         fi
3420                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3421                                 dflt="$dflt medium"
3422                         fi
3423                         if $test -d /lib/large || $test -d /usr/lib/large; then
3424                                 dflt="$dflt large"
3425                         fi
3426                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3427                                 dflt="$dflt huge"
3428                         fi
3429                 esac
3430         fi;;
3431 *) dflt="$models";;
3432 esac
3433 $cat <<EOM
3434  
3435 Some systems have different model sizes.  On most systems they are called
3436 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3437 split.  If your system doesn't support different memory models, say "none".
3438 If you wish to force everything to one memory model, say "none" here and
3439 put the appropriate flags later when it asks you for other cc and ld flags.
3440 Venix systems may wish to put "none" and let the compiler figure things out.
3441 (In the following question multiple model names should be space separated.)
3442
3443 The default for most systems is "none".
3444
3445 EOM
3446 rp="Which memory models are supported?"
3447 . ./myread
3448 models="$ans"
3449
3450 case "$models" in
3451 none)
3452         small=''
3453         medium=''
3454         large=''
3455         huge=''
3456         unsplit=''
3457         split=''
3458         ;;
3459 *split)
3460         case "$split" in
3461         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3462                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3463                         dflt='-i'
3464                 else
3465                         dflt='none'
3466                 fi;;
3467         *) dflt="$split";;
3468         esac
3469         rp="What flag indicates separate I and D space?"
3470         . ./myread
3471         tans="$ans"
3472         case "$tans" in
3473         none) tans='';;
3474         esac
3475         split="$tans"
3476         unsplit='';;
3477 *large*|*small*|*medium*|*huge*)
3478         case "$models" in
3479         *large*)
3480                 case "$large" in
3481                 '') dflt='-Ml';;
3482                 *) dflt="$large";;
3483                 esac
3484         rp="What flag indicates large model?"
3485         . ./myread
3486         tans="$ans"
3487         case "$tans" in
3488         none) tans='';
3489         esac
3490         large="$tans";;
3491         *) large='';;
3492         esac
3493         case "$models" in
3494         *huge*) case "$huge" in
3495                 '') dflt='-Mh';;
3496                 *) dflt="$huge";;
3497                 esac
3498                 rp="What flag indicates huge model?"
3499                 . ./myread
3500                 tans="$ans"
3501                 case "$tans" in
3502                 none) tans='';
3503                 esac
3504                 huge="$tans";;
3505         *) huge="$large";;
3506         esac
3507         case "$models" in
3508         *medium*) case "$medium" in
3509                 '') dflt='-Mm';;
3510                 *) dflt="$medium";;
3511                 esac
3512                 rp="What flag indicates medium model?"
3513                 . ./myread
3514                 tans="$ans"
3515                 case "$tans" in
3516                 none) tans='';
3517                 esac
3518                 medium="$tans";;
3519         *) medium="$large";;
3520         esac
3521         case "$models" in
3522         *small*) case "$small" in
3523                 '') dflt='none';;
3524                 *) dflt="$small";;
3525                 esac
3526                 rp="What flag indicates small model?"
3527                 . ./myread
3528                 tans="$ans"
3529                 case "$tans" in
3530                 none) tans='';
3531                 esac
3532                 small="$tans";;
3533         *) small='';;
3534         esac
3535         ;;
3536 *)
3537         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3538         ;;
3539 esac
3540 $rm -f pdp11.* pdp11
3541
3542 : see if we need a special compiler
3543 echo " "
3544 if ./usg; then
3545         case "$cc" in
3546         '') case "$Mcc" in
3547                 /*) dflt='Mcc';;
3548                 *) case "$large" in
3549                         -M*) dflt='cc';;
3550                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3551                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3552                                                 dflt='cc'
3553                                         else
3554                                                 dflt='cc -M'
3555                                         fi
3556                                 else
3557                                         dflt='cc'
3558                                 fi;;
3559                         esac;;
3560                 esac;;
3561         *)  dflt="$cc";;
3562         esac
3563         case "$dflt" in
3564         *M*)    $cat <<'EOM'
3565 On some older systems the default C compiler will not resolve multiple global
3566 references that happen to have the same name.  On some such systems the "Mcc"
3567 command may be used to force these to be resolved.  On other systems a "cc -M"
3568 command is required.  (Note that the -M flag on other systems indicates a
3569 memory model to use!) If you have the Gnu C compiler, you might wish to use
3570 that instead.
3571
3572 EOM
3573         ;;
3574         esac
3575         rp="Use which C compiler?"
3576         . ./myread
3577         cc="$ans"
3578 else
3579         case "$cc" in
3580         '') dflt=cc;;
3581         *) dflt="$cc";;
3582         esac
3583         rp="Use which C compiler?"
3584         . ./myread
3585         cc="$ans"
3586 fi
3587 : Look for a hint-file generated 'call-back-unit'.  Now that the
3588 : user has specified the compiler, we may need to set or change some
3589 : other defaults.
3590 if $test -f cc.cbu; then
3591     . ./cc.cbu
3592 fi
3593 echo " "
3594 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3595 $cat >gccvers.c <<EOM
3596 #include <stdio.h>
3597 int main() {
3598 #ifdef __GNUC__
3599 #ifdef __VERSION__
3600         printf("%s\n", __VERSION__);
3601 #else
3602         printf("%s\n", "1");
3603 #endif
3604 #endif
3605         exit(0);
3606 }
3607 EOM
3608 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3609         gccversion=`./gccvers`
3610         case "$gccversion" in
3611         '') echo "You are not using GNU cc." ;;
3612         *)  echo "You are using GNU cc $gccversion." ;;
3613         esac
3614 else
3615         echo " "
3616         echo "*** WHOA THERE!!! ***" >&4
3617         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3618         case "$knowitall" in
3619         '')
3620         echo "    You'd better start hunting for one and let me know about it." >&4
3621                 exit 1
3622                 ;;
3623         esac
3624 fi
3625 $rm -f gccvers*
3626 case "$gccversion" in
3627 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3628 esac
3629
3630 : What should the include directory be ?
3631 echo " "
3632 $echo $n "Hmm...  $c"
3633 dflt='/usr/include'
3634 incpath=''
3635 mips_type=''
3636 if $test -f /bin/mips && /bin/mips; then
3637         echo "Looks like a MIPS system..."
3638         $cat >usr.c <<'EOCP'
3639 #ifdef SYSTYPE_BSD43
3640 /bsd43
3641 #endif
3642 EOCP
3643         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3644                 dflt='/bsd43/usr/include'
3645                 incpath='/bsd43'
3646                 mips_type='BSD 4.3'
3647         else
3648                 mips_type='System V'
3649         fi
3650         $rm -f usr.c usr.out
3651         echo "and you're compiling with the $mips_type compiler and libraries."
3652         xxx_prompt=y
3653         echo "exit 0" >mips
3654 else
3655         echo "Doesn't look like a MIPS system."
3656         xxx_prompt=n
3657         echo "exit 1" >mips
3658 fi
3659 chmod +x mips
3660 $eunicefix mips
3661 case "$usrinc" in
3662 '') ;;
3663 *) dflt="$usrinc";;
3664 esac
3665 case "$xxx_prompt" in
3666 y)      fn=d/
3667         echo " "
3668         rp='Where are the include files you want to use?'
3669         . ./getfile
3670         usrinc="$ans"
3671         ;;
3672 *)      usrinc="$dflt"
3673         ;;
3674 esac
3675
3676 : see how we invoke the C preprocessor
3677 echo " "
3678 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3679 cat <<'EOT' >testcpp.c
3680 #define ABC abc
3681 #define XYZ xyz
3682 ABC.XYZ
3683 EOT
3684 cd ..
3685 if test ! -f cppstdin; then
3686         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3687 else
3688         echo "Keeping your $hint cppstdin wrapper."
3689 fi
3690 chmod 755 cppstdin
3691 wrapper=`pwd`/cppstdin
3692 ok='false'
3693 cd UU
3694
3695 if $test "X$cppstdin" != "X" && \
3696         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3697         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3698 then
3699         echo "You used to use $cppstdin $cppminus so we'll use that again."
3700         case "$cpprun" in
3701         '') echo "But let's see if we can live without a wrapper..." ;;
3702         *)
3703                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3704                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3705                 then
3706                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3707                         ok='true'
3708                 else
3709                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3710                 fi
3711                 ;;
3712         esac
3713 else
3714         case "$cppstdin" in
3715         '') ;;
3716         *)
3717                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3718                 ;;
3719         esac
3720 fi
3721
3722 if $ok; then
3723         : nothing
3724 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3725         $cc -E <testcpp.c >testcpp.out 2>&1; \
3726         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3727         echo "Yup, it does."
3728         x_cpp="$cc -E"
3729         x_minus='';
3730 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3731         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3732         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3733         echo "Yup, it does."
3734         x_cpp="$cc -E"
3735         x_minus='-';
3736 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3737         $cc -P <testcpp.c >testcpp.out 2>&1; \
3738         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3739         echo "Yipee, that works!"
3740         x_cpp="$cc -P"
3741         x_minus='';
3742 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3743         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3744         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3745         echo "At long last!"
3746         x_cpp="$cc -P"
3747         x_minus='-';
3748 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3749         $cpp <testcpp.c >testcpp.out 2>&1; \
3750         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3751         echo "It works!"
3752         x_cpp="$cpp"
3753         x_minus='';
3754 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3755         $cpp - <testcpp.c >testcpp.out 2>&1; \
3756         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3757         echo "Hooray, it works!  I was beginning to wonder."
3758         x_cpp="$cpp"
3759         x_minus='-';
3760 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3761         $wrapper <testcpp.c >testcpp.out 2>&1; \
3762         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3763         x_cpp="$wrapper"
3764         x_minus=''
3765         echo "Eureka!"
3766 else
3767         dflt=''
3768         rp="No dice.  I can't find a C preprocessor.  Name one:"
3769         . ./myread
3770         x_cpp="$ans"
3771         x_minus=''
3772         $x_cpp <testcpp.c >testcpp.out 2>&1
3773         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3774                 echo "OK, that will do." >&4
3775         else
3776 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3777                 exit 1
3778         fi
3779 fi
3780
3781 case "$ok" in
3782 false)
3783         cppstdin="$x_cpp"
3784         cppminus="$x_minus"
3785         cpprun="$x_cpp"
3786         cpplast="$x_minus"
3787         set X $x_cpp
3788         shift
3789         case "$1" in
3790         "$cpp")
3791                 echo "Perhaps can we force $cc -E using a wrapper..."
3792                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3793                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3794                 then
3795                         echo "Yup, we can."
3796                         cppstdin="$wrapper"
3797                         cppminus='';
3798                 else
3799                         echo "Nope, we'll have to live without it..."
3800                 fi
3801                 ;;
3802         esac
3803         case "$cpprun" in
3804         "$wrapper")
3805                 cpprun=''
3806                 cpplast=''
3807                 ;;
3808         esac
3809         ;;
3810 esac
3811
3812 case "$cppstdin" in
3813 "$wrapper"|'cppstdin') ;;
3814 *) $rm -f $wrapper;;
3815 esac
3816 $rm -f testcpp.c testcpp.out
3817
3818 : Set private lib path
3819 case "$plibpth" in
3820 '') if ./mips; then
3821                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3822         fi;;
3823 esac
3824 case "$libpth" in
3825 ' ') dlist='';;
3826 '') dlist="$loclibpth $plibpth $glibpth";;
3827 *) dlist="$libpth";;
3828 esac
3829
3830 : Now check and see which directories actually exist, avoiding duplicates
3831 libpth=''
3832 for xxx in $dlist
3833 do
3834     if $test -d $xxx; then
3835                 case " $libpth " in
3836                 *" $xxx "*) ;;
3837                 *) libpth="$libpth $xxx";;
3838                 esac
3839     fi
3840 done
3841 $cat <<'EOM'
3842
3843 Some systems have incompatible or broken versions of libraries.  Among
3844 the directories listed in the question below, please remove any you
3845 know not to be holding relevant libraries, and add any that are needed.
3846 Say "none" for none.
3847
3848 EOM
3849 case "$libpth" in
3850 '') dflt='none';;
3851 *)
3852         set X $libpth
3853         shift
3854         dflt=${1+"$@"}
3855         ;;
3856 esac
3857 rp="Directories to use for library searches?"
3858 . ./myread
3859 case "$ans" in
3860 none) libpth=' ';;
3861 *) libpth="$ans";;
3862 esac
3863
3864 : compute shared library extension
3865 case "$so" in
3866 '')
3867         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3868                 dflt='sl'
3869         else
3870                 dflt='so'
3871         fi
3872         ;;
3873 *) dflt="$so";;
3874 esac
3875 $cat <<EOM
3876
3877 On some systems, shared libraries may be available.  Answer 'none' if
3878 you want to suppress searching of shared libraries for the remaining
3879 of this configuration.
3880
3881 EOM
3882 rp='What is the file extension used for shared libraries?'
3883 . ./myread
3884 so="$ans"
3885
3886 : Define several unixisms.
3887 : Hints files or command line option can be used to override them.
3888 : The convoluted testing is in case hints files set either the old
3889 : or the new name.
3890 case "$_exe" in
3891 '')     case "$exe_ext" in
3892     '') ;;
3893         *)      _exe="$exe_ext" ;;
3894         esac
3895         ;;
3896 esac
3897 case "$_a" in
3898 '')     case "$lib_ext" in
3899     '') _a='.a';;
3900         *)      _a="$lib_ext" ;;
3901         esac
3902         ;;
3903 esac
3904 case "$_o" in
3905 '') case "$obj_ext" in
3906         '')     _o='.o';;
3907         *)      _o="$obj_ext";;
3908         esac
3909         ;;
3910 esac
3911 case "$p_" in
3912 '') case "$path_sep" in
3913         '')     p_=':';;
3914         *)      p_="$path_sep";;
3915         esac
3916         ;;
3917 esac
3918 exe_ext=$_exe
3919 lib_ext=$_a
3920 obj_ext=$_o
3921 path_sep=$p_
3922
3923 : Which makefile gets called first.  This is used by make depend.
3924 case "$firstmakefile" in
3925 '') firstmakefile='makefile';;
3926 esac
3927
3928 : Looking for optional libraries
3929 echo " "
3930 echo "Checking for optional libraries..." >&4
3931 case "$libs" in
3932 ' '|'') dflt='';;
3933 *) dflt="$libs";;
3934 esac
3935 case "$libswanted" in
3936 '') libswanted='c_s';;
3937 esac
3938 for thislib in $libswanted; do
3939         
3940         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3941                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3942                 echo "Found -l$thislib (shared)."
3943                 case " $dflt " in
3944                 *"-l$thislib "*);;
3945                 *) dflt="$dflt -l$thislib";;
3946                 esac
3947         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3948                 echo "Found -l$thislib (shared)."
3949                 case " $dflt " in
3950                 *"-l$thislib "*);;
3951                 *) dflt="$dflt -l$thislib";;
3952                 esac
3953         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3954                 echo "Found -l$thislib."
3955                 case " $dflt " in
3956                 *"-l$thislib "*);;
3957                 *) dflt="$dflt -l$thislib";;
3958                 esac
3959         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3960                 echo "Found -l$thislib."
3961                 case " $dflt " in
3962                 *"-l$thislib "*);;
3963                 *) dflt="$dflt -l$thislib";;
3964                 esac
3965         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3966                 echo "Found -l${thislib}_s."
3967                 case " $dflt " in
3968                 *"-l$thislib "*);;
3969                 *) dflt="$dflt -l${thislib}_s";;
3970                 esac
3971         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3972                 echo "Found -l$thislib."
3973                 case " $dflt " in
3974                 *"-l$thislib "*);;
3975                 *) dflt="$dflt -l$thislib";;
3976                 esac
3977         else
3978                 echo "No -l$thislib."
3979         fi
3980 done
3981 set X $dflt
3982 shift
3983 dflt="$*"
3984 case "$libs" in
3985 '') dflt="$dflt";;
3986 *) dflt="$libs";;
3987 esac
3988 case "$dflt" in
3989 ' '|'') dflt='none';;
3990 esac
3991
3992 $cat <<EOM
3993  
3994 Some versions of Unix support shared libraries, which make executables smaller
3995 but make load time slightly longer.
3996
3997 On some systems, mostly System V Release 3's, the shared library is included
3998 by putting the option "-lc_s" as the last thing on the cc command line when
3999 linking.  Other systems use shared libraries by default.  There may be other
4000 libraries needed to compile $package on your machine as well.  If your system
4001 needs the "-lc_s" option, include it here.  Include any other special libraries
4002 here as well.  Say "none" for none.
4003 EOM
4004
4005 echo " "
4006 rp="Any additional libraries?"
4007 . ./myread
4008 case "$ans" in
4009 none) libs=' ';;
4010 *) libs="$ans";;
4011 esac
4012
4013 : determine optimize, if desired, or use for debug flag also
4014 case "$optimize" in
4015 ' '|$undef) dflt='none';;
4016 '') dflt='-O';;
4017 *) dflt="$optimize";;
4018 esac
4019 $cat <<EOH
4020
4021 Some C compilers have problems with their optimizers.  By default, $package
4022 compiles with the -O flag to use the optimizer.  Alternately, you might want
4023 to use the symbolic debugger, which uses the -g flag (on traditional Unix
4024 systems).  Either flag can be specified here.  To use neither flag, specify
4025 the word "none".
4026
4027 EOH
4028 rp="What optimizer/debugger flag should be used?"
4029 . ./myread
4030 optimize="$ans"
4031 case "$optimize" in
4032 'none') optimize=" ";;
4033 esac
4034
4035 dflt=''
4036 : We will not override a previous value, but we might want to
4037 : augment a hint file
4038 case "$hint" in
4039 none|recommended)
4040         case "$gccversion" in
4041         1*) dflt='-fpcc-struct-return' ;;
4042         esac
4043         case "$optimize" in
4044         *-g*) dflt="$dflt -DDEBUGGING";;
4045         esac
4046         case "$gccversion" in
4047         2*) if test -d /etc/conf/kconfig.d &&
4048                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4049                 then
4050                         dflt="$dflt -posix"
4051                 fi
4052                 ;;
4053         esac
4054         ;;
4055 esac
4056
4057 case "$mips_type" in
4058 *BSD*|'') inclwanted="$locincpth $usrinc";;
4059 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4060 esac
4061 for thisincl in $inclwanted; do
4062         if $test -d $thisincl; then
4063                 if $test x$thisincl != x$usrinc; then
4064                         case "$dflt" in
4065                         *$thisincl*);;
4066                         *) dflt="$dflt -I$thisincl";;
4067                         esac
4068                 fi
4069         fi
4070 done
4071
4072 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4073         xxx=true;
4074 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4075         xxx=true;
4076 else
4077         xxx=false;
4078 fi;
4079 if $xxx; then
4080         case "$dflt" in
4081         *$2*);;
4082         *) dflt="$dflt -D$2";;
4083         esac;
4084 fi'
4085
4086 set signal.h LANGUAGE_C; eval $inctest
4087
4088 case "$hint" in
4089 none|recommended) dflt="$ccflags $dflt" ;;
4090 *) dflt="$ccflags";;
4091 esac
4092
4093 case "$dflt" in
4094 ''|' ') dflt=none;;
4095 esac
4096 $cat <<EOH
4097
4098 Your C compiler may want other flags.  For this question you should include
4099 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4100 but you should NOT include libraries or ld flags like -lwhatever.  If you
4101 want $package to honor its debug switch, you should include -DDEBUGGING here.
4102 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4103
4104 To use no flags, specify the word "none".
4105
4106 EOH
4107 set X $dflt
4108 shift
4109 dflt=${1+"$@"}
4110 rp="Any additional cc flags?"
4111 . ./myread
4112 case "$ans" in
4113 none) ccflags='';;
4114 *) ccflags="$ans";;
4115 esac
4116
4117 : the following weeds options from ccflags that are of no interest to cpp
4118 cppflags="$ccflags"
4119 case "$gccversion" in
4120 1*) cppflags="$cppflags -D__GNUC__"
4121 esac
4122 case "$mips_type" in
4123 '');;
4124 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4125 esac
4126 case "$cppflags" in
4127 '');;
4128 *)
4129         echo " "
4130         echo "Let me guess what the preprocessor flags are..." >&4
4131         set X $cppflags
4132         shift
4133         cppflags=''
4134         $cat >cpp.c <<'EOM'
4135 #define BLURFL foo
4136
4137 BLURFL xx LFRULB
4138 EOM
4139         previous=''
4140         for flag in $*
4141         do
4142                 case "$flag" in
4143                 -*) ftry="$flag";;
4144                 *) ftry="$previous $flag";;
4145                 esac
4146                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4147                         >cpp1.out 2>/dev/null && \
4148                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4149                         >cpp2.out 2>/dev/null && \
4150                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4151                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4152                 then
4153                         cppflags="$cppflags $ftry"
4154                         previous=''
4155                 else
4156                         previous="$flag"
4157                 fi
4158         done
4159         set X $cppflags
4160         shift
4161         cppflags=${1+"$@"}
4162         case "$cppflags" in
4163         *-*)  echo "They appear to be: $cppflags";;
4164         esac
4165         $rm -f cpp.c cpp?.out
4166         ;;
4167 esac
4168
4169 : flags used in final linking phase
4170 case "$ldflags" in
4171 '') if ./venix; then
4172                 dflt='-i -z'
4173         else
4174                 dflt=''
4175         fi
4176         case "$ccflags" in
4177         *-posix*) dflt="$dflt -posix" ;;
4178         esac
4179         ;;
4180 *) dflt="$ldflags";;
4181 esac
4182
4183 : Try to guess additional flags to pick up local libraries.
4184 for thislibdir in $libpth; do
4185         case " $loclibpth " in
4186         *" $thislibdir "*)
4187                 case "$dflt " in 
4188                 *"-L$thislibdir "*) ;;
4189                 *)  dflt="$dflt -L$thislibdir" ;;
4190                 esac
4191                 ;;
4192         esac
4193 done
4194
4195 case "$dflt" in
4196 '') dflt='none' ;;
4197 esac
4198
4199 $cat <<EOH
4200
4201 Your C linker may need flags.  For this question you should
4202 include -L/whatever and any other flags used by the C linker, but you
4203 should NOT include libraries like -lwhatever.
4204
4205 Make sure you include the appropriate -L/path flags if your C linker
4206 does not normally search all of the directories you specified above,
4207 namely
4208         $libpth
4209 To use no flags, specify the word "none".
4210
4211 EOH
4212
4213 rp="Any additional ld flags (NOT including libraries)?"
4214 . ./myread
4215 case "$ans" in
4216 none) ldflags='';;
4217 *) ldflags="$ans";;
4218 esac
4219 rmlist="$rmlist pdp11"
4220
4221 : coherency check
4222 echo " "
4223 echo "Checking your choice of C compiler and flags for coherency..." >&4
4224 $cat > try.c <<'EOF'
4225 #include <stdio.h>
4226 int main() { printf("Ok\n"); exit(0); }
4227 EOF
4228 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4229 shift
4230 $cat >try.msg <<'EOM'
4231 I've tried to compile and run the following simple program:
4232
4233 EOM
4234 $cat try.c >> try.msg
4235
4236 $cat >> try.msg <<EOM
4237
4238 I used the command:
4239
4240         $*
4241         ./try
4242
4243 and I got the following output:
4244
4245 EOM
4246 dflt=y
4247 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4248         if sh -c './try' >>try.msg 2>&1; then
4249                 xxx=`./try`
4250                 case "$xxx" in
4251                 "Ok") dflt=n ;;
4252                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4253                         case " $libs " in
4254                         *" -lsfio "*)
4255                                 cat >> try.msg <<'EOQS'
4256 If $libs contains -lsfio, and sfio is mis-configured, then it
4257 sometimes (apparently) runs and exits with a 0 status, but with no
4258 output!  It may have to do with sfio's use of _exit vs. exit.
4259
4260 EOQS
4261                                 rp="You have a big problem.  Shall I abort Configure"
4262                                 dflt=y
4263                                 ;;
4264                         esac
4265                         ;;
4266                 esac
4267         else
4268                 echo "The program compiled OK, but exited with status $?." >>try.msg
4269                 rp="You have a problem.  Shall I abort Configure"
4270                 dflt=y
4271         fi
4272 else
4273         echo "I can't compile the test program." >>try.msg
4274         rp="You have a BIG problem.  Shall I abort Configure"
4275         dflt=y
4276 fi
4277 case "$dflt" in
4278 y)
4279         $cat try.msg >&4
4280         case "$knowitall" in
4281         '')
4282                 echo "(The supplied flags or libraries might be incorrect.)"
4283                 ;;
4284         *) dflt=n;;
4285         esac
4286         echo " "
4287         . ./myread
4288         case "$ans" in
4289         n*|N*) ;;
4290         *)      echo "Ok.  Stopping Configure." >&4
4291                 exit 1
4292                 ;;
4293         esac
4294         ;;
4295 n) echo "OK, that should do.";;
4296 esac
4297 $rm -f try try.* core
4298
4299 : determine filename position in cpp output
4300 echo " "
4301 echo "Computing filename position in cpp output for #include directives..." >&4
4302 echo '#include <stdio.h>' > foo.c
4303 $cat >fieldn <<EOF
4304 $startsh
4305 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4306 $grep '^[       ]*#.*stdio\.h' | \
4307 while read cline; do
4308         pos=1
4309         set \$cline
4310         while $test \$# -gt 0; do
4311                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4312                         echo "\$pos"
4313                         exit 0
4314                 fi
4315                 shift
4316                 pos=\`expr \$pos + 1\`
4317         done
4318 done
4319 EOF
4320 chmod +x fieldn
4321 fieldn=`./fieldn`
4322 $rm -f foo.c fieldn
4323 case $fieldn in
4324 '') pos='???';;
4325 1) pos=first;;
4326 2) pos=second;;
4327 3) pos=third;;
4328 *) pos="${fieldn}th";;
4329 esac
4330 echo "Your cpp writes the filename in the $pos field of the line."
4331
4332 : locate header file
4333 $cat >findhdr <<EOF
4334 $startsh
4335 wanted=\$1
4336 name=''
4337 if test -f $usrinc/\$wanted; then
4338         echo "$usrinc/\$wanted"
4339         exit 0
4340 fi
4341 awkprg='{ print \$$fieldn }'
4342 echo "#include <\$wanted>" > foo\$\$.c
4343 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4344 $grep "^[       ]*#.*\$wanted" | \
4345 while read cline; do
4346         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4347         case "\$name" in
4348         */\$wanted) echo "\$name"; exit 0;;
4349         *) name='';;
4350         esac;
4351 done;
4352 $rm -f foo\$\$.c;
4353 case "\$name" in
4354 '') exit 1;;
4355 esac
4356 EOF
4357 chmod +x findhdr
4358
4359 : define an alternate in-header-list? function
4360 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4361 cont=true; xxf="echo \"<\$1> found.\" >&4";
4362 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4363 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4364 esac;
4365 case $# in 4) instead=instead;; *) instead="at last";; esac;
4366 while $test "$cont"; do
4367         xxx=`./findhdr $1`
4368         var=$2; eval "was=\$$2";
4369         if $test "$xxx" && $test -r "$xxx";
4370         then eval $xxf;
4371         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4372                 cont="";
4373         else eval $xxnf;
4374         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4375         set $yyy; shift; shift; yyy=$@;
4376         case $# in 0) cont="";;
4377         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4378                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4379         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4380                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4381         esac;
4382 done;
4383 while $test "$yyy";
4384 do set $yyy; var=$2; eval "was=\$$2";
4385         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4386         set $yyy; shift; shift; yyy=$@;
4387 done'
4388
4389 : see if this is a malloc.h system
4390 set malloc.h i_malloc
4391 eval $inhdr
4392
4393 : see if stdlib is available
4394 set stdlib.h i_stdlib
4395 eval $inhdr
4396
4397 : determine which malloc to compile in
4398 echo " "
4399 case "$usemymalloc" in
4400 ''|[yY]*|true|$define)  dflt='y' ;;
4401 *)      dflt='n' ;;
4402 esac
4403 rp="Do you wish to attempt to use the malloc that comes with $package?"
4404 . ./myread
4405 usemymalloc="$ans"
4406 case "$ans" in
4407 y*|true)
4408         usemymalloc='y'
4409         mallocsrc='malloc.c'
4410         mallocobj="malloc$_o"
4411         d_mymalloc="$define"
4412         case "$libs" in
4413         *-lmalloc*)
4414                 : Remove malloc from list of libraries to use
4415                 echo "Removing unneeded -lmalloc from library list" >&4
4416                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4417                 shift
4418                 libs="$*"
4419                 echo "libs = $libs" >&4
4420                 ;;
4421         esac
4422         ;;
4423 *)
4424         usemymalloc='n'
4425         mallocsrc=''
4426         mallocobj=''
4427         d_mymalloc="$undef"
4428         ;;
4429 esac
4430
4431 : compute the return types of malloc and free
4432 echo " "
4433 $cat >malloc.c <<END
4434 #$i_malloc I_MALLOC
4435 #$i_stdlib I_STDLIB
4436 #include <stdio.h>
4437 #include <sys/types.h>
4438 #ifdef I_MALLOC
4439 #include <malloc.h>
4440 #endif
4441 #ifdef I_STDLIB
4442 #include <stdlib.h>
4443 #endif
4444 #ifdef TRY_MALLOC
4445 void *malloc();
4446 #endif
4447 #ifdef TRY_FREE
4448 void free();
4449 #endif
4450 END
4451 case "$malloctype" in
4452 '')
4453         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4454                 malloctype='void *'
4455         else
4456                 malloctype='char *'
4457         fi
4458         ;;
4459 esac
4460 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4461
4462 case "$freetype" in
4463 '')
4464         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4465                 freetype='void'
4466         else
4467                 freetype='int'
4468         fi
4469         ;;
4470 esac
4471 echo "Your system uses $freetype free(), it would seem." >&4
4472 $rm -f malloc.[co]
4473 : Cruising for prototypes
4474 echo " "
4475 echo "Checking out function prototypes..." >&4
4476 $cat >prototype.c <<'EOCP'
4477 int main(int argc, char *argv[]) {
4478         exit(0);}
4479 EOCP
4480 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4481         echo "Your C compiler appears to support function prototypes."
4482         val="$define"
4483 else
4484         echo "Your C compiler doesn't seem to understand function prototypes."
4485         val="$undef"
4486 fi
4487 set prototype
4488 eval $setvar
4489 $rm -f prototype*
4490
4491 case "$prototype" in
4492 "$define") ;;
4493 *)      ansi2knr='ansi2knr'
4494         echo " "
4495         cat <<EOM >&4
4496
4497 $me:  FATAL ERROR:
4498 This version of $package can only be compiled by a compiler that 
4499 understands function prototypes.  Unfortunately, your C compiler 
4500         $cc $ccflags
4501 doesn't seem to understand them.  Sorry about that.
4502
4503 If GNU cc is available for your system, perhaps you could try that instead.  
4504
4505 Eventually, we hope to support building Perl with pre-ANSI compilers.
4506 If you would like to help in that effort, please contact <perlbug@perl.org>.
4507
4508 Aborting Configure now.
4509 EOM
4510         exit 2
4511         ;;
4512 esac
4513
4514 : determine where public executables go
4515 echo " "
4516 set dflt bin bin
4517 eval $prefixit
4518 fn=d~
4519 rp='Pathname where the public executables will reside?'
4520 . ./getfile
4521 if $test "X$ansexp" != "X$binexp"; then
4522         installbin=''
4523 fi
4524 bin="$ans"
4525 binexp="$ansexp"
4526 if $afs; then
4527         $cat <<EOM
4528
4529 Since you are running AFS, I need to distinguish the directory in which
4530 executables reside from the directory in which they are installed (and from
4531 which they are presumably copied to the former directory by occult means).
4532
4533 EOM
4534         case "$installbin" in
4535         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4536         *) dflt="$installbin";;
4537         esac
4538         fn=de~
4539         rp='Where will public executables be installed?'
4540         . ./getfile
4541         installbin="$ans"
4542 else
4543         installbin="$binexp"
4544 fi
4545
4546 : determine whether to install perl also as /usr/bin/perl
4547
4548 echo " "
4549 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4550         $cat <<EOM
4551 Many scripts expect to perl to be installed as /usr/bin/perl.
4552 I can install the perl you are about to compile also as /usr/bin/perl
4553 (in addition to $installbin/perl).
4554 EOM
4555         case "$installusrbinperl" in
4556         "$undef"|[nN]*) dflt='n';;
4557         *)              dflt='y';;
4558         esac
4559         rp="Do you want to install perl as /usr/bin/perl?"
4560         . ./myread
4561         case "$ans" in
4562         [yY]*)  val="$define";;
4563         *)      val="$undef" ;;
4564         esac
4565 else
4566         val="$undef"
4567 fi
4568 set installusrbinperl
4569 eval $setvar
4570
4571 : define a shorthand compile call
4572 compile='
4573 mc_file=$1;
4574 shift;
4575 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4576 : define a shorthand compile call for compilations that should be ok.
4577 compile_ok='
4578 mc_file=$1;
4579 shift;
4580 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4581
4582 echo " "
4583 echo "Checking for GNU C Library..." >&4
4584 cat >gnulibc.c <<EOM
4585 #include <stdio.h>
4586 int main()
4587 {
4588 #ifdef __GLIBC__
4589     exit(0);
4590 #else
4591     exit(1);
4592 #endif
4593 }
4594 EOM
4595 set gnulibc
4596 if eval $compile_ok && ./gnulibc; then
4597         val="$define"
4598         echo "You are using the GNU C Library"
4599 else
4600         val="$undef"
4601         echo "You are not using the GNU C Library"
4602 fi
4603 $rm -f gnulibc*
4604 set d_gnulibc
4605 eval $setvar
4606
4607 : see if nm is to be used to determine whether a symbol is defined or not
4608 case "$usenm" in
4609 '')
4610         dflt=''
4611         case "$d_gnulibc" in
4612         "$define")
4613                 echo " "
4614                 echo "nm probably won't work on the GNU C Library." >&4
4615                 dflt=n
4616                 ;;
4617         esac
4618         case "$dflt" in
4619         '') 
4620                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4621                         echo " "
4622                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4623                         echo "'nm' won't be sufficient on this sytem." >&4
4624                         dflt=n
4625                 fi
4626                 ;;
4627         esac
4628         case "$dflt" in
4629         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4630                 if $test $dflt -gt 20; then
4631                         dflt=y
4632                 else
4633                         dflt=n
4634                 fi
4635                 ;;
4636         esac
4637         ;;
4638 *)
4639         case "$usenm" in
4640         true|$define) dflt=y;;
4641         *) dflt=n;;
4642         esac
4643         ;;
4644 esac
4645 $cat <<EOM
4646
4647 I can use $nm to extract the symbols from your C libraries. This
4648 is a time consuming task which may generate huge output on the disk (up
4649 to 3 megabytes) but that should make the symbols extraction faster. The
4650 alternative is to skip the 'nm' extraction part and to compile a small
4651 test program instead to determine whether each symbol is present. If
4652 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4653 this may be the best solution.
4654
4655 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4656
4657 EOM
4658 rp="Shall I use $nm to extract C symbols from the libraries?"
4659 . ./myread
4660 case "$ans" in
4661 [Nn]*) usenm=false;;
4662 *) usenm=true;;
4663 esac
4664
4665 runnm=$usenm
4666 case "$reuseval" in
4667 true) runnm=false;;
4668 esac
4669
4670 : nm options which may be necessary
4671 case "$nm_opt" in
4672 '') if $test -f /mach_boot; then
4673                 nm_opt=''       # Mach
4674         elif $test -d /usr/ccs/lib; then
4675                 nm_opt='-p'     # Solaris (and SunOS?)
4676         elif $test -f /dgux; then
4677                 nm_opt='-p'     # DG-UX
4678         elif $test -f /lib64/rld; then
4679                 nm_opt='-p'     # 64-bit Irix
4680         else
4681                 nm_opt=''
4682         fi;;
4683 esac
4684
4685 : nm options which may be necessary for shared libraries but illegal
4686 : for archive libraries.  Thank you, Linux.
4687 case "$nm_so_opt" in
4688 '')     case "$myuname" in
4689         *linux*)
4690                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4691                         nm_so_opt='--dynamic'
4692                 fi
4693                 ;;
4694         esac
4695         ;;
4696 esac
4697
4698 case "$runnm" in
4699 true)
4700 : get list of predefined functions in a handy place
4701 echo " "
4702 case "$libc" in
4703 '') libc=unknown
4704         case "$libs" in
4705         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4706         esac
4707         ;;
4708 esac
4709 libnames='';
4710 case "$libs" in
4711 '') ;;
4712 *)  for thislib in $libs; do
4713         case "$thislib" in
4714         -lc|-lc_s)
4715                 : Handle C library specially below.
4716                 ;;
4717         -l*)
4718                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4719                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4720                         :
4721                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4722                         :
4723                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4724                         :
4725                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4726                         :
4727                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4728                         :
4729                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4730                         :
4731                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4732                         :
4733                 else
4734                         try=''
4735                 fi
4736                 libnames="$libnames $try"
4737                 ;;
4738         *) libnames="$libnames $thislib" ;;
4739         esac
4740         done
4741         ;;
4742 esac
4743 xxx=normal
4744 case "$libc" in
4745 unknown)
4746         set /lib/libc.$so
4747         for xxx in $libpth; do
4748                 $test -r $1 || set $xxx/libc.$so
4749                 : The messy sed command sorts on library version numbers.
4750                 $test -r $1 || \
4751                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4752                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4753                                 h
4754                                 s/[0-9][0-9]*/0000&/g
4755                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4756                                 G
4757                                 s/\n/ /' | \
4758                          sort | $sed -e 's/^.* //'`
4759                 eval set \$$#
4760         done
4761         $test -r $1 || set /usr/ccs/lib/libc.$so
4762         $test -r $1 || set /lib/libsys_s$_a
4763         ;;
4764 *)
4765         set blurfl
4766         ;;
4767 esac
4768 if $test -r "$1"; then
4769         echo "Your (shared) C library seems to be in $1."
4770         libc="$1"
4771 elif $test -r /lib/libc && $test -r /lib/clib; then
4772         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4773         xxx=apollo
4774         libc='/lib/clib /lib/libc'
4775         if $test -r /lib/syslib; then
4776                 echo "(Your math library is in /lib/syslib.)"
4777                 libc="$libc /lib/syslib"
4778         fi
4779 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4780         echo "Your C library seems to be in $libc, as you said before."
4781 elif $test -r $incpath/usr/lib/libc$_a; then
4782         libc=$incpath/usr/lib/libc$_a;
4783         echo "Your C library seems to be in $libc.  That's fine."
4784 elif $test -r /lib/libc$_a; then
4785         libc=/lib/libc$_a;
4786         echo "Your C library seems to be in $libc.  You're normal."
4787 else
4788         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4789                 :
4790         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4791                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4792         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4793                 :
4794         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4795                 :
4796         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4797                 :
4798         else
4799                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4800         fi
4801         if $test -r "$tans"; then
4802                 echo "Your C library seems to be in $tans, of all places."
4803                 libc=$tans
4804         else
4805                 libc='blurfl'
4806         fi
4807 fi
4808 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4809         dflt="$libc"
4810         cat <<EOM
4811
4812 If the guess above is wrong (which it might be if you're using a strange
4813 compiler, or your machine supports multiple models), you can override it here.
4814
4815 EOM
4816 else
4817         dflt=''
4818         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4819         cat >&4 <<EOM
4820 I can't seem to find your C library.  I've looked in the following places:
4821
4822 EOM
4823         $sed 's/^/      /' libpath
4824         cat <<EOM
4825
4826 None of these seems to contain your C library. I need to get its name...
4827
4828 EOM
4829 fi
4830 fn=f
4831 rp='Where is your C library?'
4832 . ./getfile
4833 libc="$ans"
4834
4835 echo " "
4836 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4837 set X `cat libnames`
4838 shift
4839 xxx=files
4840 case $# in 1) xxx=file; esac
4841 echo "Extracting names from the following $xxx for later perusal:" >&4
4842 echo " "
4843 $sed 's/^/      /' libnames >&4
4844 echo " "
4845 $echo $n "This may take a while...$c" >&4
4846
4847 for file in $*; do
4848         case $file in
4849         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4850         *) $nm $nm_opt $file 2>/dev/null;;
4851         esac
4852 done >libc.tmp
4853
4854 $echo $n ".$c"
4855 $grep fprintf libc.tmp > libc.ptf
4856 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4857 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4858 xxx='[ADTSIW]'
4859 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4860         eval $xscan;\
4861         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4862                 eval $xrun
4863 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4864         eval $xscan;\
4865         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4866                 eval $xrun
4867 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4868         eval $xscan;\
4869         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4870                 eval $xrun
4871 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4872         eval $xscan;\
4873         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4874                 eval $xrun
4875 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4876         eval $xscan;\
4877         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4878                 eval $xrun
4879 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4880         eval $xscan;\
4881         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4882                 eval $xrun
4883 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4884                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4885         eval $xscan;\
4886         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4887                 eval $xrun
4888 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4889         eval $xscan;\
4890         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4891                 eval $xrun
4892 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4893         eval $xscan;\
4894         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4895                 eval $xrun
4896 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4897         eval $xscan;\
4898         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4899                 eval $xrun
4900 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4901         eval $xscan;\
4902         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4903                 eval $xrun
4904 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4905         eval $xscan;\
4906         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4907                 eval $xrun
4908 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4909         eval $xscan;\
4910         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4911                 eval $xrun
4912 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4913         eval $xscan;\
4914         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4915                 eval $xrun
4916 else
4917         $nm -p $* 2>/dev/null >libc.tmp
4918         $grep fprintf libc.tmp > libc.ptf
4919         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4920                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4921         then
4922                 nm_opt='-p'
4923                 eval $xrun
4924         else
4925                 echo " "
4926                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4927                 com=''
4928                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4929                         for thisname in $libnames $libc; do
4930                                 $ar t $thisname >>libc.tmp
4931                         done
4932                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4933                         echo "Ok." >&4
4934                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4935                         # Repeat libc to extract forwarders to DLL entries too
4936                         for thisname in $libnames $libc; do
4937                                 $ar tv $thisname >>libc.tmp
4938                                 # Revision 50 of EMX has bug in $ar.
4939                                 # it will not extract forwarders to DLL entries
4940                                 # Use emximp which will extract exactly them.
4941                                 emximp -o tmp.imp $thisname \
4942                                     2>/dev/null && \
4943                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4944                                     < tmp.imp >>libc.tmp
4945                                 $rm tmp.imp
4946                         done
4947                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4948                         echo "Ok." >&4
4949                 else
4950                         echo "$ar didn't seem to work right." >&4
4951                         echo "Maybe this is a Cray...trying bld instead..." >&4
4952                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4953                         then
4954                                 for thisname in $libnames; do
4955                                         bld t $libnames | \
4956                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4957                                         $ar t $thisname >>libc.tmp
4958                                 done
4959                                 echo "Ok." >&4
4960                         else
4961                                 echo "That didn't work either.  Giving up." >&4
4962                                 exit 1
4963                         fi
4964                 fi
4965         fi
4966 fi
4967 nm_extract="$com"
4968 if $test -f /lib/syscalls.exp; then
4969         echo " "
4970         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4971         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4972 fi
4973 ;;
4974 esac
4975 $rm -f libnames libpath
4976
4977 : see if dld is available
4978 set dld.h i_dld
4979 eval $inhdr
4980
4981 : is a C symbol defined?
4982 csym='tlook=$1;
4983 case "$3" in
4984 -v) tf=libc.tmp; tc=""; tdc="";;
4985 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4986 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4987 esac;
4988 tx=yes;
4989 case "$reuseval-$4" in
4990 true-) ;;
4991 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4992 esac;
4993 case "$tx" in
4994 yes)
4995         case "$runnm" in
4996         true)
4997                 if $contains $tlook $tf >/dev/null 2>&1;
4998                 then tval=true;
4999                 else tval=false;
5000                 fi;;
5001         *)
5002                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5003                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5004                 then tval=true;
5005                 else tval=false;
5006                 fi;
5007                 $rm -f t t.c;;
5008         esac;;
5009 *)
5010         case "$tval" in
5011         $define) tval=true;;
5012         *) tval=false;;
5013         esac;;
5014 esac;
5015 eval "$2=$tval"'
5016
5017 : define an is-in-libc? function
5018 inlibc='echo " "; td=$define; tu=$undef;
5019 sym=$1; var=$2; eval "was=\$$2";
5020 tx=yes;
5021 case "$reuseval$was" in
5022 true) ;;
5023 true*) tx=no;;
5024 esac;
5025 case "$tx" in
5026 yes)
5027         set $sym tres -f;
5028         eval $csym;
5029         case "$tres" in
5030         true)
5031                 echo "$sym() found." >&4;
5032                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5033         *)
5034                 echo "$sym() NOT found." >&4;
5035                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5036         esac;;
5037 *)
5038         case "$was" in
5039         $define) echo "$sym() found." >&4;;
5040         *) echo "$sym() NOT found." >&4;;
5041         esac;;
5042 esac'
5043
5044 : see if dlopen exists
5045 xxx_runnm="$runnm"
5046 runnm=false
5047 set dlopen d_dlopen
5048 eval $inlibc
5049 runnm="$xxx_runnm"
5050
5051 : determine which dynamic loading, if any, to compile in
5052 echo " "
5053 dldir="ext/DynaLoader"
5054 case "$usedl" in
5055 $define|y|true)
5056         dflt='y'
5057         usedl="$define"
5058         ;;
5059 $undef|n|false)
5060         dflt='n'
5061         usedl="$undef"
5062         ;;
5063 *) 
5064         dflt='n'
5065         case "$d_dlopen" in
5066             $define) dflt='y' ;;
5067         esac
5068         case "$i_dld" in
5069             $define) dflt='y' ;;
5070         esac
5071         : Does a dl_xxx.xs file exist for this operating system
5072         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5073         ;;
5074 esac
5075 rp="Do you wish to use dynamic loading?"
5076 . ./myread
5077 usedl="$ans"
5078 case "$ans" in
5079 y*) usedl="$define"
5080         case "$dlsrc" in
5081         '')
5082                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5083                         dflt="$dldir/dl_${osname}.xs"
5084                 elif $test "$d_dlopen" = "$define" ; then
5085                         dflt="$dldir/dl_dlopen.xs"
5086                 elif $test "$i_dld" = "$define" ; then
5087                         dflt="$dldir/dl_dld.xs"
5088                 else
5089                         dflt=''
5090                 fi
5091                 ;;
5092         *)      dflt="$dldir/$dlsrc"
5093                 ;;
5094         esac
5095     echo "The following dynamic loading files are available:"
5096         : Can not go over to $dldir because getfile has path hard-coded in.
5097         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5098         rp="Source file to use for dynamic loading"
5099         fn="fne"
5100         # XXX This getfile call will fail the existence check if you try 
5101         # building away from $src (this is not supported yet).
5102         . ./getfile
5103         usedl="$define"
5104         : emulate basename
5105         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5106
5107         $cat << EOM
5108
5109 Some systems may require passing special flags to $cc -c to
5110 compile modules that will be used to create a shared library.
5111 To use no flags, say "none".
5112
5113 EOM
5114     case "$cccdlflags" in
5115     '') case "$gccversion" in
5116                 '') case "$osname" in
5117                         hpux)   dflt='+z' ;;
5118                         next)   dflt='none' ;;
5119                         irix*)  dflt='-KPIC' ;;
5120                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5121                         sunos)  dflt='-pic' ;;
5122                         *)      dflt='none' ;;
5123                     esac
5124                         ;;
5125                 *)  case "$osname" in
5126                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5127                         *)      dflt='-fpic' ;;
5128                     esac ;;
5129             esac ;;
5130         ' ') dflt='none' ;;
5131     *)  dflt="$cccdlflags" ;;
5132     esac
5133     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5134     . ./myread
5135     case "$ans" in
5136     none) cccdlflags=' ' ;;
5137     *) cccdlflags="$ans" ;;
5138     esac
5139
5140     cat << EOM
5141
5142 Some systems use ld to create libraries that can be dynamically loaded,
5143 while other systems (such as those using ELF) use $cc.
5144
5145 EOM
5146         case "$ld" in
5147         '')     $cat >try.c <<'EOM'
5148 /* Test for whether ELF binaries are produced */
5149 #include <fcntl.h>
5150 #include <stdlib.h>
5151 int main() {
5152         char b[4];
5153         int i = open("a.out",O_RDONLY);
5154         if(i == -1) 
5155                 exit(1); /* fail */
5156         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5157                 exit(0); /* succeed (yes, it's ELF) */
5158         else
5159                 exit(1); /* fail */
5160 }
5161 EOM
5162                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5163                         cat <<EOM
5164 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5165 EOM
5166                         dflt="$cc"
5167                 else
5168                         echo "I'll use ld to build dynamic libraries."
5169                         dflt='ld'
5170                 fi
5171                 rm -f try.c a.out
5172                 ;;
5173         *)      dflt="$ld"
5174                 ;;
5175         esac
5176
5177     rp="What command should be used to create dynamic libraries?"
5178     . ./myread
5179         ld="$ans"
5180
5181     cat << EOM
5182
5183 Some systems may require passing special flags to $ld to create a
5184 library that can be dynamically loaded.  If your ld flags include
5185 -L/other/path options to locate libraries outside your loader's normal
5186 search path, you may need to specify those -L options here as well.  To
5187 use no flags, say "none".
5188
5189 EOM
5190     case "$lddlflags" in
5191     '') case "$osname" in
5192                         beos) dflt='-nostart' ;;
5193                         hpux)  dflt='-b' ;;
5194                         linux|irix*)    dflt='-shared' ;;
5195                         next)  dflt='none' ;;
5196                         solaris) dflt='-G' ;;
5197                         sunos) dflt='-assert nodefinitions' ;;
5198                         svr4*|esix*) dflt="-G $ldflags" ;;
5199                 *)     dflt='none' ;;
5200                         esac
5201                         ;;
5202     *) dflt="$lddlflags" ;;
5203     esac
5204
5205         : Try to guess additional flags to pick up local libraries.
5206         : Be careful not to append to a plain 'none'
5207         case "$dflt" in
5208         none) dflt='' ;;
5209         esac
5210         for thisflag in $ldflags; do
5211                 case "$thisflag" in
5212                 -L*)
5213                         case " $dflt " in
5214                         *" $thisflag "*) ;;
5215                         *) dflt="$dflt $thisflag" ;;
5216                         esac
5217                         ;;
5218                 esac
5219         done
5220
5221         case "$dflt" in
5222         ''|' ') dflt='none' ;;
5223         esac
5224
5225     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5226     . ./myread
5227     case "$ans" in
5228     none) lddlflags=' ' ;;
5229     *) lddlflags="$ans" ;;
5230     esac
5231
5232         cat <<EOM
5233
5234 Some systems may require passing special flags to $cc to indicate that
5235 the resulting executable will use dynamic linking.  To use no flags,
5236 say "none".
5237
5238 EOM
5239     case "$ccdlflags" in
5240     '') case "$osname" in
5241                 hpux)   dflt='-Wl,-E' ;;
5242                 linux)  dflt='-rdynamic' ;;
5243                 next)   dflt='none' ;;
5244                 sunos)  dflt='none' ;;
5245                 *)      dflt='none' ;;
5246             esac ;;
5247     ' ')  dflt='none' ;;
5248     *)  dflt="$ccdlflags" ;;
5249     esac
5250     rp="Any special flags to pass to $cc to use dynamic loading?"
5251     . ./myread
5252     case "$ans" in
5253     none) ccdlflags=' ' ;;
5254     *) ccdlflags="$ans" ;;
5255     esac
5256     ;;
5257 *)  usedl="$undef"
5258         ld='ld'
5259     dlsrc='dl_none.xs'
5260     lddlflags=''
5261     ccdlflags=''
5262     ;;
5263 esac
5264
5265 also=''
5266 case "$usedl" in
5267 $undef)
5268         # No dynamic loading being used, so don't bother even to prompt.
5269         useshrplib='false'
5270         ;;
5271 *)      case "$useshrplib" in
5272         '')     case "$osname" in
5273                 svr4*|dgux|dynixptx|esix|powerux|beos)
5274                         dflt=y
5275                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5276                         ;;
5277                 next*)
5278                         case "$osvers" in
5279                         4*)     dflt=y
5280                                 also='Building a shared libperl is needed for MAB support.'
5281                                 ;;
5282                         *)      dflt=n
5283                                 ;;
5284                         esac
5285                         ;;
5286                 *)      dflt=n
5287                         ;;
5288                 esac
5289                 ;;
5290         $define|true|[Yy]*)
5291                 dflt=y
5292                 ;;
5293         *)      dflt=n
5294                 ;;
5295         esac
5296         $cat << EOM
5297
5298 The perl executable is normally obtained by linking perlmain.c with
5299 libperl${_a}, any static extensions (usually just DynaLoader), and
5300 any other libraries needed on this system (such as -lm, etc.).  Since
5301 your system supports dynamic loading, it is probably possible to build
5302 a shared libperl.$so.  If you will have more than one executable linked
5303 to libperl.$so, this will significantly reduce the size of each
5304 executable, but it may have a noticeable affect on performance.  The
5305 default is probably sensible for your system.
5306 $also
5307
5308 EOM
5309         rp="Build a shared libperl.$so (y/n)"
5310         . ./myread
5311         case "$ans" in
5312         true|$define|[Yy]*)
5313                 useshrplib='true'
5314                 # Why does next4 have to be so different?
5315                 case "${osname}${osvers}" in
5316                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5317                 os2*)   xxx='' ;; # Nothing special needed.
5318                 beos*)  xxx='' ;;
5319                 *)              xxx='LD_LIBRARY_PATH' ;;
5320                 esac
5321                 if test X"$xxx" != "X"; then
5322                         $cat <<EOM  | $tee -a ../config.msg >&4
5323
5324 To build perl, you must add the current working directory to your
5325 $xxx environment variable before running make.  You can do
5326 this with
5327    $xxx=\`pwd\`:\$$xxx; export $xxx
5328 for Bourne-style shells, or
5329    setenv $xxx \`pwd\`
5330 for Csh-style shells.  You *MUST* do this before running make.
5331
5332 EOM
5333                 fi
5334                 ;;
5335         *)      useshrplib='false' ;;
5336         esac
5337         ;;
5338 esac
5339
5340 case "$useshrplib" in
5341 true)
5342         case "$libperl" in
5343         '')
5344                 # Figure out a good name for libperl.so.  Since it gets stored in
5345                 # a version-specific architecture-dependent library, the version
5346                 # number isn't really that important, except for making cc/ld happy.
5347                 #
5348                 # A name such as libperl.so.3.1
5349                 majmin="libperl.$so.$patchlevel.$subversion"
5350                 # A name such as libperl.so.301
5351                 majonly=`echo $patchlevel $subversion |
5352                         $awk '{printf "%d%02d", $1, $2}'`
5353                 majonly=libperl.$so.$majonly
5354                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5355                 # rely on figuring it out from the naming of libc.
5356                 case "${osname}${osvers}" in
5357                 next4*)
5358                         dflt=libperl.5.$so
5359                         # XXX How handle the --version stuff for MAB?
5360                         ;;
5361                 linux*)  # ld won't link with a bare -lperl otherwise.
5362                         dflt=libperl.$so
5363                         ;;
5364                 *)      # Try to guess based on whether libc has major.minor.
5365                         case "$libc" in
5366                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5367                         *libc.$so.[0-9]*) dflt=$majonly ;;
5368                         *)      dflt=libperl.$so ;;
5369                         esac
5370                         ;;
5371                 esac
5372                 ;;
5373         *)      dflt=$libperl
5374                 ;;
5375         esac
5376         cat << EOM
5377
5378 I need to select a good name for the shared libperl.  If your system uses
5379 library names with major and minor numbers, then you might want something
5380 like $majmin.  Alternatively, if your system uses a single version
5381 number for shared libraries, then you might want to use $majonly.
5382 Or, your system might be quite happy with a simple libperl.$so.
5383
5384 Since the shared libperl will get installed into a version-specific
5385 architecture-dependent directory, the version number of the shared perl
5386 library probably isn't important, so the default should be o.k.
5387
5388 EOM
5389         rp='What name do you want to give to the shared libperl?'
5390         . ./myread
5391         libperl=$ans
5392         echo "Ok, I'll use $libperl"
5393         ;;
5394 *)
5395         libperl="libperl${_a}"
5396         ;;
5397 esac
5398
5399 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5400 case "$shrpdir" in
5401 '') ;;
5402 *)      $cat >&4 <<EOM
5403 WARNING:  Use of the shrpdir variable for the installation location of
5404 the shared $libperl is not supported.  It was never documented and
5405 will not work in this version.  Let me (perlbug@perl.com)
5406 know of any problems this may cause.
5407
5408 EOM
5409         case "$shrpdir" in
5410         "$archlibexp/CORE")
5411                 $cat >&4 <<EOM
5412 But your current setting of $shrpdir is
5413 the default anyway, so it's harmless.
5414 EOM
5415                 ;;
5416         *)
5417                 $cat >&4 <<EOM
5418 Further, your current attempted setting of $shrpdir
5419 conflicts with the value of $archlibexp/CORE
5420 that installperl will use.
5421 EOM
5422                 ;;
5423         esac
5424         ;;
5425 esac
5426
5427 # How will the perl executable find the installed shared $libperl?
5428 # Add $xxx to ccdlflags.
5429 # If we can't figure out a command-line option, use $shrpenv to
5430 # set env LD_RUN_PATH.  The main perl makefile uses this.
5431 shrpdir=$archlibexp/CORE
5432 xxx=''
5433 tmp_shrpenv=''
5434 if "$useshrplib"; then
5435     case "$osname" in 
5436         aix)
5437                 # We'll set it in Makefile.SH...
5438                 ;;
5439         solaris|netbsd)
5440                 xxx="-R $shrpdir"
5441                 ;;
5442         freebsd)
5443                 xxx="-Wl,-R$shrpdir"
5444                 ;;
5445         linux|irix*|dec_osf)
5446                 xxx="-Wl,-rpath,$shrpdir"
5447                 ;;
5448         next)
5449                 # next doesn't like the default...
5450                 ;;
5451         beos)
5452                 # beos doesn't like the default, either.
5453                 ;;
5454         *)
5455                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5456                 ;;
5457         esac
5458         case "$xxx" in
5459         '') ;;
5460         *)      
5461                 # Only add $xxx if it isn't already in ccdlflags.
5462                 case " $ccdlflags " in
5463                 *" $xxx "*)     ;;
5464                 *)      ccdlflags="$ccdlflags $xxx"
5465                         cat <<EOM >&4
5466
5467 Adding $xxx to the flags
5468 passed to $ld so that the perl executable will find the 
5469 installed shared $libperl.
5470
5471 EOM
5472                         ;;
5473                 esac
5474                 ;;
5475         esac
5476 fi
5477 # Respect a hint or command-line value.
5478 case "$shrpenv" in
5479 '') shrpenv="$tmp_shrpenv" ;;
5480 esac
5481
5482 : determine where manual pages go
5483 set man1dir man1dir none
5484 eval $prefixit
5485 $cat <<EOM
5486
5487 $spackage has manual pages available in source form.
5488 EOM
5489 case "$nroff" in
5490 nroff)
5491         echo "However, you don't have nroff, so they're probably useless to you."
5492         case "$man1dir" in
5493         '') man1dir="none";;
5494         esac;;
5495 esac
5496 echo "If you don't want the manual sources installed, answer 'none'."
5497 case "$man1dir" in
5498 ' ') dflt=none
5499         ;;
5500 '')
5501         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5502         lookpath="$lookpath $prefixexp/man/p_man/man1"
5503         lookpath="$lookpath $prefixexp/man/u_man/man1"
5504         lookpath="$lookpath $prefixexp/man/man.1"
5505         case "$sysman" in
5506         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5507         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5508         esac
5509         set dflt
5510         eval $prefixup
5511         ;;
5512 *)  dflt="$man1dir"
5513         ;;
5514 esac
5515 echo " "
5516 fn=dn+~
5517 rp="Where do the main $spackage manual pages (source) go?"
5518 . ./getfile
5519 if $test "X$man1direxp" != "X$ansexp"; then
5520         installman1dir=''
5521 fi
5522 man1dir="$ans"
5523 man1direxp="$ansexp"
5524 case "$man1dir" in
5525 '') man1dir=' '
5526         installman1dir='';;
5527 esac
5528 if $afs; then
5529         $cat <<EOM
5530
5531 Since you are running AFS, I need to distinguish the directory in which
5532 manual pages reside from the directory in which they are installed (and from
5533 which they are presumably copied to the former directory by occult means).
5534
5535 EOM
5536         case "$installman1dir" in
5537         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5538         *) dflt="$installman1dir";;
5539         esac
5540         fn=de~
5541         rp='Where will man pages be installed?'
5542         . ./getfile
5543         installman1dir="$ans"
5544 else
5545         installman1dir="$man1direxp"
5546 fi
5547
5548 : What suffix to use on installed man pages
5549
5550 case "$man1dir" in
5551 ' ')
5552         man1ext='0'
5553         ;;
5554 *)
5555         rp="What suffix should be used for the main $spackage man pages?"
5556         case "$man1ext" in
5557         '')     case "$man1dir" in
5558                 *1)  dflt=1 ;;
5559                 *1p) dflt=1p ;;
5560                 *1pm) dflt=1pm ;;
5561                 *l) dflt=l;;
5562                 *n) dflt=n;;
5563                 *o) dflt=o;;
5564                 *p) dflt=p;;
5565                 *C) dflt=C;;
5566                 *L) dflt=L;;
5567                 *L1) dflt=L1;;
5568                 *) dflt=1;;
5569                 esac
5570                 ;;
5571         *)      dflt="$man1ext";;
5572         esac
5573         . ./myread
5574         man1ext="$ans"
5575         ;;
5576 esac
5577
5578 : see if we can have long filenames
5579 echo " "
5580 rmlist="$rmlist /tmp/cf$$"
5581 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5582 first=123456789abcdef
5583 second=/tmp/cf$$/$first
5584 $rm -f $first $second
5585 if (echo hi >$first) 2>/dev/null; then
5586         if $test -f 123456789abcde; then
5587                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5588                 val="$undef"
5589         else
5590                 if (echo hi >$second) 2>/dev/null; then
5591                         if $test -f /tmp/cf$$/123456789abcde; then
5592                                 $cat <<'EOM'
5593 That's peculiar... You can have filenames longer than 14 characters, but only
5594 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5595 I shall consider your system cannot support long filenames at all.
5596 EOM
5597                                 val="$undef"
5598                         else
5599                                 echo 'You can have filenames longer than 14 characters.' >&4
5600                                 val="$define"
5601                         fi
5602                 else
5603                         $cat <<'EOM'
5604 How confusing! Some of your filesystems are sane enough to allow filenames
5605 longer than 14 characters but some others like /tmp can't even think about them.
5606 So, for now on, I shall assume your kernel does not allow them at all.
5607 EOM
5608                         val="$undef"
5609                 fi
5610         fi
5611 else
5612         $cat <<'EOM'
5613 You can't have filenames longer than 14 chars.  You can't even think about them!
5614 EOM
5615         val="$undef"
5616 fi 
5617 set d_flexfnam
5618 eval $setvar
5619 $rm -rf /tmp/cf$$ 123456789abcde*
5620
5621 : determine where library module manual pages go
5622 set man3dir man3dir none
5623 eval $prefixit
5624 $cat <<EOM
5625
5626 $spackage has manual pages for many of the library modules.
5627 EOM
5628
5629 case "$nroff" in
5630 nroff)
5631         $cat <<'EOM'
5632 However, you don't have nroff, so they're probably useless to you.
5633 EOM
5634         case "$man3dir" in
5635         '') man3dir="none";;
5636         esac;;
5637 esac
5638
5639 case "$d_flexfnam" in
5640 undef)
5641         $cat <<'EOM'
5642 However, your system can't handle the long file names like File::Basename.3. 
5643 EOM
5644         case "$man3dir" in
5645         '') man3dir="none";;
5646         esac;;
5647 esac
5648
5649 echo "If you don't want the manual sources installed, answer 'none'."
5650 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5651 case "$man3dir" in
5652 '')     case "$prefix" in 
5653         *$prog*) dflt=`echo $man1dir | 
5654                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5655         *)      dflt="$privlib/man/man3" ;;
5656         esac
5657         ;;
5658 ' ') dflt=none;;
5659 *)      dflt="$man3dir" ;;
5660 esac
5661 echo " "
5662
5663 fn=dn+~
5664 rp="Where do the $package library man pages (source) go?"
5665 . ./getfile
5666 if test "X$man3direxp" != "X$ansexp"; then
5667         installman3dir=''
5668 fi
5669
5670 man3dir="$ans"
5671 man3direxp="$ansexp"
5672 case "$man3dir" in
5673 '') man3dir=' '
5674         installman3dir='';;
5675 esac
5676 if $afs; then
5677         $cat <<EOM
5678
5679 Since you are running AFS, I need to distinguish the directory in which
5680 manual pages reside from the directory in which they are installed (and from
5681 which they are presumably copied to the former directory by occult means).
5682
5683 EOM
5684         case "$installman3dir" in
5685         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5686         *) dflt="$installman3dir";;
5687         esac
5688         fn=de~
5689         rp='Where will man pages be installed?'
5690         . ./getfile
5691         installman3dir="$ans"
5692 else
5693         installman3dir="$man3direxp"
5694 fi
5695
5696 : What suffix to use on installed man pages
5697
5698 case "$man3dir" in
5699 ' ')
5700         man3ext='0'
5701         ;;
5702 *)
5703         rp="What suffix should be used for the $package library man pages?"
5704         case "$man3ext" in
5705         '')     case "$man3dir" in
5706                 *3)  dflt=3 ;;
5707                 *3p) dflt=3p ;;
5708                 *3pm) dflt=3pm ;;
5709                 *l) dflt=l;;
5710                 *n) dflt=n;;
5711                 *o) dflt=o;;
5712                 *p) dflt=p;;
5713                 *C) dflt=C;;
5714                 *L) dflt=L;;
5715                 *L3) dflt=L3;;
5716                 *) dflt=3;;
5717                 esac
5718                 ;;
5719         *)      dflt="$man3ext";;
5720         esac
5721         . ./myread
5722         man3ext="$ans"
5723         ;;
5724 esac
5725
5726 : see if we have to deal with yellow pages, now NIS.
5727 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5728         if $test -f /usr/etc/nibindd; then
5729                 echo " "
5730                 echo "I'm fairly confident you're on a NeXT."
5731                 echo " "
5732                 rp='Do you get the hosts file via NetInfo?'
5733                 dflt=y
5734                 case "$hostcat" in
5735                 nidump*) ;;
5736                 '') ;;
5737                 *) dflt=n;;
5738                 esac
5739                 . ./myread
5740                 case "$ans" in
5741                 y*) hostcat='nidump hosts .';;
5742                 *)      case "$hostcat" in
5743                         nidump*) hostcat='';;
5744                         esac
5745                         ;;
5746                 esac
5747         fi
5748         case "$hostcat" in
5749         nidump*) ;;
5750         *)
5751                 case "$hostcat" in
5752                 *ypcat*) dflt=y;;
5753                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5754                                 dflt=y
5755                         else
5756                                 dflt=n
5757                         fi;;
5758                 *) dflt=n;;
5759                 esac
5760                 echo " "
5761                 rp='Are you getting the hosts file via yellow pages?'
5762                 . ./myread
5763                 case "$ans" in
5764                 y*) hostcat='ypcat hosts';;
5765                 *) hostcat='cat /etc/hosts';;
5766                 esac
5767                 ;;
5768         esac
5769 fi
5770 case "$hostcat" in
5771 '') hostcat='cat /etc/hosts';;
5772 esac
5773 case "$groupcat" in
5774 '') groupcat='cat /etc/group';;
5775 esac
5776 case "$passcat" in
5777 '') passcat='cat /etc/passwd';;
5778 esac
5779
5780 : now get the host name
5781 echo " "
5782 echo "Figuring out host name..." >&4
5783 case "$myhostname" in
5784 '') cont=true
5785         echo 'Maybe "hostname" will work...'
5786         if tans=`sh -c hostname 2>&1` ; then
5787                 myhostname=$tans
5788                 phostname=hostname
5789                 cont=''
5790         fi
5791         ;;
5792 *) cont='';;
5793 esac
5794 if $test "$cont"; then
5795         if ./xenix; then
5796                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5797                 if tans=`cat /etc/systemid 2>&1` ; then
5798                         myhostname=$tans
5799                         phostname='cat /etc/systemid'
5800                         echo "Whadyaknow.  Xenix always was a bit strange..."
5801                         cont=''
5802                 fi
5803         elif $test -r /etc/systemid; then
5804                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5805         fi
5806 fi
5807 if $test "$cont"; then
5808         echo 'No, maybe "uuname -l" will work...'
5809         if tans=`sh -c 'uuname -l' 2>&1` ; then
5810                 myhostname=$tans
5811                 phostname='uuname -l'
5812         else
5813                 echo 'Strange.  Maybe "uname -n" will work...'
5814                 if tans=`sh -c 'uname -n' 2>&1` ; then
5815                         myhostname=$tans
5816                         phostname='uname -n'
5817                 else
5818                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5819                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5820                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5821                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5822                         else
5823                                 case "$myhostname" in
5824                                 '') echo "Does this machine have an identity crisis or something?"
5825                                         phostname='';;
5826                                 *)
5827                                         echo "Well, you said $myhostname before..."
5828                                         phostname='echo $myhostname';;
5829                                 esac
5830                         fi
5831                 fi
5832         fi
5833 fi
5834 : you do not want to know about this
5835 set $myhostname
5836 myhostname=$1
5837
5838 : verify guess
5839 if $test "$myhostname" ; then
5840         dflt=y
5841         rp='Your host name appears to be "'$myhostname'".'" Right?"
5842         . ./myread
5843         case "$ans" in
5844         y*) ;;
5845         *) myhostname='';;
5846         esac
5847 fi
5848
5849 : bad guess or no guess
5850 while $test "X$myhostname" = X ; do
5851         dflt=''
5852         rp="Please type the (one word) name of your host:"
5853         . ./myread
5854         myhostname="$ans"
5855 done
5856
5857 : translate upper to lower if necessary
5858 case "$myhostname" in
5859 *[A-Z]*)
5860         echo "(Normalizing case in your host name)"
5861         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5862         ;;
5863 esac
5864
5865 case "$myhostname" in
5866 *.*)
5867         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5868         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5869         echo "(Trimming domain name from host name--host name is now $myhostname)"
5870         ;;
5871 *) case "$mydomain" in
5872         '')
5873                 {
5874                         test "X$hostcat" = "Xypcat hosts" &&
5875                         ypmatch "$myhostname" hosts 2>/dev/null |\
5876                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5877                         $test -s hosts
5878                 } || {
5879                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5880                                         /[       ]$myhostname[  . ]/p" > hosts
5881                 }
5882                 tmp_re="[       . ]"
5883                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5884                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5885                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5886                         hosts | $sort | $uniq | \
5887                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5888                 case `$echo X$dflt` in
5889                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5890                         dflt=.
5891                         ;;
5892                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5893                         ;;
5894                 esac
5895                 case "$dflt" in
5896                 .)
5897                         tans=`./loc resolv.conf X /etc /usr/etc`
5898                         if $test -f "$tans"; then
5899                                 echo "(Attempting domain name extraction from $tans)"
5900                                 dflt=.`$sed -n -e 's/   / /g' \
5901                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5902                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5903                                 case "$dflt" in
5904                                 .) dflt=.`$sed -n -e 's/        / /g' \
5905                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5906                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5907                                         ;;
5908                                 esac
5909                         fi
5910                         ;;
5911                 esac
5912                 case "$dflt" in
5913                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5914                         dflt=.`sh -c domainname 2>/dev/null`
5915                         case "$dflt" in
5916                         '') dflt='.';;
5917                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5918                         esac
5919                         ;;
5920                 esac
5921                 case "$dflt" in
5922                 .) echo "(Lost all hope -- silly guess then)"
5923                         dflt='.uucp'
5924                         ;;
5925                 esac
5926                 $rm -f hosts
5927                 ;;
5928         *) dflt="$mydomain";;
5929         esac;;
5930 esac
5931 echo " "
5932 rp="What is your domain name?"
5933 . ./myread
5934 tans="$ans"
5935 case "$ans" in
5936 '') ;;
5937 .*) ;;
5938 *) tans=".$tans";;
5939 esac
5940 mydomain="$tans"
5941
5942 : translate upper to lower if necessary
5943 case "$mydomain" in
5944 *[A-Z]*)
5945         echo "(Normalizing case in your domain name)"
5946         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5947         ;;
5948 esac
5949
5950 : a little sanity check here
5951 case "$phostname" in
5952 '') ;;
5953 *)
5954         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5955         $myhostname$mydomain|$myhostname) ;;
5956         *)
5957                 case "$phostname" in
5958                 sed*)
5959                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5960                         ;;
5961                 *)
5962                         echo "(That doesn't agree with your $phostname command, by the way.)"
5963                         ;;
5964                 esac
5965         ;;
5966         esac
5967         ;;
5968 esac
5969
5970 $cat <<EOM
5971
5972 I need to get your e-mail address in Internet format if possible, i.e.
5973 something like user@host.domain. Please answer accurately since I have
5974 no easy means to double check it. The default value provided below
5975 is most probably close to the reality but may not be valid from outside
5976 your organization...
5977
5978 EOM
5979 cont=x
5980 while test "$cont"; do
5981         case "$cf_email" in
5982         '') dflt="$cf_by@$myhostname$mydomain";;
5983         *) dflt="$cf_email";;
5984         esac
5985         rp='What is your e-mail address?'
5986         . ./myread
5987         cf_email="$ans"
5988         case "$cf_email" in
5989         *@*.*) cont='' ;;
5990         *)
5991                 rp='Address does not look like an Internet one.  Use it anyway?'
5992                 case "$fastread" in
5993                 yes) dflt=y ;;
5994                 *) dflt=n ;;
5995                 esac
5996                 . ./myread
5997                 case "$ans" in
5998                 y*) cont='' ;;
5999                 *) echo " " ;;
6000                 esac
6001                 ;;
6002         esac
6003 done
6004
6005 $cat <<EOM
6006
6007 If you or somebody else will be maintaining perl at your site, please
6008 fill in the correct e-mail address here so that they may be contacted
6009 if necessary. Currently, the "perlbug" program included with perl
6010 will send mail to this address in addition to perlbug@perl.com. You may
6011 enter "none" for no administrator.
6012
6013 EOM
6014 case "$perladmin" in
6015 '') dflt="$cf_email";;
6016 *) dflt="$perladmin";;
6017 esac
6018 rp='Perl administrator e-mail address'
6019 . ./myread
6020 perladmin="$ans"
6021
6022 : figure out how to guarantee perl startup
6023 case "$startperl" in
6024 '')
6025         case "$sharpbang" in
6026         *!)
6027                 $cat <<EOH
6028
6029 I can use the #! construct to start perl on your system. This will
6030 make startup of perl scripts faster, but may cause problems if you
6031 want to share those scripts and perl is not in a standard place
6032 ($binexp/perl) on all your platforms. The alternative is to force
6033 a shell by starting the script with a single ':' character.
6034
6035 EOH
6036                 dflt="$binexp/perl"
6037                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6038                 . ./myread
6039                 case "$ans" in
6040                 none)   startperl=": # use perl";;
6041                 *)      startperl="#!$ans"
6042                         if $test 30 -lt `echo "$ans" | wc -c`; then
6043                                 $cat >&4 <<EOM
6044
6045 WARNING:  Some systems limit the #! command to 32 characters.
6046 If you experience difficulty running Perl scripts with #!, try
6047 installing Perl in a directory with a shorter pathname.
6048
6049 EOM
6050                         fi ;;
6051                 esac
6052                 ;;
6053         *) startperl=": # use perl"
6054                 ;;
6055         esac
6056         ;;
6057 esac
6058 echo "I'll use $startperl to start perl scripts."
6059
6060 : figure best path for perl in scripts
6061 case "$perlpath" in
6062 '')
6063         perlpath="$binexp/perl"
6064         case "$startperl" in
6065         *!*) ;;
6066         *)
6067                 $cat <<EOH
6068
6069 I will use the "eval 'exec'" idiom to start Perl on your system.
6070 I can use the full path of your Perl binary for this purpose, but
6071 doing so may cause problems if you want to share those scripts and
6072 Perl is not always in a standard place ($binexp/perl).
6073
6074 EOH
6075                 dflt="$binexp/perl"
6076                 rp="What path shall I use in \"eval 'exec'\"?"
6077                 . ./myread
6078                 perlpath="$ans"
6079                 ;;
6080         esac
6081         ;;
6082 esac
6083 case "$startperl" in
6084 *!*)    ;;
6085 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6086 esac
6087
6088 : determine where public executable scripts go
6089 set scriptdir scriptdir
6090 eval $prefixit
6091 case "$scriptdir" in
6092 '')
6093         dflt="$bin"
6094         : guess some guesses
6095         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6096         $test -d /usr/share/bin && dflt=/usr/share/bin
6097         $test -d /usr/local/script && dflt=/usr/local/script
6098         $test -d $prefixexp/script && dflt=$prefixexp/script
6099         set dflt
6100         eval $prefixup
6101         ;;
6102 *)  dflt="$scriptdir"
6103         ;;
6104 esac
6105 $cat <<EOM
6106  
6107 Some installations have a separate directory just for executable scripts so
6108 that they can mount it across multiple architectures but keep the scripts in
6109 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6110 Or you might just lump your scripts in with all your other executables.
6111  
6112 EOM
6113 fn=d~
6114 rp='Where do you keep publicly executable scripts?'
6115 . ./getfile
6116 if $test "X$ansexp" != "X$scriptdirexp"; then
6117         installscript=''
6118 fi
6119 scriptdir="$ans"
6120 scriptdirexp="$ansexp"
6121 if $afs; then
6122         $cat <<EOM
6123
6124 Since you are running AFS, I need to distinguish the directory in which
6125 scripts reside from the directory in which they are installed (and from
6126 which they are presumably copied to the former directory by occult means).
6127
6128 EOM
6129         case "$installscript" in
6130         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6131         *) dflt="$installscript";;
6132         esac
6133         fn=de~
6134         rp='Where will public scripts be installed?'
6135         . ./getfile
6136         installscript="$ans"
6137 else
6138         installscript="$scriptdirexp"
6139 fi
6140
6141 : determine where site specific libraries go.
6142 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6143 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6144 case "$prefix" in
6145 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6146 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6147 esac
6148 eval $prefixit
6149 $cat <<EOM
6150
6151 The installation process will also create a directory for
6152 site-specific extensions and modules.  Some users find it convenient
6153 to place all site-specific files in this directory rather than in the
6154 main distribution directory.
6155
6156 EOM
6157 fn=d~+
6158 rp='Pathname for the site-specific library files?'
6159 . ./getfile
6160 if $test "X$sitelibexp" != "X$ansexp"; then
6161         installsitelib=''
6162 fi
6163 sitelib="$ans"
6164 sitelibexp="$ansexp"
6165 if $afs; then
6166         $cat <<EOM
6167
6168 Since you are running AFS, I need to distinguish the directory in
6169 which site-specific files reside from the directory in which they are
6170 installed (and from which they are presumably copied to the former
6171 directory by occult means).
6172
6173 EOM
6174         case "$installsitelib" in
6175         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6176         *) dflt="$installsitelib";;
6177         esac
6178         fn=de~
6179         rp='Where will site-specific files be installed?'
6180         . ./getfile
6181         installsitelib="$ans"
6182 else
6183         installsitelib="$sitelibexp"
6184 fi
6185
6186 : determine where site specific architecture-dependent libraries go.
6187 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6188 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6189 : sitelib may have an optional trailing /share.
6190 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6191 tdflt="$tdflt/$archname"
6192 set sitearch sitearch none
6193 eval $prefixit
6194 case "$sitearch" in
6195 '')     dflt="$tdflt" ;;
6196 *)      dflt="$sitearch" ;;
6197 esac
6198 $cat <<EOM
6199
6200 The installation process will also create a directory for
6201 architecture-dependent site-specific extensions and modules.
6202
6203 EOM
6204 fn=nd~+
6205 rp='Pathname for the site-specific architecture-dependent library files?'
6206 . ./getfile
6207 if $test "X$sitearchexp" != "X$ansexp"; then
6208         installsitearch=''
6209 fi
6210 sitearch="$ans"
6211 sitearchexp="$ansexp"
6212 if $afs; then
6213         $cat <<EOM
6214
6215 Since you are running AFS, I need to distinguish the directory in
6216 which site-specific architecture-dependent library files reside from
6217 the directory in which they are installed (and from which they are
6218 presumably copied to the former directory by occult means).
6219
6220 EOM
6221         case "$installsitearch" in
6222         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6223         *) dflt="$installsitearch";;
6224         esac
6225         fn=de~
6226         rp='Where will site-specific architecture-dependent files be installed?'
6227         . ./getfile
6228         installsitearch="$ans"
6229 else
6230         installsitearch="$sitearchexp"
6231 fi
6232
6233 cat <<EOM
6234
6235 Previous version of $package used the standard IO mechanisms as defined
6236 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6237 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6238 the default.  This abstraction layer can use AT&T's sfio (if you already
6239 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6240 problems with some extension modules.  Using PerlIO with stdio is safe,
6241 but it is slower than plain stdio and therefore is not the default.
6242
6243 If this doesn't make any sense to you, just accept the default 'n'.
6244 EOM
6245 case "$useperlio" in
6246 $define|true|[yY]*)     dflt='y';;
6247 *) dflt='n';;
6248 esac
6249 rp='Use the experimental PerlIO abstraction layer?'
6250 . ./myread
6251 case "$ans" in
6252 y|Y) 
6253         val="$define"
6254         ;;     
6255 *)      
6256         echo "Ok, doing things the stdio way"
6257         val="$undef"
6258         ;;
6259 esac
6260 set useperlio
6261 eval $setvar 
6262
6263 : Check how to convert floats to strings.
6264 if test "X$d_Gconvert" = X; then
6265         echo " "
6266         echo "Checking for an efficient way to convert floats to strings."
6267         $cat >try.c <<'EOP'
6268 #ifdef TRY_gconvert
6269 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6270 char *myname = "gconvert";
6271 #endif
6272 #ifdef TRY_gcvt
6273 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6274 char *myname = "gcvt";
6275 #endif
6276 #ifdef TRY_sprintf
6277 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6278 char *myname = "sprintf";
6279 #endif
6280
6281 #include <stdio.h>
6282
6283 int
6284 checkit(expect, got)
6285 char *expect;
6286 char *got;
6287 {
6288     if (strcmp(expect, got)) {
6289                 printf("%s oddity:  Expected %s, got %s\n",
6290                         myname, expect, got);
6291                 exit(1);
6292         }
6293 }
6294
6295 int main()
6296
6297         char buf[64]; 
6298         buf[63] = '\0';
6299
6300         /* This must be 1st test on (which?) platform */
6301         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6302         Gconvert(0.1, 8, 0, buf);
6303         checkit("0.1", buf);
6304
6305         Gconvert(1.0, 8, 0, buf); 
6306         checkit("1", buf);
6307
6308         Gconvert(0.0, 8, 0, buf); 
6309         checkit("0", buf);
6310
6311         Gconvert(-1.0, 8, 0, buf); 
6312         checkit("-1", buf);
6313
6314         /* Some Linux gcvt's give 1.e+5 here. */
6315         Gconvert(100000.0, 8, 0, buf); 
6316         checkit("100000", buf);
6317         
6318         /* Some Linux gcvt's give -1.e+5 here. */
6319         Gconvert(-100000.0, 8, 0, buf); 
6320         checkit("-100000", buf);
6321
6322         exit(0);
6323 }
6324 EOP
6325         case "$d_Gconvert" in
6326         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6327         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6328         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6329         *) xxx_list='gconvert gcvt sprintf' ;;
6330         esac
6331
6332         for xxx_convert in $xxx_list; do
6333                 echo "Trying $xxx_convert"
6334                 $rm -f try try$_o
6335                 set try -DTRY_$xxx_convert
6336                 if eval $compile; then
6337                         echo "$xxx_convert" found. >&4
6338                         if ./try; then
6339                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6340                                 break;
6341                         else
6342                                 echo "...But $xxx_convert didn't work as I expected."
6343                         fi
6344                 else
6345                         echo "$xxx_convert NOT found." >&4
6346                 fi
6347         done
6348                 
6349         case "$xxx_convert" in
6350         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6351         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6352         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6353         esac
6354 fi
6355
6356 : Initialize h_fcntl
6357 h_fcntl=false
6358
6359 : Initialize h_sysfile
6360 h_sysfile=false
6361
6362 : access call always available on UNIX
6363 set access d_access
6364 eval $inlibc
6365
6366 : locate the flags for 'access()'
6367 case "$d_access" in
6368 "$define")
6369         echo " "
6370         $cat >access.c <<'EOCP'
6371 #include <sys/types.h>
6372 #ifdef I_FCNTL
6373 #include <fcntl.h>
6374 #endif
6375 #ifdef I_SYS_FILE
6376 #include <sys/file.h>
6377 #endif
6378 #ifdef I_UNISTD
6379 #include <unistd.h>
6380 #endif
6381 int main() {
6382         exit(R_OK);
6383 }
6384 EOCP
6385         : check sys/file.h first, no particular reason here
6386         if $test `./findhdr sys/file.h` && \
6387                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6388                 h_sysfile=true;
6389                 echo "<sys/file.h> defines the *_OK access constants." >&4
6390         elif $test `./findhdr fcntl.h` && \
6391                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6392                 h_fcntl=true;
6393                 echo "<fcntl.h> defines the *_OK access constants." >&4
6394         elif $test `./findhdr unistd.h` && \
6395                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6396                 echo "<unistd.h> defines the *_OK access constants." >&4
6397         else
6398                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6399         fi
6400         ;;
6401 esac
6402 $rm -f access*
6403
6404 : see if accessx exists
6405 set accessx d_accessx
6406 eval $inlibc
6407
6408 : see if alarm exists
6409 set alarm d_alarm
6410 eval $inlibc
6411
6412 : Look for GNU-cc style attribute checking
6413 echo " "
6414 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6415 $cat >attrib.c <<'EOCP'
6416 #include <stdio.h>
6417 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6418 EOCP
6419 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6420         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6421                 echo "Your C compiler doesn't fully support __attribute__."
6422                 val="$undef"
6423         else
6424                 echo "Your C compiler supports __attribute__."
6425                 val="$define"
6426         fi
6427 else
6428         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6429         val="$undef"
6430 fi
6431 set d_attribut
6432 eval $setvar
6433 $rm -f attrib*
6434
6435 : see if bcmp exists
6436 set bcmp d_bcmp
6437 eval $inlibc
6438
6439 : see if bcopy exists
6440 set bcopy d_bcopy
6441 eval $inlibc
6442
6443 : see if this is a unistd.h system
6444 set unistd.h i_unistd
6445 eval $inhdr
6446
6447 : see if getpgrp exists
6448 set getpgrp d_getpgrp
6449 eval $inlibc
6450
6451 case "$d_getpgrp" in
6452 "$define")
6453         echo " "
6454         echo "Checking to see which flavor of getpgrp is in use..."
6455         $cat >set.c <<EOP
6456 #$i_unistd I_UNISTD
6457 #include <sys/types.h>
6458 #ifdef I_UNISTD
6459 #  include <unistd.h>
6460 #endif
6461 int main()
6462 {
6463         if (getuid() == 0) {
6464                 printf("(I see you are running Configure as super-user...)\n");
6465                 setuid(1);
6466         }
6467 #ifdef TRY_BSD_PGRP
6468         if (getpgrp(1) == 0)
6469                 exit(0);
6470 #else
6471         if (getpgrp() > 0)
6472                 exit(0);
6473 #endif
6474         exit(1);
6475 }
6476 EOP
6477         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6478                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6479                 val="$define"
6480         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6481                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6482                 val="$undef"
6483         else
6484                 echo "I can't seem to compile and run the test program."
6485                 if ./usg; then
6486                         xxx="a USG one, i.e. you use getpgrp()."
6487                 else
6488                         # SVR4 systems can appear rather BSD-ish.
6489                         case "$i_unistd" in
6490                         $undef)
6491                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6492                                 val="$define"
6493                                 ;;
6494                         $define)
6495                                 xxx="probably a USG one, i.e. you use getpgrp()."
6496                                 val="$undef"
6497                                 ;;
6498                         esac
6499                 fi
6500                 echo "Assuming your getpgrp is $xxx" >&4
6501         fi
6502         ;;
6503 *) val="$undef";;
6504 esac
6505 set d_bsdgetpgrp
6506 eval $setvar
6507 $rm -f set set.c
6508
6509 : see if setpgrp exists
6510 set setpgrp d_setpgrp
6511 eval $inlibc
6512
6513 case "$d_setpgrp" in
6514 "$define")
6515         echo " "
6516         echo "Checking to see which flavor of setpgrp is in use..."
6517         $cat >set.c <<EOP
6518 #$i_unistd I_UNISTD
6519 #include <sys/types.h>
6520 #ifdef I_UNISTD
6521 #  include <unistd.h>
6522 #endif
6523 int main()
6524 {
6525         if (getuid() == 0) {
6526                 printf("(I see you are running Configure as super-user...)\n");
6527                 setuid(1);
6528         }
6529 #ifdef TRY_BSD_PGRP
6530         if (-1 == setpgrp(1, 1))
6531                 exit(0);
6532 #else
6533         if (setpgrp() != -1)
6534                 exit(0);
6535 #endif
6536         exit(1);
6537 }
6538 EOP
6539         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6540                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6541                 val="$define"
6542         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6543                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6544                 val="$undef"
6545         else
6546                 echo "(I can't seem to compile and run the test program.)"
6547                 if ./usg; then
6548                         xxx="a USG one, i.e. you use setpgrp()."
6549                 else
6550                         # SVR4 systems can appear rather BSD-ish.
6551                         case "$i_unistd" in
6552                         $undef)
6553                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6554                                 val="$define"
6555                                 ;;
6556                         $define)
6557                                 xxx="probably a USG one, i.e. you use setpgrp()."
6558                                 val="$undef"
6559                                 ;;
6560                         esac
6561                 fi
6562                 echo "Assuming your setpgrp is $xxx" >&4
6563         fi
6564         ;;
6565 *) val="$undef";;
6566 esac
6567 set d_bsdsetpgrp
6568 eval $setvar
6569 $rm -f set set.c
6570 : see if bzero exists
6571 set bzero d_bzero
6572 eval $inlibc
6573
6574 : check for lengths of integral types
6575 echo " "
6576 case "$intsize" in
6577 '')
6578         echo "Checking to see how big your integers are..." >&4
6579         $cat >intsize.c <<'EOCP'
6580 #include <stdio.h>
6581 int main()
6582 {
6583         printf("intsize=%d;\n", sizeof(int));
6584         printf("longsize=%d;\n", sizeof(long));
6585         printf("shortsize=%d;\n", sizeof(short));
6586         exit(0);
6587 }
6588 EOCP
6589         set intsize
6590         if eval $compile_ok && ./intsize > /dev/null; then
6591                 eval `./intsize`
6592                 echo "Your integers are $intsize bytes long."
6593                 echo "Your long integers are $longsize bytes long."
6594                 echo "Your short integers are $shortsize bytes long."
6595         else
6596                 $cat >&4 <<EOM
6597 !
6598 Help! I can't compile and run the intsize test program: please enlighten me!
6599 (This is probably a misconfiguration in your system or libraries, and
6600 you really ought to fix it.  Still, I'll try anyway.)
6601 !
6602 EOM
6603                 dflt=4
6604                 rp="What is the size of an integer (in bytes)?"
6605                 . ./myread
6606                 intsize="$ans"
6607                 dflt=$intsize
6608                 rp="What is the size of a long integer (in bytes)?"
6609                 . ./myread
6610                 longsize="$ans"
6611                 dflt=2
6612                 rp="What is the size of a short integer (in bytes)?"
6613                 . ./myread
6614                 shortsize="$ans"
6615         fi
6616         ;;
6617 esac
6618 $rm -f intsize intsize.*
6619
6620 : see if signal is declared as pointer to function returning int or void
6621 echo " "
6622 xxx=`./findhdr signal.h`
6623 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6624 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6625         echo "You have int (*signal())() instead of void." >&4
6626         val="$undef"
6627 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6628         echo "You have void (*signal())()." >&4
6629         val="$define"
6630 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6631         echo "You have int (*signal())() instead of void." >&4
6632         val="$undef"
6633 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6634         echo "You have void (*signal())()." >&4
6635         val="$define"
6636 else
6637         case "$d_voidsig" in
6638         '')
6639         echo "I can't determine whether signal handler returns void or int..." >&4
6640                 dflt=void
6641                 rp="What type does your signal handler return?"
6642                 . ./myread
6643                 case "$ans" in
6644                 v*) val="$define";;
6645                 *) val="$undef";;
6646                 esac;;
6647         "$define")
6648                 echo "As you already told me, signal handler returns void." >&4
6649                 val="$define"
6650                 ;;
6651         *)      echo "As you already told me, signal handler returns int." >&4
6652                 val="$undef"
6653                 ;;
6654         esac
6655 fi
6656 set d_voidsig
6657 eval $setvar
6658 case "$d_voidsig" in
6659 "$define") signal_t="void";;
6660 *) signal_t="int";;
6661 esac
6662 $rm -f $$.tmp
6663
6664 : check for ability to cast large floats to 32-bit ints.
6665 echo " "
6666 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6667 if $test "$intsize" -ge 4; then
6668         xxx=int
6669 else
6670         xxx=long
6671 fi
6672 $cat >try.c <<EOCP
6673 #include <stdio.h>
6674 #include <sys/types.h>
6675 #include <signal.h>
6676 $signal_t blech(s) int s; { exit(3); }
6677 int main()
6678 {
6679         $xxx i32;
6680         double f, g;
6681         int result = 0;
6682         char str[16];
6683         signal(SIGFPE, blech);
6684
6685         /* Don't let compiler optimize the test away.  Store the number 
6686            in a writable string for gcc to pass to sscanf under HP/UX.
6687         */
6688         sprintf(str, "2147483647");
6689         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6690         g = 10 * f;
6691         i32  = ($xxx) g;
6692
6693         /* x86 processors will probably give 0x8000 0000, which is a
6694        sign change.  We don't want that.  We want to mimic SPARC
6695            behavior here, which is to preserve the sign and give
6696            back 0x7fff ffff.
6697         */
6698         if (i32 != ($xxx) f)
6699                 result |= 1;
6700         exit(result);
6701 }
6702 EOCP
6703 set try
6704 if eval $compile_ok; then
6705         ./try
6706         yyy=$?
6707 else
6708         echo "(I can't seem to compile the test program--assuming it can't)"
6709         yyy=1
6710 fi
6711 case "$yyy" in
6712 0)      val="$define"
6713         echo "Yup, it can."
6714         ;;
6715 *)      val="$undef"
6716         echo "Nope, it can't."
6717         ;;
6718 esac
6719 set d_casti32
6720 eval $setvar
6721 $rm -f try try.*
6722
6723 : check for ability to cast negative floats to unsigned
6724 echo " "
6725 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6726 $cat >try.c <<EOCP
6727 #include <stdio.h>
6728 #include <sys/types.h>
6729 #include <signal.h>
6730 $signal_t blech(s) int s; { exit(7); }
6731 $signal_t blech_in_list(s) int s; { exit(4); }
6732 unsigned long dummy_long(p) unsigned long p; { return p; }
6733 unsigned int dummy_int(p) unsigned int p; { return p; }
6734 unsigned short dummy_short(p) unsigned short p; { return p; }
6735 int main()
6736 {
6737         double f;
6738         unsigned long along;
6739         unsigned int aint;
6740         unsigned short ashort;
6741         int result = 0;
6742         char str[16];
6743         
6744         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6745            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6746            optimized the whole file away
6747         */
6748         /* Store the number in a writable string for gcc to pass to 
6749            sscanf under HP/UX.
6750         */
6751         sprintf(str, "-123");
6752         sscanf(str, "%lf", &f);  /* f = -123.; */
6753
6754         signal(SIGFPE, blech);
6755         along = (unsigned long)f;
6756         aint = (unsigned int)f;
6757         ashort = (unsigned short)f;
6758         if (along != (unsigned long)-123)
6759                 result |= 1;
6760         if (aint != (unsigned int)-123)
6761                 result |= 1;
6762         if (ashort != (unsigned short)-123)
6763                 result |= 1;
6764         sprintf(str, "1073741824.");
6765         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6766         f = f + f;
6767         along = 0;
6768         along = (unsigned long)f;
6769         if (along != 0x80000000)
6770                 result |= 2;
6771         f -= 1.;
6772         along = 0;
6773         along = (unsigned long)f;
6774         if (along != 0x7fffffff)
6775                 result |= 1;
6776         f += 2.;
6777         along = 0;
6778         along = (unsigned long)f;
6779         if (along != 0x80000001)
6780                 result |= 2;
6781         if (result)
6782                 exit(result);
6783         signal(SIGFPE, blech_in_list);
6784         sprintf(str, "123.");
6785         sscanf(str, "%lf", &f);  /* f = 123.; */
6786         along = dummy_long((unsigned long)f);
6787         aint = dummy_int((unsigned int)f);
6788         ashort = dummy_short((unsigned short)f);
6789         if (along != (unsigned long)123)
6790                 result |= 4;
6791         if (aint != (unsigned int)123)
6792                 result |= 4;
6793         if (ashort != (unsigned short)123)
6794                 result |= 4;
6795         exit(result);
6796
6797 }
6798 EOCP
6799 set try
6800 if eval $compile_ok; then
6801         ./try
6802         castflags=$?
6803 else
6804         echo "(I can't seem to compile the test program--assuming it can't)"
6805         castflags=7
6806 fi
6807 case "$castflags" in
6808 0)      val="$define"
6809         echo "Yup, it can."
6810         ;;
6811 *)      val="$undef"
6812         echo "Nope, it can't."
6813         ;;
6814 esac
6815 set d_castneg
6816 eval $setvar
6817 $rm -f try.*
6818
6819 : see if vprintf exists
6820 echo " "
6821 if set vprintf val -f d_vprintf; eval $csym; $val; then
6822         echo 'vprintf() found.' >&4
6823         val="$define"
6824         $cat >vprintf.c <<'EOF'
6825 #include <varargs.h>
6826
6827 int main() { xxx("foo"); }
6828
6829 xxx(va_alist)
6830 va_dcl
6831 {
6832         va_list args;
6833         char buf[10];
6834
6835         va_start(args);
6836         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6837 }
6838 EOF
6839         set vprintf
6840         if eval $compile && ./vprintf; then
6841                 echo "Your vsprintf() returns (int)." >&4
6842                 val2="$undef"
6843         else
6844                 echo "Your vsprintf() returns (char*)." >&4
6845                 val2="$define"
6846         fi
6847 else
6848         echo 'vprintf() NOT found.' >&4
6849                 val="$undef"
6850                 val2="$undef"
6851 fi
6852 set d_vprintf
6853 eval $setvar
6854 val=$val2
6855 set d_charvspr
6856 eval $setvar
6857
6858 : see if chown exists
6859 set chown d_chown
6860 eval $inlibc
6861
6862 : see if chroot exists
6863 set chroot d_chroot
6864 eval $inlibc
6865
6866 : see if chsize exists
6867 set chsize d_chsize
6868 eval $inlibc
6869
6870 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6871 while $test $# -ge 2; do
6872         case "$1" in
6873         $define) echo "#include <$2>";;
6874         esac ;
6875     shift 2;
6876 done > try.c;
6877 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6878 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6879         val="$define";
6880 else
6881         val="$undef";
6882 fi;
6883 set $varname;
6884 eval $setvar;
6885 $rm -f try.c try.o'
6886
6887 : see if this is a sys/uio.h system
6888 set sys/uio.h i_sysuio
6889 eval $inhdr
6890
6891 echo "Checking to see if your system supports struct iovec..." >&4
6892 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6893 eval $hasfield
6894 case "$d_iovec_s" in
6895 "$define")      echo "Yup, it does." >&4
6896                 ;;
6897 *)              echo "Nope, it doesn't." >&4
6898                 ;;
6899 esac
6900
6901 socketlib=''
6902 sockethdr=''
6903 : see whether socket exists
6904 echo " "
6905 $echo $n "Hmm... $c" >&4
6906 if set socket val -f d_socket; eval $csym; $val; then
6907         echo "Looks like you have Berkeley networking support." >&4
6908         d_socket="$define"
6909         if set setsockopt val -f; eval $csym; $val; then
6910                 d_oldsock="$undef"
6911         else
6912                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6913                 d_oldsock="$define"
6914         fi
6915 else
6916         if $contains socklib libc.list >/dev/null 2>&1; then
6917                 echo "Looks like you have Berkeley networking support." >&4
6918                 d_socket="$define"
6919                 : we will have to assume that it supports the 4.2 BSD interface
6920                 d_oldsock="$undef"
6921         else
6922                 echo "You don't have Berkeley networking in libc$_a..." >&4
6923                 if test "X$d_socket" = "X$define"; then
6924                    echo "...but you seem to believe that you have sockets." >&4
6925                 else
6926                         for net in net socket
6927                         do
6928                                 if test -f /usr/lib/lib$net$_a; then
6929                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6930                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6931                                         if $contains socket libc.list >/dev/null 2>&1; then
6932                                                 d_socket="$define"
6933                                                 socketlib="-l$net"
6934                                                 case "$net" in
6935                                                 net)
6936                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6937                                                         sockethdr="-I/usr/netinclude"
6938                                                         ;;
6939                                                 esac
6940                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6941                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6942                                                         d_oldsock="$undef"
6943                                                 else
6944                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6945                                                         d_oldsock="$define"
6946                                                 fi
6947                                                 break
6948                                         fi
6949                                 fi
6950                         done
6951                         if test "X$d_socket" != "X$define"; then
6952                            echo "or anywhere else I see." >&4
6953                            d_socket="$undef"
6954                            d_oldsock="$undef"
6955                         fi
6956                 fi
6957         fi
6958 fi
6959
6960 : see if socketpair exists
6961 set socketpair d_sockpair
6962 eval $inlibc
6963
6964
6965 echo " "
6966 echo "Checking the availability of certain socket constants..." >& 4
6967 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6968         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6969         $cat >try.c <<EOF
6970 #include <sys/types.h>
6971 #include <sys/socket.h>
6972 int main() {
6973     int i = $ENUM;
6974 }
6975 EOF
6976         val="$undef"
6977         set try; if eval $compile; then
6978                 val="$define"
6979         fi
6980         set d_${enum}; eval $setvar
6981         $rm -f try.c try
6982 done
6983
6984 set sendmsg d_sendmsg
6985 eval $inlibc
6986
6987 set recvmsg d_recvmsg
6988 eval $inlibc
6989
6990 echo " "
6991 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6992 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6993 eval $hasfield
6994 case "$d_msghdr_s" in
6995 "$define")      echo "Yup, it does." >&4
6996                 ;;
6997 *)              echo "Nope, it doesn't." >&4
6998                 ;;
6999 esac
7000
7001 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7002 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7003 eval $hasfield
7004 case "$d_cmsghdr_s" in
7005 "$define")      echo "Yup, it does." >&4
7006                 ;;
7007 *)              echo "Nope, it doesn't." >&4
7008                 ;;
7009 esac
7010
7011 : check for const keyword
7012 echo " "
7013 echo 'Checking to see if your C compiler knows about "const"...' >&4
7014 $cat >const.c <<'EOCP'
7015 typedef struct spug { int drokk; } spug;
7016 int main()
7017 {
7018         const char *foo;
7019         const spug y;
7020 }
7021 EOCP
7022 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7023         val="$define"
7024         echo "Yup, it does."
7025 else
7026         val="$undef"
7027         echo "Nope, it doesn't."
7028 fi
7029 set d_const
7030 eval $setvar
7031
7032 : see if crypt exists
7033 echo " "
7034 if set crypt val -f d_crypt; eval $csym; $val; then
7035         echo 'crypt() found.' >&4
7036         val="$define"
7037         cryptlib=''
7038 else
7039         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7040         if $test -z "$cryptlib"; then
7041                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7042         else
7043                 cryptlib=-lcrypt
7044         fi
7045         if $test -z "$cryptlib"; then
7046                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7047         else
7048                 cryptlib=-lcrypt
7049         fi
7050         if $test -z "$cryptlib"; then
7051                 cryptlib=`./loc libcrypt$_a "" $libpth`
7052         else
7053                 cryptlib=-lcrypt
7054         fi
7055         if $test -z "$cryptlib"; then
7056                 echo 'crypt() NOT found.' >&4
7057                 val="$undef"
7058         else
7059                 val="$define"
7060         fi
7061 fi
7062 set d_crypt
7063 eval $setvar
7064
7065 : get csh whereabouts
7066 case "$csh" in
7067 'csh') val="$undef" ;;
7068 *) val="$define" ;;
7069 esac
7070 set d_csh
7071 eval $setvar
7072 : Respect a hint or command line value for full_csh.
7073 case "$full_csh" in
7074 '') full_csh=$csh ;;
7075 esac
7076
7077 : see if cuserid exists
7078 set cuserid d_cuserid
7079 eval $inlibc
7080
7081 : see if this is a limits.h system
7082 set limits.h i_limits
7083 eval $inhdr
7084
7085 : see if this is a float.h system
7086 set float.h i_float
7087 eval $inhdr
7088
7089 : See if number of significant digits in a double precision number is known
7090 echo " "
7091 $cat >dbl_dig.c <<EOM
7092 #$i_limits I_LIMITS
7093 #$i_float I_FLOAT
7094 #ifdef I_LIMITS
7095 #include <limits.h>
7096 #endif
7097 #ifdef I_FLOAT
7098 #include <float.h>
7099 #endif
7100 #ifdef DBL_DIG
7101 printf("Contains DBL_DIG");
7102 #endif
7103 EOM
7104 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7105 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7106         echo "DBL_DIG found." >&4
7107         val="$define"
7108 else
7109         echo "DBL_DIG NOT found." >&4
7110         val="$undef"
7111 fi
7112 $rm -f dbl_dig.?
7113 set d_dbl_dig
7114 eval $setvar
7115
7116
7117 if $test X"$use64bits" = X"$define"; then
7118         : see if dbminit64 exists
7119         set dbminit64 d_dbminit64
7120         eval $inlibc
7121
7122         : see if dbmclose64 exists
7123         set dbmclose64 d_dbmclose64
7124         eval $inlibc
7125
7126         : see if fetch64 exists
7127         set fetch64 d_fetch64
7128         eval $inlibc
7129
7130         : see if store64 exists
7131         set store64 d_store64
7132         eval $inlibc
7133
7134         : see if delete64 exists
7135         set delete64 d_delete64
7136         eval $inlibc
7137
7138         : see if firstkey64 exists
7139         set firstkey64 d_firstkey64
7140         eval $inlibc
7141
7142         : see if nextkey64 exists
7143         set nextkey64 d_nextkey64
7144         eval $inlibc
7145 else
7146         val="$undef"
7147         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7148         do
7149                 set $xxx
7150                 eval $setvar
7151         done
7152 fi
7153
7154 : see if difftime exists
7155 set difftime d_difftime
7156 eval $inlibc
7157
7158 : see if sys/stat.h is available
7159 set sys/stat.h i_sysstat
7160 eval $inhdr
7161
7162 : see if this is a dirent system
7163 echo " "
7164 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7165         val="$define"
7166         echo "<dirent.h> found." >&4
7167 else
7168         val="$undef"
7169         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7170                 echo "<sys/dir.h> found." >&4
7171                 echo " "
7172         else
7173                 xinc=`./findhdr sys/ndir.h`
7174         fi
7175         echo "<dirent.h> NOT found." >&4
7176 fi
7177 set i_dirent
7178 eval $setvar
7179
7180 : Look for type of directory structure.
7181 echo " "
7182 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7183
7184 case "$direntrytype" in
7185 ''|' ')
7186         case "$i_dirent" in
7187         $define) guess1='struct dirent' ;;
7188         *) guess1='struct direct'  ;;
7189         esac
7190         ;;
7191 *)      guess1="$direntrytype"
7192         ;;
7193 esac
7194
7195 case "$guess1" in
7196 'struct dirent') guess2='struct direct' ;;
7197 *) guess2='struct dirent' ;;
7198 esac
7199                 
7200 if $contains "$guess1" try.c >/dev/null 2>&1; then
7201         direntrytype="$guess1"
7202         echo "Your directory entries are $direntrytype." >&4
7203 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7204         direntrytype="$guess2"
7205         echo "Your directory entries seem to be $direntrytype." >&4
7206 else
7207         echo "I don't recognize your system's directory entries." >&4
7208         rp="What type is used for directory entries on this system?"
7209         dflt="$guess1"
7210         . ./myread
7211         direntrytype="$ans"
7212 fi
7213 $rm -f try.c
7214
7215
7216 : see if the directory entry stores field length
7217 echo " "
7218 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7219 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7220         echo "Good, your directory entry keeps length information in d_namlen." >&4
7221         val="$define"
7222 else
7223         echo "Your directory entry does not know about the d_namlen field." >&4
7224         val="$undef"
7225 fi
7226 set d_dirnamlen
7227 eval $setvar
7228 $rm -f try.c
7229
7230
7231 if $test X"$use64bits" = X"$define"; then
7232         : see if fstat64 exists
7233         set fstat64 d_fstat64
7234         eval $inlibc
7235
7236         : see if ftruncate64 exists
7237         set ftruncate64 d_ftruncate64
7238         eval $inlibc
7239
7240         : see if lockf64 exists
7241         set lockf64 d_lockf64
7242         eval $inlibc
7243
7244         : see if lseek64 exists
7245         set lseek64 d_lseek64
7246         eval $inlibc
7247
7248         : see if lstat64 exists
7249         set lstat64 d_lstat64
7250         eval $inlibc
7251
7252         : see if open64 exists
7253         set open64 d_open64
7254         eval $inlibc
7255
7256         : see if opendir64 exists
7257         set opendir64 d_opendir64
7258         eval $inlibc
7259
7260         : see if readdir64 exists
7261         set readdir64 d_readdir64
7262         eval $inlibc
7263
7264         : see if seekdir64 exists
7265         set seekdir64 d_seekdir64
7266         eval $inlibc
7267
7268         : see if stat64 exists
7269         set stat64 d_stat64
7270         eval $inlibc
7271
7272         : see if telldir64 exists
7273         set telldir64 d_telldir64
7274         eval $inlibc
7275
7276         : see if truncate64 exists
7277         set truncate64 d_truncate64
7278         eval $inlibc
7279
7280         : check for off64_t
7281         echo " "
7282         echo $n "Checking to see if your system supports off64_t...$c" >&4
7283         $cat >try.c <<EOCP
7284 #include <sys/types.h>
7285 off64_t foo() { off64_t x; x = 7; return x; }'
7286 EOCP
7287         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7288                 val="$define"
7289                 echo " Yup, it does." >&4
7290         else
7291                 val="$undef"
7292                 echo " Nope, it doesn't." >&4
7293         fi
7294         $rm -f try.*
7295         set d_off64t
7296         eval $setvar
7297
7298         : check for ino64_t
7299         echo " "
7300         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7301         val="$undef"
7302         case "$i_sysstat" in
7303         "$define" )
7304                 $cat >try.c <<EOCP
7305 #include <sys/types.h>
7306 #include <sys/stat.h>
7307 ino64_t foo() { ino64_t x; x = 7; return x; }'
7308 EOCP
7309                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7310                         val="$define"
7311                 fi
7312                 $rm -f try.*
7313                 ;;
7314         esac
7315         if $test "X$val" = X"$define"; then
7316                 echo " Yup, it does." >&4
7317         else
7318                 echo " Nope, it doesn't." >&4
7319         fi
7320         set d_ino64t
7321         eval $setvar
7322
7323         : check for struct flock64
7324         echo " "
7325         echo "Checking to see if your system supports struct flock64..." >&4
7326         if $h_fcntl; then
7327                 set d_flock64_s flock64 l_len define fcntl.h
7328                 eval $hasfield
7329         else
7330                 val="$undef"
7331                 set d_flock64_s
7332                 eval $setvar
7333         fi
7334         case "$d_flock64_s" in
7335         "$define")      echo "Yup, it does." >&4
7336                         ;;
7337         *)              echo "Nope, it doesn't." >&4
7338                         ;;
7339         esac
7340
7341         : check for struct dirent64
7342         echo " "
7343         echo "Checking to see if your system supports struct dirent64..." >&4
7344         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7345         eval $hasfield
7346         case "$d_dirent64_s" in
7347         "$define")      echo "Yup, it does." >&4
7348                         ;;
7349         *)              echo "Nope, it doesn't." >&4
7350                         ;;
7351         esac
7352
7353 else
7354         val="$undef"
7355         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
7356         do
7357                 set $xxx
7358                 eval $setvar
7359         done
7360 fi
7361
7362 : see if dlerror exists
7363 xxx_runnm="$runnm"
7364 runnm=false
7365 set dlerror d_dlerror
7366 eval $inlibc
7367 runnm="$xxx_runnm"
7368
7369 : see if dlfcn is available
7370 set dlfcn.h i_dlfcn
7371 eval $inhdr
7372
7373 case "$usedl" in
7374 $define|y|true)
7375         $cat << EOM
7376
7377 On a few systems, the dynamically loaded modules that perl generates and uses
7378 will need a different extension than shared libs. The default will probably
7379 be appropriate.
7380
7381 EOM
7382         case "$dlext" in
7383         '')     dflt="$so" ;;
7384         *)      dflt="$dlext" ;;
7385         esac
7386         rp='What is the extension of dynamically loaded modules'
7387         . ./myread
7388         dlext="$ans"
7389         ;;
7390 *)
7391         dlext="none"
7392         ;;
7393 esac
7394
7395 : Check if dlsym need a leading underscore
7396 echo " "
7397 val="$undef"
7398
7399 case "$dlsrc" in
7400 dl_dlopen.xs)
7401         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7402         $cat >dyna.c <<'EOM'
7403 fred () { }
7404 EOM
7405
7406 $cat >fred.c<<EOM
7407
7408 #include <stdio.h>
7409 #$i_dlfcn I_DLFCN
7410 #ifdef I_DLFCN
7411 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7412 #else
7413 #include <sys/types.h>
7414 #include <nlist.h>
7415 #include <link.h>
7416 #endif
7417
7418 extern int fred() ;
7419
7420 int main()
7421 {
7422     void * handle ;
7423     void * symbol ;
7424 #ifndef RTLD_LAZY
7425     int mode = 1 ;
7426 #else
7427     int mode = RTLD_LAZY ;
7428 #endif
7429     handle = dlopen("./dyna.$dlext", mode) ;
7430     if (handle == NULL) {
7431         printf ("1\n") ;
7432         fflush (stdout) ;
7433         exit(0);
7434     }
7435     symbol = dlsym(handle, "fred") ;
7436     if (symbol == NULL) {
7437         /* try putting a leading underscore */
7438         symbol = dlsym(handle, "_fred") ;
7439         if (symbol == NULL) {
7440             printf ("2\n") ;
7441             fflush (stdout) ;
7442             exit(0);
7443         }
7444         printf ("3\n") ;
7445     }
7446     else
7447         printf ("4\n") ;
7448     fflush (stdout) ;
7449     exit(0);
7450 }
7451 EOM
7452         : Call the object file tmp-dyna.o in case dlext=o.
7453         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7454                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7455                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7456                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7457                 xxx=`./fred`
7458                 case $xxx in
7459                 1)      echo "Test program failed using dlopen." >&4
7460                         echo "Perhaps you should not use dynamic loading." >&4;;
7461                 2)      echo "Test program failed using dlsym." >&4
7462                         echo "Perhaps you should not use dynamic loading." >&4;;
7463                 3)      echo "dlsym needs a leading underscore" >&4
7464                         val="$define" ;;
7465                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7466                 esac
7467         else
7468                 echo "I can't compile and run the test program." >&4
7469         fi
7470         ;;
7471 esac
7472                 
7473 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7474
7475 set d_dlsymun
7476 eval $setvar
7477
7478 hasproto='varname=$1; func=$2; shift; shift;
7479 while $test $# -ge 2; do
7480         case "$1" in
7481         $define) echo "#include <$2>";;
7482         esac ;
7483     shift 2;
7484 done > try.c;
7485 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7486 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7487         echo "$func() prototype found.";
7488         val="$define";
7489 else
7490         echo "$func() prototype NOT found.";
7491         val="$undef";
7492 fi;
7493 set $varname;
7494 eval $setvar;
7495 $rm -f try.c tryout.c'
7496
7497 : see if prototype for drand48 is available
7498 echo " "
7499 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7500 eval $hasproto
7501
7502 : see if dup2 exists
7503 set dup2 d_dup2
7504 eval $inlibc
7505
7506 : see if eaccess exists
7507 set eaccess d_eaccess
7508 eval $inlibc
7509
7510 : see if endgrent exists
7511 set endgrent d_endgrent
7512 eval $inlibc
7513
7514 : see if endhostent exists
7515 set endhostent d_endhent
7516 eval $inlibc
7517
7518 : see if endnetent exists
7519 set endnetent d_endnent
7520 eval $inlibc
7521
7522 : see if endprotoent exists
7523 set endprotoent d_endpent
7524 eval $inlibc
7525
7526 : see if endpwent exists
7527 set endpwent d_endpwent
7528 eval $inlibc
7529
7530 : see if endservent exists
7531 set endservent d_endsent
7532 eval $inlibc
7533
7534 : Locate the flags for 'open()'
7535 echo " "
7536 $cat >open3.c <<'EOCP'
7537 #include <sys/types.h>
7538 #ifdef I_FCNTL
7539 #include <fcntl.h>
7540 #endif
7541 #ifdef I_SYS_FILE
7542 #include <sys/file.h>
7543 #endif
7544 int main() {
7545         if(O_RDONLY);
7546 #ifdef O_TRUNC
7547         exit(0);
7548 #else
7549         exit(1);
7550 #endif
7551 }
7552 EOCP
7553 : check sys/file.h first to get FREAD on Sun
7554 if $test `./findhdr sys/file.h` && \
7555                 set open3 -DI_SYS_FILE && eval $compile; then
7556         h_sysfile=true;
7557         echo "<sys/file.h> defines the O_* constants..." >&4
7558         if ./open3; then
7559                 echo "and you have the 3 argument form of open()." >&4
7560                 val="$define"
7561         else
7562                 echo "but not the 3 argument form of open().  Oh, well." >&4
7563                 val="$undef"
7564         fi
7565 elif $test `./findhdr fcntl.h` && \
7566                 set open3 -DI_FCNTL && eval $compile; then
7567         h_fcntl=true;
7568         echo "<fcntl.h> defines the O_* constants..." >&4
7569         if ./open3; then
7570                 echo "and you have the 3 argument form of open()." >&4
7571                 val="$define"
7572         else
7573                 echo "but not the 3 argument form of open().  Oh, well." >&4
7574                 val="$undef"
7575         fi
7576 else
7577         val="$undef"
7578         echo "I can't find the O_* constant definitions!  You got problems." >&4
7579 fi
7580 set d_open3
7581 eval $setvar
7582 $rm -f open3*
7583
7584 : check for non-blocking I/O stuff
7585 case "$h_sysfile" in
7586 true) echo "#include <sys/file.h>" > head.c;;
7587 *)
7588         case "$h_fcntl" in
7589         true) echo "#include <fcntl.h>" > head.c;;
7590         *) echo "#include <sys/fcntl.h>" > head.c;;
7591         esac
7592         ;;
7593 esac
7594 echo " "
7595 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7596 case "$o_nonblock" in
7597 '')
7598         $cat head.c > try.c
7599         $cat >>try.c <<'EOCP'
7600 int main() {
7601 #ifdef O_NONBLOCK
7602         printf("O_NONBLOCK\n");
7603         exit(0);
7604 #endif
7605 #ifdef O_NDELAY
7606         printf("O_NDELAY\n");
7607         exit(0);
7608 #endif
7609 #ifdef FNDELAY
7610         printf("FNDELAY\n");
7611         exit(0);
7612 #endif
7613         exit(0);
7614 }
7615 EOCP
7616         set try
7617         if eval $compile_ok; then
7618                 o_nonblock=`./try`
7619                 case "$o_nonblock" in
7620                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7621                 *) echo "Seems like we can use $o_nonblock.";;
7622                 esac
7623         else
7624                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7625         fi
7626         ;;
7627 *) echo "Using $hint value $o_nonblock.";;
7628 esac
7629 $rm -f try try.* .out core
7630
7631 echo " "
7632 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7633 case "$eagain" in
7634 '')
7635         $cat head.c > try.c
7636         $cat >>try.c <<EOCP
7637 #include <errno.h>
7638 #include <sys/types.h>
7639 #include <signal.h>
7640 #define MY_O_NONBLOCK $o_nonblock
7641 #ifndef errno  /* XXX need better Configure test */
7642 extern int errno;
7643 #endif
7644 $signal_t blech(x) int x; { exit(3); }
7645 EOCP
7646         $cat >> try.c <<'EOCP'
7647 int main()
7648 {
7649         int pd[2];
7650         int pu[2];
7651         char buf[1];
7652         char string[100];
7653
7654         pipe(pd);       /* Down: child -> parent */
7655         pipe(pu);       /* Up: parent -> child */
7656         if (0 != fork()) {
7657                 int ret;
7658                 close(pd[1]);   /* Parent reads from pd[0] */
7659                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7660                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7661                         exit(1);
7662                 signal(SIGALRM, blech);
7663                 alarm(5);
7664                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7665                         exit(2);
7666                 sprintf(string, "%d\n", ret);
7667                 write(2, string, strlen(string));
7668                 alarm(0);
7669 #ifdef EAGAIN
7670                 if (errno == EAGAIN) {
7671                         printf("EAGAIN\n");
7672                         goto ok;
7673                 }
7674 #endif
7675 #ifdef EWOULDBLOCK
7676                 if (errno == EWOULDBLOCK)
7677                         printf("EWOULDBLOCK\n");
7678 #endif
7679         ok:
7680                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7681                 sleep(2);                               /* Give it time to close our pipe */
7682                 alarm(5);
7683                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7684                 alarm(0);
7685                 sprintf(string, "%d\n", ret);
7686                 write(3, string, strlen(string));
7687                 exit(0);
7688         }
7689
7690         close(pd[0]);                   /* We write to pd[1] */
7691         close(pu[1]);                   /* We read from pu[0] */
7692         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7693         close(pd[1]);                   /* Pipe pd is now fully closed! */
7694         exit(0);                                /* Bye bye, thank you for playing! */
7695 }
7696 EOCP
7697         set try
7698         if eval $compile_ok; then
7699                 echo "$startsh" >mtry
7700                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7701                 chmod +x mtry
7702                 ./mtry >/dev/null 2>&1
7703                 case $? in
7704                 0) eagain=`$cat try.out`;;
7705                 1) echo "Could not perform non-blocking setting!";;
7706                 2) echo "I did a successful read() for something that was not there!";;
7707                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7708                 *) echo "Something terribly wrong happened during testing.";;
7709                 esac
7710                 rd_nodata=`$cat try.ret`
7711                 echo "A read() system call with no data present returns $rd_nodata."
7712                 case "$rd_nodata" in
7713                 0|-1) ;;
7714                 *)
7715                         echo "(That's peculiar, fixing that to be -1.)"
7716                         rd_nodata=-1
7717                         ;;
7718                 esac
7719                 case "$eagain" in
7720                 '')
7721                         echo "Forcing errno EAGAIN on read() with no data available."
7722                         eagain=EAGAIN
7723                         ;;
7724                 *)
7725                         echo "Your read() sets errno to $eagain when no data is available."
7726                         ;;
7727                 esac
7728                 status=`$cat try.err`
7729                 case "$status" in
7730                 0) echo "And it correctly returns 0 to signal EOF.";;
7731                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7732                 *) echo "However, your read() returns '$status' on EOF??";;
7733                 esac
7734                 val="$define"
7735                 if test "$status" = "$rd_nodata"; then
7736                         echo "WARNING: you can't distinguish between EOF and no data!"
7737                         val="$undef"
7738                 fi
7739         else
7740                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7741                 eagain=EAGAIN
7742         fi
7743         set d_eofnblk
7744         eval $setvar
7745         ;;
7746 *)
7747         echo "Using $hint value $eagain."
7748         echo "Your read() returns $rd_nodata when no data is present."
7749         case "$d_eofnblk" in
7750         "$define") echo "And you can see EOF because read() returns 0.";;
7751         "$undef") echo "But you can't see EOF status from read() returned value.";;
7752         *)
7753                 echo "(Assuming you can't see EOF status from read anyway.)"
7754                 d_eofnblk=$undef
7755                 ;;
7756         esac
7757         ;;
7758 esac
7759 $rm -f try try.* .out core head.c mtry
7760
7761 : see if fchmod exists
7762 set fchmod d_fchmod
7763 eval $inlibc
7764
7765 : see if fchown exists
7766 set fchown d_fchown
7767 eval $inlibc
7768
7769 : see if this is an fcntl system
7770 set fcntl d_fcntl
7771 eval $inlibc
7772
7773 : see if sys/select.h has to be included
7774 set sys/select.h i_sysselct
7775 eval $inhdr
7776
7777 : see if we should include time.h, sys/time.h, or both
7778 echo " "
7779 if test "X$timeincl" = X; then
7780         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7781         $echo $n "I'm now running the test program...$c"
7782         $cat >try.c <<'EOCP'
7783 #include <sys/types.h>
7784 #ifdef I_TIME
7785 #include <time.h>
7786 #endif
7787 #ifdef I_SYSTIME
7788 #ifdef SYSTIMEKERNEL
7789 #define KERNEL
7790 #endif
7791 #include <sys/time.h>
7792 #endif
7793 #ifdef I_SYSSELECT
7794 #include <sys/select.h>
7795 #endif
7796 int main()
7797 {
7798         struct tm foo;
7799 #ifdef S_TIMEVAL
7800         struct timeval bar;
7801 #endif
7802 #ifdef S_TIMEZONE
7803         struct timezone tzp;
7804 #endif
7805         if (foo.tm_sec == foo.tm_sec)
7806                 exit(0);
7807 #ifdef S_TIMEVAL
7808         if (bar.tv_sec == bar.tv_sec)
7809                 exit(0);
7810 #endif
7811         exit(1);
7812 }
7813 EOCP
7814         flags=''
7815         for s_timezone in '-DS_TIMEZONE' ''; do
7816         sysselect=''
7817         for s_timeval in '-DS_TIMEVAL' ''; do
7818         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7819         for i_time in '' '-DI_TIME'; do
7820         for i_systime in '-DI_SYSTIME' ''; do
7821                 case "$flags" in
7822                 '') $echo $n ".$c"
7823                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7824                         if eval $compile; then
7825                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7826                                 shift
7827                                 flags="$*"
7828                                 echo " "
7829                                 $echo $n "Succeeded with $flags$c"
7830                         fi
7831                         ;;
7832                 esac
7833         done
7834         done
7835         done
7836         done
7837         done
7838         timeincl=''
7839         echo " "
7840         case "$flags" in
7841         *SYSTIMEKERNEL*) i_systimek="$define"
7842                 timeincl=`./findhdr sys/time.h`
7843                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7844         *) i_systimek="$undef";;
7845         esac
7846         case "$flags" in
7847         *I_TIME*) i_time="$define"
7848                 timeincl=`./findhdr time.h`" $timeincl"
7849                 echo "We'll include <time.h>." >&4;;
7850         *) i_time="$undef";;
7851         esac
7852         case "$flags" in
7853         *I_SYSTIME*) i_systime="$define"
7854                 timeincl=`./findhdr sys/time.h`" $timeincl"
7855                 echo "We'll include <sys/time.h>." >&4;;
7856         *) i_systime="$undef";;
7857         esac
7858         $rm -f try.c try
7859 fi
7860
7861 : check for fd_set items
7862 $cat <<EOM
7863
7864 Checking to see how well your C compiler handles fd_set and friends ...
7865 EOM
7866 $cat >fd_set.c <<EOCP
7867 #$i_systime I_SYS_TIME
7868 #$i_sysselct I_SYS_SELECT
7869 #$d_socket HAS_SOCKET
7870 #include <sys/types.h>
7871 #ifdef HAS_SOCKET
7872 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7873 #endif
7874 #ifdef I_SYS_TIME
7875 #include <sys/time.h>
7876 #endif
7877 #ifdef I_SYS_SELECT
7878 #include <sys/select.h>
7879 #endif
7880 int main() {
7881         fd_set fds;
7882
7883 #ifdef TRYBITS
7884         if(fds.fds_bits);
7885 #endif
7886
7887 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7888         exit(0);
7889 #else
7890         exit(1);
7891 #endif
7892 }
7893 EOCP
7894 set fd_set -DTRYBITS
7895 if eval $compile; then
7896         d_fds_bits="$define"
7897         d_fd_set="$define"
7898         echo "Well, your system knows about the normal fd_set typedef..." >&4
7899         if ./fd_set; then
7900                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7901                 d_fd_macros="$define"
7902         else
7903                 $cat >&4 <<'EOM'
7904 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7905 EOM
7906                 d_fd_macros="$undef"
7907         fi
7908 else
7909         $cat <<'EOM'
7910 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7911 EOM
7912         set fd_set
7913         if eval $compile; then
7914                 d_fds_bits="$undef"
7915                 d_fd_set="$define"
7916                 echo "Well, your system has some sort of fd_set available..." >&4
7917                 if ./fd_set; then
7918                         echo "and you have the normal fd_set macros." >&4
7919                         d_fd_macros="$define"
7920                 else
7921                         $cat <<'EOM'
7922 but not the normal fd_set macros!  Gross!  More work for me...
7923 EOM
7924                         d_fd_macros="$undef"
7925                 fi
7926         else
7927         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7928                 d_fd_set="$undef"
7929                 d_fds_bits="$undef"
7930                 d_fd_macros="$undef"
7931         fi
7932 fi
7933 $rm -f fd_set*
7934
7935 : see if fgetpos exists
7936 set fgetpos d_fgetpos
7937 eval $inlibc
7938
7939
7940 if $test X"$use64bits" = X"$define"; then
7941         : see if fgetpos64 exists
7942         set fgetpos64 d_fgetpos64
7943         eval $inlibc
7944
7945         : see if fopen64 exists
7946         set freopen64 d_fopen64
7947         eval $inlibc
7948
7949         : see if freopen64 exists
7950         set freopen64 d_freopen64
7951         eval $inlibc
7952
7953         : see if fseek64 exists
7954         set fseek64 d_fseek64
7955         eval $inlibc
7956
7957         : see if fseeko64 exists
7958         set fseeko64 d_fseeko64
7959         eval $inlibc
7960
7961         : see if fsetpos64 exists
7962         set fsetpos64 d_fsetpos64
7963         eval $inlibc
7964
7965         : see if ftell64 exists
7966         set ftell64 d_ftell64
7967         eval $inlibc
7968
7969         : see if ftello64 exists
7970         set ftello64 d_ftello64
7971         eval $inlibc
7972
7973         : see if tmpfile64 exists
7974         set tmpfile64 d_tmpfile64
7975         eval $inlibc
7976 else
7977         val="$undef"
7978         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7979         do
7980                 set $xxx
7981                 eval $setvar
7982         done
7983 fi
7984
7985 : see if flock exists
7986 set flock d_flock
7987 eval $inlibc
7988
7989 : see if fork exists
7990 set fork d_fork
7991 eval $inlibc
7992
7993 : see if pathconf exists
7994 set pathconf d_pathconf
7995 eval $inlibc
7996
7997 : see if fpathconf exists
7998 set fpathconf d_fpathconf
7999 eval $inlibc
8000
8001 : see if fseeko exists
8002 set fseeko d_fseeko
8003 eval $inlibc
8004
8005 : see if fsetpos exists
8006 set fsetpos d_fsetpos
8007 eval $inlibc
8008
8009 : see if this is a sys/param system
8010 set sys/param.h i_sysparam
8011 eval $inhdr
8012
8013 : see if this is a sys/mount.h system
8014 set sys/mount.h i_sysmount
8015 eval $inhdr
8016
8017
8018 : see if statfs exists
8019 set statfs d_statfs
8020 eval $inlibc
8021
8022 : see if fstatfs exists
8023 set fstatfs d_fstatfs
8024 eval $inlibc
8025
8026 : see if statfs knows about mount flags
8027 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8028 eval $hasfield
8029
8030
8031 : see if statvfs exists
8032 set statvfs d_statvfs
8033 eval $inlibc
8034
8035 : see if fstatvfs exists
8036 set fstatvfs d_fstatvfs
8037 eval $inlibc
8038
8039
8040 : see if ftello exists
8041 set ftello d_ftello
8042 eval $inlibc
8043
8044 : see if getgrent exists
8045 set getgrent d_getgrent
8046 eval $inlibc
8047
8048 : see if gethostbyaddr exists
8049 set gethostbyaddr d_gethbyaddr
8050 eval $inlibc
8051
8052 : see if gethostbyname exists
8053 set gethostbyname d_gethbyname
8054 eval $inlibc
8055
8056 : see if gethostent exists
8057 set gethostent d_gethent
8058 eval $inlibc
8059
8060 : see how we will look up host name
8061 echo " "
8062 call=''
8063 if set gethostname val -f d_gethname; eval $csym; $val; then
8064         echo 'gethostname() found.' >&4
8065         d_gethname="$define"
8066         call=gethostname
8067 fi
8068 if set uname val -f d_uname; eval $csym; $val; then
8069         if ./xenix; then
8070                 $cat <<'EOM'
8071 uname() was found, but you're running xenix, and older versions of xenix
8072 have a broken uname(). If you don't really know whether your xenix is old
8073 enough to have a broken system call, use the default answer.
8074
8075 EOM
8076                 dflt=y
8077                 case "$d_uname" in
8078                 "$define") dflt=n;;
8079                 esac
8080                 rp='Is your uname() broken?'
8081                 . ./myread
8082                 case "$ans" in
8083                 n*) d_uname="$define"; call=uname;;
8084                 esac
8085         else
8086                 echo 'uname() found.' >&4
8087                 d_uname="$define"
8088                 case "$call" in
8089                 '') call=uname ;;
8090                 esac
8091         fi
8092 fi
8093 case "$d_gethname" in
8094 '') d_gethname="$undef";;
8095 esac
8096 case "$d_uname" in
8097 '') d_uname="$undef";;
8098 esac
8099 case "$d_uname$d_gethname" in
8100 *define*)
8101         dflt=n
8102         cat <<EOM
8103  
8104 Every now and then someone has a $call() that lies about the hostname
8105 but can't be fixed for political or economic reasons.  If you wish, I can
8106 pretend $call() isn't there and maybe compute hostname at run-time
8107 thanks to the '$phostname' command.
8108
8109 EOM
8110         rp="Shall I ignore $call() from now on?"
8111         . ./myread
8112         case "$ans" in
8113         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8114         esac;;
8115 esac
8116 case "$phostname" in
8117 '') aphostname='';;
8118 *) case "$aphostname" in
8119         /*) ;;
8120         *) set X $phostname
8121                 shift
8122                 file=$1
8123                 shift
8124                 file=`./loc $file $file $pth`
8125                 aphostname=`echo $file $*`
8126                 ;;
8127         esac
8128         ;;
8129 esac
8130 case "$d_uname$d_gethname" in
8131 *define*) ;;
8132 *)
8133         case "$phostname" in
8134         '')
8135                 echo "There will be no way for $package to get your hostname." >&4;;
8136         *)
8137         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8138                 ;;
8139         esac;;
8140 esac
8141 case "$d_phostname" in
8142 '') d_phostname="$undef";;
8143 esac
8144
8145 : see if this is a netdb.h system
8146 set netdb.h i_netdb
8147 eval $inhdr
8148
8149 : see if prototypes for various gethostxxx netdb.h functions are available
8150 echo " "
8151 set d_gethostprotos gethostent $i_netdb netdb.h
8152 eval $hasproto
8153
8154 : see if getlogin exists
8155 set getlogin d_getlogin
8156 eval $inlibc
8157
8158 : see if getmntent exists
8159 set getmntent d_getmntent
8160 eval $inlibc
8161
8162 : see if getnetbyaddr exists
8163 set getnetbyaddr d_getnbyaddr
8164 eval $inlibc
8165
8166 : see if getnetbyname exists
8167 set getnetbyname d_getnbyname
8168 eval $inlibc
8169
8170 : see if getnetent exists
8171 set getnetent d_getnent
8172 eval $inlibc
8173
8174 : see if prototypes for various getnetxxx netdb.h functions are available
8175 echo " "
8176 set d_getnetprotos getnetent $i_netdb netdb.h
8177 eval $hasproto
8178
8179
8180 : see if getprotobyname exists
8181 set getprotobyname d_getpbyname
8182 eval $inlibc
8183
8184 : see if getprotobynumber exists
8185 set getprotobynumber d_getpbynumber
8186 eval $inlibc
8187
8188 : see if getprotoent exists
8189 set getprotoent d_getpent
8190 eval $inlibc
8191
8192 : see if getpgid exists
8193 set getpgid d_getpgid
8194 eval $inlibc
8195
8196 : see if getpgrp2 exists
8197 set getpgrp2 d_getpgrp2
8198 eval $inlibc
8199
8200 : see if getppid exists
8201 set getppid d_getppid
8202 eval $inlibc
8203
8204 : see if getpriority exists
8205 set getpriority d_getprior
8206 eval $inlibc
8207
8208 : see if prototypes for various getprotoxxx netdb.h functions are available
8209 echo " "
8210 set d_getprotoprotos getprotoent $i_netdb netdb.h
8211 eval $hasproto
8212
8213 : see if getpwent exists
8214 set getpwent d_getpwent
8215 eval $inlibc
8216
8217
8218 : see if getservbyname exists
8219 set getservbyname d_getsbyname
8220 eval $inlibc
8221
8222 : see if getservbyport exists
8223 set getservbyport d_getsbyport
8224 eval $inlibc
8225
8226 : see if getservent exists
8227 set getservent d_getsent
8228 eval $inlibc
8229
8230 : see if prototypes for various getservxxx netdb.h functions are available
8231 echo " "
8232 set d_getservprotos getservent $i_netdb netdb.h
8233 eval $hasproto
8234
8235 : see if gettimeofday or ftime exists
8236 set gettimeofday d_gettimeod
8237 eval $inlibc
8238 case "$d_gettimeod" in
8239 "$undef")
8240         set ftime d_ftime 
8241         eval $inlibc
8242         ;;
8243 *)
8244         val="$undef"; set d_ftime; eval $setvar
8245         ;;
8246 esac
8247 case "$d_gettimeod$d_ftime" in
8248 "$undef$undef")
8249         echo " "
8250         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8251         ;;
8252 esac
8253
8254 : see if this is an grp system
8255 set grp.h i_grp
8256 eval $inhdr
8257
8258 case "$i_grp" in
8259 $define)
8260         xxx=`./findhdr grp.h`
8261         $cppstdin $cppflags $cppminus < $xxx >$$.h
8262
8263         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8264                 val="$define"
8265         else
8266                 val="$undef"
8267         fi
8268         set d_grpasswd
8269         eval $setvar
8270
8271         $rm -f $$.h
8272         ;;
8273 *)
8274         val="$undef";
8275         set d_grpasswd; eval $setvar
8276         ;;
8277 esac
8278
8279 : see if hasmntopt exists
8280 set hasmntopt d_hasmntopt
8281 eval $inlibc
8282
8283 : see if this is a netinet/in.h or sys/in.h system
8284 set netinet/in.h i_niin sys/in.h i_sysin
8285 eval $inhdr
8286
8287 : see if arpa/inet.h has to be included
8288 set arpa/inet.h i_arpainet
8289 eval $inhdr
8290
8291 : see if htonl --and friends-- exists
8292 val=''
8293 set htonl val
8294 eval $inlibc
8295
8296 : Maybe they are macros.
8297 case "$val" in
8298 $undef)
8299         $cat >htonl.c <<EOM
8300 #include <stdio.h>
8301 #include <sys/types.h>
8302 #$i_niin I_NETINET_IN
8303 #$i_sysin I_SYS_IN
8304 #$i_arpainet I_ARPA_INET
8305 #ifdef I_NETINET_IN
8306 #include <netinet/in.h>
8307 #endif
8308 #ifdef I_SYS_IN
8309 #include <sys/in.h>
8310 #endif
8311 #ifdef I_ARPA_INET
8312 #include <arpa/inet.h>
8313 #endif
8314 #ifdef htonl
8315 printf("Defined as a macro.");
8316 #endif
8317 EOM
8318         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8319         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8320                 val="$define"
8321                 echo "But it seems to be defined as a macro." >&4
8322         fi
8323         $rm -f htonl.?
8324         ;;
8325 esac
8326 set d_htonl
8327 eval $setvar
8328
8329 : see which of string.h or strings.h is needed
8330 echo " "
8331 strings=`./findhdr string.h`
8332 if $test "$strings" && $test -r "$strings"; then
8333         echo "Using <string.h> instead of <strings.h>." >&4
8334         val="$define"
8335 else
8336         val="$undef"
8337         strings=`./findhdr strings.h`
8338         if $test "$strings" && $test -r "$strings"; then
8339                 echo "Using <strings.h> instead of <string.h>." >&4
8340         else
8341                 echo "No string header found -- You'll surely have problems." >&4
8342         fi
8343 fi
8344 set i_string
8345 eval $setvar
8346 case "$i_string" in
8347 "$undef") strings=`./findhdr strings.h`;;
8348 *)        strings=`./findhdr string.h`;;
8349 esac
8350
8351 : index or strchr
8352 echo " "
8353 if set index val -f; eval $csym; $val; then
8354         if set strchr val -f d_strchr; eval $csym; $val; then
8355                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8356                         val="$define"
8357                         vali="$undef"
8358                         echo "strchr() found." >&4
8359                 else
8360                         val="$undef"
8361                         vali="$define"
8362                         echo "index() found." >&4
8363                 fi
8364         else
8365                 val="$undef"
8366                 vali="$define"
8367                 echo "index() found." >&4
8368         fi
8369 else
8370         if set strchr val -f d_strchr; eval $csym; $val; then
8371                 val="$define"
8372                 vali="$undef"
8373                 echo "strchr() found." >&4
8374         else
8375                 echo "No index() or strchr() found!" >&4
8376                 val="$undef"
8377                 vali="$undef"
8378         fi
8379 fi
8380 set d_strchr; eval $setvar
8381 val="$vali"
8382 set d_index; eval $setvar
8383
8384 : check whether inet_aton exists
8385 set inet_aton d_inetaton
8386 eval $inlibc
8387
8388 : see if inttypes.h is available
8389 : we want a real compile instead of Inhdr because some systems
8390 : have an inttypes.h which includes non-existent headers
8391 echo " "
8392 $cat >try.c <<EOCP
8393 #include <inttypes.h>
8394 int main() {
8395         static int32_t foo32 = 0x12345678;
8396 }
8397 EOCP
8398 set try
8399 if eval $compile; then
8400         echo "<inttypes.h> found." >&4
8401         val="$define"
8402 else
8403         echo "<inttypes.h> NOT found." >&4
8404         val="$undef"
8405 fi
8406 $rm -f try.c try
8407 set i_inttypes
8408 eval $setvar
8409
8410 : check for int64_t
8411 case "$use64bits" in
8412 "$define" )
8413         echo " "
8414         echo $n "Checking to see if your system supports int64_t...$c" >&4
8415         $cat >try.c <<EOCP
8416 #include <sys/types.h>
8417 #$i_inttypes I_INTTYPES
8418 #ifdef I_INTTYPES
8419 #include <inttypes.h>
8420 #endif
8421 int64_t foo() { int64_t x; x = 7; return x; }
8422 EOCP
8423         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8424                 val="$define"
8425                 echo " Yup, it does." >&4
8426         else
8427                 val="$undef"
8428                 echo " Nope, it doesn't." >&4
8429         fi
8430         $rm -f try.*
8431         ;;
8432 *)      val="$undef"
8433         ;;
8434 esac
8435 set d_int64t
8436 eval $setvar
8437
8438
8439 : Look for isascii
8440 echo " "
8441 $cat >isascii.c <<'EOCP'
8442 #include <stdio.h>
8443 #include <ctype.h>
8444 int main() {
8445         int c = 'A';
8446         if (isascii(c))
8447                 exit(0);
8448         else
8449                 exit(1);
8450 }
8451 EOCP
8452 set isascii
8453 if eval $compile; then
8454         echo "isascii() found." >&4
8455         val="$define"
8456 else
8457         echo "isascii() NOT found." >&4
8458         val="$undef"
8459 fi
8460 set d_isascii
8461 eval $setvar
8462 $rm -f isascii*
8463
8464 : see if killpg exists
8465 set killpg d_killpg
8466 eval $inlibc
8467
8468 : see if lchown exists
8469 echo " "
8470 $cat > try.c <<'EOCP'
8471 /* System header to define __stub macros and hopefully few prototypes,
8472     which can conflict with char lchown(); below.  */
8473 #include <assert.h>
8474 /* Override any gcc2 internal prototype to avoid an error.  */
8475 /* We use char because int might match the return type of a gcc2
8476    builtin and then its argument prototype would still apply.  */
8477 char lchown();
8478 int main() {
8479     /*  The GNU C library defines this for functions which it implements
8480         to always fail with ENOSYS.  Some functions are actually named
8481         something starting with __ and the normal name is an alias.  */
8482 #if defined (__stub_lchown) || defined (__stub___lchown)
8483 choke me
8484 #else
8485 lchown();
8486 #endif
8487 ; return 0; }
8488 EOCP
8489 set try
8490 if eval $compile; then
8491     $echo "lchown() found." >&4
8492     val="$define"
8493 else
8494     $echo "lchown() NOT found." >&4
8495     val="$undef"
8496 fi
8497 set d_lchown
8498 eval $setvar
8499
8500 : see if link exists
8501 set link d_link
8502 eval $inlibc
8503
8504 : see if localeconv exists
8505 set localeconv d_locconv
8506 eval $inlibc
8507
8508 : see if lockf exists
8509 set lockf d_lockf
8510 eval $inlibc
8511
8512 : check for length of double
8513 echo " "
8514 case "$doublesize" in
8515 '')
8516         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8517         $cat >try.c <<'EOCP'
8518 #include <stdio.h>
8519 int main()
8520 {
8521         printf("%d\n", sizeof(double));
8522 }
8523 EOCP
8524         set try
8525         if eval $compile_ok; then
8526                 doublesize=`./try`
8527                 $echo " $doublesize bytes." >&4
8528         else
8529                 dflt='8'
8530                 echo "(I can't seem to compile the test program.  Guessing...)"
8531                 rp="What is the size of a double precision number (in bytes)?"
8532                 . ./myread
8533                 doublesize="$ans"
8534         fi
8535         ;;
8536 esac
8537 $rm -f try.c try
8538
8539 : check for long doubles
8540 echo " "
8541 echo $n "Checking to see if your system supports long doubles...$c" >&4
8542 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8543 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8544         val="$define"
8545         echo " Yup, it does." >&4
8546 else
8547         val="$undef"
8548         echo " Nope, it doesn't." >&4
8549 fi
8550 $rm try.*
8551 set d_longdbl
8552 eval $setvar
8553
8554 : check for length of long double
8555 case "${d_longdbl}${longdblsize}" in
8556 $define)
8557         echo " "
8558         $echo $n "Checking to see how big your long doubles are...$c" >&4
8559         $cat >try.c <<'EOCP'
8560 #include <stdio.h>
8561 int main()
8562 {
8563         printf("%d\n", sizeof(long double));
8564 }
8565 EOCP
8566         set try
8567         if eval $compile; then
8568                 longdblsize=`./try`
8569                 $echo " $longdblsize bytes." >&4
8570         else
8571                 dflt='8'
8572                 echo " "
8573                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8574                 rp="What is the size of a long double (in bytes)?"
8575                 . ./myread
8576                 longdblsize="$ans"
8577         fi
8578         if $test "X$doublesize" = "X$longdblsize"; then
8579                 echo "(That isn't any different from an ordinary double.)"
8580         fi      
8581         ;;
8582 esac
8583 $rm -f try.c try
8584
8585 : check for long long
8586 echo " "
8587 echo $n "Checking to see if your system supports long long...$c" >&4
8588 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8589 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8590         val="$define"
8591         echo " Yup, it does." >&4
8592 else
8593         val="$undef"
8594         echo " Nope, it doesn't." >&4
8595 fi
8596 $rm try.*
8597 set d_longlong
8598 eval $setvar
8599
8600 : check for length of long long
8601 case "${d_longlong}${longlongsize}" in
8602 $define)
8603         echo " "
8604         $echo $n "Checking to see how big your long longs are...$c" >&4
8605         $cat >try.c <<'EOCP'
8606 #include <stdio.h>
8607 int main()
8608 {
8609         printf("%d\n", sizeof(long long));
8610 }
8611 EOCP
8612         set try
8613         if eval $compile_ok; then
8614                 longlongsize=`./try`
8615                 $echo " $longlongsize bytes." >&4
8616         else
8617                 dflt='8'
8618                 echo " "
8619                 echo "(I can't seem to compile the test program.  Guessing...)"
8620                 rp="What is the size of a long long (in bytes)?"
8621                 . ./myread
8622                 longlongsize="$ans"
8623         fi
8624         if $test "X$longsize" = "X$longlongsize"; then
8625                 echo "(That isn't any different from an ordinary long.)"
8626         fi      
8627         ;;
8628 esac
8629 $rm -f try.c try
8630
8631 : see if lstat exists
8632 set lstat d_lstat
8633 eval $inlibc
8634
8635 : see if madvise exists
8636 set madvise d_madvise
8637 eval $inlibc
8638
8639 : see if mblen exists
8640 set mblen d_mblen
8641 eval $inlibc
8642
8643 : see if mbstowcs exists
8644 set mbstowcs d_mbstowcs
8645 eval $inlibc
8646
8647 : see if mbtowc exists
8648 set mbtowc d_mbtowc
8649 eval $inlibc
8650
8651 : see if memcmp exists
8652 set memcmp d_memcmp
8653 eval $inlibc
8654
8655 : see if memcpy exists
8656 set memcpy d_memcpy
8657 eval $inlibc
8658
8659 : see if memmove exists
8660 set memmove d_memmove
8661 eval $inlibc
8662
8663 : see if memset exists
8664 set memset d_memset
8665 eval $inlibc
8666
8667 : see if mkdir exists
8668 set mkdir d_mkdir
8669 eval $inlibc
8670
8671 : see if mkfifo exists
8672 set mkfifo d_mkfifo
8673 eval $inlibc
8674
8675 : see if mktime exists
8676 set mktime d_mktime
8677 eval $inlibc
8678
8679 : see if this is a sys/mman.h system
8680 set sys/mman.h i_sysmman
8681 eval $inhdr
8682
8683 : see if mmap exists
8684 set mmap d_mmap
8685 eval $inlibc
8686 : see what shmat returns
8687 : default to something harmless
8688 mmaptype='void *'
8689 case "$i_sysmman$d_mmap" in
8690 "$define$define")
8691         $cat >mmap.c <<'END'
8692 #include <sys/mman.h>
8693 void *mmap();
8694 END
8695         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8696                 mmaptype='void *'
8697         else
8698                 mmaptype='caddr_t'
8699         fi
8700         echo "and it returns ($mmaptype)." >&4
8701         ;;
8702 esac
8703
8704
8705
8706 : see if mprotect exists
8707 set mprotect d_mprotect
8708 eval $inlibc
8709
8710 : see if msgctl exists
8711 set msgctl d_msgctl
8712 eval $inlibc
8713
8714 : see if msgget exists
8715 set msgget d_msgget
8716 eval $inlibc
8717
8718 : see if msgsnd exists
8719 set msgsnd d_msgsnd
8720 eval $inlibc
8721
8722 : see if msgrcv exists
8723 set msgrcv d_msgrcv
8724 eval $inlibc
8725
8726 : see how much of the 'msg*(2)' library is present.
8727 h_msg=true
8728 echo " "
8729 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8730 *"$undef"*) h_msg=false;;
8731 esac
8732 case "$osname" in
8733 freebsd)
8734     case "`ipcs 2>&1`" in
8735     "SVID messages"*"not configured"*)
8736         echo "Your $osname does not have the msg*(2) configured." >&4
8737         h_msg=false
8738         val="$undef"
8739         set msgctl d_msgctl
8740         eval $setvar
8741         set msgget d_msgget
8742         eval $setvar
8743         set msgsnd d_msgsnd
8744         eval $setvar
8745         set msgrcv d_msgrcv
8746         eval $setvar
8747         ;;
8748     esac
8749     ;;
8750 esac
8751 : we could also check for sys/ipc.h ...
8752 if $h_msg && $test `./findhdr sys/msg.h`; then
8753         echo "You have the full msg*(2) library." >&4
8754         val="$define"
8755 else
8756         echo "You don't have the full msg*(2) library." >&4
8757         val="$undef"
8758 fi
8759 set d_msg
8760 eval $setvar
8761
8762 : see if msync exists
8763 set msync d_msync
8764 eval $inlibc
8765
8766 : see if munmap exists
8767 set munmap d_munmap
8768 eval $inlibc
8769
8770 : see if nice exists
8771 set nice d_nice
8772 eval $inlibc
8773
8774 : see if POSIX threads are available
8775 if test "X$usethreads" = "X$define"; then
8776         set pthread.h i_pthread
8777         eval $inhdr
8778 else
8779         i_pthread="$undef"
8780 fi
8781
8782
8783
8784 : how to create joinable pthreads
8785 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
8786         echo " "
8787         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8788         $cat >try.c <<'EOCP'
8789 #include <pthread.h>
8790 int main() {
8791     int detachstate = JOINABLE;
8792 }
8793 EOCP
8794         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8795         if eval $compile; then
8796                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
8797                 val="$undef" # Yes, undef.
8798                 set d_old_pthread_create_joinable
8799                 eval $setvar
8800                 val=""
8801                 set old_pthread_create_joinable
8802                 eval $setvar
8803         else
8804                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8805                 if eval $compile; then
8806                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
8807                         val="$define"
8808                         set d_old_pthread_create_joinable
8809                         eval $setvar
8810                         val=PTHREAD_CREATE_UNDETACHED
8811                         set old_pthread_create_joinable
8812                         eval $setvar
8813                 else            
8814                         set try -DJOINABLE=__UNDETACHED
8815                         if eval $compile; then
8816                                 echo "You seem to use __UNDETACHED." >&4
8817                                 val="$define"
8818                                 set d_old_pthread_create_joinable
8819                                 eval $setvar
8820                                 val=__UNDETACHED
8821                                 set old_pthread_create_joinable
8822                                 eval $setvar
8823                         else
8824                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
8825                                 val="$define"
8826                                 set d_old_pthread_create_joinable
8827                                 eval $setvar
8828                                 val=0
8829                                 set old_pthread_create_joinable
8830                                 eval $setvar
8831                         fi
8832                 fi
8833         fi
8834         $rm -f try try.*
8835 else
8836     d_old_pthread_create_joinable="$undef"
8837     old_pthread_create_joinable=""
8838 fi
8839
8840 : see if pause exists
8841 set pause d_pause
8842 eval $inlibc
8843
8844 : see if pipe exists
8845 set pipe d_pipe
8846 eval $inlibc
8847
8848 : see if poll exists
8849 set poll d_poll
8850 eval $inlibc
8851
8852
8853 : see whether the various POSIXish _yields exist
8854 $cat >try.c <<EOP
8855 #include <pthread.h>
8856 #include <stdio.h>
8857 int main() {
8858 #ifdef SCHED_YIELD
8859         sched_yield();
8860 #else
8861 #ifdef PTHREAD_YIELD
8862         pthread_yield();
8863 #else
8864 #ifdef PTHREAD_YIELD_NULL
8865         pthread_yield(NULL);
8866 #endif
8867 #endif
8868 #endif
8869 }
8870 EOP
8871 : see if sched_yield exists
8872 set try -DSCHED_YIELD
8873 if eval $compile; then
8874     val="$define"
8875     sched_yield='sched_yield()'
8876 else
8877     val="$undef"
8878 fi
8879 case "$usethreads" in
8880 $define)
8881         case "$val" in
8882         $define) echo 'sched_yield() found.' >&4        ;;
8883         *)       echo 'sched_yield() NOT found.' >&4    ;;
8884         esac
8885 esac
8886 set d_sched_yield
8887 eval $setvar
8888
8889 : see if pthread_yield exists
8890 set try -DPTHREAD_YIELD
8891 if eval $compile; then
8892     val="$define"
8893     case "$sched_yield" in
8894     '') sched_yield='pthread_yield()' ;;
8895     esac
8896 else
8897     set try -DPTHREAD_YIELD_NULL
8898     if eval $compile; then
8899         val="$define"
8900         case "$sched_yield" in
8901         '') sched_yield='pthread_yield(NULL)' ;;
8902         esac
8903     else
8904         val="$undef"
8905     fi
8906 fi
8907 case "$usethreads" in
8908 $define)
8909         case "$val" in
8910         $define) echo 'pthread_yield() found.' >&4      ;;
8911         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8912         esac
8913         ;;
8914 esac
8915 set d_pthread_yield
8916 eval $setvar
8917
8918 case "$sched_yield" in
8919 '') sched_yield=undef ;;
8920 esac
8921
8922 $rm -f try try.*
8923
8924 : see if this is a pwd.h system
8925 set pwd.h i_pwd
8926 eval $inhdr
8927
8928 case "$i_pwd" in
8929 $define)
8930         xxx=`./findhdr pwd.h`
8931         $cppstdin $cppflags $cppminus < $xxx >$$.h
8932
8933         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8934                 val="$define"
8935         else
8936                 val="$undef"
8937         fi
8938         set d_pwquota
8939         eval $setvar
8940
8941         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8942                 val="$define"
8943         else
8944                 val="$undef"
8945         fi
8946         set d_pwage
8947         eval $setvar
8948
8949         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8950                 val="$define"
8951         else
8952                 val="$undef"
8953         fi
8954         set d_pwchange
8955         eval $setvar
8956
8957         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8958                 val="$define"
8959         else
8960                 val="$undef"
8961         fi
8962         set d_pwclass
8963         eval $setvar
8964
8965         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8966                 val="$define"
8967         else
8968                 val="$undef"
8969         fi
8970         set d_pwexpire
8971         eval $setvar
8972
8973         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8974                 val="$define"
8975         else
8976                 val="$undef"
8977         fi
8978         set d_pwcomment
8979         eval $setvar
8980
8981         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8982                 val="$define"
8983         else
8984                 val="$undef"
8985         fi
8986         set d_pwgecos
8987         eval $setvar
8988
8989         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8990                 val="$define"
8991         else
8992                 val="$undef"
8993         fi
8994         set d_pwpasswd
8995         eval $setvar
8996
8997         $rm -f $$.h
8998         ;;
8999 *)
9000         val="$undef"; 
9001         set d_pwquota; eval $setvar
9002         set d_pwage; eval $setvar
9003         set d_pwchange; eval $setvar
9004         set d_pwclass; eval $setvar
9005         set d_pwexpire; eval $setvar
9006         set d_pwcomment; eval $setvar
9007         set d_pwgecos; eval $setvar
9008         set d_pwpasswd; eval $setvar
9009         ;;
9010 esac
9011
9012 : see if readdir and friends exist
9013 set readdir d_readdir
9014 eval $inlibc
9015 set seekdir d_seekdir
9016 eval $inlibc
9017 set telldir d_telldir
9018 eval $inlibc
9019 set rewinddir d_rewinddir
9020 eval $inlibc
9021
9022 : see if readlink exists
9023 set readlink d_readlink
9024 eval $inlibc
9025
9026 : see if readv exists
9027 set readv d_readv
9028 eval $inlibc
9029
9030 : see if rename exists
9031 set rename d_rename
9032 eval $inlibc
9033
9034 : see if rmdir exists
9035 set rmdir d_rmdir
9036 eval $inlibc
9037
9038 : see if memory.h is available.
9039 val=''
9040 set memory.h val
9041 eval $inhdr
9042
9043 : See if it conflicts with string.h
9044 case "$val" in
9045 $define)
9046         case "$strings" in
9047         '') ;;
9048         *)
9049                 $cppstdin $cppflags $cppminus < $strings > mem.h
9050                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9051                         echo " "
9052                         echo "We won't be including <memory.h>."
9053                         val="$undef"
9054                 fi
9055                 $rm -f mem.h
9056                 ;;
9057         esac
9058 esac
9059 set i_memory
9060 eval $setvar
9061
9062 : can bcopy handle overlapping blocks?
9063 val="$undef"
9064 case "$d_bcopy" in
9065 "$define")
9066         echo " "
9067         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9068         $cat >try.c <<EOCP
9069 #$i_memory I_MEMORY
9070 #$i_stdlib I_STDLIB
9071 #$i_string I_STRING
9072 #$i_unistd I_UNISTD
9073 EOCP
9074         $cat >>try.c <<'EOCP'
9075 #include <stdio.h>
9076 #ifdef I_MEMORY
9077 #  include <memory.h>
9078 #endif
9079 #ifdef I_STDLIB
9080 #  include <stdlib.h>
9081 #endif
9082 #ifdef I_STRING
9083 #  include <string.h>
9084 #else
9085 #  include <strings.h>
9086 #endif
9087 #ifdef I_UNISTD
9088 #  include <unistd.h>  /* Needed for NetBSD */
9089 #endif
9090 int main()
9091 {
9092 char buf[128], abc[128];
9093 char *b;
9094 int len;
9095 int off;
9096 int align;
9097
9098 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9099
9100 for (align = 7; align >= 0; align--) {
9101         for (len = 36; len; len--) {
9102                 b = buf+align;
9103                 bcopy(abc, b, len);
9104                 for (off = 1; off <= len; off++) {
9105                         bcopy(b, b+off, len);
9106                         bcopy(b+off, b, len);
9107                         if (bcmp(b, abc, len))
9108                                 exit(1);
9109                 }
9110         }
9111 }
9112 exit(0);
9113 }
9114 EOCP
9115         set try
9116         if eval $compile_ok; then
9117                 if ./try 2>/dev/null; then
9118                         echo "Yes, it can."
9119                         val="$define"
9120                 else
9121                         echo "It can't, sorry."
9122                         case "$d_memmove" in
9123                         "$define") echo "But that's Ok since you have memmove()." ;;
9124                         esac
9125                 fi
9126         else
9127                 echo "(I can't compile the test program, so we'll assume not...)"
9128                 case "$d_memmove" in
9129                 "$define") echo "But that's Ok since you have memmove()." ;;
9130                 esac
9131         fi
9132         ;;
9133 esac
9134 $rm -f try.* try core
9135 set d_safebcpy
9136 eval $setvar
9137
9138 : can memcpy handle overlapping blocks?
9139 val="$undef"
9140 case "$d_memcpy" in
9141 "$define")
9142         echo " "
9143         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9144         $cat >try.c <<EOCP
9145 #$i_memory I_MEMORY
9146 #$i_stdlib I_STDLIB
9147 #$i_string I_STRING
9148 #$i_unistd I_UNISTD
9149 EOCP
9150         $cat >>try.c <<'EOCP'
9151 #include <stdio.h>
9152 #ifdef I_MEMORY
9153 #  include <memory.h>
9154 #endif
9155 #ifdef I_STDLIB
9156 #  include <stdlib.h>
9157 #endif
9158 #ifdef I_STRING
9159 #  include <string.h>
9160 #else
9161 #  include <strings.h>
9162 #endif
9163 #ifdef I_UNISTD
9164 #  include <unistd.h>  /* Needed for NetBSD */
9165 #endif
9166 int main()
9167 {
9168 char buf[128], abc[128];
9169 char *b;
9170 int len;
9171 int off;
9172 int align;
9173
9174 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9175    try to store the string in read-only memory. */
9176 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9177
9178 for (align = 7; align >= 0; align--) {
9179         for (len = 36; len; len--) {
9180                 b = buf+align;
9181                 memcpy(b, abc, len);
9182                 for (off = 1; off <= len; off++) {
9183                         memcpy(b+off, b, len);
9184                         memcpy(b, b+off, len);
9185                         if (memcmp(b, abc, len))
9186                                 exit(1);
9187                 }
9188         }
9189 }
9190 exit(0);
9191 }
9192 EOCP
9193         set try
9194         if eval $compile_ok; then
9195                 if ./try 2>/dev/null; then
9196                         echo "Yes, it can."
9197                         val="$define"
9198                 else
9199                         echo "It can't, sorry."
9200                         case "$d_memmove" in
9201                         "$define") echo "But that's Ok since you have memmove()." ;;
9202                         esac
9203                 fi
9204         else
9205                 echo "(I can't compile the test program, so we'll assume not...)"
9206                 case "$d_memmove" in
9207                 "$define") echo "But that's Ok since you have memmove()." ;;
9208                 esac
9209         fi
9210         ;;
9211 esac
9212 $rm -f try.* try core
9213 set d_safemcpy
9214 eval $setvar
9215
9216 : can memcmp be trusted to compare relative magnitude?
9217 val="$undef"
9218 case "$d_memcmp" in
9219 "$define")
9220         echo " "
9221         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9222         $cat >try.c <<EOCP
9223 #$i_memory I_MEMORY
9224 #$i_stdlib I_STDLIB
9225 #$i_string I_STRING
9226 #$i_unistd I_UNISTD
9227 EOCP
9228         $cat >>try.c <<'EOCP'
9229 #include <stdio.h>
9230 #ifdef I_MEMORY
9231 #  include <memory.h>
9232 #endif
9233 #ifdef I_STDLIB
9234 #  include <stdlib.h>
9235 #endif
9236 #ifdef I_STRING
9237 #  include <string.h>
9238 #else
9239 #  include <strings.h>
9240 #endif
9241 #ifdef I_UNISTD
9242 #  include <unistd.h>  /* Needed for NetBSD */
9243 #endif
9244 int main()
9245 {
9246 char a = -1;
9247 char b = 0;
9248 if ((a < b) && memcmp(&a, &b, 1) < 0)
9249         exit(1);
9250 exit(0);
9251 }
9252 EOCP
9253         set try
9254         if eval $compile_ok; then
9255                 if ./try 2>/dev/null; then
9256                         echo "Yes, it can."
9257                         val="$define"
9258                 else
9259                         echo "No, it can't (it uses signed chars)."
9260                 fi
9261         else
9262                 echo "(I can't compile the test program, so we'll assume not...)"
9263         fi
9264         ;;
9265 esac
9266 $rm -f try.* try core
9267 set d_sanemcmp
9268 eval $setvar
9269
9270 : see if select exists
9271 set select d_select
9272 eval $inlibc
9273
9274 : see if semctl exists
9275 set semctl d_semctl
9276 eval $inlibc
9277
9278 : see if semget exists
9279 set semget d_semget
9280 eval $inlibc
9281
9282 : see if semop exists
9283 set semop d_semop
9284 eval $inlibc
9285
9286 : see how much of the 'sem*(2)' library is present.
9287 h_sem=true
9288 echo " "
9289 case "$d_semctl$d_semget$d_semop" in
9290 *"$undef"*) h_sem=false;;
9291 esac
9292 case "$osname" in
9293 freebsd)
9294     case "`ipcs 2>&1`" in
9295     "SVID messages"*"not configured"*)
9296         echo "Your $osname does not have the sem*(2) configured." >&4
9297         h_sem=false
9298         val="$undef"
9299         set semctl d_semctl
9300         eval $setvar
9301         set semget d_semget
9302         eval $setvar
9303         set semop d_semop
9304         eval $setvar
9305         ;;
9306     esac
9307     ;;
9308 esac
9309 : we could also check for sys/ipc.h ...
9310 if $h_sem && $test `./findhdr sys/sem.h`; then
9311         echo "You have the full sem*(2) library." >&4
9312         val="$define"
9313 else
9314         echo "You don't have the full sem*(2) library." >&4
9315         val="$undef"
9316 fi
9317 set d_sem
9318 eval $setvar
9319
9320 : see whether sys/sem.h defines union semun
9321 echo " "
9322 $cat > try.c <<'END'
9323 #include <sys/types.h>
9324 #include <sys/ipc.h>
9325 #include <sys/sem.h>
9326 int main () { union semun semun; semun.buf = 0; }
9327 END
9328 set try
9329 if eval $compile; then
9330     echo "You have union semun in <sys/sem.h>." >&4
9331     val="$define"
9332 else
9333     echo "You do not have union semun in <sys/sem.h>." >&4
9334     val="$undef"
9335 fi
9336 $rm -f try try.c try.h
9337 set d_union_semun
9338 eval $setvar
9339
9340 : see how to do semctl IPC_STAT
9341 case "$d_sem" in
9342 $define)
9343     : see whether semctl IPC_STAT can use union semun
9344     echo " "
9345     $cat > try.h <<END
9346 #ifndef S_IRUSR
9347 #   ifdef S_IREAD
9348 #       define S_IRUSR S_IREAD
9349 #       define S_IWUSR S_IWRITE
9350 #       define S_IXUSR S_IEXEC
9351 #   else
9352 #       define S_IRUSR 0400
9353 #       define S_IWUSR 0200
9354 #       define S_IXUSR 0100
9355 #   endif
9356 #   define S_IRGRP (S_IRUSR>>3)
9357 #   define S_IWGRP (S_IWUSR>>3)
9358 #   define S_IXGRP (S_IXUSR>>3)
9359 #   define S_IROTH (S_IRUSR>>6)
9360 #   define S_IWOTH (S_IWUSR>>6)
9361 #   define S_IXOTH (S_IXUSR>>6)
9362 #endif
9363 #ifndef S_IRWXU
9364 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9365 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9366 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9367 #endif
9368 END
9369
9370     $cat > try.c <<END
9371 #include <sys/types.h>
9372 #include <sys/ipc.h>
9373 #include <sys/sem.h>
9374 #include <sys/stat.h>
9375 #include <stdio.h>
9376 #include <errno.h>
9377 #include "try.h"
9378 #ifndef errno
9379 extern int errno;
9380 #endif
9381 #$d_union_semun HAS_UNION_SEMUN
9382 int main() {
9383     union semun
9384 #ifndef HAS_UNION_SEMUN
9385     {
9386         int val;
9387         struct semid_ds *buf;
9388         unsigned short *array;
9389     }
9390 #endif
9391     arg;
9392     int sem, st;
9393
9394 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9395     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9396     if (sem > -1) {
9397         struct semid_ds argbuf;
9398         arg.buf = &argbuf;
9399 #       ifdef IPC_STAT
9400         st = semctl(sem, 0, IPC_STAT, arg);
9401         if (st == 0)
9402             printf("semun\n");
9403         else
9404 #       endif /* IPC_STAT */
9405             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9406 #       ifdef IPC_RMID
9407         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9408 #       endif /* IPC_RMID */
9409             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9410     } else
9411 #endif /* IPC_PRIVATE && ... */
9412         printf("semget failed: errno = %d\n", errno);
9413   return 0;
9414 }
9415 END
9416     val="$undef"
9417     set try
9418     if eval $compile; then
9419         xxx=`./try`
9420         case "$xxx" in
9421         semun) val="$define" ;;
9422         esac
9423     fi
9424     $rm -f try try.c
9425     set d_semctl_semun
9426     eval $setvar
9427     case "$d_semctl_semun" in
9428     $define)
9429         echo "You can use union semun for semctl IPC_STAT." >&4
9430         also='also'
9431         ;;
9432     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9433         also=''
9434         ;;
9435     esac
9436
9437     : see whether semctl IPC_STAT can use struct semid_ds pointer
9438     $cat > try.c <<'END'
9439 #include <sys/types.h>
9440 #include <sys/ipc.h>
9441 #include <sys/sem.h>
9442 #include <sys/stat.h>
9443 #include "try.h"
9444 #include <stdio.h>
9445 #include <errno.h>
9446 #ifndef errno
9447 extern int errno;
9448 #endif
9449 int main() {
9450     struct semid_ds arg;
9451     int sem, st;
9452
9453 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9454     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9455     if (sem > -1) {
9456 #       ifdef IPC_STAT
9457         st = semctl(sem, 0, IPC_STAT, &arg);
9458         if (st == 0)
9459             printf("semid_ds\n");
9460         else
9461 #       endif /* IPC_STAT */
9462             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9463 #       ifdef IPC_RMID
9464         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9465 #       endif /* IPC_RMID */
9466             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9467     } else
9468 #endif /* IPC_PRIVATE && ... */
9469         printf("semget failed: errno = %d\n", errno);
9470
9471     return 0;
9472 }
9473 END
9474     val="$undef"
9475     set try
9476     if eval $compile; then
9477         xxx=`./try`
9478         case "$xxx" in
9479         semid_ds) val="$define" ;;
9480         esac
9481     fi
9482     $rm -f try try.c
9483     set d_semctl_semid_ds
9484     eval $setvar
9485     case "$d_semctl_semid_ds" in
9486     $define)
9487         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9488         ;;
9489     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9490         ;;
9491     esac
9492     $rm -f try.h
9493     ;;
9494 *)  val="$undef"
9495
9496     # We do not have the full sem*(2) library, so assume we can not
9497     # use either.
9498
9499     set d_semctl_semun
9500     eval $setvar
9501
9502     set d_semctl_semid_ds
9503     eval $setvar
9504     ;;
9505 esac
9506
9507 : see if setegid exists
9508 set setegid d_setegid
9509 eval $inlibc
9510
9511 : see if seteuid exists
9512 set seteuid d_seteuid
9513 eval $inlibc
9514
9515 : see if setgrent exists
9516 set setgrent d_setgrent
9517 eval $inlibc
9518
9519 : see if sethostent exists
9520 set sethostent d_sethent
9521 eval $inlibc
9522
9523 : see if setlinebuf exists
9524 set setlinebuf d_setlinebuf
9525 eval $inlibc
9526
9527 : see if setlocale exists
9528 set setlocale d_setlocale
9529 eval $inlibc
9530
9531 : see if setnetent exists
9532 set setnetent d_setnent
9533 eval $inlibc
9534
9535 : see if setprotoent exists
9536 set setprotoent d_setpent
9537 eval $inlibc
9538
9539 : see if setpgid exists
9540 set setpgid d_setpgid
9541 eval $inlibc
9542
9543 : see if setpgrp2 exists
9544 set setpgrp2 d_setpgrp2
9545 eval $inlibc
9546
9547 : see if setpriority exists
9548 set setpriority d_setprior
9549 eval $inlibc
9550
9551 : see if setpwent exists
9552 set setpwent d_setpwent
9553 eval $inlibc
9554
9555 : see if setregid exists
9556 set setregid d_setregid
9557 eval $inlibc
9558 set setresgid d_setresgid
9559 eval $inlibc
9560
9561 : see if setreuid exists
9562 set setreuid d_setreuid
9563 eval $inlibc
9564 set setresuid d_setresuid
9565 eval $inlibc
9566
9567 : see if setrgid exists
9568 set setrgid d_setrgid
9569 eval $inlibc
9570
9571 : see if setruid exists
9572 set setruid d_setruid
9573 eval $inlibc
9574
9575 : see if setservent exists
9576 set setservent d_setsent
9577 eval $inlibc
9578
9579 : see if setsid exists
9580 set setsid d_setsid
9581 eval $inlibc
9582
9583 : see if setvbuf exists
9584 set setvbuf d_setvbuf
9585 eval $inlibc
9586
9587 : see if sfio.h is available
9588 set sfio.h i_sfio
9589 eval $inhdr
9590
9591
9592 : see if sfio library is available
9593 case "$i_sfio" in
9594 $define)
9595         val=''
9596         set sfreserve val
9597         eval $inlibc
9598         ;;
9599 *)
9600         val="$undef"
9601         ;;
9602 esac
9603 : Ok, but do we want to use it.
9604 case "$val" in
9605 $define)
9606         case "$usesfio" in
9607         true|$define|[yY]*) dflt='y';;
9608         *) dflt='n';;
9609         esac
9610         echo "$package can use the sfio library, but it is experimental."
9611         rp="You seem to have sfio available, do you want to try using it?"
9612         . ./myread
9613         case "$ans" in
9614         y|Y) ;;
9615         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9616                 val="$undef"
9617                 : Remove sfio from list of libraries to use
9618                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9619                 shift
9620                 libs="$*"
9621                 echo "libs = $libs" >&4
9622                 ;;
9623         esac
9624         ;;
9625 *)      case "$usesfio" in
9626         true|$define|[yY]*)
9627                 echo "Sorry, cannot find sfio on this machine" >&4
9628                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9629                 ;;
9630         esac
9631         ;;
9632 esac
9633 set d_sfio
9634 eval $setvar
9635 case "$d_sfio" in
9636 $define) usesfio='true';;
9637 *) usesfio='false';;
9638 esac
9639
9640 : see if shmctl exists
9641 set shmctl d_shmctl
9642 eval $inlibc
9643
9644 : see if shmget exists
9645 set shmget d_shmget
9646 eval $inlibc
9647
9648 : see if shmat exists
9649 set shmat d_shmat
9650 eval $inlibc
9651 : see what shmat returns
9652 case "$d_shmat" in
9653 "$define")
9654         $cat >shmat.c <<'END'
9655 #include <sys/shm.h>
9656 void *shmat();
9657 END
9658         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9659                 shmattype='void *'
9660         else
9661                 shmattype='char *'
9662         fi
9663         echo "and it returns ($shmattype)." >&4
9664         : see if a prototype for shmat is available
9665         xxx=`./findhdr sys/shm.h`
9666         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9667         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9668                 val="$define"
9669         else
9670                 val="$undef"
9671         fi
9672         $rm -f shmat.[co]
9673         ;;
9674 *)
9675         val="$undef"
9676         ;;
9677 esac
9678 set d_shmatprototype
9679 eval $setvar
9680
9681 : see if shmdt exists
9682 set shmdt d_shmdt
9683 eval $inlibc
9684
9685 : see how much of the 'shm*(2)' library is present.
9686 h_shm=true
9687 echo " "
9688 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9689 *"$undef"*) h_shm=false;;
9690 esac
9691 case "$osname" in
9692 freebsd)
9693     case "`ipcs 2>&1`" in
9694     "SVID shared memory"*"not configured"*)
9695         echo "Your $osname does not have the shm*(2) configured." >&4
9696         h_shm=false
9697         val="$undef"
9698         set shmctl d_shmctl
9699         evat $setvar
9700         set shmget d_shmget
9701         evat $setvar
9702         set shmat d_shmat
9703         evat $setvar
9704         set shmdt d_shmdt
9705         evat $setvar
9706         ;;
9707     esac
9708     ;;
9709 esac
9710 : we could also check for sys/ipc.h ...
9711 if $h_shm && $test `./findhdr sys/shm.h`; then
9712         echo "You have the full shm*(2) library." >&4
9713         val="$define"
9714 else
9715         echo "You don't have the full shm*(2) library." >&4
9716         val="$undef"
9717 fi
9718 set d_shm
9719 eval $setvar
9720
9721 echo " "
9722 : see if we have sigaction
9723 if set sigaction val -f d_sigaction; eval $csym; $val; then
9724         echo 'sigaction() found.' >&4
9725         $cat > try.c <<'EOP'
9726 #include <stdio.h>
9727 #include <sys/types.h>
9728 #include <signal.h>
9729 int main()
9730 {
9731     struct sigaction act, oact;
9732 }
9733 EOP
9734         set try
9735         if eval $compile_ok; then
9736                 val="$define"
9737         else
9738                 echo "But you don't seem to have a useable struct sigaction." >&4
9739                 val="$undef"
9740         fi
9741 else
9742         echo 'sigaction NOT found.' >&4
9743         val="$undef"
9744 fi
9745 set d_sigaction; eval $setvar
9746 $rm -f try try$_o try.c
9747
9748 : see if sigsetjmp exists
9749 echo " "
9750 case "$d_sigsetjmp" in
9751 '')
9752         $cat >try.c <<'EOP'
9753 #include <setjmp.h>
9754 sigjmp_buf env;
9755 int set = 1;
9756 int main()
9757 {
9758         if (sigsetjmp(env,1))
9759                 exit(set);
9760         set = 0;
9761         siglongjmp(env, 1);
9762         exit(1);
9763 }
9764 EOP
9765         set try
9766         if eval $compile; then
9767                 if ./try >/dev/null 2>&1; then
9768                         echo "POSIX sigsetjmp found." >&4
9769                         val="$define"
9770                 else
9771                         $cat >&4 <<EOM
9772 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9773 I'll ignore them.
9774 EOM
9775                         val="$undef"
9776                 fi
9777         else
9778                 echo "sigsetjmp not found." >&4
9779                 val="$undef"
9780         fi
9781         ;;
9782 *) val="$d_sigsetjmp"
9783         case "$d_sigsetjmp" in
9784         $define) echo "POSIX sigsetjmp found." >&4;;
9785         $undef) echo "sigsetjmp not found." >&4;;
9786         esac
9787         ;;
9788 esac
9789 set d_sigsetjmp
9790 eval $setvar
9791 $rm -f try.c try
9792
9793 : see if stat knows about block sizes
9794 echo " "
9795 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9796 eval $hasfield
9797
9798 : see if _ptr and _cnt from stdio act std
9799 echo " "
9800 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9801         echo "(Looks like you have stdio.h from Linux.)"
9802         case "$stdio_ptr" in
9803         '') stdio_ptr='((fp)->_IO_read_ptr)'
9804                 ptr_lval=$define
9805                 ;;
9806         *)      ptr_lval=$d_stdio_ptr_lval;;
9807         esac
9808         case "$stdio_cnt" in
9809         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9810                 cnt_lval=$undef
9811                 ;;
9812         *)      cnt_lval=$d_stdio_cnt_lval;;
9813         esac
9814         case "$stdio_base" in
9815         '') stdio_base='((fp)->_IO_read_base)';;
9816         esac
9817         case "$stdio_bufsiz" in
9818         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9819         esac
9820 else
9821         case "$stdio_ptr" in
9822         '') stdio_ptr='((fp)->_ptr)'
9823                 ptr_lval=$define
9824                 ;;
9825         *)      ptr_lval=$d_stdio_ptr_lval;;
9826         esac
9827         case "$stdio_cnt" in
9828         '') stdio_cnt='((fp)->_cnt)'
9829                 cnt_lval=$define
9830                 ;;
9831         *)      cnt_lval=$d_stdio_cnt_lval;;
9832         esac
9833         case "$stdio_base" in
9834         '') stdio_base='((fp)->_base)';;
9835         esac
9836         case "$stdio_bufsiz" in
9837         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9838         esac
9839 fi
9840 : test whether _ptr and _cnt really work
9841 echo "Checking how std your stdio is..." >&4
9842 $cat >try.c <<EOP
9843 #include <stdio.h>
9844 #define FILE_ptr(fp)    $stdio_ptr
9845 #define FILE_cnt(fp)    $stdio_cnt
9846 int main() {
9847         FILE *fp = fopen("try.c", "r");
9848         char c = getc(fp);
9849         if (
9850                 18 <= FILE_cnt(fp) &&
9851                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9852         )
9853                 exit(0);
9854         exit(1);
9855 }
9856 EOP
9857 val="$undef"
9858 set try
9859 if eval $compile; then
9860         if ./try; then
9861                 echo "Your stdio acts pretty std."
9862                 val="$define"
9863         else
9864                 echo "Your stdio isn't very std."
9865         fi
9866 else
9867         echo "Your stdio doesn't appear very std."
9868 fi
9869 $rm -f try.c try
9870 set d_stdstdio
9871 eval $setvar
9872
9873 : Can _ptr be used as an lvalue?
9874 case "$d_stdstdio$ptr_lval" in
9875 $define$define) val=$define ;;
9876 *) val=$undef ;;
9877 esac
9878 set d_stdio_ptr_lval
9879 eval $setvar
9880
9881 : Can _cnt be used as an lvalue?
9882 case "$d_stdstdio$cnt_lval" in
9883 $define$define) val=$define ;;
9884 *) val=$undef ;;
9885 esac
9886 set d_stdio_cnt_lval
9887 eval $setvar
9888
9889 : see if _base is also standard
9890 val="$undef"
9891 case "$d_stdstdio" in
9892 $define)
9893         $cat >try.c <<EOP
9894 #include <stdio.h>
9895 #define FILE_base(fp)   $stdio_base
9896 #define FILE_bufsiz(fp) $stdio_bufsiz
9897 int main() {
9898         FILE *fp = fopen("try.c", "r");
9899         char c = getc(fp);
9900         if (
9901                 19 <= FILE_bufsiz(fp) &&
9902                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9903         )
9904                 exit(0);
9905         exit(1);
9906 }
9907 EOP
9908         set try
9909         if eval $compile; then
9910                 if ./try; then
9911                         echo "And its _base field acts std."
9912                         val="$define"
9913                 else
9914                         echo "But its _base field isn't std."
9915                 fi
9916         else
9917                 echo "However, it seems to be lacking the _base field."
9918         fi
9919         $rm -f try.c try
9920         ;;
9921 esac
9922 set d_stdiobase
9923 eval $setvar
9924
9925 : see if strcoll exists
9926 set strcoll d_strcoll
9927 eval $inlibc
9928
9929 : check for structure copying
9930 echo " "
9931 echo "Checking to see if your C compiler can copy structs..." >&4
9932 $cat >try.c <<'EOCP'
9933 int main()
9934 {
9935         struct blurfl {
9936                 int dyick;
9937         } foo, bar;
9938
9939         foo = bar;
9940 }
9941 EOCP
9942 if $cc -c try.c >/dev/null 2>&1 ; then
9943         val="$define"
9944         echo "Yup, it can."
9945 else
9946         val="$undef"
9947         echo "Nope, it can't."
9948 fi
9949 set d_strctcpy
9950 eval $setvar
9951 $rm -f try.*
9952
9953 : see if strerror and/or sys_errlist[] exist
9954 echo " "
9955 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9956     if set strerror val -f d_strerror; eval $csym; $val; then
9957                 echo 'strerror() found.' >&4
9958                 d_strerror="$define"
9959                 d_strerrm='strerror(e)'
9960                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9961                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9962                         d_syserrlst="$define"
9963                 else
9964                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9965                         d_syserrlst="$undef"
9966                 fi
9967     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9968                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9969                 echo 'strerror() found in string header.' >&4
9970                 d_strerror="$define"
9971                 d_strerrm='strerror(e)'
9972                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9973                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9974                                 d_syserrlst="$define"
9975                 else
9976                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9977                         d_syserrlst="$undef"
9978                 fi
9979     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9980                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9981                 d_strerror="$undef"
9982                 d_syserrlst="$define"
9983                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9984     else
9985                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9986                 d_strerror="$undef"
9987                 d_syserrlst="$undef"
9988                 d_strerrm='"unknown"'
9989     fi
9990 fi
9991
9992 : see if strtod exists
9993 set strtod d_strtod
9994 eval $inlibc
9995
9996 : see if strtol exists
9997 set strtol d_strtol
9998 eval $inlibc
9999
10000 : see if strtoul exists
10001 set strtoul d_strtoul
10002 eval $inlibc
10003
10004 : see if strxfrm exists
10005 set strxfrm d_strxfrm
10006 eval $inlibc
10007
10008 : see if symlink exists
10009 set symlink d_symlink
10010 eval $inlibc
10011
10012 : see if syscall exists
10013 set syscall d_syscall
10014 eval $inlibc
10015
10016 : see if sysconf exists
10017 set sysconf d_sysconf
10018 eval $inlibc
10019
10020 : see if system exists
10021 set system d_system
10022 eval $inlibc
10023
10024 : see if tcgetpgrp exists
10025 set tcgetpgrp d_tcgetpgrp
10026 eval $inlibc
10027
10028 : see if tcsetpgrp exists
10029 set tcsetpgrp d_tcsetpgrp
10030 eval $inlibc
10031
10032 : see if sys/types.h has to be included
10033 set sys/types.h i_systypes
10034 eval $inhdr
10035
10036 : see if prototype for telldir is available
10037 echo " "
10038 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10039 eval $hasproto
10040
10041 : define an is-a-typedef? function
10042 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10043 case "$inclist" in
10044 "") inclist="sys/types.h";;
10045 esac;
10046 eval "varval=\$$var";
10047 case "$varval" in
10048 "")
10049         $rm -f temp.c;
10050         for inc in $inclist; do
10051                 echo "#include <$inc>" >>temp.c;
10052         done;
10053         echo "#ifdef $type" >> temp.c;
10054         echo "printf(\"We have $type\");" >> temp.c;
10055         echo "#endif" >> temp.c;
10056         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10057         if $contains $type temp.E >/dev/null 2>&1; then
10058                 eval "$var=\$type";
10059         else
10060                 eval "$var=\$def";
10061         fi;
10062         $rm -f temp.?;;
10063 *) eval "$var=\$varval";;
10064 esac'
10065
10066 : define an is-a-typedef? function that prompts if the type is not available.
10067 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10068 case "$inclist" in
10069 "") inclist="sys/types.h";;
10070 esac;
10071 eval "varval=\$$var";
10072 case "$varval" in
10073 "")
10074         $rm -f temp.c;
10075         for inc in $inclist; do
10076                 echo "#include <$inc>" >>temp.c;
10077         done;
10078         echo "#ifdef $type" >> temp.c;
10079         echo "printf(\"We have $type\");" >> temp.c;
10080         echo "#endif" >> temp.c;
10081         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10082         echo " " ;
10083         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10084         if $contains $type temp.E >/dev/null 2>&1; then
10085                 echo "$type found." >&4;
10086                 eval "$var=\$type";
10087         else
10088                 echo "$type NOT found." >&4;
10089                 dflt="$def";
10090                 . ./myread ;
10091                 eval "$var=\$ans";
10092         fi;
10093         $rm -f temp.?;;
10094 *) eval "$var=\$varval";;
10095 esac'
10096
10097 : see if this is a sys/times.h system
10098 set sys/times.h i_systimes
10099 eval $inhdr
10100
10101 : see if times exists
10102 echo " "
10103 if set times val -f d_times; eval $csym; $val; then
10104         echo 'times() found.' >&4
10105         d_times="$define"
10106         inc=''
10107         case "$i_systimes" in
10108         "$define") inc='sys/times.h';;
10109         esac
10110         rp="What is the type returned by times() on this system?"
10111         set clock_t clocktype long stdio.h sys/types.h $inc
10112         eval $typedef_ask
10113 else
10114         echo 'times() NOT found, hope that will do.' >&4
10115         d_times="$undef"
10116         clocktype='int'
10117 fi
10118
10119 : see if truncate exists
10120 set truncate d_truncate
10121 eval $inlibc
10122
10123 : see if tzname[] exists
10124 echo " "
10125 if set tzname val -a d_tzname; eval $csym; $val; then
10126         val="$define"
10127         echo 'tzname[] found.' >&4
10128 else
10129         val="$undef"
10130         echo 'tzname[] NOT found.' >&4
10131 fi
10132 set d_tzname
10133 eval $setvar
10134
10135 : see if umask exists
10136 set umask d_umask
10137 eval $inlibc
10138
10139 : backward compatibility for d_hvfork
10140 if test X$d_hvfork != X; then
10141         d_vfork="$d_hvfork"
10142         d_hvfork=''
10143 fi
10144 : see if there is a vfork
10145 val=''
10146 set vfork val
10147 eval $inlibc
10148
10149 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10150 : perl on Solaris 2.x, and probably elsewhere.
10151 case "$val" in
10152 $define)
10153         echo " "
10154         case "$usevfork" in
10155         false) dflt='n';;
10156         *) dflt='y';;
10157         esac
10158         rp="Some systems have problems with vfork().  Do you want to use it?"
10159         . ./myread
10160         case "$ans" in
10161         y|Y) ;;
10162         *)
10163                 echo "Ok, we won't use vfork()."
10164                 val="$undef"
10165                 ;;
10166         esac
10167         ;;
10168 esac
10169 set d_vfork
10170 eval $setvar
10171 case "$d_vfork" in
10172 $define) usevfork='true';;
10173 *) usevfork='false';;
10174 esac
10175
10176 : see if this is an sysdir system
10177 set sys/dir.h i_sysdir
10178 eval $inhdr
10179
10180 : see if this is an sysndir system
10181 set sys/ndir.h i_sysndir
10182 eval $inhdr
10183
10184 : see if closedir exists
10185 set closedir d_closedir
10186 eval $inlibc
10187
10188 case "$d_closedir" in
10189 "$define")
10190         echo " "
10191         echo "Checking whether closedir() returns a status..." >&4
10192         cat > closedir.c <<EOM
10193 #$i_dirent I_DIRENT             /**/
10194 #$i_sysdir I_SYS_DIR            /**/
10195 #$i_sysndir I_SYS_NDIR          /**/
10196 #$i_systypes I_SYS_TYPES        /**/
10197
10198 #if defined(I_SYS_TYPES)
10199 #include <sys/types.h>
10200 #endif
10201 #if defined(I_DIRENT)
10202 #include <dirent.h>
10203 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10204 #include <sys/dir.h>
10205 #endif
10206 #else
10207 #ifdef I_SYS_NDIR
10208 #include <sys/ndir.h>
10209 #else
10210 #ifdef I_SYS_DIR
10211 #ifdef hp9000s500
10212 #include <ndir.h>       /* may be wrong in the future */
10213 #else
10214 #include <sys/dir.h>
10215 #endif
10216 #endif
10217 #endif
10218 #endif 
10219 int main() { return closedir(opendir(".")); }
10220 EOM
10221         set closedir
10222         if eval $compile_ok; then
10223                 if ./closedir > /dev/null 2>&1 ; then
10224                         echo "Yes, it does."
10225                         val="$undef"
10226                 else
10227                         echo "No, it doesn't."
10228                         val="$define"
10229                 fi
10230         else
10231                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10232                 val="$define"
10233         fi
10234         ;;
10235 *)
10236         val="$undef";
10237         ;;
10238 esac
10239 set d_void_closedir
10240 eval $setvar
10241 $rm -f closedir*
10242 : check for volatile keyword
10243 echo " "
10244 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10245 $cat >try.c <<'EOCP'
10246 int main()
10247 {
10248         typedef struct _goo_struct goo_struct;
10249         goo_struct * volatile goo = ((goo_struct *)0);
10250         struct _goo_struct {
10251                 long long_int;
10252                 int reg_int;
10253                 char char_var;
10254         };
10255         typedef unsigned short foo_t;
10256         char *volatile foo;
10257         volatile int bar;
10258         volatile foo_t blech;
10259         foo = foo;
10260 }
10261 EOCP
10262 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10263         val="$define"
10264         echo "Yup, it does."
10265 else
10266         val="$undef"
10267         echo "Nope, it doesn't."
10268 fi
10269 set d_volatile
10270 eval $setvar
10271 $rm -f try.*
10272
10273 : see if there is a wait4
10274 set wait4 d_wait4
10275 eval $inlibc
10276
10277 : see if waitpid exists
10278 set waitpid d_waitpid
10279 eval $inlibc
10280
10281 : see if wcstombs exists
10282 set wcstombs d_wcstombs
10283 eval $inlibc
10284
10285 : see if wctomb exists
10286 set wctomb d_wctomb
10287 eval $inlibc
10288
10289 : see if writev exists
10290 set writev d_writev
10291 eval $inlibc
10292
10293 : preserve RCS keywords in files with variable substitution, grrr
10294 Date='$Date'
10295 Id='$Id'
10296 Log='$Log'
10297 RCSfile='$RCSfile'
10298 Revision='$Revision'
10299
10300 case "$crosscompile" in
10301 ''|[nN]*) crosscompile="$undef" ;;
10302 esac
10303
10304 case "$osname" in
10305 next) multiarch="$define" ;;
10306 esac
10307 case "$multiarch" in
10308 ''|[nN]*) multiarch="$undef" ;;
10309 esac
10310
10311 : check for alignment requirements
10312 echo " "
10313 case "$crosscompile$multiarch" in
10314 *$define*)
10315         $cat <<EOM
10316 You seem to be either cross-compiling or doing a multiarchitecture build,
10317 skipping the memory alignment check.
10318
10319 EOM
10320         case "$alignbytes" in
10321         '') alignbytes=8 ;;
10322         esac
10323         ;;
10324 *)
10325         case "$alignbytes" in
10326         '') echo "Checking alignment constraints..." >&4
10327                 $cat >try.c <<'EOCP'
10328 struct foobar {
10329         char foo;
10330         double bar;
10331 } try_algn;
10332 int main()
10333 {
10334         printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10335 }
10336 EOCP
10337                 set try
10338                 if eval $compile_ok; then
10339                         dflt=`./try`
10340                 else
10341                         dflt='8'
10342                         echo "(I can't seem to compile the test program...)"
10343                 fi
10344                 ;;
10345         *) dflt="$alignbytes"
10346                 ;;
10347         esac
10348         rp="Doubles must be aligned on a how-many-byte boundary?"
10349         . ./myread
10350         alignbytes="$ans"
10351         $rm -f try.c try
10352         ;;
10353 esac
10354
10355
10356 : check for ordering of bytes in a long
10357 echo " "
10358 case "$crosscompile$multiarch" in
10359 *$define*)
10360         $cat <<EOM
10361 You seem to be either cross-compiling or doing a multiarchitecture build,
10362 skipping the byteorder check.
10363
10364 EOM
10365         byteorder=''
10366         ;;
10367 *)
10368         case "$byteorder" in
10369         '')
10370                 $cat <<'EOM'
10371 In the following, larger digits indicate more significance.  A big-endian
10372 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10373 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10374 machines may have weird orders like 3412.  A Cray will report 87654321. If
10375 the test program works the default is probably right.
10376 I'm now running the test program...
10377 EOM
10378                 $cat >try.c <<'EOCP'
10379 #include <stdio.h>
10380 int main()
10381 {
10382         int i;
10383         union {
10384                 unsigned long l;
10385                 char c[sizeof(long)];
10386         } u;
10387
10388         if (sizeof(long) > 4)
10389                 u.l = (0x08070605L << 32) | 0x04030201L;
10390         else
10391                 u.l = 0x04030201L;
10392         for (i = 0; i < sizeof(long); i++)
10393                 printf("%c", u.c[i]+'0');
10394         printf("\n");
10395         exit(0);
10396 }
10397 EOCP
10398                 xxx_prompt=y
10399                 set try
10400                 if eval $compile && ./try > /dev/null; then
10401                         dflt=`./try`
10402                         case "$dflt" in
10403                         [1-4][1-4][1-4][1-4]|12345678|87654321)
10404                                 echo "(The test program ran ok.)"
10405                                 echo "byteorder=$dflt"
10406                                 xxx_prompt=n
10407                         ;;
10408                         ????|????????) echo "(The test program ran ok.)" ;;
10409                         *) echo "(The test program didn't run right for some reason.)" ;;
10410                         esac
10411                 else
10412                         dflt='4321'
10413                         cat <<'EOM'
10414 (I can't seem to compile the test program.  Guessing big-endian...)
10415 EOM
10416                 fi
10417                 case "$xxx_prompt" in
10418                 y)
10419                         rp="What is the order of bytes in a long?"
10420                         . ./myread
10421                         byteorder="$ans"
10422                         ;;
10423                 *)      byteorder=$dflt
10424                         ;;
10425                 esac
10426                 ;;
10427         esac
10428         $rm -f try.c try
10429         ;;
10430 esac
10431
10432
10433 : how do we catenate cpp tokens here?
10434 echo " "
10435 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10436 $cat >cpp_stuff.c <<'EOCP'
10437 #define RCAT(a,b)a/**/b
10438 #define ACAT(a,b)a ## b
10439 RCAT(Rei,ser)
10440 ACAT(Cir,cus)
10441 EOCP
10442 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10443 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10444         echo "Oh!  Smells like ANSI's been here." >&4
10445         echo "We can catify or stringify, separately or together!"
10446         cpp_stuff=42
10447 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10448         echo "Ah, yes!  The good old days!" >&4
10449         echo "However, in the good old days we don't know how to stringify and"
10450         echo "catify at the same time."
10451         cpp_stuff=1
10452 else
10453         $cat >&4 <<EOM
10454 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10455 to have to edit the values of CAT[2-5] in config.h...
10456 EOM
10457         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10458 fi
10459 $rm -f cpp_stuff.*
10460
10461 : see if this is a db.h system
10462 set db.h i_db
10463 eval $inhdr
10464
10465 case "$i_db" in
10466 $define)
10467         : Check db version.
10468         echo " "
10469         echo "Checking Berkeley DB version ..." >&4
10470         $cat >try.c <<EOCP
10471 #$d_const HASCONST
10472 #ifndef HASCONST
10473 #define const
10474 #endif
10475 #include <sys/types.h>
10476 #include <stdio.h>
10477 #include <db.h>
10478 int main()
10479 {
10480 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10481     int Major, Minor, Patch ;
10482     unsigned long Version ;
10483     (void)db_version(&Major, &Minor, &Patch) ;
10484     printf("You have Berkeley DB Version 2 or greater\n");
10485
10486     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10487                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10488     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10489                 Major, Minor, Patch) ;
10490
10491     /* check that db.h & libdb are compatible */
10492     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10493         printf("db.h and libdb are incompatible\n") ;
10494         exit(3);        
10495     }
10496
10497     printf("db.h and libdb are compatible\n") ;
10498
10499     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10500                 + DB_VERSION_PATCH ;
10501
10502     /* needs to be >= 2.3.4 */
10503     if (Version < 2003004) {
10504     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10505         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10506         exit(2);        
10507     }
10508
10509     exit(0);
10510 #else
10511 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10512     printf("You have Berkeley DB Version 1\n");
10513     exit(0);    /* DB version < 2: the coast is clear. */
10514 #else
10515     exit(1);    /* <db.h> not Berkeley DB? */
10516 #endif
10517 #endif
10518 }
10519 EOCP
10520         set try
10521         if eval $compile && ./try; then
10522                 echo 'Looks OK.' >&4
10523         else
10524                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10525                 i_db=$undef
10526                 case " $libs " in
10527                 *"-ldb "*)
10528                         : Remove db from list of libraries to use
10529                         echo "Removing unusable -ldb from library list" >&4
10530                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10531                         shift
10532                         libs="$*"
10533                         echo "libs = $libs" >&4
10534                         ;;
10535                 esac
10536         fi
10537         $rm -f try.*
10538         ;;
10539 esac
10540
10541 case "$i_db" in
10542 define)
10543         : Check the return type needed for hash 
10544         echo " "
10545         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10546         $cat >try.c <<EOCP
10547 #$d_const HASCONST
10548 #ifndef HASCONST
10549 #define const
10550 #endif
10551 #include <sys/types.h>
10552 #include <db.h>
10553
10554 #ifndef DB_VERSION_MAJOR
10555 u_int32_t hash_cb (ptr, size)
10556 const void *ptr;
10557 size_t size;
10558 {
10559 }
10560 HASHINFO info;
10561 int main()
10562 {
10563         info.hash = hash_cb;
10564 }
10565 #endif
10566 EOCP
10567         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10568                 if $contains warning try.out >>/dev/null 2>&1 ; then
10569                         db_hashtype='int'
10570                 else
10571                         db_hashtype='u_int32_t'
10572                 fi
10573         else
10574                 : XXX Maybe we should just give up here.
10575                 db_hashtype=u_int32_t
10576                 $cat try.out >&4
10577                 echo "Help:  I can't seem to compile the db test program." >&4
10578                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10579         fi
10580         $rm -f try.*
10581         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10582         ;;
10583 *)      db_hashtype=u_int32_t
10584         ;;
10585 esac
10586 case "$i_db" in
10587 define)
10588         : Check the return type needed for prefix 
10589         echo " "
10590         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10591         cat >try.c <<EOCP
10592 #$d_const HASCONST
10593 #ifndef HASCONST
10594 #define const
10595 #endif
10596 #include <sys/types.h>
10597 #include <db.h>
10598
10599 #ifndef DB_VERSION_MAJOR
10600 size_t prefix_cb (key1, key2)
10601 const DBT *key1;
10602 const DBT *key2;
10603 {
10604 }
10605 BTREEINFO info;
10606 int main()
10607 {
10608         info.prefix = prefix_cb;
10609 }
10610 #endif
10611 EOCP
10612         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10613                 if $contains warning try.out >>/dev/null 2>&1 ; then
10614                         db_prefixtype='int'
10615                 else
10616                         db_prefixtype='size_t'
10617                 fi
10618         else
10619                 db_prefixtype='size_t'
10620                 : XXX Maybe we should just give up here.
10621                 $cat try.out >&4
10622                 echo "Help:  I can't seem to compile the db test program." >&4
10623                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10624         fi
10625         $rm -f try.*
10626         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10627         ;;
10628 *)      db_prefixtype='size_t'
10629         ;;
10630 esac
10631
10632 : check for void type
10633 echo " "
10634 echo "Checking to see how well your C compiler groks the void type..." >&4
10635 case "$voidflags" in
10636 '')
10637         $cat >try.c <<'EOCP'
10638 #if TRY & 1
10639 void sub() {
10640 #else
10641 sub() {
10642 #endif
10643         extern void moo();      /* function returning void */
10644         void (*goo)();          /* ptr to func returning void */
10645 #if TRY & 8
10646         void *hue;              /* generic ptr */
10647 #endif
10648 #if TRY & 2
10649         void (*foo[10])();
10650 #endif
10651
10652 #if TRY & 4
10653         if(goo == moo) {
10654                 exit(0);
10655         }
10656 #endif
10657         exit(0);
10658 }
10659 int main() { sub(); }
10660 EOCP
10661         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10662                 voidflags=$defvoidused
10663         echo "Good.  It appears to support void to the level $package wants.">&4
10664                 if $contains warning .out >/dev/null 2>&1; then
10665                         echo "However, you might get some warnings that look like this:"
10666                         $cat .out
10667                 fi
10668         else
10669 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10670                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10671                         echo "It supports 1..."
10672                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10673                                 echo "It also supports 2..."
10674                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10675                                         voidflags=7
10676                                         echo "And it supports 4 but not 8 definitely."
10677                                 else
10678                                         echo "It doesn't support 4..."
10679                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10680                                                 voidflags=11
10681                                                 echo "But it supports 8."
10682                                         else
10683                                                 voidflags=3
10684                                                 echo "Neither does it support 8."
10685                                         fi
10686                                 fi
10687                         else
10688                                 echo "It does not support 2..."
10689                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10690                                         voidflags=13
10691                                         echo "But it supports 4 and 8."
10692                                 else
10693                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10694                                                 voidflags=5
10695                                                 echo "And it supports 4 but has not heard about 8."
10696                                         else
10697                                                 echo "However it supports 8 but not 4."
10698                                         fi
10699                                 fi
10700                         fi
10701                 else
10702                         echo "There is no support at all for void."
10703                         voidflags=0
10704                 fi
10705         fi
10706 esac
10707 case "$voidflags" in
10708 "$defvoidused") ;;
10709 *)      $cat >&4 <<'EOM'
10710   Support flag bits are:
10711     1: basic void declarations.
10712     2: arrays of pointers to functions returning void.
10713     4: operations between pointers to and addresses of void functions.
10714     8: generic void pointers.
10715 EOM
10716         dflt="$voidflags";
10717         rp="Your void support flags add up to what?"
10718         . ./myread
10719         voidflags="$ans"
10720         ;;
10721 esac
10722 $rm -f try.* .out
10723
10724
10725 : How can we generate normalized random numbers ?
10726 echo " "
10727 echo "Looking for a random number function..." >&4
10728 case "$randfunc" in
10729 '')
10730         if set drand48 val -f; eval $csym; $val; then
10731                 dflt="drand48"
10732                 echo "Good, found drand48()." >&4
10733         elif set random val -f; eval $csym; $val; then
10734                 dflt="random"
10735                 echo "OK, found random()." >&4
10736         else
10737                 dflt="rand"
10738                 echo "Yick, looks like I have to use rand()." >&4
10739         fi
10740         echo " "
10741         ;;
10742 *)
10743         dflt="$randfunc"
10744         ;;
10745 esac
10746 cont=true
10747
10748 case "$ccflags" in
10749 *-Dmy_rand=*|*-Dmy_srand=*)
10750         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10751         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10752         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10753         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10754         ;;
10755 esac
10756
10757 while $test "$cont"; do
10758         rp="Use which function to generate random numbers?"
10759         . ./myread
10760         if $test "$ans" = "$dflt"; then
10761                 : null
10762         else
10763                 randbits=''
10764         fi
10765         randfunc="$ans"
10766         if set $ans val -f; eval $csym; $val; then
10767                 cont=''
10768         else
10769                 dflt=y
10770                 rp="I cannot find function $ans. Use that name anyway?"
10771                 . ./myread
10772                 dflt=rand
10773                 case "$ans" in
10774                         [yY]*) cont='';;
10775                 esac
10776         fi
10777         case "$cont" in
10778         '')
10779                 case "$randfunc" in
10780                 drand48)
10781                         drand01="drand48()"
10782                         seedfunc="srand48"
10783                         randbits=48
10784                         randseedtype=long
10785                         ;;
10786                 rand|random)
10787                         case "$randbits" in
10788                         '')
10789 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10790                                 $cat >try.c <<EOCP
10791 #$i_unistd I_UNISTD
10792 #$i_stdlib I_STDLIB
10793 #include <stdio.h>
10794 #ifdef I_UNISTD
10795 #  include <unistd.h>
10796 #endif
10797 #ifdef I_STDLIB
10798 #  include <stdlib.h>
10799 #endif
10800 int main()
10801 {
10802         register int i;
10803         register unsigned long tmp;
10804         register unsigned long max = 0L;
10805
10806         for (i = 1000; i; i--) {
10807                 tmp = (unsigned long) $randfunc();
10808                 if (tmp > max) max = tmp;
10809         }
10810         for (i = 0; max; i++)
10811                 max /= 2;
10812         printf("%d\n",i);
10813 }
10814 EOCP
10815                                 set try
10816                                 if eval $compile_ok; then
10817                                         dflt=`try`
10818                                 else
10819                                         dflt='?'
10820                                         echo "(I can't seem to compile the test program...)"
10821                                 fi
10822                                 ;;
10823                         *)
10824                                 dflt="$randbits"
10825                                 ;;
10826                         esac
10827                         rp="How many bits does your $randfunc() function produce?"
10828                         . ./myread
10829                         randbits="$ans"
10830                         $rm -f try.c try
10831                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10832                         seedfunc="s$randfunc"
10833                         randseedtype=unsigned
10834                         ;;
10835                 *)
10836                         dflt="31"
10837                         rp="How many bits does your $randfunc() function produce?"
10838                         . ./myread
10839                         randbits="$ans"
10840                         seedfunc="s$randfunc"
10841                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10842                         if set $seedfunc val -f; eval $csym; $val; then
10843                                 echo "(Using $seedfunc() to seed random generator)"
10844                         else
10845                                 echo "(Warning: no $seedfunc() to seed random generator)"
10846                                 seedfunc=rand
10847                         fi
10848                         randseedtype=unsigned
10849                         ;;
10850                 esac
10851                 ;;
10852         esac
10853 done
10854
10855 echo " "
10856 echo "Determining whether or not we are on an EBCDIC system..." >&4
10857 $cat >tebcdic.c <<'EOM'
10858 int main()
10859 {
10860   if ('M'==0xd4) return 0;
10861   return 1;
10862 }
10863 EOM
10864
10865 val=$undef
10866 set tebcdic
10867 if eval $compile_ok; then
10868         if ./tebcdic; then
10869                 echo "You have EBCDIC." >&4
10870                 val="$define"
10871         else
10872                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10873         fi
10874 else
10875         echo "I'm unable to compile the test program." >&4
10876         echo "I'll assume ASCII or some ISO Latin." >&4
10877 fi
10878 $rm -f tebcdic.c tebcdic
10879 set ebcdic
10880 eval $setvar
10881
10882 : see what type file positions are declared as in the library
10883 rp="What is the type for file position used by fsetpos()?"
10884 set fpos_t fpostype long stdio.h sys/types.h
10885 eval $typedef_ask
10886
10887 : Store the full pathname to the ar program for use in the C program
10888 : Respect a hint or command line value for full_ar.
10889 case "$full_ar" in
10890 '') full_ar=$ar ;;
10891 esac
10892
10893 : Store the full pathname to the sed program for use in the C program
10894 full_sed=$sed
10895
10896 : see what type gids are declared as in the kernel
10897 echo " "
10898 echo "Looking for the type for group ids returned by getgid()."
10899 set gid_t gidtype xxx stdio.h sys/types.h
10900 eval $typedef
10901 case "$gidtype" in
10902 xxx)
10903         xxx=`./findhdr sys/user.h`
10904         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10905         case $1 in
10906         unsigned) dflt="$1 $2" ;;
10907         *) dflt="$1" ;;
10908         esac
10909         ;;
10910 *) dflt="$gidtype";;
10911 esac
10912 case "$gidtype" in
10913 gid_t) echo "gid_t found." ;;
10914 *)      rp="What is the type for group ids returned by getgid()?"
10915         . ./myread
10916         gidtype="$ans"
10917         ;;
10918 esac
10919
10920 : see if getgroups exists
10921 set getgroups d_getgrps
10922 eval $inlibc
10923
10924 : see if setgroups exists
10925 set setgroups d_setgrps
10926 eval $inlibc
10927
10928
10929 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10930 echo " "
10931 case "$d_getgrps$d_setgrps" in
10932 *define*)
10933         case "$groupstype" in
10934         '') dflt="$gidtype" ;;
10935         *)  dflt="$groupstype" ;;
10936         esac
10937         $cat <<EOM
10938 What type of pointer is the second argument to getgroups() and setgroups()?
10939 Usually this is the same as group ids, $gidtype, but not always.
10940
10941 EOM
10942         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10943         . ./myread
10944         groupstype="$ans"
10945         ;;
10946 *)  groupstype="$gidtype";;
10947 esac
10948
10949 : see what type lseek is declared as in the kernel
10950 rp="What is the type used for lseek's offset on this system?"
10951 set off_t lseektype long stdio.h sys/types.h
10952 eval $typedef_ask
10953
10954 echo " "
10955 $echo $n "Checking to see how big your file offsets are...$c" >&4
10956 $cat >try.c <<EOCP
10957 #include <sys/types.h>
10958 #include <stdio.h>
10959 int main()
10960 {
10961         printf("%d\n", sizeof($lseektype));
10962 }
10963 EOCP
10964 set try
10965 if eval $compile_ok; then
10966         lseeksize=`./try`
10967         $echo " $lseeksize bytes." >&4
10968 else
10969         dflt='4'
10970         echo " "
10971         echo "(I can't seem to compile the test program.  Guessing...)"
10972         rp="What is the size of your file offsets (in bytes)?"
10973         . ./myread
10974         lseeksize="$ans"
10975 fi
10976 $rm -f try.c try
10977
10978 echo " "
10979 echo "Checking if your $make program sets \$(MAKE)..." >&4
10980 case "$make_set_make" in
10981 '')
10982         $sed 's/^X //' > testmake.mak << 'EOF'
10983 Xall:
10984 X       @echo 'maketemp="$(MAKE)"'
10985 EOF
10986         case "`$make -f testmake.mak 2>/dev/null`" in
10987         *maketemp=*) make_set_make='#' ;;
10988         *)      make_set_make="MAKE=$make" ;;
10989         esac
10990         $rm -f testmake.mak
10991         ;;
10992 esac
10993 case "$make_set_make" in
10994 '#') echo "Yup, it does.";;
10995 *) echo "Nope, it doesn't.";;
10996 esac
10997
10998 : see what type is used for mode_t
10999 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11000 set mode_t modetype int stdio.h sys/types.h
11001 eval $typedef_ask
11002
11003 : define a fucntion to check prototypes
11004 $cat > protochk <<EOSH
11005 $startsh
11006 cc="$cc"
11007 optimize="$optimize"
11008 ccflags="$ccflags"
11009 prototype="$prototype"
11010 define="$define"
11011 rm=$rm
11012 EOSH
11013
11014 $cat >> protochk <<'EOSH'
11015
11016 $rm -f try.c
11017 foo="$1"
11018 shift
11019 while test $# -ge 2; do
11020         case "$1" in
11021                 $define) echo "#include <$2>" >> try.c ;;
11022                 literal) echo "$2" >> try.c ;;
11023         esac
11024     shift 2
11025 done
11026 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
11027 cat >> try.c <<'EOCP'
11028 #ifdef CAN_PROTOTYPE
11029 #define _(args) args
11030 #else
11031 #define _(args) ()
11032 #endif
11033 EOCP
11034 echo "$foo" >> try.c
11035 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11036 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11037 status=$?
11038 $rm -f try.[co]
11039 exit $status
11040 EOSH
11041 chmod +x protochk
11042 $eunicefix protochk
11043
11044 : see what type is used for size_t
11045 rp="What is the type used for the length parameter for string functions?"
11046 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11047 eval $typedef_ask
11048
11049 : check for type of arguments to gethostbyaddr. 
11050 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11051         case "$d_gethbyaddr" in
11052         $define)
11053                 $cat <<EOM
11054
11055 Checking to see what type of arguments are accepted by gethostbyaddr().
11056 EOM
11057                 hdrs="$define sys/types.h
11058                         $d_socket sys/socket.h 
11059                         $i_niin netinet/in.h 
11060                         $i_netdb netdb.h
11061                         $i_unistd unistd.h"
11062                 : The first arg can 'char *' or 'void *'
11063                 : The second arg is some of integral type
11064                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11065                         for yyy in size_t long int; do
11066                                 case "$netdb_host_type" in
11067                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11068                                         if ./protochk "$try" $hdrs; then
11069                                                 echo "Your system accepts $xxx for the first arg."
11070                                                 echo "...and $yyy for the second arg."
11071                                                 netdb_host_type="$xxx"
11072                                                 netdb_hlen_type="$yyy"
11073                                         fi
11074                                         ;;
11075                                 esac
11076                         done
11077                 done
11078                 : In case none of those worked, prompt the user.
11079                 case "$netdb_host_type" in
11080                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
11081                         dflt='char *'
11082                         . ./myread
11083                         netdb_host_type=$ans
11084                         rp='What is the type for the 2nd argument to gethostbyaddr?'
11085                         dflt="$sizetype"
11086                         . ./myread
11087                         netdb_hlen_type=$ans
11088                         ;;
11089                 esac
11090                 ;;
11091         *)      : no gethostbyaddr, so pick harmless defaults
11092                 netdb_host_type='char *'
11093                 netdb_hlen_type="$sizetype"
11094                 ;;
11095         esac
11096         # Remove the "const" if needed. -- but then we'll have a 
11097         # prototype clash!
11098         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11099 fi
11100
11101 : check for type of argument to gethostbyname. 
11102 if test "X$netdb_name_type" = X ; then
11103         case "$d_gethbyname" in
11104         $define)
11105                 $cat <<EOM
11106
11107 Checking to see what type of argument is accepted by gethostbyname().
11108 EOM
11109                 hdrs="$define sys/types.h
11110                         $d_socket sys/socket.h 
11111                         $i_niin netinet/in.h 
11112                         $i_netdb netdb.h
11113                         $i_unistd unistd.h"
11114                 for xxx in "const char *" "char *"; do
11115                         case "$netdb_name_type" in
11116                         '')     try="extern struct hostent *gethostbyname($xxx);"
11117                                 if ./protochk "$try" $hdrs; then
11118                                         echo "Your system accepts $xxx."
11119                                         netdb_name_type="$xxx"
11120                                 fi
11121                                 ;;
11122                         esac
11123                 done
11124                 : In case none of those worked, prompt the user.
11125                 case "$netdb_name_type" in
11126                 '')     rp='What is the type for the 1st argument to gethostbyname?'
11127                         dflt='char *'
11128                         . ./myread
11129                         netdb_name_type=$ans
11130                         ;;
11131                 esac
11132                 ;;
11133         *)      : no gethostbyname, so pick harmless default
11134                 netdb_name_type='char *'
11135                 ;;
11136         esac
11137 fi
11138
11139 : check for type of 1st argument to getnetbyaddr. 
11140 if test "X$netdb_net_type" = X ; then
11141         case "$d_getnbyaddr" in
11142         $define)
11143                 $cat <<EOM
11144
11145 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11146 EOM
11147                 hdrs="$define sys/types.h
11148                         $d_socket sys/socket.h 
11149                         $i_niin netinet/in.h 
11150                         $i_netdb netdb.h
11151                         $i_unistd unistd.h"
11152                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11153                         case "$netdb_net_type" in
11154                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11155                                 if ./protochk "$try" $hdrs; then
11156                                         echo "Your system accepts $xxx."
11157                                         netdb_net_type="$xxx"
11158                                 fi
11159                                 ;;
11160                         esac
11161                 done
11162                 : In case none of those worked, prompt the user.
11163                 case "$netdb_net_type" in
11164                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11165                         dflt='long'
11166                         . ./myread
11167                         netdb_net_type=$ans
11168                         ;;
11169                 esac
11170                 ;;
11171         *)      : no getnetbyaddr, so pick harmless default
11172                 netdb_net_type='long'
11173                 ;;
11174         esac
11175 fi
11176 : locate the preferred pager for this system
11177 case "$pager" in
11178 '')
11179         dflt=''
11180         case "$pg" in
11181         /*) dflt=$pg;;
11182         esac
11183         case "$more" in
11184         /*) dflt=$more;;
11185         esac
11186         case "$less" in
11187         /*) dflt=$less;;
11188         esac
11189         case "$dflt" in
11190         '') dflt=/usr/ucb/more;;
11191         esac
11192         ;;
11193 *) dflt="$pager";;
11194 esac
11195 echo " "
11196 fn=f/
11197 rp='What pager is used on your system?'
11198 . ./getfile
11199 pager="$ans"
11200
11201 : see what type pids are declared as in the kernel
11202 rp="What is the type of process ids on this system?"
11203 set pid_t pidtype int stdio.h sys/types.h
11204 eval $typedef_ask
11205
11206 : check for length of pointer
11207 echo " "
11208 case "$ptrsize" in
11209 '')
11210         $echo $n "Checking to see how big your pointers are...$c" >&4
11211         if test "$voidflags" -gt 7; then
11212                 echo '#define VOID_PTR char *' > try.c
11213         else
11214                 echo '#define VOID_PTR void *' > try.c
11215         fi
11216         $cat >>try.c <<'EOCP'
11217 #include <stdio.h>
11218 int main()
11219 {
11220         printf("%d\n", sizeof(VOID_PTR));
11221         exit(0);
11222 }
11223 EOCP
11224         set try
11225         if eval $compile_ok; then
11226                 ptrsize=`./try`
11227                 $echo " $ptrsize bytes." >&4
11228         else
11229                 dflt='4'
11230                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11231                 rp="What is the size of a pointer (in bytes)?"
11232                 . ./myread
11233                 ptrsize="$ans"
11234         fi
11235         ;;
11236 esac
11237 $rm -f try.c try
11238
11239 : see if ar generates random libraries by itself
11240 echo " "
11241 echo "Checking how to generate random libraries on your machine..." >&4
11242 echo 'int bar1() { return bar2(); }' > bar1.c
11243 echo 'int bar2() { return 2; }' > bar2.c
11244 $cat > foo.c <<'EOP'
11245 int main() { printf("%d\n", bar1()); exit(0); }
11246 EOP
11247 $cc $ccflags -c bar1.c >/dev/null 2>&1
11248 $cc $ccflags -c bar2.c >/dev/null 2>&1
11249 $cc $ccflags -c foo.c >/dev/null 2>&1
11250 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11251 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11252         ./foobar >/dev/null 2>&1; then
11253         echo "$ar appears to generate random libraries itself."
11254         orderlib=false
11255         ranlib=":"
11256 elif $ar ts bar$_a >/dev/null 2>&1 &&
11257         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11258         ./foobar >/dev/null 2>&1; then
11259                 echo "a table of contents needs to be added with '$ar ts'."
11260                 orderlib=false
11261                 ranlib="$ar ts"
11262 else
11263         case "$ranlib" in
11264         :) ranlib='';;
11265         '')
11266                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11267                 $test -f $ranlib || ranlib=''
11268                 ;;
11269         esac
11270         if $test -n "$ranlib"; then
11271                 echo "your system has '$ranlib'; we'll use that."
11272                 orderlib=false
11273         else
11274                 echo "your system doesn't seem to support random libraries"
11275                 echo "so we'll use lorder and tsort to order the libraries."
11276                 orderlib=true
11277                 ranlib=":"
11278         fi
11279 fi
11280 $rm -f foo* bar* 
11281
11282 : check for type of arguments to select. 
11283 case "$selecttype" in
11284 '') case "$d_select" in
11285         $define)
11286                 $cat <<EOM
11287 Checking to see what type of arguments are accepted by select().
11288 EOM
11289                 hdrs="$define sys/types.h
11290                         $i_systime sys/time.h 
11291                         $i_sysselct sys/select.h
11292                         $d_socket sys/socket.h"
11293                 : The first arg can be int, unsigned, or size_t
11294                 : The last arg may or may not be 'const'
11295                 val=''
11296                 : void pointer has been seen but using that
11297                 : breaks the selectminbits test
11298                 for xxx in 'fd_set *' 'int *'; do
11299                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11300                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11301                                         case "$val" in
11302                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11303                                                 if ./protochk "$try" $hdrs; then
11304                                                         echo "Your system accepts $xxx."
11305                                                         val="$xxx"
11306                                                 fi
11307                                                 ;;
11308                                         esac
11309                                 done
11310                         done
11311                 done
11312                 case "$val" in
11313                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11314                         case "$d_fd_set" in
11315                                 $define) dflt="fd_set *" ;;
11316                                 *)              dflt="int *" ;;
11317                         esac
11318                         . ./myread
11319                         val=$ans
11320                         ;;
11321                 esac
11322                 selecttype="$val"
11323                 ;;
11324         *)      : no select, so pick a harmless default
11325                 selecttype='int *'
11326                 ;;
11327         esac
11328         ;;
11329 esac
11330
11331 : check for the select 'width'
11332 case "$selectminbits" in
11333 '') case "$d_select" in
11334         $define)
11335                 $cat <<EOM
11336
11337 Checking to see on how many bits at a time your select() operates...
11338 EOM
11339                 $cat >try.c <<EOCP
11340 #include <sys/types.h>
11341 #$i_time I_TIME
11342 #$i_systime I_SYS_TIME
11343 #$i_systimek I_SYS_TIME_KERNEL
11344 #ifdef I_TIME
11345 #   include <time.h>
11346 #endif
11347 #ifdef I_SYS_TIME
11348 #   ifdef I_SYS_TIME_KERNEL
11349 #       define KERNEL
11350 #   endif
11351 #   include <sys/time.h>
11352 #   ifdef I_SYS_TIME_KERNEL
11353 #       undef KERNEL
11354 #   endif
11355 #endif
11356 #$i_sysselct I_SYS_SELECT
11357 #ifdef I_SYS_SELECT
11358 #include <sys/select.h>
11359 #endif
11360 #include <stdio.h>
11361 $selecttype b;
11362 #define S sizeof(*(b))
11363 #define MINBITS 64
11364 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11365 #define NBITS  (NBYTES * 8)
11366 int main() {
11367     char s[NBYTES];
11368     struct timeval t;
11369     int i;
11370     FILE* fp;
11371     int fd;
11372
11373     fclose(stdin);
11374     fp = fopen("try.c", "r");
11375     if (fp == 0)
11376       exit(1);
11377     fd = fileno(fp);
11378     if (fd < 0)
11379       exit(2);
11380     b = ($selecttype)s;
11381     for (i = 0; i < NBITS; i++)
11382         FD_SET(i, b);
11383     t.tv_sec  = 0;
11384     t.tv_usec = 0;
11385     select(fd + 1, b, 0, 0, &t);
11386     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11387     printf("%d\n", i + 1);
11388     return 0;
11389 }
11390 EOCP
11391                 set try
11392                 if eval $compile_ok; then
11393                         selectminbits=`./try`
11394                         case "$selectminbits" in
11395                         '')     cat >&4 <<EOM
11396 Cannot figure out on how many bits at a time your select() operates.
11397 I'll play safe and guess it is 32 bits.
11398 EOM
11399                                 selectminbits=32
11400                                 bits="32 bits"
11401                                 ;;
11402                         1)      bits="1 bit" ;;
11403                         *)      bits="$selectminbits bits" ;;
11404                         esac
11405                         echo "Your select() operates on $bits at a time." >&4
11406                 else
11407                         rp='What is the minimum number of bits your select() operates on?'
11408                         case "$byteorder" in
11409                         1234|12345678)  dflt=32 ;;
11410                         *)              dflt=1  ;;
11411                         esac
11412                         . ./myread
11413                         val=$ans
11414                         selectminbits="$val"
11415                 fi
11416                 $rm -f try.* try
11417                 ;;
11418         *)      : no select, so pick a harmless default
11419                 selectminbits='32'
11420                 ;;
11421         esac
11422         ;;
11423 esac
11424
11425 : Trace out the files included by signal.h, then look for SIGxxx names.
11426 : Remove SIGARRAYSIZE used by HPUX.
11427 : Remove SIGTYP void lines used by OS2.
11428 xxx=`echo '#include <signal.h>' |
11429         $cppstdin $cppminus $cppflags 2>/dev/null |
11430         $grep '^[       ]*#.*include' | 
11431         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11432 : Check this list of files to be sure we have parsed the cpp output ok.
11433 : This will also avoid potentially non-existent files, such 
11434 : as ../foo/bar.h
11435 xxxfiles=''
11436 for xx in $xxx /dev/null ; do
11437         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11438 done
11439 : If we have found no files, at least try signal.h
11440 case "$xxxfiles" in
11441 '')     xxxfiles=`./findhdr signal.h` ;;
11442 esac
11443 xxx=`awk '
11444 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11445         print substr($2, 4, 20)
11446 }
11447 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11448         print substr($3, 4, 20)
11449 }' $xxxfiles`
11450 : Append some common names just in case the awk scan failed.
11451 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11452 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11453 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11454 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11455 : generate a few handy files for later
11456 $cat > signal.c <<'EOCP'
11457 #include <sys/types.h>
11458 #include <signal.h>
11459 #include <stdio.h>
11460 int main() {
11461
11462 /* Strange style to avoid deeply-nested #if/#else/#endif */
11463 #ifndef NSIG
11464 #  ifdef _NSIG
11465 #    define NSIG (_NSIG)
11466 #  endif
11467 #endif
11468
11469 #ifndef NSIG
11470 #  ifdef SIGMAX
11471 #    define NSIG (SIGMAX+1)
11472 #  endif
11473 #endif
11474
11475 #ifndef NSIG
11476 #  ifdef SIG_MAX
11477 #    define NSIG (SIG_MAX+1)
11478 #  endif
11479 #endif
11480
11481 #ifndef NSIG
11482 #  ifdef MAXSIG
11483 #    define NSIG (MAXSIG+1)
11484 #  endif
11485 #endif
11486
11487 #ifndef NSIG
11488 #  ifdef MAX_SIG
11489 #    define NSIG (MAX_SIG+1)
11490 #  endif
11491 #endif
11492
11493 #ifndef NSIG
11494 #  ifdef SIGARRAYSIZE
11495 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11496 #  endif
11497 #endif
11498
11499 #ifndef NSIG
11500 #  ifdef _sys_nsig
11501 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11502 #  endif
11503 #endif
11504
11505 /* Default to some arbitrary number that's big enough to get most
11506    of the common signals.
11507 */
11508 #ifndef NSIG
11509 #    define NSIG 50
11510 #endif
11511
11512 printf("NSIG %d\n", NSIG);
11513
11514 #ifndef JUST_NSIG
11515
11516 EOCP
11517
11518 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11519 {
11520         printf "#ifdef SIG"; printf $1; printf "\n"
11521         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11522         printf $1; printf ");\n"
11523         printf "#endif\n"
11524 }
11525 END {
11526         printf "#endif /* JUST_NSIG */\n";
11527         printf "}\n";
11528 }
11529 ' >>signal.c
11530 $cat >signal.awk <<'EOP'
11531 BEGIN { ndups = 0 }
11532 $1 ~ /^NSIG$/ { nsig = $2 }
11533 ($1 !~ /^NSIG$/) && (NF == 2) {
11534     if ($2 > maxsig) { maxsig = $2 }
11535     if (sig_name[$2]) {
11536         dup_name[ndups] = $1
11537         dup_num[ndups] = $2
11538         ndups++ 
11539     }
11540     else {
11541         sig_name[$2] = $1
11542         sig_num[$2] = $2
11543     }
11544
11545 }
11546 END { 
11547     if (nsig == 0) { nsig = maxsig + 1 }
11548         for (n = 1; n < nsig; n++) {
11549                 if (sig_name[n]) {
11550                         printf("%s %d\n", sig_name[n], sig_num[n])
11551                 }
11552                 else {
11553                         printf("NUM%d %d\n", n, n) 
11554                 }
11555         }
11556     for (n = 0; n < ndups; n++) {
11557                 printf("%s %d\n", dup_name[n], dup_num[n])
11558     }
11559 }
11560 EOP
11561 $cat >signal_cmd <<EOS
11562 $startsh
11563 if $test -s signal.lst; then
11564     echo "Using your existing signal.lst file"
11565         exit 0
11566 fi
11567 xxx="$xxx"
11568 EOS
11569 $cat >>signal_cmd <<'EOS'
11570
11571 set signal
11572 if eval $compile_ok; then
11573         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11574 else
11575         echo "(I can't seem be able to compile the whole test program)" >&4
11576         echo "(I'll try it in little pieces.)" >&4
11577         set signal -DJUST_NSIG
11578         if eval $compile_ok; then
11579                 ./signal$_exe > signal.nsg
11580                 $cat signal.nsg
11581         else
11582                 echo "I can't seem to figure out how many signals you have." >&4
11583                 echo "Guessing 50." >&4
11584                 echo 'NSIG 50' > signal.nsg
11585         fi
11586         : Now look at all the signal names, one at a time.
11587         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11588                 $cat > signal.c <<EOCP
11589 #include <sys/types.h>
11590 #include <signal.h>
11591 #include <stdio.h>
11592 int main() {
11593 printf("$xx %d\n", SIG${xx});
11594 return 0;
11595 }
11596 EOCP
11597                 set signal
11598                 if eval $compile; then
11599                         echo "SIG${xx} found."
11600                         ./signal$_exe  >> signal.ls1
11601                 else
11602                         echo "SIG${xx} NOT found."
11603                 fi
11604         done
11605         if $test -s signal.ls1; then
11606                 $cat signal.nsg signal.ls1 |
11607                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11608         fi
11609
11610 fi
11611 if $test -s signal.lst; then
11612         :
11613 else
11614         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11615         echo 'kill -l' >signal
11616         set X `csh -f <signal`
11617         $rm -f signal
11618         shift
11619         case $# in
11620         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11621         esac
11622         echo $@ | $tr ' ' $trnl | \
11623                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11624 fi
11625 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11626 EOS
11627 chmod a+x signal_cmd
11628 $eunicefix signal_cmd
11629
11630 : generate list of signal names
11631 echo " "
11632 case "$sig_name_init" in
11633 '') doinit=yes ;;
11634 *)  case "$sig_num_init" in
11635     ''|*,*) doinit=yes ;;
11636     esac ;;
11637 esac
11638 case "$doinit" in
11639 yes)
11640         echo "Generating a list of signal names and numbers..." >&4
11641         . ./signal_cmd
11642         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11643         sig_name="ZERO $sig_name"
11644         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11645                                                 { printf "\"%s\", ", $1 }
11646                                                 END { printf "0\n" }' signal.lst`
11647         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11648         sig_num="0 $sig_num"
11649         sig_num_init=`$awk 'BEGIN { printf "0, " }
11650                                         { printf "%d, ", $2}
11651                                         END { printf "0\n"}' signal.lst`
11652         ;;
11653 esac
11654 echo "The following signals are available:"
11655 echo " "
11656 echo $sig_name | $awk \
11657 'BEGIN { linelen = 0 }
11658 {
11659         for (i = 1; i <= NF; i++) {
11660                 name = "SIG" $i " "
11661                 linelen = linelen + length(name)
11662                 if (linelen > 70) {
11663                         printf "\n"
11664                         linelen = length(name)
11665                 }
11666                 printf "%s", name
11667         }
11668         printf "\n"
11669 }'
11670 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11671
11672 : see what type is used for signed size_t
11673 set ssize_t ssizetype int stdio.h sys/types.h
11674 eval $typedef
11675 dflt="$ssizetype"
11676 $cat > ssize.c <<EOM
11677 #include <stdio.h>
11678 #include <sys/types.h>
11679 #define Size_t $sizetype
11680 #define SSize_t $dflt
11681 int main()
11682 {
11683         if (sizeof(Size_t) == sizeof(SSize_t))
11684                 printf("$dflt\n");
11685         else if (sizeof(Size_t) == sizeof(int))
11686                 printf("int\n");
11687         else 
11688                 printf("long\n");
11689         exit(0);
11690 }
11691 EOM
11692 echo " "
11693 set ssize
11694 if eval $compile_ok && ./ssize > /dev/null; then
11695         ssizetype=`./ssize`
11696         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11697 else
11698         $cat >&4 <<EOM
11699 Help! I can't compile and run the ssize_t test program: please enlighten me!
11700 (This is probably a misconfiguration in your system or libraries, and
11701 you really ought to fix it.  Still, I'll try anyway.)
11702
11703 I need a type that is the same size as $sizetype, but is guaranteed to
11704 be signed.  Common values are ssize_t, int and long.
11705
11706 EOM
11707         rp="What signed type is the same size as $sizetype?"
11708         . ./myread
11709         ssizetype="$ans"
11710 fi
11711 $rm -f ssize ssize.*
11712
11713 : see what type of char stdio uses.
11714 echo " "
11715 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11716         echo "Your stdio uses unsigned chars." >&4
11717         stdchar="unsigned char"
11718 else
11719         echo "Your stdio uses signed chars." >&4
11720         stdchar="char"
11721 fi
11722
11723 : see if time exists
11724 echo " "
11725 if test "X$d_time" = X -o X"$timetype" = X; then
11726     if set time val -f d_time; eval $csym; $val; then
11727                 echo 'time() found.' >&4
11728                 val="$define"
11729                 rp="What is the type returned by time() on this system?"
11730                 set time_t timetype long stdio.h sys/types.h
11731                 eval $typedef_ask
11732     else
11733                 echo 'time() not found, hope that will do.' >&4
11734                 val="$undef"
11735                 timetype='int';
11736     fi
11737     set d_time
11738     eval $setvar
11739 fi
11740
11741 : see what type uids are declared as in the kernel
11742 echo " "
11743 echo "Looking for the type for user ids returned by getuid()."
11744 set uid_t uidtype xxx stdio.h sys/types.h
11745 eval $typedef
11746 case "$uidtype" in
11747 xxx)
11748         xxx=`./findhdr sys/user.h`
11749         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11750         case $1 in
11751         unsigned) dflt="$1 $2" ;;
11752         *) dflt="$1" ;;
11753         esac
11754         ;;
11755 *) dflt="$uidtype";;
11756 esac
11757 case "$uidtype" in
11758 uid_t)  echo "uid_t found." ;;
11759 *)      rp="What is the type for user ids returned by getuid()?"
11760         . ./myread
11761         uidtype="$ans"
11762         ;;
11763 esac
11764
11765 : see if dbm.h is available
11766 : see if dbmclose exists
11767 set dbmclose d_dbmclose
11768 eval $inlibc
11769
11770 case "$d_dbmclose" in
11771 $define)
11772         set dbm.h i_dbm
11773         eval $inhdr
11774         case "$i_dbm" in
11775         $define)
11776                 val="$undef"
11777                 set i_rpcsvcdbm
11778                 eval $setvar
11779                 ;;
11780         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11781                 eval $inhdr
11782                 ;;
11783         esac
11784         ;;
11785 *)      echo "We won't be including <dbm.h>"
11786         val="$undef"
11787         set i_dbm
11788         eval $setvar
11789         val="$undef"
11790         set i_rpcsvcdbm
11791         eval $setvar
11792         ;;
11793 esac
11794
11795 : see if this is a sys/file.h system
11796 val=''
11797 set sys/file.h val
11798 eval $inhdr
11799
11800 : do we need to include sys/file.h ?
11801 case "$val" in
11802 "$define")
11803         echo " "
11804         if $h_sysfile; then
11805                 val="$define"
11806                 echo "We'll be including <sys/file.h>." >&4
11807         else
11808                 val="$undef"
11809                 echo "We won't be including <sys/file.h>." >&4
11810         fi
11811         ;;
11812 *)
11813         h_sysfile=false
11814         ;;
11815 esac
11816 set i_sysfile
11817 eval $setvar
11818
11819 : see if fcntl.h is there
11820 val=''
11821 set fcntl.h val
11822 eval $inhdr
11823
11824 : see if we can include fcntl.h
11825 case "$val" in
11826 "$define")
11827         echo " "
11828         if $h_fcntl; then
11829                 val="$define"
11830                 echo "We'll be including <fcntl.h>." >&4
11831         else
11832                 val="$undef"
11833                 if $h_sysfile; then
11834         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11835                 else
11836                         echo "We won't be including <fcntl.h>." >&4
11837                 fi
11838         fi
11839         ;;
11840 *)
11841         h_fcntl=false
11842         val="$undef"
11843         ;;
11844 esac
11845 set i_fcntl
11846 eval $setvar
11847
11848 : see if locale.h is available
11849 set locale.h i_locale
11850 eval $inhdr
11851
11852 : see if mach cthreads are available
11853 if test "X$usethreads" = "X$define"; then
11854         set mach/cthreads.h i_machcthr
11855         eval $inhdr
11856 else
11857         i_machcthr="$undef"
11858 fi
11859
11860
11861
11862 : see if this is a math.h system
11863 set math.h i_math
11864 eval $inhdr
11865
11866 : see if this is a mntent.h system
11867 set mntent.h i_mntent
11868 eval $inhdr
11869
11870 : see if ndbm.h is available
11871 set ndbm.h t_ndbm
11872 eval $inhdr
11873 case "$t_ndbm" in
11874 $define)
11875         : see if dbm_open exists
11876         set dbm_open d_dbm_open
11877         eval $inlibc
11878         case "$d_dbm_open" in
11879         $undef)
11880                 t_ndbm="$undef"
11881                 echo "We won't be including <ndbm.h>"
11882                 ;;
11883         esac
11884         ;;
11885 esac
11886 val="$t_ndbm"
11887 set i_ndbm
11888 eval $setvar
11889
11890 : see if net/errno.h is available
11891 val=''
11892 set net/errno.h val
11893 eval $inhdr
11894
11895 : Unfortunately, it causes problems on some systems.  Arrgh.
11896 case "$val" in
11897 $define)
11898         cat > try.c <<'EOM'
11899 #include <stdio.h>
11900 #include <errno.h>
11901 #include <net/errno.h>
11902 int func()
11903 {
11904         return ENOTSOCK;
11905 }
11906 EOM
11907         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11908                 echo "We'll be including <net/errno.h>." >&4
11909         else
11910                 echo "We won't be including <net/errno.h>." >&4
11911                 val="$undef"
11912         fi
11913         $rm -f try.* try
11914         ;;
11915 esac
11916 set i_neterrno
11917 eval $setvar
11918
11919 : see if this is a poll.h system
11920 set poll.h i_poll
11921 eval $inhdr
11922
11923 : get C preprocessor symbols handy
11924 echo " "
11925 $echo $n "Hmm... $c"
11926 echo $al | $tr ' ' $trnl >Cppsym.know
11927 $cat <<EOSS >Cppsym
11928 $startsh
11929 case "\$1" in
11930 -l) list=true
11931         shift
11932         ;;
11933 esac
11934 unknown=''
11935 case "\$list\$#" in
11936 1|2)
11937         for sym do
11938                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11939                         exit 0
11940                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11941                         :
11942                 else
11943                         unknown="\$unknown \$sym"
11944                 fi
11945         done
11946         set X \$unknown
11947         shift
11948         ;;
11949 esac
11950 case \$# in
11951 0) exit 1;;
11952 esac
11953 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11954 #ifdef \1\\
11955 exit 0; _ _ _ _\1\\      \1\\
11956 #endif\\
11957 /' >Cppsym\$\$
11958 echo "exit 1; _ _ _" >>Cppsym\$\$
11959 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11960 case "\$list" in
11961 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11962 *)
11963         sh Cppsym2\$\$
11964         status=\$?
11965         ;;
11966 esac
11967 $rm -f Cppsym\$\$ Cppsym2\$\$
11968 exit \$status
11969 EOSS
11970 chmod +x Cppsym
11971 $eunicefix Cppsym
11972 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11973
11974 : now check the C compiler for additional symbols
11975 postprocess_cc_v=''
11976 case "$osname" in
11977 aix) postprocess_cc_v="|$tr , ' '" ;;
11978 esac
11979 $cat >ccsym <<EOS
11980 $startsh
11981 $cat >tmp.c <<EOF
11982 extern int foo;
11983 EOF
11984 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
11985 do
11986         case "\$i" in
11987         -D*) echo "\$i" | $sed 's/^-D//';;
11988         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11989         esac
11990 done
11991 $rm -f try.c
11992 EOS
11993 unset postprocess_cc_v
11994 chmod +x ccsym
11995 $eunicefix ccsym
11996 ./ccsym > ccsym1.raw
11997 if $test -s ccsym1.raw; then
11998        $sort ccsym1.raw | $uniq >ccsym.raw
11999 else
12000        mv ccsym1.raw ccsym.raw
12001 fi
12002
12003 $awk '/\=/ { print $0; next }
12004         { print $0"=1" }' ccsym.raw >ccsym.list
12005 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12006 $comm -13 ccsym.true ccsym.list >ccsym.own
12007 $comm -12 ccsym.true ccsym.list >ccsym.com
12008 $comm -23 ccsym.true ccsym.list >ccsym.cpp
12009 also=''
12010 if $test -z ccsym.raw; then
12011         echo "Your C compiler doesn't seem to define any symbols!" >&4
12012         echo " "
12013         echo "However, your C preprocessor defines the following symbols:"
12014         $cat Cppsym.true
12015         ccsymbols=''
12016         cppsymbols=`$cat Cppsym.true`
12017         cppsymbols=`echo $cppsymbols`
12018         cppccsymbols="$cppsymbols"
12019 else
12020         if $test -s ccsym.com; then
12021                 echo "Your C compiler and pre-processor define these symbols:"
12022                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12023                 also='also '
12024                 symbols='ones'
12025                 cppccsymbols=`$cat ccsym.com`
12026                 cppccsymbols=`echo $cppccsymbols`
12027                 $test "$silent" || sleep 1
12028         fi
12029         if $test -s ccsym.cpp; then
12030                 $test "$also" && echo " "
12031                 echo "Your C pre-processor ${also}defines the following symbols:"
12032                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12033                 also='further '
12034                 cppsymbols=`$cat ccsym.cpp`
12035                 cppsymbols=`echo $cppsymbols`
12036                 $test "$silent" || sleep 1
12037         fi
12038         if $test -s ccsym.own; then
12039                 $test "$also" && echo " "
12040                 echo "Your C compiler ${also}defines the following cpp symbols:"
12041                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12042                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12043                 ccsymbols=`$cat ccsym.own`
12044                 ccsymbols=`echo $ccsymbols`
12045                 $test "$silent" || sleep 1
12046         fi
12047 fi
12048 $rm -f ccsym*
12049
12050 : see if this is a termio system
12051 val="$undef"
12052 val2="$undef"
12053 val3="$undef"
12054 if $test `./findhdr termios.h`; then
12055         set tcsetattr i_termios
12056         eval $inlibc
12057         val3="$i_termios"
12058 fi
12059 echo " "
12060 case "$val3" in
12061 "$define") echo "You have POSIX termios.h... good!" >&4;;
12062 *) if ./Cppsym pyr; then
12063                 case "`/bin/universe`" in
12064                 ucb) if $test `./findhdr sgtty.h`; then
12065                                 val2="$define"
12066                                 echo "<sgtty.h> found." >&4
12067                         else
12068                                 echo "System is pyramid with BSD universe."
12069                                 echo "<sgtty.h> not found--you could have problems." >&4
12070                         fi;;
12071                 *) if $test `./findhdr termio.h`; then
12072                                 val="$define"
12073                                 echo "<termio.h> found." >&4
12074                         else
12075                                 echo "System is pyramid with USG universe."
12076                                 echo "<termio.h> not found--you could have problems." >&4
12077                         fi;;
12078                 esac
12079         elif ./usg; then
12080                 if $test `./findhdr termio.h`; then
12081                         echo "<termio.h> found." >&4
12082                         val="$define"
12083                 elif $test `./findhdr sgtty.h`; then
12084                         echo "<sgtty.h> found." >&4
12085                         val2="$define"
12086                 else
12087 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12088                 fi
12089         else
12090                 if $test `./findhdr sgtty.h`; then
12091                         echo "<sgtty.h> found." >&4
12092                         val2="$define"
12093                 elif $test `./findhdr termio.h`; then
12094                         echo "<termio.h> found." >&4
12095                         val="$define"
12096                 else
12097 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12098                 fi
12099         fi;;
12100 esac
12101 set i_termio; eval $setvar
12102 val=$val2; set i_sgtty; eval $setvar
12103 val=$val3; set i_termios; eval $setvar
12104
12105 : see if stdarg is available
12106 echo " "
12107 if $test `./findhdr stdarg.h`; then
12108         echo "<stdarg.h> found." >&4
12109         valstd="$define"
12110 else
12111         echo "<stdarg.h> NOT found." >&4
12112         valstd="$undef"
12113 fi
12114
12115 : see if varags is available
12116 echo " "
12117 if $test `./findhdr varargs.h`; then
12118         echo "<varargs.h> found." >&4
12119 else
12120         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12121 fi
12122
12123 : set up the varargs testing programs
12124 $cat > varargs.c <<EOP
12125 #ifdef I_STDARG
12126 #include <stdarg.h>
12127 #endif
12128 #ifdef I_VARARGS
12129 #include <varargs.h>
12130 #endif
12131
12132 #ifdef I_STDARG
12133 int f(char *p, ...)
12134 #else
12135 int f(va_alist)
12136 va_dcl
12137 #endif
12138 {
12139         va_list ap;
12140 #ifndef I_STDARG
12141         char *p;
12142 #endif
12143 #ifdef I_STDARG
12144         va_start(ap,p);
12145 #else
12146         va_start(ap);
12147         p = va_arg(ap, char *);
12148 #endif
12149         va_end(ap);
12150 }
12151 EOP
12152 $cat > varargs <<EOP
12153 $startsh
12154 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12155         echo "true"
12156 else
12157         echo "false"
12158 fi
12159 $rm -f varargs$_o
12160 EOP
12161 chmod +x varargs
12162
12163 : now check which varargs header should be included
12164 echo " "
12165 i_varhdr=''
12166 case "$valstd" in
12167 "$define")
12168         if `./varargs I_STDARG`; then
12169                 val='stdarg.h'
12170         elif `./varargs I_VARARGS`; then
12171                 val='varargs.h'
12172         fi
12173         ;;
12174 *)
12175         if `./varargs I_VARARGS`; then
12176                 val='varargs.h'
12177         fi
12178         ;;
12179 esac
12180 case "$val" in
12181 '')
12182 echo "I could not find the definition for va_dcl... You have problems..." >&4
12183         val="$undef"; set i_stdarg; eval $setvar
12184         val="$undef"; set i_varargs; eval $setvar
12185         ;;
12186 *) 
12187         set i_varhdr
12188         eval $setvar
12189         case "$i_varhdr" in
12190         stdarg.h)
12191                 val="$define"; set i_stdarg; eval $setvar
12192                 val="$undef"; set i_varargs; eval $setvar
12193                 ;;
12194         varargs.h)
12195                 val="$undef"; set i_stdarg; eval $setvar
12196                 val="$define"; set i_varargs; eval $setvar
12197                 ;;
12198         esac
12199         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12200 esac
12201 $rm -f varargs*
12202
12203 : see if stddef is available
12204 set stddef.h i_stddef
12205 eval $inhdr
12206
12207 : see if sys/access.h is available
12208 set sys/access.h i_sysaccess
12209 eval $inhdr
12210
12211 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12212 set sys/filio.h i_sysfilio
12213 eval $inhdr
12214 echo " "
12215 if $test `./findhdr sys/ioctl.h`; then
12216         val="$define"
12217         echo '<sys/ioctl.h> found.' >&4
12218 else
12219         val="$undef"
12220         if $test $i_sysfilio = "$define"; then
12221             echo '<sys/ioctl.h> NOT found.' >&4
12222         else
12223                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12224                 $test $i_termio = "$define" && xxx="termio.h"
12225                 $test $i_termios = "$define" && xxx="termios.h"
12226 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12227         fi
12228 fi
12229 set i_sysioctl
12230 eval $setvar
12231
12232 : see if sys/resource.h has to be included
12233 set sys/resource.h i_sysresrc
12234 eval $inhdr
12235
12236 : see if sys/security.h is available
12237 set sys/security.h i_syssecrt
12238 eval $inhdr
12239
12240 : see if this is a sys/statvfs.h system
12241 set sys/statvfs.h i_sysstatvfs
12242 eval $inhdr
12243
12244 : see if this is a sys/un.h system
12245 set sys/un.h i_sysun
12246 eval $inhdr
12247
12248 : see if this is a syswait system
12249 set sys/wait.h i_syswait
12250 eval $inhdr
12251
12252 : see if this is an utime system
12253 set utime.h i_utime
12254 eval $inhdr
12255
12256 : see if this is a values.h system
12257 set values.h i_values
12258 eval $inhdr
12259
12260 : see if this is a vfork system
12261 case "$d_vfork" in
12262 "$define")
12263         set vfork.h i_vfork
12264         eval $inhdr
12265         ;;
12266 *)
12267         i_vfork="$undef"
12268         ;;
12269 esac
12270
12271 : see if gdbm.h is available
12272 set gdbm.h t_gdbm
12273 eval $inhdr
12274 case "$t_gdbm" in
12275 $define)
12276         : see if gdbm_open exists
12277         set gdbm_open d_gdbm_open
12278         eval $inlibc
12279         case "$d_gdbm_open" in
12280         $undef)
12281                 t_gdbm="$undef"
12282                 echo "We won't be including <gdbm.h>"
12283                 ;;
12284         esac
12285         ;;
12286 esac
12287 val="$t_gdbm"
12288 set i_gdbm
12289 eval $setvar
12290
12291 echo " "
12292 echo "Looking for extensions..." >&4
12293 tdir=`pwd`
12294 cd $rsrc/ext
12295 : If we are using the old config.sh, known_extensions may contain
12296 : old or inaccurate or duplicate values.
12297 known_extensions=''
12298 nonxs_extensions=''
12299 : We do not use find because it might not be available.
12300 : We do not just use MANIFEST because the user may have dropped
12301 : some additional extensions into the source tree and expect them
12302 : to be built.
12303 for xxx in * ; do
12304         case "$xxx" in
12305         DynaLoader|dynaload) ;;
12306         *)      if $test -f $xxx/$xxx.xs; then
12307                         known_extensions="$known_extensions $xxx"
12308                 elif $test -f $xxx/Makefile.PL; then
12309                         nonxs_extensions="$nonxs_extensions $xxx"
12310                 else
12311                         if $test -d $xxx; then
12312                                 # Look for nested extensions, eg. Devel/Dprof.
12313                                 cd $xxx
12314                                 for yyy in * ; do
12315                                 if $test -f $yyy/$yyy.xs; then
12316                                         known_extensions="$known_extensions $xxx/$yyy"
12317                                 elif $test -f $yyy/Makefile.PL; then
12318                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12319                                 fi
12320                                 done
12321                                 cd ..
12322                         fi
12323                 fi 
12324                 ;;
12325         esac
12326 done
12327 set X $nonxs_extensions
12328 shift
12329 nonxs_extensions="$*"
12330 set X $known_extensions
12331 shift
12332 known_extensions="$*"
12333 cd $tdir
12334
12335 : Now see which are supported on this system.
12336 avail_ext=''
12337 for xxx in $known_extensions ; do
12338         case "$xxx" in
12339         DB_File|db_file)
12340                 case "$i_db" in
12341                 $define) avail_ext="$avail_ext $xxx" ;;
12342                 esac
12343                 ;;
12344         GDBM_File|gdbm_fil)
12345                 case "$i_gdbm" in 
12346                 $define) avail_ext="$avail_ext $xxx" ;;
12347                 esac
12348                 ;;
12349         NDBM_File|ndbm_fil)
12350                 case "$i_ndbm" in
12351                 $define) avail_ext="$avail_ext $xxx" ;;
12352                 esac
12353                 ;;
12354         ODBM_File|odbm_fil) 
12355                 case "${i_dbm}${i_rpcsvcdbm}" in
12356                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12357                 esac
12358                 ;;
12359         POSIX|posix)
12360                 case "$useposix" in
12361                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12362                 esac
12363                 ;;
12364         Opcode|opcode)
12365                 case "$useopcode" in
12366                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12367                 esac
12368                 ;;
12369         Socket|socket)
12370                 case "$d_socket" in 
12371                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12372                 esac
12373                 ;;
12374         Thread|thread)
12375                 case "$usethreads" in 
12376                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12377                 esac
12378                 ;;
12379         IPC/SysV|ipc/sysv)
12380                 : XXX Do we need a useipcsysv variable here
12381                 case "${d_msg}${d_sem}${d_shm}" in 
12382                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12383                 esac
12384                 ;;
12385         *)      avail_ext="$avail_ext $xxx"
12386                 ;;
12387         esac
12388 done
12389
12390 set X $avail_ext
12391 shift
12392 avail_ext="$*"
12393
12394 : Now see which nonxs extensions are supported on this system.
12395 : For now assume all are.
12396 nonxs_ext=''
12397 for xxx in $nonxs_extensions ; do
12398         case "$xxx" in
12399         *)      nonxs_ext="$nonxs_ext $xxx"
12400                 ;;
12401         esac
12402 done
12403
12404 set X $nonxs_ext
12405 shift
12406 nonxs_ext="$*"
12407
12408 case $usedl in
12409 $define)
12410         $cat <<EOM
12411 A number of extensions are supplied with $package.  You may choose to
12412 compile these extensions for dynamic loading (the default), compile
12413 them into the $package executable (static loading), or not include
12414 them at all.  Answer "none" to include no extensions.
12415 Note that DynaLoader is always built and need not be mentioned here.
12416
12417 EOM
12418         case "$dynamic_ext" in
12419         '') dflt="$avail_ext" ;;
12420         *)      dflt="$dynamic_ext"
12421                 # Perhaps we are reusing an old out-of-date config.sh.
12422                 case "$hint" in
12423                 previous)
12424                         if test X"$dynamic_ext" != X"$avail_ext"; then
12425                                 $cat <<EOM
12426 NOTICE:  Your previous config.sh list may be incorrect. 
12427 The extensions now available to you are 
12428         ${avail_ext}
12429 but the default list from your previous config.sh is
12430         ${dynamic_ext} 
12431
12432 EOM
12433                         fi
12434                         ;;
12435                 esac
12436                 ;;
12437         esac
12438         case "$dflt" in
12439         '')     dflt=none;;
12440         esac
12441         rp="What extensions do you wish to load dynamically?"
12442         . ./myread
12443         case "$ans" in
12444         none) dynamic_ext=' ' ;;
12445         *) dynamic_ext="$ans" ;;
12446         esac
12447
12448         case "$static_ext" in
12449         '')
12450                 : Exclude those already listed in dynamic linking
12451                 dflt=''
12452                 for xxx in $avail_ext; do
12453                         case " $dynamic_ext " in
12454                         *" $xxx "*) ;;
12455                         *) dflt="$dflt $xxx" ;;
12456                         esac
12457                 done
12458                 set X $dflt
12459                 shift
12460                 dflt="$*"
12461                 ;;
12462         *)  dflt="$static_ext" 
12463                 ;;
12464         esac
12465
12466         case "$dflt" in
12467         '')     dflt=none;;
12468         esac
12469         rp="What extensions do you wish to load statically?"
12470         . ./myread
12471         case "$ans" in
12472         none) static_ext=' ' ;;
12473         *) static_ext="$ans" ;;
12474         esac
12475         ;;
12476 *)
12477         $cat <<EOM
12478 A number of extensions are supplied with $package.  Answer "none" 
12479 to include no extensions. 
12480 Note that DynaLoader is always built and need not be mentioned here.
12481
12482 EOM
12483         case "$static_ext" in
12484         '') dflt="$avail_ext" ;;
12485         *)      dflt="$static_ext"
12486                 # Perhaps we are reusing an old out-of-date config.sh.
12487                 case "$hint" in
12488                 previous)
12489                         if test X"$static_ext" != X"$avail_ext"; then
12490                                 $cat <<EOM
12491 NOTICE:  Your previous config.sh list may be incorrect. 
12492 The extensions now available to you are 
12493         ${avail_ext}
12494 but the default list from your previous config.sh is
12495         ${static_ext} 
12496
12497 EOM
12498                         fi
12499                         ;;
12500                 esac
12501                 ;;
12502         esac
12503         : Exclude those that are not xs extensions
12504         case "$dflt" in
12505         '')     dflt=none;;
12506         esac
12507         rp="What extensions do you wish to include?"
12508         . ./myread
12509         case "$ans" in
12510         none) static_ext=' ' ;;
12511         *) static_ext="$ans" ;;
12512         esac
12513         ;;
12514 esac
12515
12516 set X $dynamic_ext $static_ext $nonxs_ext
12517 shift
12518 extensions="$*"
12519
12520 : Remove build directory name from cppstdin so it can be used from
12521 : either the present location or the final installed location.
12522 echo " "
12523 : Get out of the UU directory to get correct path name.
12524 cd ..
12525 case "$cppstdin" in
12526 `pwd`/cppstdin)
12527         echo "Stripping down cppstdin path name"
12528         cppstdin=cppstdin
12529         ;;
12530 esac
12531 cd UU
12532
12533 : end of configuration questions
12534 echo " "
12535 echo "End of configuration questions."
12536 echo " "
12537
12538 : back to where it started
12539 if test -d ../UU; then
12540         cd ..
12541 fi
12542
12543 : configuration may be patched via a 'config.over' file
12544 if $test -f config.over; then
12545         echo " "
12546         dflt=y
12547         rp='I see a config.over file.  Do you wish to load it?'
12548         . UU/myread
12549         case "$ans" in
12550         n*) echo "OK, I'll ignore it.";;
12551         *)      . ./config.over
12552                 echo "Configuration override changes have been loaded."
12553                 ;;
12554         esac
12555 fi
12556
12557 : in case they want portability, strip down executable paths
12558 case "$d_portable" in
12559 "$define")
12560         echo " "
12561         echo "Stripping down executable paths..." >&4
12562         for file in $loclist $trylist; do
12563                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12564                         eval $file="\$file"
12565                 fi
12566         done
12567         ;;
12568 esac
12569
12570 : create config.sh file
12571 echo " "
12572 echo "Creating config.sh..." >&4
12573 $spitshell <<EOT >config.sh
12574 $startsh
12575 #
12576 # This file was produced by running the Configure script. It holds all the
12577 # definitions figured out by Configure. Should you modify one of these values,
12578 # do not forget to propagate your changes by running "Configure -der". You may
12579 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12580 #
12581
12582 # Package name      : $package
12583 # Source directory  : $src
12584 # Configuration time: $cf_time
12585 # Configured by     : $cf_by
12586 # Target system     : $myuname
12587
12588 Author='$Author'
12589 Date='$Date'
12590 Header='$Header'
12591 Id='$Id'
12592 Locker='$Locker'
12593 Log='$Log'
12594 Mcc='$Mcc'
12595 RCSfile='$RCSfile'
12596 Revision='$Revision'
12597 Source='$Source'
12598 State='$State'
12599 _a='$_a'
12600 _exe='$_exe'
12601 _o='$_o'
12602 afs='$afs'
12603 alignbytes='$alignbytes'
12604 ansi2knr='$ansi2knr'
12605 aphostname='$aphostname'
12606 apiversion='$apiversion'
12607 ar='$ar'
12608 archlib='$archlib'
12609 archlibexp='$archlibexp'
12610 archname64='$archname64'
12611 archname='$archname'
12612 archobjs='$archobjs'
12613 awk='$awk'
12614 baserev='$baserev'
12615 bash='$bash'
12616 bin='$bin'
12617 binexp='$binexp'
12618 bison='$bison'
12619 byacc='$byacc'
12620 byteorder='$byteorder'
12621 c='$c'
12622 castflags='$castflags'
12623 cat='$cat'
12624 cc='$cc'
12625 cccdlflags='$cccdlflags'
12626 ccdlflags='$ccdlflags'
12627 ccflags='$ccflags'
12628 ccsymbols='$ccsymbols'
12629 cf_by='$cf_by'
12630 cf_email='$cf_email'
12631 cf_time='$cf_time'
12632 chgrp='$chgrp'
12633 chmod='$chmod'
12634 chown='$chown'
12635 clocktype='$clocktype'
12636 comm='$comm'
12637 compress='$compress'
12638 contains='$contains'
12639 cp='$cp'
12640 cpio='$cpio'
12641 cpp='$cpp'
12642 cpp_stuff='$cpp_stuff'
12643 cppccsymbols='$cppccsymbols'
12644 cppflags='$cppflags'
12645 cpplast='$cpplast'
12646 cppminus='$cppminus'
12647 cpprun='$cpprun'
12648 cppstdin='$cppstdin'
12649 cppsymbols='$cppsymbols'
12650 crosscompile='$crosscompile'
12651 cryptlib='$cryptlib'
12652 csh='$csh'
12653 d_Gconvert='$d_Gconvert'
12654 d_access='$d_access'
12655 d_accessx='$d_accessx'
12656 d_alarm='$d_alarm'
12657 d_archlib='$d_archlib'
12658 d_attribut='$d_attribut'
12659 d_bcmp='$d_bcmp'
12660 d_bcopy='$d_bcopy'
12661 d_bsd='$d_bsd'
12662 d_bsdgetpgrp='$d_bsdgetpgrp'
12663 d_bsdsetpgrp='$d_bsdsetpgrp'
12664 d_bzero='$d_bzero'
12665 d_casti32='$d_casti32'
12666 d_castneg='$d_castneg'
12667 d_charvspr='$d_charvspr'
12668 d_chown='$d_chown'
12669 d_chroot='$d_chroot'
12670 d_chsize='$d_chsize'
12671 d_closedir='$d_closedir'
12672 d_cmsghdr_s='$d_cmsghdr_s'
12673 d_const='$d_const'
12674 d_crypt='$d_crypt'
12675 d_csh='$d_csh'
12676 d_cuserid='$d_cuserid'
12677 d_dbl_dig='$d_dbl_dig'
12678 d_dbmclose64='$d_dbmclose64'
12679 d_dbminit64='$d_dbminit64'
12680 d_delete64='$d_delete64'
12681 d_difftime='$d_difftime'
12682 d_dirent64_s='$d_dirent64_s'
12683 d_dirnamlen='$d_dirnamlen'
12684 d_dlerror='$d_dlerror'
12685 d_dlopen='$d_dlopen'
12686 d_dlsymun='$d_dlsymun'
12687 d_dosuid='$d_dosuid'
12688 d_drand48proto='$d_drand48proto'
12689 d_dup2='$d_dup2'
12690 d_eaccess='$d_eaccess'
12691 d_endgrent='$d_endgrent'
12692 d_endhent='$d_endhent'
12693 d_endnent='$d_endnent'
12694 d_endpent='$d_endpent'
12695 d_endpwent='$d_endpwent'
12696 d_endsent='$d_endsent'
12697 d_eofnblk='$d_eofnblk'
12698 d_eunice='$d_eunice'
12699 d_fchmod='$d_fchmod'
12700 d_fchown='$d_fchown'
12701 d_fcntl='$d_fcntl'
12702 d_fd_macros='$d_fd_macros'
12703 d_fd_set='$d_fd_set'
12704 d_fds_bits='$d_fds_bits'
12705 d_fetch64='$d_fetch64'
12706 d_fgetpos64='$d_fgetpos64'
12707 d_fgetpos='$d_fgetpos'
12708 d_firstkey64='$d_firstkey64'
12709 d_flexfnam='$d_flexfnam'
12710 d_flock64_s='$d_flock64_s'
12711 d_flock='$d_flock'
12712 d_fopen64='$d_fopen64'
12713 d_fork='$d_fork'
12714 d_fpathconf='$d_fpathconf'
12715 d_freopen64='$d_freopen64'
12716 d_fseek64='$d_fseek64'
12717 d_fseeko64='$d_fseeko64'
12718 d_fseeko='$d_fseeko'
12719 d_fsetpos64='$d_fsetpos64'
12720 d_fsetpos='$d_fsetpos'
12721 d_fstat64='$d_fstat64'
12722 d_fstatfs='$d_fstatfs'
12723 d_fstatvfs='$d_fstatvfs'
12724 d_ftell64='$d_ftell64'
12725 d_ftello64='$d_ftello64'
12726 d_ftello='$d_ftello'
12727 d_ftime='$d_ftime'
12728 d_ftruncate64='$d_ftruncate64'
12729 d_getgrent='$d_getgrent'
12730 d_getgrps='$d_getgrps'
12731 d_gethbyaddr='$d_gethbyaddr'
12732 d_gethbyname='$d_gethbyname'
12733 d_gethent='$d_gethent'
12734 d_gethname='$d_gethname'
12735 d_gethostprotos='$d_gethostprotos'
12736 d_getlogin='$d_getlogin'
12737 d_getmntent='$d_getmntent'
12738 d_getnbyaddr='$d_getnbyaddr'
12739 d_getnbyname='$d_getnbyname'
12740 d_getnent='$d_getnent'
12741 d_getnetprotos='$d_getnetprotos'
12742 d_getpbyname='$d_getpbyname'
12743 d_getpbynumber='$d_getpbynumber'
12744 d_getpent='$d_getpent'
12745 d_getpgid='$d_getpgid'
12746 d_getpgrp2='$d_getpgrp2'
12747 d_getpgrp='$d_getpgrp'
12748 d_getppid='$d_getppid'
12749 d_getprior='$d_getprior'
12750 d_getprotoprotos='$d_getprotoprotos'
12751 d_getpwent='$d_getpwent'
12752 d_getsbyname='$d_getsbyname'
12753 d_getsbyport='$d_getsbyport'
12754 d_getsent='$d_getsent'
12755 d_getservprotos='$d_getservprotos'
12756 d_gettimeod='$d_gettimeod'
12757 d_gnulibc='$d_gnulibc'
12758 d_grpasswd='$d_grpasswd'
12759 d_hasmntopt='$d_hasmntopt'
12760 d_htonl='$d_htonl'
12761 d_index='$d_index'
12762 d_inetaton='$d_inetaton'
12763 d_ino64t='$d_ino64t'
12764 d_int64t='$d_int64t'
12765 d_iovec_s='$d_iovec_s'
12766 d_isascii='$d_isascii'
12767 d_killpg='$d_killpg'
12768 d_lchown='$d_lchown'
12769 d_link='$d_link'
12770 d_locconv='$d_locconv'
12771 d_lockf64='$d_lockf64'
12772 d_lockf='$d_lockf'
12773 d_longdbl='$d_longdbl'
12774 d_longlong='$d_longlong'
12775 d_lseek64='$d_lseek64'
12776 d_lstat64='$d_lstat64'
12777 d_lstat='$d_lstat'
12778 d_madvise='$d_madvise'
12779 d_mblen='$d_mblen'
12780 d_mbstowcs='$d_mbstowcs'
12781 d_mbtowc='$d_mbtowc'
12782 d_memcmp='$d_memcmp'
12783 d_memcpy='$d_memcpy'
12784 d_memmove='$d_memmove'
12785 d_memset='$d_memset'
12786 d_mkdir='$d_mkdir'
12787 d_mkfifo='$d_mkfifo'
12788 d_mktime='$d_mktime'
12789 d_mmap='$d_mmap'
12790 d_mprotect='$d_mprotect'
12791 d_msg='$d_msg'
12792 d_msg_ctrunc='$d_msg_ctrunc'
12793 d_msg_dontroute='$d_msg_dontroute'
12794 d_msg_oob='$d_msg_oob'
12795 d_msg_peek='$d_msg_peek'
12796 d_msg_proxy='$d_msg_proxy'
12797 d_msgctl='$d_msgctl'
12798 d_msgget='$d_msgget'
12799 d_msghdr_s='$d_msghdr_s'
12800 d_msgrcv='$d_msgrcv'
12801 d_msgsnd='$d_msgsnd'
12802 d_msync='$d_msync'
12803 d_munmap='$d_munmap'
12804 d_mymalloc='$d_mymalloc'
12805 d_nextkey64='$d_nextkey64'
12806 d_nice='$d_nice'
12807 d_off64t='$d_off64t'
12808 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12809 d_oldpthreads='$d_oldpthreads'
12810 d_oldsock='$d_oldsock'
12811 d_open3='$d_open3'
12812 d_open64='$d_open64'
12813 d_opendir64='$d_opendir64'
12814 d_pathconf='$d_pathconf'
12815 d_pause='$d_pause'
12816 d_phostname='$d_phostname'
12817 d_pipe='$d_pipe'
12818 d_poll='$d_poll'
12819 d_portable='$d_portable'
12820 d_pthread_yield='$d_pthread_yield'
12821 d_pwage='$d_pwage'
12822 d_pwchange='$d_pwchange'
12823 d_pwclass='$d_pwclass'
12824 d_pwcomment='$d_pwcomment'
12825 d_pwexpire='$d_pwexpire'
12826 d_pwgecos='$d_pwgecos'
12827 d_pwpasswd='$d_pwpasswd'
12828 d_pwquota='$d_pwquota'
12829 d_readdir64='$d_readdir64'
12830 d_readdir='$d_readdir'
12831 d_readlink='$d_readlink'
12832 d_readv='$d_readv'
12833 d_recvmsg='$d_recvmsg'
12834 d_rename='$d_rename'
12835 d_rewinddir='$d_rewinddir'
12836 d_rmdir='$d_rmdir'
12837 d_safebcpy='$d_safebcpy'
12838 d_safemcpy='$d_safemcpy'
12839 d_sanemcmp='$d_sanemcmp'
12840 d_sched_yield='$d_sched_yield'
12841 d_scm_rights='$d_scm_rights'
12842 d_seekdir64='$d_seekdir64'
12843 d_seekdir='$d_seekdir'
12844 d_select='$d_select'
12845 d_sem='$d_sem'
12846 d_semctl='$d_semctl'
12847 d_semctl_semid_ds='$d_semctl_semid_ds'
12848 d_semctl_semun='$d_semctl_semun'
12849 d_semget='$d_semget'
12850 d_semop='$d_semop'
12851 d_sendmsg='$d_sendmsg'
12852 d_setegid='$d_setegid'
12853 d_seteuid='$d_seteuid'
12854 d_setgrent='$d_setgrent'
12855 d_setgrps='$d_setgrps'
12856 d_sethent='$d_sethent'
12857 d_setlinebuf='$d_setlinebuf'
12858 d_setlocale='$d_setlocale'
12859 d_setnent='$d_setnent'
12860 d_setpent='$d_setpent'
12861 d_setpgid='$d_setpgid'
12862 d_setpgrp2='$d_setpgrp2'
12863 d_setpgrp='$d_setpgrp'
12864 d_setprior='$d_setprior'
12865 d_setpwent='$d_setpwent'
12866 d_setregid='$d_setregid'
12867 d_setresgid='$d_setresgid'
12868 d_setresuid='$d_setresuid'
12869 d_setreuid='$d_setreuid'
12870 d_setrgid='$d_setrgid'
12871 d_setruid='$d_setruid'
12872 d_setsent='$d_setsent'
12873 d_setsid='$d_setsid'
12874 d_setvbuf='$d_setvbuf'
12875 d_sfio='$d_sfio'
12876 d_shm='$d_shm'
12877 d_shmat='$d_shmat'
12878 d_shmatprototype='$d_shmatprototype'
12879 d_shmctl='$d_shmctl'
12880 d_shmdt='$d_shmdt'
12881 d_shmget='$d_shmget'
12882 d_sigaction='$d_sigaction'
12883 d_sigsetjmp='$d_sigsetjmp'
12884 d_socket='$d_socket'
12885 d_sockpair='$d_sockpair'
12886 d_stat64='$d_stat64'
12887 d_statblks='$d_statblks'
12888 d_statfs='$d_statfs'
12889 d_statfsflags='$d_statfsflags'
12890 d_statvfs='$d_statvfs'
12891 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12892 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12893 d_stdiobase='$d_stdiobase'
12894 d_stdstdio='$d_stdstdio'
12895 d_store64='$d_store64'
12896 d_strchr='$d_strchr'
12897 d_strcoll='$d_strcoll'
12898 d_strctcpy='$d_strctcpy'
12899 d_strerrm='$d_strerrm'
12900 d_strerror='$d_strerror'
12901 d_strtod='$d_strtod'
12902 d_strtol='$d_strtol'
12903 d_strtoul='$d_strtoul'
12904 d_strxfrm='$d_strxfrm'
12905 d_suidsafe='$d_suidsafe'
12906 d_symlink='$d_symlink'
12907 d_syscall='$d_syscall'
12908 d_sysconf='$d_sysconf'
12909 d_sysernlst='$d_sysernlst'
12910 d_syserrlst='$d_syserrlst'
12911 d_system='$d_system'
12912 d_tcgetpgrp='$d_tcgetpgrp'
12913 d_tcsetpgrp='$d_tcsetpgrp'
12914 d_telldir64='$d_telldir64'
12915 d_telldir='$d_telldir'
12916 d_telldirproto='$d_telldirproto'
12917 d_time='$d_time'
12918 d_times='$d_times'
12919 d_tmpfile64='$d_tmpfile64'
12920 d_truncate64='$d_truncate64'
12921 d_truncate='$d_truncate'
12922 d_tzname='$d_tzname'
12923 d_umask='$d_umask'
12924 d_uname='$d_uname'
12925 d_union_semun='$d_union_semun'
12926 d_vfork='$d_vfork'
12927 d_void_closedir='$d_void_closedir'
12928 d_voidsig='$d_voidsig'
12929 d_voidtty='$d_voidtty'
12930 d_volatile='$d_volatile'
12931 d_vprintf='$d_vprintf'
12932 d_wait4='$d_wait4'
12933 d_waitpid='$d_waitpid'
12934 d_wcstombs='$d_wcstombs'
12935 d_wctomb='$d_wctomb'
12936 d_writev='$d_writev'
12937 d_xenix='$d_xenix'
12938 date='$date'
12939 db_hashtype='$db_hashtype'
12940 db_prefixtype='$db_prefixtype'
12941 defvoidused='$defvoidused'
12942 direntrytype='$direntrytype'
12943 dlext='$dlext'
12944 dlsrc='$dlsrc'
12945 doublesize='$doublesize'
12946 drand01='$drand01'
12947 dynamic_ext='$dynamic_ext'
12948 eagain='$eagain'
12949 ebcdic='$ebcdic'
12950 echo='$echo'
12951 egrep='$egrep'
12952 emacs='$emacs'
12953 eunicefix='$eunicefix'
12954 exe_ext='$exe_ext'
12955 expr='$expr'
12956 extensions='$extensions'
12957 find='$find'
12958 firstmakefile='$firstmakefile'
12959 flex='$flex'
12960 fpostype='$fpostype'
12961 freetype='$freetype'
12962 full_ar='$full_ar'
12963 full_csh='$full_csh'
12964 full_sed='$full_sed'
12965 gccversion='$gccversion'
12966 gidtype='$gidtype'
12967 glibpth='$glibpth'
12968 grep='$grep'
12969 groupcat='$groupcat'
12970 groupstype='$groupstype'
12971 gzip='$gzip'
12972 h_fcntl='$h_fcntl'
12973 h_sysfile='$h_sysfile'
12974 hint='$hint'
12975 hostcat='$hostcat'
12976 huge='$huge'
12977 i_arpainet='$i_arpainet'
12978 i_bsdioctl='$i_bsdioctl'
12979 i_db='$i_db'
12980 i_dbm='$i_dbm'
12981 i_dirent='$i_dirent'
12982 i_dld='$i_dld'
12983 i_dlfcn='$i_dlfcn'
12984 i_fcntl='$i_fcntl'
12985 i_float='$i_float'
12986 i_gdbm='$i_gdbm'
12987 i_grp='$i_grp'
12988 i_inttypes='$i_inttypes'
12989 i_limits='$i_limits'
12990 i_locale='$i_locale'
12991 i_machcthr='$i_machcthr'
12992 i_malloc='$i_malloc'
12993 i_math='$i_math'
12994 i_memory='$i_memory'
12995 i_mntent='$i_mntent'
12996 i_ndbm='$i_ndbm'
12997 i_netdb='$i_netdb'
12998 i_neterrno='$i_neterrno'
12999 i_niin='$i_niin'
13000 i_poll='$i_poll'
13001 i_pthread='$i_pthread'
13002 i_pwd='$i_pwd'
13003 i_rpcsvcdbm='$i_rpcsvcdbm'
13004 i_sfio='$i_sfio'
13005 i_sgtty='$i_sgtty'
13006 i_stdarg='$i_stdarg'
13007 i_stddef='$i_stddef'
13008 i_stdlib='$i_stdlib'
13009 i_string='$i_string'
13010 i_sysaccess='$i_sysaccess'
13011 i_sysdir='$i_sysdir'
13012 i_sysfile='$i_sysfile'
13013 i_sysfilio='$i_sysfilio'
13014 i_sysin='$i_sysin'
13015 i_sysioctl='$i_sysioctl'
13016 i_sysmman='$i_sysmman'
13017 i_sysmount='$i_sysmount'
13018 i_sysndir='$i_sysndir'
13019 i_sysparam='$i_sysparam'
13020 i_sysresrc='$i_sysresrc'
13021 i_syssecrt='$i_syssecrt'
13022 i_sysselct='$i_sysselct'
13023 i_syssockio='$i_syssockio'
13024 i_sysstat='$i_sysstat'
13025 i_sysstatvfs='$i_sysstatvfs'
13026 i_systime='$i_systime'
13027 i_systimek='$i_systimek'
13028 i_systimes='$i_systimes'
13029 i_systypes='$i_systypes'
13030 i_sysuio='$i_sysuio'
13031 i_sysun='$i_sysun'
13032 i_syswait='$i_syswait'
13033 i_termio='$i_termio'
13034 i_termios='$i_termios'
13035 i_time='$i_time'
13036 i_unistd='$i_unistd'
13037 i_utime='$i_utime'
13038 i_values='$i_values'
13039 i_varargs='$i_varargs'
13040 i_varhdr='$i_varhdr'
13041 i_vfork='$i_vfork'
13042 ignore_versioned_solibs='$ignore_versioned_solibs'
13043 incpath='$incpath'
13044 inews='$inews'
13045 installarchlib='$installarchlib'
13046 installbin='$installbin'
13047 installman1dir='$installman1dir'
13048 installman3dir='$installman3dir'
13049 installprivlib='$installprivlib'
13050 installscript='$installscript'
13051 installsitearch='$installsitearch'
13052 installsitelib='$installsitelib'
13053 installusrbinperl='$installusrbinperl'
13054 intsize='$intsize'
13055 known_extensions='$known_extensions'
13056 ksh='$ksh'
13057 large='$large'
13058 ld='$ld'
13059 lddlflags='$lddlflags'
13060 ldflags='$ldflags'
13061 less='$less'
13062 lib_ext='$lib_ext'
13063 libc='$libc'
13064 libperl='$libperl'
13065 libpth='$libpth'
13066 libs='$libs'
13067 libswanted='$libswanted'
13068 line='$line'
13069 lint='$lint'
13070 lkflags='$lkflags'
13071 ln='$ln'
13072 lns='$lns'
13073 locincpth='$locincpth'
13074 loclibpth='$loclibpth'
13075 longdblsize='$longdblsize'
13076 longlongsize='$longlongsize'
13077 longsize='$longsize'
13078 lp='$lp'
13079 lpr='$lpr'
13080 ls='$ls'
13081 lseeksize='$lseeksize'
13082 lseektype='$lseektype'
13083 mail='$mail'
13084 mailx='$mailx'
13085 make='$make'
13086 make_set_make='$make_set_make'
13087 mallocobj='$mallocobj'
13088 mallocsrc='$mallocsrc'
13089 malloctype='$malloctype'
13090 man1dir='$man1dir'
13091 man1direxp='$man1direxp'
13092 man1ext='$man1ext'
13093 man3dir='$man3dir'
13094 man3direxp='$man3direxp'
13095 man3ext='$man3ext'
13096 medium='$medium'
13097 mips='$mips'
13098 mips_type='$mips_type'
13099 mkdir='$mkdir'
13100 mmaptype='$mmaptype'
13101 models='$models'
13102 modetype='$modetype'
13103 more='$more'
13104 multiarch='$multiarch'
13105 mv='$mv'
13106 myarchname='$myarchname'
13107 mydomain='$mydomain'
13108 myhostname='$myhostname'
13109 myuname='$myuname'
13110 n='$n'
13111 netdb_hlen_type='$netdb_hlen_type'
13112 netdb_host_type='$netdb_host_type'
13113 netdb_name_type='$netdb_name_type'
13114 netdb_net_type='$netdb_net_type'
13115 nm='$nm'
13116 nm_opt='$nm_opt'
13117 nm_so_opt='$nm_so_opt'
13118 nonxs_ext='$nonxs_ext'
13119 nroff='$nroff'
13120 o_nonblock='$o_nonblock'
13121 obj_ext='$obj_ext'
13122 old_pthread_create_joinable='$old_pthread_create_joinable'
13123 optimize='$optimize'
13124 orderlib='$orderlib'
13125 osname='$osname'
13126 osvers='$osvers'
13127 package='$package'
13128 pager='$pager'
13129 passcat='$passcat'
13130 patchlevel='$patchlevel'
13131 path_sep='$path_sep'
13132 perl='$perl'
13133 perladmin='$perladmin'
13134 perlpath='$perlpath'
13135 pg='$pg'
13136 phostname='$phostname'
13137 pidtype='$pidtype'
13138 plibpth='$plibpth'
13139 pmake='$pmake'
13140 pr='$pr'
13141 prefix='$prefix'
13142 prefixexp='$prefixexp'
13143 privlib='$privlib'
13144 privlibexp='$privlibexp'
13145 prototype='$prototype'
13146 ptrsize='$ptrsize'
13147 randbits='$randbits'
13148 randfunc='$randfunc'
13149 randseedtype='$randseedtype'
13150 ranlib='$ranlib'
13151 rd_nodata='$rd_nodata'
13152 rm='$rm'
13153 rmail='$rmail'
13154 runnm='$runnm'
13155 sched_yield='$sched_yield'
13156 scriptdir='$scriptdir'
13157 scriptdirexp='$scriptdirexp'
13158 sed='$sed'
13159 seedfunc='$seedfunc'
13160 selectminbits='$selectminbits'
13161 selecttype='$selecttype'
13162 sendmail='$sendmail'
13163 sh='$sh'
13164 shar='$shar'
13165 sharpbang='$sharpbang'
13166 shmattype='$shmattype'
13167 shortsize='$shortsize'
13168 shrpenv='$shrpenv'
13169 shsharp='$shsharp'
13170 sig_name='$sig_name'
13171 sig_name_init='$sig_name_init'
13172 sig_num='$sig_num'
13173 sig_num_init='$sig_num_init'
13174 signal_t='$signal_t'
13175 sitearch='$sitearch'
13176 sitearchexp='$sitearchexp'
13177 sitelib='$sitelib'
13178 sitelibexp='$sitelibexp'
13179 sizetype='$sizetype'
13180 sleep='$sleep'
13181 smail='$smail'
13182 small='$small'
13183 so='$so'
13184 sockethdr='$sockethdr'
13185 socketlib='$socketlib'
13186 sort='$sort'
13187 spackage='$spackage'
13188 spitshell='$spitshell'
13189 split='$split'
13190 src='$src'
13191 ssizetype='$ssizetype'
13192 startperl='$startperl'
13193 startsh='$startsh'
13194 static_ext='$static_ext'
13195 stdchar='$stdchar'
13196 stdio_base='$stdio_base'
13197 stdio_bufsiz='$stdio_bufsiz'
13198 stdio_cnt='$stdio_cnt'
13199 stdio_filbuf='$stdio_filbuf'
13200 stdio_ptr='$stdio_ptr'
13201 strings='$strings'
13202 submit='$submit'
13203 subversion='$subversion'
13204 sysman='$sysman'
13205 tail='$tail'
13206 tar='$tar'
13207 tbl='$tbl'
13208 tee='$tee'
13209 test='$test'
13210 timeincl='$timeincl'
13211 timetype='$timetype'
13212 touch='$touch'
13213 tr='$tr'
13214 trnl='$trnl'
13215 troff='$troff'
13216 uidtype='$uidtype'
13217 uname='$uname'
13218 uniq='$uniq'
13219 use64bits='$use64bits'
13220 usedl='$usedl'
13221 usemultiplicity='$usemultiplicity'
13222 usemymalloc='$usemymalloc'
13223 usenm='$usenm'
13224 useopcode='$useopcode'
13225 useperlio='$useperlio'
13226 useposix='$useposix'
13227 usesfio='$usesfio'
13228 useshrplib='$useshrplib'
13229 usethreads='$usethreads'
13230 usevfork='$usevfork'
13231 usrinc='$usrinc'
13232 uuname='$uuname'
13233 version='$version'
13234 vi='$vi'
13235 voidflags='$voidflags'
13236 xlibpth='$xlibpth'
13237 zcat='$zcat'
13238 zip='$zip'
13239 EOT
13240
13241 : Add in command line options if available
13242 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13243
13244 : add special variables
13245 $test -f $src/patchlevel.h && \
13246 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13247 echo "CONFIG=true" >>config.sh
13248
13249 : propagate old symbols
13250 if $test -f UU/config.sh; then
13251         <UU/config.sh sort | uniq >UU/oldconfig.sh
13252         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13253         sort | uniq -u >UU/oldsyms
13254         set X `cat UU/oldsyms`
13255         shift
13256         case $# in
13257         0) ;;
13258         *)
13259                 cat <<EOM
13260 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13261 EOM
13262                 echo "# Variables propagated from previous config.sh file." >>config.sh
13263                 for sym in `cat UU/oldsyms`; do
13264                         echo "    Propagating $hint variable "'$'"$sym..."
13265                         eval 'tmp="$'"${sym}"'"'
13266                         echo "$tmp" | \
13267                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13268                 done
13269                 ;;
13270         esac
13271 fi
13272
13273 : Finish up by extracting the .SH files
13274 case "$alldone" in
13275 exit)
13276         $rm -rf UU
13277         echo "Done."
13278         exit 0
13279         ;;
13280 cont)
13281         ;;
13282 '')
13283         dflt=''
13284         nostick=true
13285         $cat <<EOM
13286
13287 If you'd like to make any changes to the config.sh file before I begin
13288 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13289
13290 EOM
13291         rp="Press return or use a shell escape to edit config.sh:"
13292         . UU/myread
13293         nostick=''
13294         case "$ans" in
13295         '') ;;
13296         *) : in case they cannot read
13297                 sh 1>&4 -c "$ans";;
13298         esac
13299         ;;
13300 esac
13301
13302 : if this fails, just run all the .SH files by hand
13303 . ./config.sh
13304
13305 echo " "
13306 exec 1>&4
13307 . ./UU/extract
13308
13309 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13310         dflt=y
13311         case "$silent" in
13312         true) ;;
13313         *)
13314                 $cat <<EOM
13315
13316 Now you need to generate make dependencies by running "$make depend".
13317 You might prefer to run it in background: "$make depend > makedepend.out &"
13318 It can take a while, so you might not want to run it right now.
13319
13320 EOM
13321                 ;;
13322         esac
13323         rp="Run $make depend now?"
13324         . UU/myread
13325         case "$ans" in
13326         y*)
13327                 $make depend && echo "Now you must run a $make."
13328                 ;;
13329         *)
13330                 echo "You must run '$make depend' then '$make'."
13331                 ;;
13332         esac
13333 elif test -f [Mm]akefile; then
13334         echo " "
13335         echo "Now you must run a $make."
13336 else
13337         echo "Done."
13338 fi
13339
13340 if $test -f Policy.sh; then
13341     $cat <<EOM
13342
13343 If you compile $package on a different machine or from a different object
13344 directory, copy the Policy.sh file from this object directory to the
13345 new one before you run Configure -- this will help you with most of
13346 the policy defaults.
13347
13348 EOM
13349 fi
13350 if $test -f config.msg; then
13351     echo "Hmm.  I also noted the following information while running:"
13352     echo " "
13353     $cat config.msg >&4
13354     $rm -f config.msg
13355 fi
13356 $rm -f kit*isdone ark*isdone
13357 $rm -rf UU
13358
13359 : End of Configure
13360