I_MNTENT was missing.
[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 Thu Jan 21 00:01:12 EET 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by jhi@iki.fi)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 case "$inksh/$needksh" in
112 /[a-z]*)
113                 ENV=''
114                 changesh=true
115                 reason="$needksh"
116         ;;
117 esac
118 case "$inksh/$avoidksh" in
119 true/[a-z]*)
120         changesh=true
121         reason="$avoidksh"
122         ;;
123 esac
124 case "$inksh/$needksh-$avoidksh-" in
125 true/--)
126                 cat <<EOM
127 (I see you are using the Korn shell.  Some ksh's blow up on $me,
128 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
129 EOM
130         ;;
131 esac
132 case "$changesh" in
133 true)
134         echo "(Feeding myself to $newsh $reason.)"
135         case "$0" in
136         Configure|*/Configure) exec $newsh $0 "$@";;
137         *) exec $newsh Configure "$@";;
138         esac
139         ;;
140 esac
141
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
144 case "$CDPATH" in
145 '')     ;;
146 *)      case "$SHELL" in
147         *bash*) CDPATH='.' ;;
148         *)              CDPATH='' ;;
149         esac
150         ;;
151 esac
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
154 cd UU && rm -f ./*
155
156 dynamic_ext=''
157 extensions=''
158 known_extensions=''
159 nonxs_ext=''
160 static_ext=''
161 useopcode=''
162 useposix=''
163 d_bsd=''
164 d_eunice=''
165 d_xenix=''
166 eunicefix=''
167 Mcc=''
168 ar=''
169 awk=''
170 bash=''
171 bison=''
172 byacc=''
173 cat=''
174 chgrp=''
175 chmod=''
176 chown=''
177 comm=''
178 compress=''
179 cp=''
180 cpio=''
181 cpp=''
182 csh=''
183 date=''
184 echo=''
185 egrep=''
186 emacs=''
187 expr=''
188 find=''
189 flex=''
190 grep=''
191 gzip=''
192 inews=''
193 ksh=''
194 less=''
195 line=''
196 lint=''
197 ln=''
198 lp=''
199 lpr=''
200 ls=''
201 mail=''
202 mailx=''
203 make=''
204 mkdir=''
205 more=''
206 mv=''
207 nm=''
208 nroff=''
209 perl=''
210 pg=''
211 pmake=''
212 pr=''
213 rm=''
214 rmail=''
215 sed=''
216 sendmail=''
217 shar=''
218 sleep=''
219 smail=''
220 sort=''
221 submit=''
222 tail=''
223 tar=''
224 tbl=''
225 tee=''
226 test=''
227 touch=''
228 tr=''
229 troff=''
230 uname=''
231 uniq=''
232 uuname=''
233 vi=''
234 zcat=''
235 zip=''
236 full_sed=''
237 libswanted=''
238 hint=''
239 myuname=''
240 osname=''
241 osvers=''
242 Author=''
243 Date=''
244 Header=''
245 Id=''
246 Locker=''
247 Log=''
248 RCSfile=''
249 Revision=''
250 Source=''
251 State=''
252 _a=''
253 _exe=''
254 _o=''
255 archobjs=''
256 exe_ext=''
257 firstmakefile=''
258 lib_ext=''
259 obj_ext=''
260 path_sep=''
261 afs=''
262 alignbytes=''
263 ansi2knr=''
264 archlib=''
265 archlibexp=''
266 d_archlib=''
267 installarchlib=''
268 archname=''
269 myarchname=''
270 baserev=''
271 bin=''
272 binexp=''
273 installbin=''
274 byteorder=''
275 cc=''
276 gccversion=''
277 ccflags=''
278 cppflags=''
279 ldflags=''
280 lkflags=''
281 locincpth=''
282 optimize=''
283 cf_email=''
284 cf_by=''
285 cf_time=''
286 contains=''
287 cpp_stuff=''
288 cpplast=''
289 cppminus=''
290 cpprun=''
291 cppstdin=''
292 d_access=''
293 d_accessx=''
294 d_alarm=''
295 d_attribut=''
296 d_bcmp=''
297 d_bcopy=''
298 d_bzero=''
299 d_casti32=''
300 castflags=''
301 d_castneg=''
302 d_chown=''
303 d_chroot=''
304 d_chsize=''
305 d_closedir=''
306 d_void_closedir=''
307 d_const=''
308 cryptlib=''
309 d_crypt=''
310 d_csh=''
311 full_csh=''
312 d_cuserid=''
313 d_dbl_dig=''
314 d_difftime=''
315 d_dlerror=''
316 d_dlopen=''
317 d_dlsymun=''
318 d_dosuid=''
319 d_suidsafe=''
320 d_drand48proto=''
321 d_dup2=''
322 d_eaccess=''
323 d_endgrent=''
324 d_endhent=''
325 d_endnent=''
326 d_endpent=''
327 d_endpwent=''
328 d_endsent=''
329 d_fchmod=''
330 d_fchown=''
331 d_fcntl=''
332 d_fd_macros=''
333 d_fd_set=''
334 d_fds_bits=''
335 d_fgetpos=''
336 d_flexfnam=''
337 d_flock=''
338 d_fork=''
339 d_fseeko=''
340 d_fsetpos=''
341 d_ftello=''
342 d_ftime=''
343 d_gettimeod=''
344 d_Gconvert=''
345 d_getgrent=''
346 d_getgrps=''
347 d_gethbyaddr=''
348 d_gethbyname=''
349 d_gethent=''
350 aphostname=''
351 d_gethname=''
352 d_phostname=''
353 d_uname=''
354 d_gethostprotos=''
355 d_getlogin=''
356 d_getnbyaddr=''
357 d_getnbyname=''
358 d_getnent=''
359 d_getnetprotos=''
360 d_getpent=''
361 d_getpgid=''
362 d_getpgrp2=''
363 d_bsdgetpgrp=''
364 d_getpgrp=''
365 d_getppid=''
366 d_getprior=''
367 d_getpbyname=''
368 d_getpbynumber=''
369 d_getprotoprotos=''
370 d_getpwent=''
371 d_getsent=''
372 d_getservprotos=''
373 d_getsbyname=''
374 d_getsbyport=''
375 d_gnulibc=''
376 d_htonl=''
377 d_inetaton=''
378 d_isascii=''
379 d_killpg=''
380 d_lchown=''
381 d_link=''
382 d_locconv=''
383 d_lockf=''
384 d_longdbl=''
385 longdblsize=''
386 d_longlong=''
387 longlongsize=''
388 d_lstat=''
389 d_mblen=''
390 d_mbstowcs=''
391 d_mbtowc=''
392 d_memcmp=''
393 d_memcpy=''
394 d_memmove=''
395 d_memset=''
396 d_mkdir=''
397 d_mkfifo=''
398 d_mktime=''
399 d_msg=''
400 d_msgctl=''
401 d_msgget=''
402 d_msgrcv=''
403 d_msgsnd=''
404 d_nice=''
405 d_open3=''
406 d_fpathconf=''
407 d_pathconf=''
408 d_pause=''
409 d_pipe=''
410 d_poll=''
411 d_portable=''
412 d_old_pthread_create_joinable=''
413 old_pthread_create_joinable=''
414 d_pthread_yield=''
415 d_sched_yield=''
416 sched_yield=''
417 d_readdir=''
418 d_rewinddir=''
419 d_seekdir=''
420 d_telldir=''
421 d_readlink=''
422 d_readv=''
423 d_rename=''
424 d_rmdir=''
425 d_safebcpy=''
426 d_safemcpy=''
427 d_sanemcmp=''
428 d_select=''
429 d_sem=''
430 d_semctl=''
431 d_semget=''
432 d_semop=''
433 d_setegid=''
434 d_seteuid=''
435 d_setgrent=''
436 d_setgrps=''
437 d_sethent=''
438 d_setlinebuf=''
439 d_setlocale=''
440 d_setnent=''
441 d_setpent=''
442 d_setpgid=''
443 d_setpgrp2=''
444 d_bsdsetpgrp=''
445 d_setpgrp=''
446 d_setprior=''
447 d_setpwent=''
448 d_setregid=''
449 d_setresgid=''
450 d_setresuid=''
451 d_setreuid=''
452 d_setrgid=''
453 d_setruid=''
454 d_setsent=''
455 d_setsid=''
456 d_setvbuf=''
457 d_sfio=''
458 usesfio=''
459 d_shm=''
460 d_shmat=''
461 d_shmatprototype=''
462 shmattype=''
463 d_shmctl=''
464 d_shmdt=''
465 d_shmget=''
466 d_sigaction=''
467 d_sigsetjmp=''
468 d_cmsghdr_s=''
469 d_msg_ctrunc=''
470 d_msg_dontroute=''
471 d_msg_oob=''
472 d_msg_peek=''
473 d_msg_proxy=''
474 d_msghdr_s=''
475 d_oldsock=''
476 d_recvmsg=''
477 d_scm_rights=''
478 d_sendmsg=''
479 d_socket=''
480 d_sockpair=''
481 sockethdr=''
482 socketlib=''
483 d_statblks=''
484 d_fstatfs=''
485 d_statfs=''
486 d_statfsflags=''
487 d_fstatvfs=''
488 d_statvfs=''
489 d_stdio_cnt_lval=''
490 d_stdio_ptr_lval=''
491 d_stdiobase=''
492 d_stdstdio=''
493 stdio_base=''
494 stdio_bufsiz=''
495 stdio_cnt=''
496 stdio_filbuf=''
497 stdio_ptr=''
498 d_index=''
499 d_strchr=''
500 d_strcoll=''
501 d_strctcpy=''
502 d_strerrm=''
503 d_strerror=''
504 d_sysernlst=''
505 d_syserrlst=''
506 d_strtod=''
507 d_strtol=''
508 d_strtoul=''
509 d_strxfrm=''
510 d_symlink=''
511 d_syscall=''
512 d_sysconf=''
513 d_system=''
514 d_tcgetpgrp=''
515 d_tcsetpgrp=''
516 d_time=''
517 timetype=''
518 clocktype=''
519 d_times=''
520 d_truncate=''
521 d_tzname=''
522 d_umask=''
523 d_semctl_semid_ds=''
524 d_semctl_semun=''
525 d_union_semun=''
526 d_vfork=''
527 usevfork=''
528 d_voidsig=''
529 signal_t=''
530 d_volatile=''
531 d_charvspr=''
532 d_vprintf=''
533 d_wait4=''
534 d_waitpid=''
535 d_wcstombs=''
536 d_wctomb=''
537 d_writev=''
538 d_dbmclose64=''
539 d_dbminit64=''
540 d_delete64=''
541 d_fetch64=''
542 d_firstkey64=''
543 d_nextkey64=''
544 d_store64=''
545 dlext=''
546 cccdlflags=''
547 ccdlflags=''
548 dlsrc=''
549 ld=''
550 lddlflags=''
551 usedl=''
552 doublesize=''
553 ebcdic=''
554 fpostype=''
555 gidtype=''
556 groupstype=''
557 h_fcntl=''
558 h_sysfile=''
559 i_arpainet=''
560 db_hashtype=''
561 db_prefixtype=''
562 i_db=''
563 i_dbm=''
564 i_rpcsvcdbm=''
565 d_dirnamlen=''
566 direntrytype=''
567 i_dirent=''
568 i_dld=''
569 i_dlfcn=''
570 i_fcntl=''
571 i_float=''
572 i_gdbm=''
573 d_grpasswd=''
574 i_grp=''
575 d_int64t=''
576 i_inttypes=''
577 i_limits=''
578 i_locale=''
579 i_machcthr=''
580 i_malloc=''
581 i_math=''
582 i_memory=''
583 i_mntent=''
584 i_ndbm=''
585 i_netdb=''
586 i_neterrno=''
587 i_niin=''
588 i_sysin=''
589 i_poll=''
590 d_pwage=''
591 d_pwchange=''
592 d_pwclass=''
593 d_pwcomment=''
594 d_pwexpire=''
595 d_pwgecos=''
596 d_pwpasswd=''
597 d_pwquota=''
598 i_pwd=''
599 i_sfio=''
600 i_stddef=''
601 i_stdlib=''
602 i_string=''
603 strings=''
604 i_sysaccess=''
605 i_sysdir=''
606 i_sysfile=''
607 d_voidtty=''
608 i_bsdioctl=''
609 i_sysfilio=''
610 i_sysioctl=''
611 i_syssockio=''
612 i_sysmount=''
613 i_sysndir=''
614 i_sysparam=''
615 i_sysresrc=''
616 i_syssecrt=''
617 i_sysselct=''
618 i_sysstat=''
619 i_sysstatvfs=''
620 i_systimes=''
621 i_systypes=''
622 d_iovec_s=''
623 i_sysuio=''
624 i_sysun=''
625 i_syswait=''
626 i_sgtty=''
627 i_termio=''
628 i_termios=''
629 i_systime=''
630 i_systimek=''
631 i_time=''
632 timeincl=''
633 i_unistd=''
634 i_utime=''
635 i_values=''
636 i_stdarg=''
637 i_varargs=''
638 i_varhdr=''
639 i_vfork=''
640 installusrbinperl=''
641 intsize=''
642 longsize=''
643 shortsize=''
644 d_dirent64_s=''
645 d_flock64_s=''
646 d_fstat64=''
647 d_ftruncate64=''
648 d_ino64t=''
649 d_lockf64=''
650 d_lseek64=''
651 d_lstat64=''
652 d_off64t=''
653 d_open64=''
654 d_opendir64=''
655 d_readdir64=''
656 d_seekdir64=''
657 d_stat64=''
658 d_telldir64=''
659 d_truncate64=''
660 libc=''
661 libperl=''
662 shrpenv=''
663 useshrplib=''
664 glibpth=''
665 libpth=''
666 loclibpth=''
667 plibpth=''
668 xlibpth=''
669 ignore_versioned_solibs=''
670 libs=''
671 lns=''
672 lseeksize=''
673 lseektype=''
674 make_set_make=''
675 d_mymalloc=''
676 freetype=''
677 mallocobj=''
678 mallocsrc=''
679 malloctype=''
680 usemymalloc=''
681 installman1dir=''
682 man1dir=''
683 man1direxp=''
684 man1ext=''
685 installman3dir=''
686 man3dir=''
687 man3direxp=''
688 man3ext=''
689 huge=''
690 large=''
691 medium=''
692 models=''
693 small=''
694 split=''
695 modetype=''
696 mydomain=''
697 myhostname=''
698 phostname=''
699 c=''
700 n=''
701 d_eofnblk=''
702 eagain=''
703 o_nonblock=''
704 rd_nodata=''
705 netdb_hlen_type=''
706 netdb_host_type=''
707 netdb_name_type=''
708 netdb_net_type=''
709 groupcat=''
710 hostcat=''
711 passcat=''
712 orderlib=''
713 ranlib=''
714 package=''
715 spackage=''
716 pager=''
717 apiversion=''
718 patchlevel=''
719 subversion=''
720 version=''
721 perladmin=''
722 perlpath=''
723 pidtype=''
724 prefix=''
725 prefixexp=''
726 installprivlib=''
727 privlib=''
728 privlibexp=''
729 prototype=''
730 ptrsize=''
731 drand01=''
732 randbits=''
733 randfunc=''
734 randseedtype=''
735 seedfunc=''
736 installscript=''
737 scriptdir=''
738 scriptdirexp=''
739 selectminbits=''
740 selecttype=''
741 sh=''
742 sig_name=''
743 sig_name_init=''
744 sig_num=''
745 sig_num_init=''
746 installsitearch=''
747 sitearch=''
748 sitearchexp=''
749 installsitelib=''
750 sitelib=''
751 sitelibexp=''
752 sizetype=''
753 so=''
754 sharpbang=''
755 shsharp=''
756 spitshell=''
757 src=''
758 ssizetype=''
759 startperl=''
760 startsh=''
761 stdchar=''
762 d_fgetpos64=''
763 d_fopen64=''
764 d_freopen64=''
765 d_fseek64=''
766 d_fseeko64=''
767 d_fsetpos64=''
768 d_ftell64=''
769 d_ftello64=''
770 d_tmpfile64=''
771 sysman=''
772 trnl=''
773 uidtype=''
774 archname64=''
775 use64bits=''
776 usemultiplicity=''
777 nm_opt=''
778 nm_so_opt=''
779 runnm=''
780 usenm=''
781 useperlio=''
782 d_oldpthreads=''
783 usethreads=''
784 incpath=''
785 mips=''
786 mips_type=''
787 usrinc=''
788 defvoidused=''
789 voidflags=''
790 CONFIG=''
791
792 define='define'
793 undef='undef'
794 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
795 rmlist=''
796
797 : We must find out about Eunice early
798 eunicefix=':'
799 if test -f /etc/unixtovms; then
800         eunicefix=/etc/unixtovms
801 fi
802 if test -f /etc/unixtovms.exe; then
803         eunicefix=/etc/unixtovms.exe
804 fi
805
806 i_whoami=''
807 : change the next line if compiling for Xenix/286 on Xenix/386
808 xlibpth='/usr/lib/386 /lib/386'
809
810 : Possible local library directories to search.
811 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
812 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
813
814 : general looking path for locating libraries
815 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
816 glibpth="$glibpth /lib /usr/lib $xlibpth"
817 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
818 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
819
820 : Private path used by Configure to find libraries.  Its value
821 : is prepended to libpth. This variable takes care of special
822 : machines, like the mips.  Usually, it should be empty.
823 plibpth=''
824
825 : Possible local include directories to search.
826 : Set locincpth to "" in a hint file to defeat local include searches.
827 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
828 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
829 :
830 : no include file wanted by default
831 inclwanted=''
832
833 : list of known cpp symbols, sorted alphabetically
834 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
835 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
836 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
837 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
838 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
839 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
840 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
841 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
842 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
843 al="$al VMS Xenix286"
844 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
845 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
846 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
847 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
848 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
849 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
850 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
851 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
852 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
853 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
854 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
855 al="$al __SVR4_2__ __UMAXV__"
856 al="$al ____386BSD____ __alpha __alpha__ __amiga"
857 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
858 al="$al __host_mips__"
859 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
860 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
861 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
862 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
863 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
864 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
865 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
866 al="$al __mc88100 __mc88100__ __mips __mips__"
867 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
868 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
869 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
870 al="$al _host_mips _mips _unix"
871 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
872 al="$al apollo ardent att386 att3b"
873 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
874 al="$al cadmus clipper concurrent convex cray ctix"
875 al="$al dmert encore gcos gcx gimpel gould"
876 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
877 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
878 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
879 al="$al i186 i286 i386 i486 i8086"
880 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
881 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
882 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
883 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
884 al="$al mc88000 mc88100 merlin mert mips mvs n16"
885 al="$al ncl_el ncl_mr"
886 al="$al news1500 news1700 news1800 news1900 news3700"
887 al="$al news700 news800 news900 ns16000 ns32000"
888 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
889 al="$al parisc pc532 pdp11 plexus posix pyr"
890 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
891 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
892 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
893 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
894 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
895 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
896 al="$al xenix z8000"
897
898 : Trailing extension.  Override this in a hint file, if needed.
899 _exe=''
900 : Extra object files, if any, needed on this platform.
901 archobjs=''
902 groupstype=''
903 : default library list
904 libswanted=''
905 : some systems want to use only the non-versioned libso:s
906 ignore_versioned_solibs=''
907 : full support for void wanted by default
908 defvoidused=15
909
910 : set useposix=false in your hint file to disable the POSIX extension.
911 useposix=true
912 : set useopcode=false in your hint file to disable the Opcode extension.
913 useopcode=true
914 : set usemultiplicity on the Configure command line to enable multiplicity.
915 : set usethreads on the Configure command line to enable threads.
916 : List of libraries we want.
917 : If anyone needs -lnet, put it in a hint file.
918 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
919 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
920 libswanted="$libswanted ucb bsd BSD PW x"
921 : We probably want to search /usr/shlib before most other libraries.
922 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
923 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
924 glibpth="/usr/shlib $glibpth"
925 : Do not use vfork unless overridden by a hint file.
926 usevfork=false
927
928 : Find the basic shell for Bourne shell scripts
929 case "$sh" in
930 '')
931         case "$SYSTYPE" in
932         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
933         *) xxx='/bin/sh';;
934         esac
935         if test -f "$xxx"; then
936                 sh="$xxx"
937         else
938                 : Build up a list and do a single loop so we can 'break' out.
939                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
940                 for xxx in sh bash ksh pdksh ash; do
941                         for p in $pth; do
942                                 try="$try ${p}/${xxx}"
943                         done
944                 done
945                 for xxx in $try; do
946                         if test -f "$xxx"; then
947                                 sh="$xxx";
948                                 break
949                         elif test -f "$xxx.exe"; then
950                                 sh="$xxx";
951                                 break
952                         fi
953                 done
954         fi
955         ;;
956 esac
957
958 case "$sh" in
959 '')     cat <<EOM >&2
960 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
961
962 Usually it's in /bin/sh.  How did you even get this far?
963 Please contact me (Jarkko Hietaniemi) at jhi@iki.fi and 
964 we'll try to straighten this all out.
965 EOM
966         exit 1
967         ;;
968 esac
969
970 : see if sh knows # comments
971 if `$sh -c '#' >/dev/null 2>&1`; then
972         shsharp=true
973         spitshell=cat
974         xcat=/bin/cat
975         test -f $xcat || xcat=/usr/bin/cat
976         echo "#!$xcat" >try
977         $eunicefix try
978         chmod +x try
979         ./try > today
980         if test -s today; then
981                 sharpbang='#!'
982         else
983                 echo "#! $xcat" > try
984                 $eunicefix try
985                 chmod +x try
986                 ./try > today
987                 if test -s today; then
988                         sharpbang='#! '
989                 else
990                         sharpbang=': use '
991                 fi
992         fi
993 else
994         echo " "
995         echo "Your $sh doesn't grok # comments--I will strip them later on."
996         shsharp=false
997         cd ..
998         echo "exec grep -v '^[  ]*#'" >spitshell
999         chmod +x spitshell
1000         $eunicefix spitshell
1001         spitshell=`pwd`/spitshell
1002         cd UU
1003         echo "I presume that if # doesn't work, #! won't work either!"
1004         sharpbang=': use '
1005 fi
1006 rm -f try today
1007
1008 : figure out how to guarantee sh startup
1009 case "$startsh" in
1010 '') startsh=${sharpbang}${sh} ;;
1011 *)
1012 esac
1013 cat >try <<EOSS
1014 $startsh
1015 set abc
1016 test "$?abc" != 1
1017 EOSS
1018
1019 chmod +x try
1020 $eunicefix try
1021 if ./try; then
1022         : echo "Yup, it does."
1023 else
1024         echo "Hmm... '$startsh' does not guarantee sh startup..."
1025         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1026 fi
1027 rm -f try
1028
1029
1030 : Save command line options in file UU/cmdline.opt for later use in
1031 : generating config.sh.
1032 cat > cmdline.opt <<EOSH
1033 # Configure command line arguments.
1034 config_arg0='$0'
1035 config_args='$*'
1036 config_argc=$#
1037 EOSH
1038 argn=1
1039 for arg in "$@"; do
1040         cat >>cmdline.opt <<EOSH
1041 config_arg$argn='$arg'
1042 EOSH
1043         argn=`expr $argn + 1`
1044 done
1045
1046 : produce awk script to parse command line options
1047 cat >options.awk <<'EOF'
1048 BEGIN {
1049         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1050
1051         len = length(optstr);
1052         for (i = 1; i <= len; i++) {
1053                 c = substr(optstr, i, 1);
1054                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1055                 if (a == ":") {
1056                         arg[c] = 1;
1057                         i++;
1058                 }
1059                 opt[c] = 1;
1060         }
1061 }
1062 {
1063         expect = 0;
1064         str = $0;
1065         if (substr(str, 1, 1) != "-") {
1066                 printf("'%s'\n", str);
1067                 next;
1068         }
1069         len = length($0);
1070         for (i = 2; i <= len; i++) {
1071                 c = substr(str, i, 1);
1072                 if (!opt[c]) {
1073                         printf("-%s\n", substr(str, i));
1074                         next;
1075                 }
1076                 printf("-%s\n", c);
1077                 if (arg[c]) {
1078                         if (i < len)
1079                                 printf("'%s'\n", substr(str, i + 1));
1080                         else
1081                                 expect = 1;
1082                         next;
1083                 }
1084         }
1085 }
1086 END {
1087         if (expect)
1088                 print "?";
1089 }
1090 EOF
1091
1092 : process the command line options
1093 set X `for arg in "$@"; do echo "X$arg"; done |
1094         sed -e s/X// | awk -f options.awk`
1095 eval "set $*"
1096 shift
1097 rm -f options.awk
1098
1099 : set up default values
1100 fastread=''
1101 reuseval=false
1102 config_sh=''
1103 alldone=''
1104 error=''
1105 silent=''
1106 extractsh=''
1107 override=''
1108 knowitall=''
1109 rm -f optdef.sh
1110 cat >optdef.sh <<EOS
1111 $startsh
1112 EOS
1113
1114
1115 : option parsing
1116 while test $# -gt 0; do
1117         case "$1" in
1118         -d) shift; fastread=yes;;
1119         -e) shift; alldone=cont;;
1120         -f)
1121                 shift
1122                 cd ..
1123                 if test -r "$1"; then
1124                         config_sh="$1"
1125                 else
1126                         echo "$me: cannot read config file $1." >&2
1127                         error=true
1128                 fi
1129                 cd UU
1130                 shift;;
1131         -h) shift; error=true;;
1132         -r) shift; reuseval=true;;
1133         -s) shift; silent=true; realsilent=true;;
1134         -E) shift; alldone=exit;;
1135         -K) shift; knowitall=true;;
1136         -O) shift; override=true;;
1137         -S) shift; silent=true; extractsh=true;;
1138         -D)
1139                 shift
1140                 case "$1" in
1141                 *=)
1142                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1143                         echo "$me: ignoring -D $1" >&2
1144                         ;;
1145                 *=*) echo "$1" | \
1146                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1147                 *) echo "$1='define'" >> optdef.sh;;
1148                 esac
1149                 shift
1150                 ;;
1151         -U)
1152                 shift
1153                 case "$1" in
1154                 *=) echo "$1" >> optdef.sh;;
1155                 *=*)
1156                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1157                         echo "$me: ignoring -U $1" >&2
1158                         ;;
1159                 *) echo "$1='undef'" >> optdef.sh;;
1160                 esac
1161                 shift
1162                 ;;
1163         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1164                 exit 0;;
1165         --) break;;
1166         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1167         *) break;;
1168         esac
1169 done
1170
1171 case "$error" in
1172 true)
1173         cat >&2 <<EOM
1174 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1175                  [-U symbol] [-U symbol=]
1176   -d : use defaults for all answers.
1177   -e : go on without questioning past the production of config.sh.
1178   -f : specify an alternate default configuration file.
1179   -h : print this help message and exit (with an error status).
1180   -r : reuse C symbols value if possible (skips costly nm extraction).
1181   -s : silent mode, only echoes questions and essential information.
1182   -D : define symbol to have some value:
1183          -D symbol         symbol gets the value 'define'
1184          -D symbol=value   symbol gets the value 'value'
1185   -E : stop at the end of questions, after having produced config.sh.
1186   -K : do not use unless you know what you are doing.
1187   -O : let -D and -U override definitions from loaded configuration file.
1188   -S : perform variable substitutions on all .SH files (can mix with -f)
1189   -U : undefine symbol:
1190          -U symbol    symbol gets the value 'undef'
1191          -U symbol=   symbol gets completely empty
1192   -V : print version number and exit (with a zero status).
1193 EOM
1194         exit 1
1195         ;;
1196 esac
1197
1198 : Sanity checks
1199 case "$fastread$alldone" in
1200 yescont|yesexit) ;;
1201 *)
1202         if test ! -t 0; then
1203                 echo "Say 'sh Configure', not 'sh <Configure'"
1204                 exit 1
1205         fi
1206         ;;
1207 esac
1208
1209 exec 4>&1
1210 case "$silent" in
1211 true) exec 1>/dev/null;;
1212 esac
1213
1214 : run the defines and the undefines, if any, but leave the file out there...
1215 touch optdef.sh
1216 . ./optdef.sh
1217
1218 : set package name
1219 package=perl5
1220 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1221 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1222 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1223 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1224 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1225 esac
1226
1227 : Some greps do not return status, grrr.
1228 echo "grimblepritz" >grimble
1229 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1230         contains=contains
1231 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1232         contains=grep
1233 else
1234         contains=contains
1235 fi
1236 rm -f grimble
1237 : the following should work in any shell
1238 case "$contains" in
1239 contains*)
1240         echo " "
1241         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1242         cat >contains <<'EOSS'
1243 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1244 EOSS
1245 chmod +x contains
1246 esac
1247
1248 : Find the path to the source tree
1249 case "$src" in
1250 '') case "$0" in
1251     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1252     *)   src='.';;
1253     esac;;
1254 esac
1255 case "$src" in
1256 '')     src=/
1257         rsrc=/
1258         ;;
1259 /*) rsrc="$src";;
1260 *) rsrc="../$src";;
1261 esac
1262 if test -f $rsrc/Configure && \
1263         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1264 then
1265    : found it, so we are ok.
1266 else
1267         rsrc=''
1268         for src in . .. ../.. ../../.. ../../../..; do
1269                 if test -f ../$src/Configure && \
1270                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1271                 then
1272                         rsrc=../$src
1273                         break
1274                 fi
1275         done
1276 fi
1277 case "$rsrc" in
1278 '')
1279         cat <<EOM >&4
1280
1281 Sorry, I can't seem to locate the source dir for $package.  Please start
1282 Configure with an explicit path -- i.e. /some/path/Configure.
1283
1284 EOM
1285         exit 1
1286         ;;
1287 ../.)   rsrc='..';;
1288 *)
1289         echo " "
1290         echo "Sources for $package found in \"$src\"." >&4
1291         ;;
1292 esac
1293
1294 : script used to extract .SH files with variable substitutions
1295 cat >extract <<'EOS'
1296 CONFIG=true
1297 echo "Doing variable substitutions on .SH files..."
1298 if test -f $src/MANIFEST; then
1299         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1300 else
1301         echo "(Looking for .SH files under the source directory.)"
1302         set x `(cd $src; find . -name "*.SH" -print)`
1303 fi
1304 shift
1305 case $# in
1306 0) set x `(cd $src; echo *.SH)`; shift;;
1307 esac
1308 if test ! -f $src/$1; then
1309         shift
1310 fi
1311 mkdir_p='
1312 name=$1;
1313 create="";
1314 while test $name; do
1315         if test ! -d "$name"; then
1316                 create="$name $create";
1317                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1318                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1319         else
1320                 name="";
1321         fi;
1322 done;
1323 for file in $create; do
1324         mkdir $file;
1325 done
1326 '
1327 for file in $*; do
1328         case "$src" in
1329         ".")
1330                 case "$file" in
1331                 */*)
1332                         dir=`expr X$file : 'X\(.*\)/'`
1333                         file=`expr X$file : 'X.*/\(.*\)'`
1334                         (cd $dir && . ./$file)
1335                         ;;
1336                 *)
1337                         . ./$file
1338                         ;;
1339                 esac
1340                 ;;
1341         *)
1342                 case "$file" in
1343                 */*)
1344                         dir=`expr X$file : 'X\(.*\)/'`
1345                         file=`expr X$file : 'X.*/\(.*\)'`
1346                         (set x $dir; shift; eval $mkdir_p)
1347                         sh <$src/$dir/$file
1348                         ;;
1349                 *)
1350                         sh <$src/$file
1351                         ;;
1352                 esac
1353                 ;;
1354         esac
1355 done
1356 if test -f $src/config_h.SH; then
1357         if test ! -f config.h; then
1358         : oops, they left it out of MANIFEST, probably, so do it anyway.
1359         . $src/config_h.SH
1360         fi
1361 fi
1362 EOS
1363
1364 : extract files and exit if asked to do so
1365 case "$extractsh" in
1366 true)
1367         case "$realsilent" in
1368         true) ;;
1369         *) exec 1>&4;;
1370         esac
1371         case "$config_sh" in
1372         '') config_sh='config.sh';;
1373         esac
1374         echo " "
1375         echo "Fetching answers from $config_sh..."
1376         cd ..
1377         . $config_sh
1378         test "$override" && . ./optdef.sh
1379         echo " "
1380         . UU/extract
1381         rm -rf UU
1382         echo "Done."
1383         exit 0
1384         ;;
1385 esac
1386
1387 : Eunice requires " " instead of "", can you believe it
1388 echo " "
1389 : Here we go...
1390 echo "Beginning of configuration questions for $package."
1391
1392 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1393
1394 : first determine how to suppress newline on echo command
1395 echo " "
1396 echo "Checking echo to see how to suppress newlines..."
1397 (echo "hi there\c" ; echo " ") >.echotmp
1398 if $contains c .echotmp >/dev/null 2>&1 ; then
1399         echo "...using -n."
1400         n='-n'
1401         c=''
1402 else
1403         cat <<'EOM'
1404 ...using \c
1405 EOM
1406         n=''
1407         c='\c'
1408 fi
1409 echo $n "The star should be here-->$c"
1410 echo '*'
1411 rm -f .echotmp
1412
1413 : Now test for existence of everything in MANIFEST
1414 echo " "
1415 if test -f $rsrc/MANIFEST; then
1416         echo "First let's make sure your kit is complete.  Checking..." >&4
1417         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1418         rm -f missing
1419         tmppwd=`pwd`
1420         for filelist in x??; do
1421                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1422         done
1423         if test -s missing; then
1424                 cat missing >&4
1425                 cat >&4 <<'EOM'
1426
1427 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1428
1429 You have the option of continuing the configuration process, despite the
1430 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1431 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1432 and contact the author (jhi@iki.fi).
1433
1434 EOM
1435                 echo $n "Continue? [n] $c" >&4
1436                 read ans
1437                 case "$ans" in
1438                 y*)
1439                         echo "Continuing..." >&4
1440                         rm -f missing
1441                         ;;
1442                 *)
1443                         echo "ABORTING..." >&4
1444                         kill $$
1445                         ;;
1446                 esac
1447         else
1448                 echo "Looks good..."
1449         fi
1450 else
1451         echo "There is no MANIFEST file.  I hope your kit is complete !"
1452 fi
1453 rm -f missing x??
1454
1455 echo " "
1456 : Find the appropriate value for a newline for tr
1457 if test -n "$DJGPP"; then
1458        trnl='\012'
1459 fi
1460 if test X"$trnl" = X; then
1461         case "`echo foo|tr '\n' x 2>/dev/null`" in
1462         foox) trnl='\n' ;;
1463         esac
1464 fi
1465 if test X"$trnl" = X; then
1466         case "`echo foo|tr '\012' x 2>/dev/null`" in
1467         foox) trnl='\012' ;;
1468         esac
1469 fi
1470 if test X"$trnl" = X; then
1471         cat <<EOM >&2
1472
1473 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1474
1475 EOM
1476         exit 1
1477 fi
1478
1479 : compute the number of columns on the terminal for proper question formatting
1480 case "$COLUMNS" in
1481 '') COLUMNS='80';;
1482 esac
1483
1484 : set up the echo used in my read
1485 myecho="case \"\$xxxm\" in
1486 '') echo $n \"\$rp $c\" >&4;;
1487 *) case \"\$rp\" in
1488         '') echo $n \"[\$xxxm] $c\";;
1489         *)
1490                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1491                         echo \"\$rp\" >&4
1492                         echo $n \"[\$xxxm] $c\" >&4
1493                 else
1494                         echo $n \"\$rp [\$xxxm] $c\" >&4
1495                 fi
1496                 ;;
1497         esac;;
1498 esac"
1499
1500 : now set up to do reads with possible shell escape and default assignment
1501 cat <<EOSC >myread
1502 $startsh
1503 xxxm=\$dflt
1504 $myecho
1505 ans='!'
1506 case "\$fastread" in
1507 yes) case "\$dflt" in
1508         '') ;;
1509         *) ans='';
1510                 case "\$silent-\$rp" in
1511                 true-) ;;
1512                 *) echo " " >&4;;
1513                 esac;;
1514         esac;;
1515 *) case "\$silent" in
1516         true) case "\$rp" in
1517                 '') ans='';;
1518                 esac;;
1519         esac;;
1520 esac
1521 while expr "X\$ans" : "X!" >/dev/null; do
1522         read answ
1523         set x \$xxxm
1524         shift
1525         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1526         case  "\$answ" in
1527         "!")
1528                 sh 1>&4
1529                 echo " "
1530                 $myecho
1531                 ;;
1532         !*)
1533                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1534                 shift
1535                 sh 1>&4 -c "\$*"
1536                 echo " "
1537                 $myecho
1538                 ;;
1539         "\$ans")
1540                 case "\$ans" in
1541                 \\&*)
1542                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1543                         shift
1544                         case "\$1" in
1545                         -d)
1546                                 fastread=yes
1547                                 echo "(OK, I'll run with -d after this question.)" >&4
1548                                 ;;
1549                         -*)
1550                                 echo "*** Sorry, \$1 not supported yet." >&4
1551                                 ;;
1552                         esac
1553                         $myecho
1554                         ans=!
1555                         ;;
1556                 esac;;
1557         *)
1558                 case "\$aok" in
1559                 y)
1560                         echo "*** Substitution done -- please confirm."
1561                         xxxm="\$ans"
1562                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1563                         xxxm="\$ans"
1564                         ans=!
1565                         ;;
1566                 *)
1567                         echo "*** Error -- try again."
1568                         ans=!
1569                         ;;
1570                 esac
1571                 $myecho
1572                 ;;
1573         esac
1574         case "\$ans\$xxxm\$nostick" in
1575         '')
1576                 ans=!
1577                 $myecho
1578                 ;;
1579         esac
1580 done
1581 case "\$ans" in
1582 '') ans="\$xxxm";;
1583 esac
1584 EOSC
1585
1586 : create .config dir to save info across Configure sessions
1587 test -d ../.config || mkdir ../.config
1588 cat >../.config/README <<EOF
1589 This directory created by Configure to save information that should
1590 persist across sessions for $package.
1591
1592 You may safely delete it if you wish.
1593 EOF
1594
1595 : general instructions
1596 needman=true
1597 firsttime=true
1598 user=`(logname) 2>/dev/null`
1599 case "$user" in
1600 '') user=`whoami 2>&1`;;
1601 esac
1602 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1603         firsttime=false
1604         echo " "
1605         rp='Would you like to see the instructions?'
1606         dflt=n
1607         . ./myread
1608         case "$ans" in
1609         [yY]*) ;;
1610         *) needman=false;;
1611         esac
1612 fi
1613 if $needman; then
1614         cat <<EOH
1615
1616 This installation shell script will examine your system and ask you questions
1617 to determine how the perl5 package should be installed. If you get
1618 stuck on a question, you may use a ! shell escape to start a subshell or
1619 execute a command.  Many of the questions will have default answers in square
1620 brackets; typing carriage return will give you the default.
1621
1622 On some of the questions which ask for file or directory names you are allowed
1623 to use the ~name construct to specify the login directory belonging to "name",
1624 even if you don't have a shell which knows about that.  Questions where this is
1625 allowed will be marked "(~name ok)".
1626
1627 EOH
1628         rp=''
1629         dflt='Type carriage return to continue'
1630         . ./myread
1631         cat <<'EOH'
1632
1633 The prompter used in this script allows you to use shell variables and
1634 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1635 in the default answer, as if the default line was a set of arguments given to a
1636 script shell.  This means you may also use $* to repeat the whole default line,
1637 so you do not have to re-type everything to add something to the default.
1638
1639 Everytime there is a substitution, you will have to confirm.  If there is an
1640 error (e.g. an unmatched backtick), the default answer will remain unchanged
1641 and you will be prompted again.
1642
1643 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1644 the questions and use the computed defaults (or the previous answers if there
1645 was already a config.sh file). Type 'Configure -h' for a list of options.
1646 You may also start interactively and then answer '& -d' at any prompt to turn
1647 on the non-interactive behaviour for the remainder of the execution.
1648
1649 EOH
1650         . ./myread
1651         cat <<EOH
1652
1653 Much effort has been expended to ensure that this shell script will run on any
1654 Unix system.  If despite that it blows up on yours, your best bet is to edit
1655 Configure and run it again.  If you can't run Configure for some reason,
1656 you'll have to generate a config.sh file by hand.  Whatever problems you
1657 have, let me (jhi@iki.fi) know how I blew it.
1658
1659 This installation script affects things in two ways:
1660
1661 1) it may do direct variable substitutions on some of the files included
1662    in this kit.
1663 2) it builds a config.h file for inclusion in C programs.  You may edit
1664    any of these files as the need arises after running this script.
1665
1666 If you make a mistake on a question, there is no easy way to back up to it
1667 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1668 files.  Configure will offer to let you do this before it runs the SH files.
1669
1670 EOH
1671         dflt='Type carriage return to continue'
1672         . ./myread
1673         case "$firsttime" in
1674         true) echo $user >>../.config/instruct;;
1675         esac
1676 fi
1677
1678 : find out where common programs are
1679 echo " "
1680 echo "Locating common programs..." >&4
1681 cat <<EOSC >loc
1682 $startsh
1683 case \$# in
1684 0) exit 1;;
1685 esac
1686 thing=\$1
1687 shift
1688 dflt=\$1
1689 shift
1690 for dir in \$*; do
1691         case "\$thing" in
1692         .)
1693         if test -d \$dir/\$thing; then
1694                 echo \$dir
1695                 exit 0
1696         fi
1697         ;;
1698         *)
1699         for thisthing in \$dir/\$thing; do
1700                 : just loop through to pick last item
1701         done
1702         if test -f \$thisthing; then
1703                 echo \$thisthing
1704                 exit 0
1705         elif test -f \$dir/\$thing.exe; then
1706                 if test -n "$DJGPP"; then
1707                         echo \$dir/\$thing.exe
1708                 else
1709                         : on Eunice apparently
1710                         echo \$dir/\$thing
1711                 fi
1712                 exit 0
1713         fi
1714         ;;
1715         esac
1716 done
1717 echo \$dflt
1718 exit 1
1719 EOSC
1720 chmod +x loc
1721 $eunicefix loc
1722 loclist="
1723 awk
1724 cat
1725 comm
1726 cp
1727 echo
1728 expr
1729 grep
1730 ls
1731 make
1732 mkdir
1733 rm
1734 sed
1735 sort
1736 touch
1737 tr
1738 uniq
1739 "
1740 trylist="
1741 Mcc
1742 ar
1743 byacc
1744 cpp
1745 csh
1746 date
1747 egrep
1748 gzip
1749 less
1750 ln
1751 more
1752 nm
1753 nroff
1754 pg
1755 tee
1756 test
1757 uname
1758 zip
1759 "
1760 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1761 pth="$pth /lib /usr/lib"
1762 for file in $loclist; do
1763         eval xxx=\$$file
1764         case "$xxx" in
1765         /*|?:[\\/]*)
1766                 if test -f "$xxx"; then
1767                         : ok
1768                 else
1769                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1770                         xxx=`./loc $file $file $pth`
1771                 fi
1772                 ;;
1773         '') xxx=`./loc $file $file $pth`;;
1774         *) xxx=`./loc $xxx $xxx $pth`;;
1775         esac
1776         eval $file=$xxx
1777         eval _$file=$xxx
1778         case "$xxx" in
1779         /*)
1780                 echo $file is in $xxx.
1781                 ;;
1782         ?:[\\/]*)
1783                 echo $file is in $xxx.
1784                 ;;
1785         *)
1786                 echo "I don't know where '$file' is, and my life depends on it." >&4
1787                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1788                 exit 1
1789                 ;;
1790         esac
1791 done
1792 echo " "
1793 echo "Don't worry if any of the following aren't found..."
1794 say=offhand
1795 for file in $trylist; do
1796         eval xxx=\$$file
1797         case "$xxx" in
1798         /*|?:[\\/]*)
1799                 if test -f "$xxx"; then
1800                         : ok
1801                 else
1802                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1803                         xxx=`./loc $file $file $pth`
1804                 fi
1805                 ;;
1806         '') xxx=`./loc $file $file $pth`;;
1807         *) xxx=`./loc $xxx $xxx $pth`;;
1808         esac
1809         eval $file=$xxx
1810         eval _$file=$xxx
1811         case "$xxx" in
1812         /*)
1813                 echo $file is in $xxx.
1814                 ;;
1815         ?:[\\/]*)
1816                 echo $file is in $xxx.
1817                 ;;
1818         *)
1819                 echo "I don't see $file out there, $say."
1820                 say=either
1821                 ;;
1822         esac
1823 done
1824 case "$egrep" in
1825 egrep)
1826         echo "Substituting grep for egrep."
1827         egrep=$grep
1828         ;;
1829 esac
1830 case "$ln" in
1831 ln)
1832         echo "Substituting cp for ln."
1833         ln=$cp
1834         ;;
1835 esac
1836 case "$test" in
1837 test)
1838         echo "Hopefully test is built into your sh."
1839         ;;
1840 *)
1841         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1842                 echo "Using the test built into your sh."
1843                 test=test
1844                 _test=test
1845         fi
1846         ;;
1847 esac
1848 case "$echo" in
1849 echo)
1850         echo "Hopefully echo is built into your sh."
1851         ;;
1852 '') ;;
1853 *)
1854         echo " "
1855 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1856         $echo $n "hi there$c" >foo1
1857         echo $n "hi there$c" >foo2
1858         if cmp foo1 foo2 >/dev/null 2>&1; then
1859                 echo "They are compatible.  In fact, they may be identical."
1860         else
1861                 case "$n" in
1862                 '-n') n='' c='\c';;
1863                 *) n='-n' c='';;
1864                 esac
1865                 cat <<FOO
1866 They are not compatible!  You are probably running ksh on a non-USG system.
1867 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1868 have echo built in and we may have to run some Bourne shell scripts.  That
1869 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1870
1871 FOO
1872                 $echo $n "The star should be here-->$c"
1873                 $echo "*"
1874         fi
1875         $rm -f foo1 foo2
1876         ;;
1877 esac
1878
1879 : determine whether symbolic links are supported
1880 echo " "
1881 $touch blurfl
1882 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1883         echo "Symbolic links are supported." >&4
1884         lns="$ln -s"
1885 else
1886         echo "Symbolic links are NOT supported." >&4
1887         lns="$ln"
1888 fi
1889 $rm -f blurfl sym
1890
1891 : see whether [:lower:] and [:upper:] are supported character classes
1892 echo " "
1893 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1894 ABYZ)
1895         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1896         up='[:upper:]'
1897         low='[:lower:]'
1898         ;;
1899 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1900         # (0xc9 and 0xd1), therefore that is a nice testing point.
1901         if test "X$up" = X -o "X$low" = X; then
1902             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1903             ij) up='[A-Z]'
1904                 low='[a-z]'
1905                 ;;
1906             esac
1907         fi
1908         if test "X$up" = X -o "X$low" = X; then
1909             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1910             ij) up='A-Z'
1911                 low='a-z'
1912                 ;;
1913             esac
1914         fi
1915         if test "X$up" = X -o "X$low" = X; then
1916             case "`echo IJ | od -x 2>/dev/null`" in
1917             *C9D1*|*c9d1*)
1918                 echo "Hey, this might be EBCDIC." >&4
1919                 if test "X$up" = X -o "X$low" = X; then
1920                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1921                     ij) up='[A-IJ-RS-Z]'
1922                         low='[a-ij-rs-z]'
1923                         ;;
1924                     esac
1925                 fi
1926                 if test "X$up" = X -o "X$low" = X; then
1927                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1928                     ij) up='A-IJ-RS-Z'
1929                         low='a-ij-rs-z'
1930                         ;;
1931                     esac
1932                 fi
1933                 ;;
1934             esac
1935         fi
1936 esac
1937 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1938 ij)
1939     echo "Using $up and $low to convert case." >&4
1940     ;;
1941 *)
1942     echo "I don't know how to translate letters from upper to lower case." >&4
1943     echo "Your tr is not acting any way I know of." >&4
1944     exit 1
1945     ;;
1946 esac
1947 : set up the translation script tr, must be called with ./tr of course
1948 cat >tr <<EOSC
1949 $startsh
1950 case "\$1\$2" in
1951 '[A-Z][a-z]') exec $tr '$up' '$low';;
1952 '[a-z][A-Z]') exec $tr '$low' '$up';;
1953 esac
1954 exec $tr "\$@"
1955 EOSC
1956 chmod +x tr
1957 $eunicefix tr
1958
1959 : Try to determine whether config.sh was made on this system
1960 case "$config_sh" in
1961 '')
1962 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1963 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1964 # because the A-Z/a-z are not consecutive.
1965 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1966         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1967 newmyuname="$myuname"
1968 dflt=n
1969 case "$knowitall" in
1970 '')
1971         if test -f ../config.sh; then
1972                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1973                         eval "`grep myuname= ../config.sh`"
1974                 fi
1975                 if test "X$myuname" = "X$newmyuname"; then
1976                         dflt=y
1977                 fi
1978         fi
1979         ;;
1980 *) dflt=y;;
1981 esac
1982
1983 : Get old answers from old config file if Configure was run on the
1984 : same system, otherwise use the hints.
1985 hint=default
1986 cd ..
1987 if test -f config.sh; then
1988         echo " "
1989         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1990         . UU/myread
1991         case "$ans" in
1992         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1993         *)  echo "Fetching default answers from your old config.sh file..." >&4
1994                 tmp_n="$n"
1995                 tmp_c="$c"
1996                 tmp_sh="$sh"
1997                 . ./config.sh
1998                 cp config.sh UU
1999                 n="$tmp_n"
2000                 c="$tmp_c"
2001                 : Older versions did not always set $sh.  Catch re-use of such
2002                 : an old config.sh.
2003                 case "$sh" in
2004                 '') sh="$tmp_sh" ;;
2005                 esac
2006                 hint=previous
2007                 ;;
2008         esac
2009 fi
2010 if test ! -f config.sh; then
2011         $cat <<EOM
2012
2013 First time through, eh?  I have some defaults handy for some systems
2014 that need some extra help getting the Configure answers right:
2015
2016 EOM
2017         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2018         dflt=''
2019         : Half the following guesses are probably wrong... If you have better
2020         : tests or hints, please send them to jhi@iki.fi
2021         : The metaconfig authors would also appreciate a copy...
2022         $test -f /irix && osname=irix
2023         $test -f /xenix && osname=sco_xenix
2024         $test -f /dynix && osname=dynix
2025         $test -f /dnix && osname=dnix
2026         $test -f /lynx.os && osname=lynxos
2027         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2028         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2029         $test -f /bin/mips && /bin/mips && osname=mips
2030         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2031                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2032         $test -d /usr/apollo/bin && osname=apollo
2033         $test -f /etc/saf/_sactab && osname=svr4
2034         $test -d /usr/include/minix && osname=minix
2035         if $test -d /MachTen -o -d /MachTen_Folder; then
2036                 osname=machten
2037                 if $test -x /sbin/version; then
2038                         osvers=`/sbin/version | $awk '{print $2}' |
2039                         $sed -e 's/[A-Za-z]$//'`
2040                 elif $test -x /usr/etc/version; then
2041                         osvers=`/usr/etc/version | $awk '{print $2}' |
2042                         $sed -e 's/[A-Za-z]$//'`
2043                 else
2044                         osvers="$2.$3"
2045                 fi
2046         fi
2047        $test -f /sys/posix.dll &&
2048                $test -f /usr/bin/what &&
2049                set X `/usr/bin/what /sys/posix.dll` &&
2050                $test "$3" = UWIN &&
2051                osname=uwin &&
2052                osvers="$5"
2053         if $test -f $uname; then
2054                 set X $myuname
2055                 shift
2056
2057                 case "$5" in
2058                 fps*) osname=fps ;;
2059                 mips*)
2060                         case "$4" in
2061                         umips) osname=umips ;;
2062                         *) osname=mips ;;
2063                         esac;;
2064                 [23]100) osname=mips ;;
2065                 next*) osname=next ;;
2066                 i386*)
2067                         if $test -f /etc/kconfig; then
2068                                 osname=isc
2069                                 if test "$lns" = "ln -s"; then
2070                                         osvers=4
2071                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2072                                         osvers=3
2073                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2074                                         osvers=2
2075                                 fi
2076                         fi
2077                         ;;
2078                 pc*)
2079                         if test -n "$DJGPP"; then
2080                                 osname=dos
2081                                 osvers=djgpp
2082                         fi
2083                         ;;
2084                 esac
2085
2086                 case "$1" in
2087                 aix) osname=aix
2088                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2089                         case "$tmp" in
2090                         'not found') osvers="$4"."$3" ;;
2091                         '<3240'|'<>3240') osvers=3.2.0 ;;
2092                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2093                         '=3250'|'>3250') osvers=3.2.5 ;;
2094                         *) osvers=$tmp;;
2095                         esac
2096                         ;;
2097                 *dc.osx) osname=dcosx
2098                         osvers="$3"
2099                         ;;
2100                 dnix) osname=dnix
2101                         osvers="$3"
2102                         ;;
2103                 domainos) osname=apollo
2104                         osvers="$3"
2105                         ;;
2106                 dgux) osname=dgux 
2107                         osvers="$3"
2108                         ;;
2109                 dynixptx*) osname=dynixptx
2110                         osvers=`echo "$4"|sed 's/^v//'`
2111                         ;;
2112                 freebsd) osname=freebsd 
2113                         osvers="$3" ;;
2114                 genix) osname=genix ;;
2115                 hp*) osname=hpux 
2116                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2117                         ;;
2118                 irix*) osname=irix
2119                         case "$3" in
2120                         4*) osvers=4 ;;
2121                         5*) osvers=5 ;;
2122                         *)      osvers="$3" ;;
2123                         esac
2124                         ;;
2125                 linux) osname=linux
2126                         case "$3" in
2127                         *)      osvers="$3" ;;
2128                         esac
2129                         ;;
2130                 MiNT) osname=mint
2131                         ;;
2132                 netbsd*) osname=netbsd
2133                         osvers="$3"
2134                         ;;
2135                 news-os) osvers="$3"
2136                         case "$3" in
2137                         4*) osname=newsos4 ;;
2138                         *) osname=newsos ;;
2139                         esac
2140                         ;;
2141                 bsd386) osname=bsd386
2142                         osvers=`$uname -r`
2143                         ;;
2144                 POSIX-BC | posix-bc ) osname=posix-bc
2145                         osvers="$3"
2146                         ;;
2147                 powerux | power_ux | powermax_os | powermaxos | \
2148                 powerunix | power_unix) osname=powerux
2149                         osvers="$3"
2150                         ;;
2151                 next*) osname=next ;;
2152                 solaris) osname=solaris
2153                         case "$3" in
2154                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2155                         *)      osvers="$3" ;;
2156                         esac
2157                         ;;
2158                 sunos) osname=sunos
2159                         case "$3" in
2160                         5*) osname=solaris
2161                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2162                         *)      osvers="$3" ;;
2163                         esac
2164                         ;;
2165                 titanos) osname=titanos
2166                         case "$3" in
2167                         1*) osvers=1 ;;
2168                         2*) osvers=2 ;;
2169                         3*) osvers=3 ;;
2170                         4*) osvers=4 ;;
2171                         *)      osvers="$3" ;;
2172                         esac
2173                         ;;
2174                 ultrix) osname=ultrix
2175                         osvers="$3"
2176                         ;;
2177                 osf1|mls+)      case "$5" in
2178                                 alpha)
2179                                         osname=dec_osf
2180                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2181                                         ;;
2182                         hp*)    osname=hp_osf1  ;;
2183                         mips)   osname=mips_osf1 ;;
2184                         esac
2185                         ;;
2186                 uts) osname=uts 
2187                         osvers="$3"
2188                         ;;
2189                 qnx) osname=qnx
2190                         osvers="$4"
2191                         ;;
2192                 $2) case "$osname" in
2193                         *isc*) ;;
2194                         *freebsd*) ;;
2195                         svr*)
2196                                 : svr4.x or possibly later
2197                                 case "svr$3" in 
2198                                 ${osname}*)
2199                                         osname=svr$3
2200                                         osvers=$4
2201                                         ;;
2202                                 esac
2203                                 case "$osname" in
2204                                 svr4.0)
2205                                         : Check for ESIX
2206                                         if test -f /stand/boot ; then
2207                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2208                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2209                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2210                                                         if test -n "$isesix"; then
2211                                                                 osname=esix4
2212                                                         fi
2213                                                 fi
2214                                         fi
2215                                         ;;
2216                                 esac
2217                                 ;;
2218                         *)      if test -f /etc/systemid; then
2219                                         osname=sco
2220                                         set `echo $3 | $sed 's/\./ /g'` $4
2221                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2222                                                 osvers=$1.$2.$3
2223                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2224                                                 osvers=$1.$2
2225                                         elif $test -f $src/hints/sco_$1.sh; then
2226                                                 osvers=$1
2227                                         fi
2228                                 else
2229                                         case "$osname" in
2230                                         '') : Still unknown.  Probably a generic Sys V.
2231                                                 osname="sysv"
2232                                                 osvers="$3"
2233                                                 ;;
2234                                         esac
2235                                 fi
2236                                 ;;
2237                         esac
2238                         ;;
2239                 *)      case "$osname" in
2240                         '') : Still unknown.  Probably a generic BSD.
2241                                 osname="$1"
2242                                 osvers="$3"
2243                                 ;;
2244                         esac
2245                         ;;
2246                 esac
2247         else
2248                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2249                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2250                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2251                                 osname=news_os
2252                         fi
2253                         $rm -f UU/kernel.what
2254                 elif test -d c:/.; then
2255                         set X $myuname
2256                         osname=os2
2257                         osvers="$5"
2258                 fi
2259         fi
2260         
2261         : Now look for a hint file osname_osvers, unless one has been
2262         : specified already.
2263         case "$hintfile" in
2264         ''|' ')
2265                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2266                 : Also try without trailing minor version numbers.
2267                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2268                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2269                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2270                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2271                 case "$file" in
2272                 '') dflt=none ;;
2273                 *)  case "$osvers" in
2274                         '') dflt=$file
2275                                 ;;
2276                         *)  if $test -f $src/hints/$file.sh ; then
2277                                         dflt=$file
2278                                 elif $test -f $src/hints/$xfile.sh ; then
2279                                         dflt=$xfile
2280                                 elif $test -f $src/hints/$xxfile.sh ; then
2281                                         dflt=$xxfile
2282                                 elif $test -f $src/hints/$xxxfile.sh ; then
2283                                         dflt=$xxxfile
2284                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2285                                         dflt=$xxxxfile
2286                                 elif $test -f "$src/hints/${osname}.sh" ; then
2287                                         dflt="${osname}"
2288                                 else
2289                                         dflt=none
2290                                 fi
2291                                 ;;
2292                         esac
2293                         ;;
2294                 esac
2295                 if $test -f Policy.sh ; then
2296                         case "$dflt" in
2297                         *Policy*) ;;
2298                         none) dflt="Policy" ;;
2299                         *) dflt="Policy $dflt" ;;
2300                         esac
2301                 fi
2302                 ;;
2303         *)
2304                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2305                 ;;
2306         esac
2307
2308         if $test -f Policy.sh ; then
2309                 $cat <<EOM
2310
2311 There's also a Policy hint file available, which should make the
2312 site-specific (policy) questions easier to answer.
2313 EOM
2314
2315         fi
2316
2317         $cat <<EOM
2318
2319 You may give one or more space-separated answers, or "none" if appropriate.
2320 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2321 is a good thing.  DO NOT give a wrong version.
2322
2323 EOM
2324
2325         rp="Which of these apply, if any?"
2326         . UU/myread
2327         tans=$ans
2328         for file in $tans; do
2329                 if $test X$file = XPolicy -a -f Policy.sh; then
2330                         . Policy.sh
2331                         $cat Policy.sh >> UU/config.sh
2332                 elif $test -f $src/hints/$file.sh; then
2333                         . $src/hints/$file.sh
2334                         $cat $src/hints/$file.sh >> UU/config.sh
2335                 elif $test X$tans = X -o X$tans = Xnone ; then
2336                         : nothing
2337                 else
2338                         : Give one chance to correct a possible typo.
2339                         echo "$file.sh does not exist"
2340                         dflt=$file
2341                         rp="hint to use instead?"
2342                         . UU/myread
2343                         for file in $ans; do
2344                                 if $test -f "$src/hints/$file.sh"; then
2345                                         . $src/hints/$file.sh
2346                                         $cat $src/hints/$file.sh >> UU/config.sh
2347                                 elif $test X$ans = X -o X$ans = Xnone ; then
2348                                         : nothing
2349                                 else
2350                                         echo "$file.sh does not exist -- ignored."
2351                                 fi
2352                         done
2353                 fi
2354         done
2355
2356         hint=recommended
2357         : Remember our hint file for later.
2358         if $test -f "$src/hints/$file.sh" ; then
2359                 hintfile="$file"
2360         else
2361                 hintfile=''
2362         fi
2363 fi
2364 cd UU
2365 ;;
2366 *)
2367         echo " "
2368         echo "Fetching default answers from $config_sh..." >&4
2369         tmp_n="$n"
2370         tmp_c="$c"
2371         cd ..
2372         cp $config_sh config.sh 2>/dev/null
2373         chmod +w config.sh
2374         . ./config.sh
2375         cd UU
2376         cp ../config.sh .
2377         n="$tmp_n"
2378         c="$tmp_c"
2379         hint=previous
2380         ;;
2381 esac
2382 test "$override" && . ./optdef.sh
2383 myuname="$newmyuname"
2384
2385 : Restore computed paths
2386 for file in $loclist $trylist; do
2387         eval $file="\$_$file"
2388 done
2389
2390 cat << EOM
2391
2392 Configure uses the operating system name and version to set some defaults.
2393 The default value is probably right if the name rings a bell. Otherwise,
2394 since spelling matters for me, either accept the default or answer "none"
2395 to leave it blank.
2396
2397 EOM
2398 case "$osname" in
2399         ''|' ')
2400                 case "$hintfile" in
2401                 ''|' '|none) dflt=none ;;
2402                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2403                 esac
2404                 ;;
2405         *) dflt="$osname" ;;
2406 esac
2407 rp="Operating system name?"
2408 . ./myread
2409 case "$ans" in
2410 none)  osname='' ;;
2411 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2412 esac
2413 echo " "
2414 case "$osvers" in
2415         ''|' ')
2416                 case "$hintfile" in
2417                 ''|' '|none) dflt=none ;;
2418                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2419                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2420                         case "$dflt" in
2421                         ''|' ') dflt=none ;;
2422                         esac
2423                         ;;
2424                 esac
2425                 ;;
2426         *) dflt="$osvers" ;;
2427 esac
2428 rp="Operating system version?"
2429 . ./myread
2430 case "$ans" in
2431 none)  osvers='' ;;
2432 *) osvers="$ans" ;;
2433 esac
2434
2435 : who configured the system
2436 cf_time=`LC_ALL=C; export LC_ALL; $date 2>&1`
2437 cf_by=`(logname) 2>/dev/null`
2438 case "$cf_by" in
2439 "")
2440         cf_by=`(whoami) 2>/dev/null`
2441         case "$cf_by" in
2442         "") cf_by=unknown ;;
2443         esac ;;
2444 esac
2445
2446 : set up the script used to warn in case of inconsistency
2447 cat <<EOS >whoa
2448 $startsh
2449 EOS
2450 cat <<'EOSC' >>whoa
2451 dflt=y
2452 echo " "
2453 echo "*** WHOA THERE!!! ***" >&4
2454 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2455 rp="    Keep the $hint value?"
2456 . ./myread
2457 case "$ans" in
2458 y) td=$was; tu=$was;;
2459 esac
2460 EOSC
2461
2462 : function used to set $1 to $val
2463 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2464 case "$val$was" in
2465 $define$undef) . ./whoa; eval "$var=\$td";;
2466 $undef$define) . ./whoa; eval "$var=\$tu";;
2467 *) eval "$var=$val";;
2468 esac'
2469
2470 cat <<EOM
2471
2472 Perl can be built to take advantage of threads, on some systems.
2473 To do so, Configure must be run with -Dusethreads.
2474 (See README.threads for details.)
2475 EOM
2476 case "$usethreads" in
2477 $define|true|[yY]*)     dflt='y';;
2478 *) dflt='n';;
2479 esac
2480 rp='Build a threading Perl?'
2481 . ./myread
2482 case "$ans" in
2483 y|Y)    val="$define" ;;     
2484 *)      val="$undef" ;;
2485 esac
2486 set usethreads
2487 eval $setvar 
2488
2489 case "$d_oldpthreads" in
2490 '')     : Configure tests would be welcome here.  For now, assume undef.
2491         val="$undef" ;;
2492 *)      val="$d_oldpthreads" ;;
2493 esac
2494 set d_oldpthreads
2495 eval $setvar
2496
2497
2498 case "$usethreads" in
2499 "$define"|true|[yY]*)
2500 : Look for a hint-file generated 'call-back-unit'.  If the
2501 : user has specified that a threading perl is to be built,
2502 : we may need to set or change some other defaults.
2503         if $test -f usethreads.cbu; then
2504                 . ./usethreads.cbu
2505         fi
2506         case "$osname" in
2507         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|os2|solaris|vmesa)
2508                 # Known thread-capable platforms.
2509                 ;;
2510         *)
2511                 cat >&4 <<EOM
2512 $osname is not known to support threads.
2513 Please let me (jhi@iki.fi) know how to do that.
2514
2515 Cannot continue, aborting.
2516 EOM
2517                 exit 1
2518         ;;
2519         esac # $osname
2520     ;;
2521 esac # $usethreads
2522
2523 cat <<EOM
2524
2525 Perl can be built so that multiple Perl interpreters can coexist
2526 within the same Perl executable.  To do so, Configure must be run with
2527 -Dusemultiplicity.
2528
2529 Normally you do not need this and you should answer no.
2530
2531 EOM
2532 case "$usemultiplicity" in
2533 $define|true|[yY]*)     dflt='y';;
2534 *) dflt='n';;
2535 esac
2536 rp='Build Perl for multiplicity?'
2537 . ./myread
2538 case "$ans" in
2539 y|Y)    val="$define" ;;     
2540 *)      val="$undef" ;;
2541 esac
2542 set usemultiplicity
2543 eval $setvar 
2544
2545 cat <<EOM
2546
2547 Perl can be built to take advantage of explicit 64-bit interfaces,
2548 on some systems.  To do so, Configure must be run with -Duse64bits.
2549
2550 If this doesn't make any sense to you, just accept the default 'n'.
2551 EOM
2552 case "$use64bits" in
2553 $define|true|[yY]*)     dflt='y';;
2554 *) dflt='n';;
2555 esac
2556 rp='Try to use explicit 64-bit interfaces, if available?'
2557 . ./myread
2558 case "$ans" in
2559 y|Y) 
2560         val="$define"
2561         ;;     
2562 *)      
2563         val="$undef"
2564         ;;
2565 esac
2566 set use64bits
2567 eval $setvar
2568
2569 case "$archname64" in
2570 '') archname64='' ;;    # not a typo
2571 esac
2572
2573 case "$use64bits" in
2574 "$define"|true|[yY]*)
2575 : Look for a hint-file generated 'call-back-unit'.  If the
2576 : user has specified that a threading perl is to be built,
2577 : we may need to set or change some other defaults.
2578         if $test -f use64bits.cbu; then
2579                 . ./use64bits.cbu
2580         fi
2581         case "$osname" in
2582         dec_osf|hpux|irix|solaris|unicos)
2583                 # Known 64-bit capable platforms.
2584                 ;;
2585         *)
2586                 cat >&4 <<EOM
2587 $osname is not known to support 64-bit interfaces.
2588 Please let me (jhi@iki.fi) know how to do that.
2589
2590 Cannot continue, aborting.
2591 EOM
2592                 exit 1
2593                 ;;
2594         esac
2595         ;;
2596 esac
2597
2598 : determine the architecture name
2599 echo " "
2600 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2601         tarch=`arch`"-$osname"
2602 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2603         if uname -m > tmparch 2>&1 ; then
2604                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2605                         -e 's/$/'"-$osname/" tmparch`
2606         else
2607                 tarch="$osname"
2608         fi
2609         $rm -f tmparch
2610 else
2611         tarch="$osname"
2612 fi
2613 case "$myarchname" in
2614 ''|"$tarch") ;;
2615 *)
2616         echo "(Your architecture name used to be $myarchname.)"
2617         archname=''
2618         ;;
2619 esac
2620 myarchname="$tarch"
2621 case "$archname" in
2622 '') dflt="$tarch";;
2623 *) dflt="$archname";;
2624 esac
2625 rp='What is your architecture name'
2626 . ./myread
2627 archname="$ans"
2628 case "$usethreads" in
2629 $define)
2630         echo "Threads selected." >&4
2631         case "$archname" in
2632         *-thread*) echo "...and architecture name already has -thread." >&4
2633                 ;;
2634         *)      archname="$archname-thread"
2635                 echo "...setting architecture name to $archname." >&4
2636                 ;;
2637         esac
2638         ;;
2639 esac
2640 case "$usemultiplicity" in
2641 $define)
2642         echo "Multiplicity selected." >&4
2643         case "$archname" in
2644         *-multi*) echo "...and architecture name already has -multi." >&4
2645                 ;;
2646         *)      archname="$archname-multi"
2647                 echo "...setting architecture name to $archname." >&4
2648                 ;;
2649         esac
2650         ;;
2651 esac
2652 case "$use64bits" in
2653 $define)
2654         echo "Explicit 64-bitness selected." >&4
2655         case "$archname64" in
2656         '')
2657                 ;;
2658         *)
2659                 case "$archname" in
2660                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2661                         ;;
2662                 *)      archname="$archname-$archname64"
2663                         echo "...setting architecture name to $archname." >&4
2664                         ;;
2665                 esac
2666                 ;;
2667         esac
2668 esac
2669
2670 : is AFS running?
2671 echo " "
2672 case "$afs" in
2673 $define|true)   afs=true ;;
2674 $undef|false)   afs=false ;;
2675 *)      if test -d /afs; then
2676                 afs=true
2677         else
2678                 afs=false
2679         fi
2680         ;;
2681 esac
2682 if $afs; then
2683         echo "AFS may be running... I'll be extra cautious then..." >&4
2684 else
2685         echo "AFS does not seem to be running..." >&4
2686 fi
2687
2688 : decide how portable to be.  Allow command line overrides.
2689 case "$d_portable" in
2690 "$undef") ;;
2691 *)      d_portable="$define" ;;
2692 esac
2693
2694 : set up shell script to do ~ expansion
2695 cat >filexp <<EOSS
2696 $startsh
2697 : expand filename
2698 case "\$1" in
2699  ~/*|~)
2700         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2701         ;;
2702  ~*)
2703         if $test -f /bin/csh; then
2704                 /bin/csh -f -c "glob \$1"
2705                 failed=\$?
2706                 echo ""
2707                 exit \$failed
2708         else
2709                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2710                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2711                 if $test ! -d "\$dir"; then
2712                         me=\`basename \$0\`
2713                         echo "\$me: can't locate home directory for: \$name" >&2
2714                         exit 1
2715                 fi
2716                 case "\$1" in
2717                 */*)
2718                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2719                         ;;
2720                 *)
2721                         echo \$dir
2722                         ;;
2723                 esac
2724         fi
2725         ;;
2726 *)
2727         echo \$1
2728         ;;
2729 esac
2730 EOSS
2731 chmod +x filexp
2732 $eunicefix filexp
2733
2734 : now set up to get a file name
2735 cat <<EOS >getfile
2736 $startsh
2737 EOS
2738 cat <<'EOSC' >>getfile
2739 tilde=''
2740 fullpath=''
2741 already=''
2742 skip=''
2743 none_ok=''
2744 exp_file=''
2745 nopath_ok=''
2746 orig_rp="$rp"
2747 orig_dflt="$dflt"
2748
2749 case "$fn" in
2750 *\(*)
2751         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2752         fn=`echo $fn | sed 's/(.*)//'`
2753         ;;
2754 esac
2755
2756 case "$fn" in
2757 *:*)
2758         loc_file=`expr $fn : '.*:\(.*\)'`
2759         fn=`expr $fn : '\(.*\):.*'`
2760         ;;
2761 esac
2762
2763 case "$fn" in
2764 *~*) tilde=true;;
2765 esac
2766 case "$fn" in
2767 */*) fullpath=true;;
2768 esac
2769 case "$fn" in
2770 *+*) skip=true;;
2771 esac
2772 case "$fn" in
2773 *n*) none_ok=true;;
2774 esac
2775 case "$fn" in
2776 *e*) exp_file=true;;
2777 esac
2778 case "$fn" in
2779 *p*) nopath_ok=true;;
2780 esac
2781
2782 case "$fn" in
2783 *f*) type='File';;
2784 *d*) type='Directory';;
2785 *l*) type='Locate';;
2786 esac
2787
2788 what="$type"
2789 case "$what" in
2790 Locate) what='File';;
2791 esac
2792
2793 case "$exp_file" in
2794 '')
2795         case "$d_portable" in
2796         "$define") ;;
2797         *) exp_file=true;;
2798         esac
2799         ;;
2800 esac
2801
2802 cd ..
2803 while test "$type"; do
2804         redo=''
2805         rp="$orig_rp"
2806         dflt="$orig_dflt"
2807         case "$tilde" in
2808         true) rp="$rp (~name ok)";;
2809         esac
2810         . UU/myread
2811         if test -f UU/getfile.ok && \
2812                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2813         then
2814                 value="$ans"
2815                 ansexp="$ans"
2816                 break
2817         fi
2818         case "$ans" in
2819         none)
2820                 value=''
2821                 ansexp=''
2822                 case "$none_ok" in
2823                 true) type='';;
2824                 esac
2825                 ;;
2826         *)
2827                 case "$tilde" in
2828                 '') value="$ans"
2829                         ansexp="$ans";;
2830                 *)
2831                         value=`UU/filexp $ans`
2832                         case $? in
2833                         0)
2834                                 if test "$ans" != "$value"; then
2835                                         echo "(That expands to $value on this system.)"
2836                                 fi
2837                                 ;;
2838                         *) value="$ans";;
2839                         esac
2840                         ansexp="$value"
2841                         case "$exp_file" in
2842                         '') value="$ans";;
2843                         esac
2844                         ;;
2845                 esac
2846                 case "$fullpath" in
2847                 true)
2848                         case "$ansexp" in
2849                         /*) value="$ansexp" ;;
2850                         *)
2851                                 redo=true
2852                                 case "$already" in
2853                                 true)
2854                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2855                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2856                                         ;;
2857                                 *)
2858                                 echo "Please give a full path name, starting with slash." >&4
2859                                         case "$tilde" in
2860                                         true)
2861                                 echo "Note that using ~name is ok provided it expands well." >&4
2862                                                 already=true
2863                                                 ;;
2864                                         esac
2865                                 esac
2866                                 ;;
2867                         esac
2868                         ;;
2869                 esac
2870                 case "$redo" in
2871                 '')
2872                         case "$type" in
2873                         File)
2874                                 if test -f "$ansexp"; then
2875                                         type=''
2876                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2877                                 then
2878                                         echo "($value is not a plain file, but that's ok.)"
2879                                         type=''
2880                                 fi
2881                                 ;;
2882                         Directory)
2883                                 if test -d "$ansexp"; then
2884                                         type=''
2885                                 fi
2886                                 ;;
2887                         Locate)
2888                                 if test -d "$ansexp"; then
2889                                         echo "(Looking for $loc_file in directory $value.)"
2890                                         value="$value/$loc_file"
2891                                         ansexp="$ansexp/$loc_file"
2892                                 fi
2893                                 if test -f "$ansexp"; then
2894                                         type=''
2895                                 fi
2896                                 case "$nopath_ok" in
2897                                 true)   case "$value" in
2898                                         */*) ;;
2899                                         *)      echo "Assuming $value will be in people's path."
2900                                                 type=''
2901                                                 ;;
2902                                         esac
2903                                         ;;
2904                                 esac
2905                                 ;;
2906                         esac
2907
2908                         case "$skip" in
2909                         true) type='';
2910                         esac
2911
2912                         case "$type" in
2913                         '') ;;
2914                         *)
2915                                 if test "$fastread" = yes; then
2916                                         dflt=y
2917                                 else
2918                                         dflt=n
2919                                 fi
2920                                 rp="$what $value doesn't exist.  Use that name anyway?"
2921                                 . UU/myread
2922                                 dflt=''
2923                                 case "$ans" in
2924                                 y*) type='';;
2925                                 *) echo " ";;
2926                                 esac
2927                                 ;;
2928                         esac
2929                         ;;
2930                 esac
2931                 ;;
2932         esac
2933 done
2934 cd UU
2935 ans="$value"
2936 rp="$orig_rp"
2937 dflt="$orig_dflt"
2938 rm -f getfile.ok
2939 EOSC
2940
2941 : determine root of directory hierarchy where package will be installed.
2942 case "$prefix" in
2943 '')
2944         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2945         ;;
2946 *)
2947         dflt="$prefix"
2948         ;;
2949 esac
2950 $cat <<EOM
2951
2952 By default, $package will be installed in $dflt/bin, manual
2953 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2954 all installation directories. Typically set to /usr/local, but you
2955 may choose /usr if you wish to install $package among your system
2956 binaries. If you wish to have binaries under /bin but manual pages
2957 under /usr/local/man, that's ok: you will be prompted separately
2958 for each of the installation directories, the prefix being only used
2959 to set the defaults.
2960
2961 EOM
2962 fn=d~
2963 rp='Installation prefix to use?'
2964 . ./getfile
2965 oldprefix=''
2966 case "$prefix" in
2967 '') ;;
2968 *)
2969         case "$ans" in
2970         "$prefix") ;;
2971         *) oldprefix="$prefix";;
2972         esac
2973         ;;
2974 esac
2975 prefix="$ans"
2976 prefixexp="$ansexp"
2977
2978 : set the prefixit variable, to compute a suitable default value
2979 prefixit='case "$3" in
2980 ""|none)
2981         case "$oldprefix" in
2982         "") eval "$1=\"\$$2\"";;
2983         *)
2984                 case "$3" in
2985                 "") eval "$1=";;
2986                 none)
2987                         eval "tp=\"\$$2\"";
2988                         case "$tp" in
2989                         ""|" ") eval "$1=\"\$$2\"";;
2990                         *) eval "$1=";;
2991                         esac;;
2992                 esac;;
2993         esac;;
2994 *)
2995         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2996         case "$tp" in
2997         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2998         /*-$oldprefix/*|\~*-$oldprefix/*)
2999                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3000         *) eval "$1=\"\$$2\"";;
3001         esac;;
3002 esac'
3003
3004 : set the base revision
3005 baserev=5.0
3006
3007 : get the patchlevel
3008 echo " "
3009 echo "Getting the current patchlevel..." >&4
3010 if $test -r $rsrc/patchlevel.h;then
3011         patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
3012         subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3013 else
3014         patchlevel=0
3015         subversion=0
3016 fi
3017 $echo $n "(You have $package" $c
3018 case "$package" in
3019 "*$baserev")    ;;
3020 *)              $echo $n " $baserev" $c ;;
3021 esac
3022 $echo $n " patchlevel $patchlevel" $c
3023 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3024 echo ".)"
3025
3026 if test 0 -eq "$subversion"; then
3027         version=`LC_ALL=C; export LC_ALL; \
3028                  echo $baserev $patchlevel | \
3029                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3030 else
3031         version=`LC_ALL=C; export LC_ALL; \
3032                  echo $baserev $patchlevel $subversion | \
3033                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3034 fi
3035 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3036 if test "$subversion" -lt 50; then
3037         apiversion=`LC_ALL=C; export LC_ALL; \
3038                  echo $baserev $patchlevel | \
3039                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3040 else
3041         apiversion="$version"
3042 fi
3043
3044 : determine where private library files go
3045 : Usual default is /usr/local/lib/perl5/$version.
3046 : Also allow things like /opt/perl/lib/$version, since 
3047 : /opt/perl/lib/perl5... would be redundant.
3048 case "$prefix" in
3049 *perl*) set dflt privlib lib/$version ;;
3050 *)       set dflt privlib lib/$package/$version ;;
3051 esac
3052 eval $prefixit
3053 $cat <<EOM
3054
3055 There are some auxiliary files for $package that need to be put into a
3056 private library directory that is accessible by everyone.
3057
3058 EOM
3059 fn=d~+
3060 rp='Pathname where the private library files will reside?'
3061 . ./getfile
3062 if $test "X$privlibexp" != "X$ansexp"; then
3063         installprivlib=''
3064 fi
3065 privlib="$ans"
3066 privlibexp="$ansexp"
3067 if $afs; then
3068         $cat <<EOM
3069
3070 Since you are running AFS, I need to distinguish the directory in which
3071 private files reside from the directory in which they are installed (and from
3072 which they are presumably copied to the former directory by occult means).
3073
3074 EOM
3075         case "$installprivlib" in
3076         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3077         *) dflt="$installprivlib";;
3078         esac
3079         fn=de~
3080         rp='Where will private files be installed?'
3081         . ./getfile
3082         installprivlib="$ans"
3083 else
3084         installprivlib="$privlibexp"
3085 fi
3086
3087 : set the prefixup variable, to restore leading tilda escape
3088 prefixup='case "$prefixexp" in
3089 "$prefix") ;;
3090 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3091 esac'
3092
3093 : determine where public architecture dependent libraries go
3094 set archlib archlib
3095 eval $prefixit
3096 : privlib default is /usr/local/lib/$package/$version
3097 : archlib default is /usr/local/lib/$package/$version/$archname
3098 : privlib may have an optional trailing /share.
3099 tdflt=`echo $privlib | $sed 's,/share$,,'`
3100 tdflt=$tdflt/$archname
3101 case "$archlib" in
3102 '')     dflt=$tdflt
3103         ;;
3104 *)      dflt="$archlib"
3105     ;;
3106 esac
3107 cat <<EOM
3108
3109 $spackage contains architecture-dependent library files.  If you are
3110 sharing libraries in a heterogeneous environment, you might store
3111 these files in a separate location.  Otherwise, you can just include
3112 them with the rest of the public library files.
3113
3114 EOM
3115 fn=d+~
3116 rp='Where do you want to put the public architecture-dependent libraries?'
3117 . ./getfile
3118 archlib="$ans"
3119 archlibexp="$ansexp"
3120
3121 if $afs; then
3122         $cat <<EOM
3123
3124 Since you are running AFS, I need to distinguish the directory in
3125 which architecture-dependent library files reside from the directory
3126 in which they are installed (and from which they are presumably copied
3127 to the former directory by occult means).
3128
3129 EOM
3130         case "$installarchlib" in
3131         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3132         *) dflt="$installarchlib";;
3133         esac
3134         fn=de~
3135         rp='Where will architecture-dependent library files be installed?'
3136         . ./getfile
3137         installarchlib="$ans"
3138 else
3139         installarchlib="$archlibexp"
3140 fi
3141 if $test X"$archlib" = X"$privlib"; then
3142         d_archlib="$undef"
3143 else
3144         d_archlib="$define"
3145 fi
3146
3147 : make some quick guesses about what we are up against
3148 echo " "
3149 $echo $n "Hmm...  $c"
3150 echo exit 1 >bsd
3151 echo exit 1 >usg
3152 echo exit 1 >v7
3153 echo exit 1 >osf1
3154 echo exit 1 >eunice
3155 echo exit 1 >xenix
3156 echo exit 1 >venix
3157 echo exit 1 >os2
3158 d_bsd="$undef"
3159 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3160 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3161 then
3162         echo "Looks kind of like an OSF/1 system, but we'll see..."
3163         echo exit 0 >osf1
3164 elif test `echo abc | tr a-z A-Z` = Abc ; then
3165         xxx=`./loc addbib blurfl $pth`
3166         if $test -f $xxx; then
3167         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3168                 echo exit 0 >bsd
3169                 echo exit 0 >usg
3170         else
3171                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3172                         echo "Looks kind of like an extended USG system, but we'll see..."
3173                 else
3174                         echo "Looks kind of like a USG system, but we'll see..."
3175                 fi
3176                 echo exit 0 >usg
3177         fi
3178 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3179         echo "Looks kind of like a BSD system, but we'll see..."
3180         d_bsd="$define"
3181         echo exit 0 >bsd
3182 else
3183         echo "Looks kind of like a Version 7 system, but we'll see..."
3184         echo exit 0 >v7
3185 fi
3186 case "$eunicefix" in
3187 *unixtovms*)
3188         $cat <<'EOI'
3189 There is, however, a strange, musty smell in the air that reminds me of
3190 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3191 EOI
3192         echo exit 0 >eunice
3193         d_eunice="$define"
3194 : it so happens the Eunice I know will not run shell scripts in Unix format
3195         ;;
3196 *)
3197         echo " "
3198         echo "Congratulations.  You aren't running Eunice."
3199         d_eunice="$undef"
3200         ;;
3201 esac
3202 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3203 case "$p_" in
3204 :) ;;
3205 *)
3206         $cat <<'EOI'
3207 I have the feeling something is not exactly right, however...don't tell me...
3208 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3209 EOI
3210         echo exit 0 >os2
3211         ;;
3212 esac
3213 if test -f /xenix; then
3214         echo "Actually, this looks more like a XENIX system..."
3215         echo exit 0 >xenix
3216         d_xenix="$define"
3217 else
3218         echo " "
3219         echo "It's not Xenix..."
3220         d_xenix="$undef"
3221 fi
3222 chmod +x xenix
3223 $eunicefix xenix
3224 if test -f /venix; then
3225         echo "Actually, this looks more like a VENIX system..."
3226         echo exit 0 >venix
3227 else
3228         echo " "
3229         if ./xenix; then
3230                 : null
3231         else
3232                 echo "Nor is it Venix..."
3233         fi
3234 fi
3235 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3236 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3237 $rm -f foo
3238
3239 : see if setuid scripts can be secure
3240 $cat <<EOM
3241
3242 Some kernels have a bug that prevents setuid #! scripts from being
3243 secure.  Some sites have disabled setuid #! scripts because of this.
3244
3245 First let's decide if your kernel supports secure setuid #! scripts.
3246 (If setuid #! scripts would be secure but have been disabled anyway,
3247 don't say that they are secure if asked.)
3248
3249 EOM
3250
3251 val="$undef"
3252 if $test -d /dev/fd; then
3253         echo "#!$ls" >reflect
3254         chmod +x,u+s reflect
3255         ./reflect >flect 2>&1
3256         if $contains "/dev/fd" flect >/dev/null; then
3257                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3258                 val="$define"
3259         else
3260                 $cat <<EOM
3261 If you are not sure if they are secure, I can check but I'll need a
3262 username and password different from the one you are using right now.
3263 If you don't have such a username or don't want me to test, simply
3264 enter 'none'.
3265
3266 EOM
3267                 rp='Other username to test security of setuid scripts with?'
3268                 dflt='none'
3269                 . ./myread
3270                 case "$ans" in
3271                 n|none)
3272                         case "$d_suidsafe" in
3273                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3274                                 dflt=n;;
3275                         "$undef")
3276                                 echo "Well, the $hint value is *not* secure." >&4
3277                                 dflt=n;;
3278                         *)      echo "Well, the $hint value *is* secure." >&4
3279                                 dflt=y;;
3280                         esac
3281                         ;;
3282                 *)
3283                         $rm -f reflect flect
3284                         echo "#!$ls" >reflect
3285                         chmod +x,u+s reflect
3286                         echo >flect
3287                         chmod a+w flect
3288                         echo '"su" will (probably) prompt you for '"$ans's password."
3289                         su $ans -c './reflect >flect'
3290                         if $contains "/dev/fd" flect >/dev/null; then
3291                                 echo "Okay, it looks like setuid scripts are secure." >&4
3292                                 dflt=y
3293                         else
3294                                 echo "I don't think setuid scripts are secure." >&4
3295                                 dflt=n
3296                         fi
3297                         ;;
3298                 esac
3299                 rp='Does your kernel have *secure* setuid scripts?'
3300                 . ./myread
3301                 case "$ans" in
3302                 [yY]*)  val="$define";;
3303                 *)      val="$undef";;
3304                 esac
3305         fi
3306 else
3307         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3308         echo "(That's for file descriptors, not floppy disks.)"
3309         val="$undef"
3310 fi
3311 set d_suidsafe
3312 eval $setvar
3313
3314 $rm -f reflect flect
3315
3316 : now see if they want to do setuid emulation
3317 echo " "
3318 val="$undef"
3319 case "$d_suidsafe" in
3320 "$define")
3321         val="$undef"
3322         echo "No need to emulate SUID scripts since they are secure here." >& 4
3323         ;;
3324 *)
3325         $cat <<EOM
3326 Some systems have disabled setuid scripts, especially systems where
3327 setuid scripts cannot be secure.  On systems where setuid scripts have
3328 been disabled, the setuid/setgid bits on scripts are currently
3329 useless.  It is possible for $package to detect those bits and emulate
3330 setuid/setgid in a secure fashion.  This emulation will only work if
3331 setuid scripts have been disabled in your kernel.
3332
3333 EOM
3334         case "$d_dosuid" in
3335         "$define") dflt=y ;;
3336         *) dflt=n ;;
3337         esac
3338         rp="Do you want to do setuid/setgid emulation?"
3339         . ./myread
3340         case "$ans" in
3341         [yY]*)  val="$define";;
3342         *)      val="$undef";;
3343         esac
3344         ;;
3345 esac
3346 set d_dosuid
3347 eval $setvar
3348
3349 : determine where manual pages are on this system
3350 echo " "
3351 case "$sysman" in
3352 '') 
3353         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3354         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3355         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3356         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3357         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3358         sysman=`./loc . /usr/man/man1 $syspath`
3359         ;;
3360 esac
3361 if $test -d "$sysman"; then
3362         echo "System manual is in $sysman." >&4
3363 else
3364         echo "Could not find manual pages in source form." >&4
3365 fi
3366
3367 : see what memory models we can support
3368 case "$models" in
3369 '')
3370         $cat >pdp11.c <<'EOP'
3371 main() {
3372 #ifdef pdp11
3373         exit(0);
3374 #else
3375         exit(1);
3376 #endif
3377 }
3378 EOP
3379         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3380         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3381                 dflt='unsplit split'
3382         else
3383                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3384                 case "$tans" in
3385                 X) dflt='none';;
3386                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3387                                 dflt='small'
3388                         else
3389                                 dflt=''
3390                         fi
3391                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3392                                 dflt="$dflt medium"
3393                         fi
3394                         if $test -d /lib/large || $test -d /usr/lib/large; then
3395                                 dflt="$dflt large"
3396                         fi
3397                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3398                                 dflt="$dflt huge"
3399                         fi
3400                 esac
3401         fi;;
3402 *) dflt="$models";;
3403 esac
3404 $cat <<EOM
3405  
3406 Some systems have different model sizes.  On most systems they are called
3407 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3408 split.  If your system doesn't support different memory models, say "none".
3409 If you wish to force everything to one memory model, say "none" here and
3410 put the appropriate flags later when it asks you for other cc and ld flags.
3411 Venix systems may wish to put "none" and let the compiler figure things out.
3412 (In the following question multiple model names should be space separated.)
3413
3414 The default for most systems is "none".
3415
3416 EOM
3417 rp="Which memory models are supported?"
3418 . ./myread
3419 models="$ans"
3420
3421 case "$models" in
3422 none)
3423         small=''
3424         medium=''
3425         large=''
3426         huge=''
3427         unsplit=''
3428         split=''
3429         ;;
3430 *split)
3431         case "$split" in
3432         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3433                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3434                         dflt='-i'
3435                 else
3436                         dflt='none'
3437                 fi;;
3438         *) dflt="$split";;
3439         esac
3440         rp="What flag indicates separate I and D space?"
3441         . ./myread
3442         tans="$ans"
3443         case "$tans" in
3444         none) tans='';;
3445         esac
3446         split="$tans"
3447         unsplit='';;
3448 *large*|*small*|*medium*|*huge*)
3449         case "$models" in
3450         *large*)
3451                 case "$large" in
3452                 '') dflt='-Ml';;
3453                 *) dflt="$large";;
3454                 esac
3455         rp="What flag indicates large model?"
3456         . ./myread
3457         tans="$ans"
3458         case "$tans" in
3459         none) tans='';
3460         esac
3461         large="$tans";;
3462         *) large='';;
3463         esac
3464         case "$models" in
3465         *huge*) case "$huge" in
3466                 '') dflt='-Mh';;
3467                 *) dflt="$huge";;
3468                 esac
3469                 rp="What flag indicates huge model?"
3470                 . ./myread
3471                 tans="$ans"
3472                 case "$tans" in
3473                 none) tans='';
3474                 esac
3475                 huge="$tans";;
3476         *) huge="$large";;
3477         esac
3478         case "$models" in
3479         *medium*) case "$medium" in
3480                 '') dflt='-Mm';;
3481                 *) dflt="$medium";;
3482                 esac
3483                 rp="What flag indicates medium model?"
3484                 . ./myread
3485                 tans="$ans"
3486                 case "$tans" in
3487                 none) tans='';
3488                 esac
3489                 medium="$tans";;
3490         *) medium="$large";;
3491         esac
3492         case "$models" in
3493         *small*) case "$small" in
3494                 '') dflt='none';;
3495                 *) dflt="$small";;
3496                 esac
3497                 rp="What flag indicates small model?"
3498                 . ./myread
3499                 tans="$ans"
3500                 case "$tans" in
3501                 none) tans='';
3502                 esac
3503                 small="$tans";;
3504         *) small='';;
3505         esac
3506         ;;
3507 *)
3508         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3509         ;;
3510 esac
3511 $rm -f pdp11.* pdp11
3512
3513 : see if we need a special compiler
3514 echo " "
3515 if ./usg; then
3516         case "$cc" in
3517         '') case "$Mcc" in
3518                 /*) dflt='Mcc';;
3519                 *) case "$large" in
3520                         -M*) dflt='cc';;
3521                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3522                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3523                                                 dflt='cc'
3524                                         else
3525                                                 dflt='cc -M'
3526                                         fi
3527                                 else
3528                                         dflt='cc'
3529                                 fi;;
3530                         esac;;
3531                 esac;;
3532         *)  dflt="$cc";;
3533         esac
3534         case "$dflt" in
3535         *M*)    $cat <<'EOM'
3536 On some older systems the default C compiler will not resolve multiple global
3537 references that happen to have the same name.  On some such systems the "Mcc"
3538 command may be used to force these to be resolved.  On other systems a "cc -M"
3539 command is required.  (Note that the -M flag on other systems indicates a
3540 memory model to use!) If you have the Gnu C compiler, you might wish to use
3541 that instead.
3542
3543 EOM
3544         ;;
3545         esac
3546         rp="Use which C compiler?"
3547         . ./myread
3548         cc="$ans"
3549 else
3550         case "$cc" in
3551         '') dflt=cc;;
3552         *) dflt="$cc";;
3553         esac
3554         rp="Use which C compiler?"
3555         . ./myread
3556         cc="$ans"
3557 fi
3558 : Look for a hint-file generated 'call-back-unit'.  Now that the
3559 : user has specified the compiler, we may need to set or change some
3560 : other defaults.
3561 if $test -f cc.cbu; then
3562     . ./cc.cbu
3563 fi
3564 echo " "
3565 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3566 $cat >gccvers.c <<EOM
3567 #include <stdio.h>
3568 int main() {
3569 #ifdef __GNUC__
3570 #ifdef __VERSION__
3571         printf("%s\n", __VERSION__);
3572 #else
3573         printf("%s\n", "1");
3574 #endif
3575 #endif
3576         exit(0);
3577 }
3578 EOM
3579 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3580         gccversion=`./gccvers`
3581         case "$gccversion" in
3582         '') echo "You are not using GNU cc." ;;
3583         *)  echo "You are using GNU cc $gccversion." ;;
3584         esac
3585 else
3586         echo " "
3587         echo "*** WHOA THERE!!! ***" >&4
3588         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3589         case "$knowitall" in
3590         '')
3591         echo "    You'd better start hunting for one and let me know about it." >&4
3592                 exit 1
3593                 ;;
3594         esac
3595 fi
3596 $rm -f gccvers*
3597 case "$gccversion" in
3598 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3599 esac
3600
3601 : What should the include directory be ?
3602 echo " "
3603 $echo $n "Hmm...  $c"
3604 dflt='/usr/include'
3605 incpath=''
3606 mips_type=''
3607 if $test -f /bin/mips && /bin/mips; then
3608         echo "Looks like a MIPS system..."
3609         $cat >usr.c <<'EOCP'
3610 #ifdef SYSTYPE_BSD43
3611 /bsd43
3612 #endif
3613 EOCP
3614         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3615                 dflt='/bsd43/usr/include'
3616                 incpath='/bsd43'
3617                 mips_type='BSD 4.3'
3618         else
3619                 mips_type='System V'
3620         fi
3621         $rm -f usr.c usr.out
3622         echo "and you're compiling with the $mips_type compiler and libraries."
3623         xxx_prompt=y
3624         echo "exit 0" >mips
3625 else
3626         echo "Doesn't look like a MIPS system."
3627         xxx_prompt=n
3628         echo "exit 1" >mips
3629 fi
3630 chmod +x mips
3631 $eunicefix mips
3632 case "$usrinc" in
3633 '') ;;
3634 *) dflt="$usrinc";;
3635 esac
3636 case "$xxx_prompt" in
3637 y)      fn=d/
3638         echo " "
3639         rp='Where are the include files you want to use?'
3640         . ./getfile
3641         usrinc="$ans"
3642         ;;
3643 *)      usrinc="$dflt"
3644         ;;
3645 esac
3646
3647 : see how we invoke the C preprocessor
3648 echo " "
3649 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3650 cat <<'EOT' >testcpp.c
3651 #define ABC abc
3652 #define XYZ xyz
3653 ABC.XYZ
3654 EOT
3655 cd ..
3656 if test ! -f cppstdin; then
3657         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3658 else
3659         echo "Keeping your $hint cppstdin wrapper."
3660 fi
3661 chmod 755 cppstdin
3662 wrapper=`pwd`/cppstdin
3663 ok='false'
3664 cd UU
3665
3666 if $test "X$cppstdin" != "X" && \
3667         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3668         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3669 then
3670         echo "You used to use $cppstdin $cppminus so we'll use that again."
3671         case "$cpprun" in
3672         '') echo "But let's see if we can live without a wrapper..." ;;
3673         *)
3674                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3675                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3676                 then
3677                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3678                         ok='true'
3679                 else
3680                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3681                 fi
3682                 ;;
3683         esac
3684 else
3685         case "$cppstdin" in
3686         '') ;;
3687         *)
3688                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3689                 ;;
3690         esac
3691 fi
3692
3693 if $ok; then
3694         : nothing
3695 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3696         $cc -E <testcpp.c >testcpp.out 2>&1; \
3697         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3698         echo "Yup, it does."
3699         x_cpp="$cc -E"
3700         x_minus='';
3701 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3702         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3703         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3704         echo "Yup, it does."
3705         x_cpp="$cc -E"
3706         x_minus='-';
3707 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3708         $cc -P <testcpp.c >testcpp.out 2>&1; \
3709         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3710         echo "Yipee, that works!"
3711         x_cpp="$cc -P"
3712         x_minus='';
3713 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3714         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3715         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3716         echo "At long last!"
3717         x_cpp="$cc -P"
3718         x_minus='-';
3719 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3720         $cpp <testcpp.c >testcpp.out 2>&1; \
3721         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3722         echo "It works!"
3723         x_cpp="$cpp"
3724         x_minus='';
3725 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3726         $cpp - <testcpp.c >testcpp.out 2>&1; \
3727         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3728         echo "Hooray, it works!  I was beginning to wonder."
3729         x_cpp="$cpp"
3730         x_minus='-';
3731 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3732         $wrapper <testcpp.c >testcpp.out 2>&1; \
3733         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3734         x_cpp="$wrapper"
3735         x_minus=''
3736         echo "Eureka!"
3737 else
3738         dflt=''
3739         rp="No dice.  I can't find a C preprocessor.  Name one:"
3740         . ./myread
3741         x_cpp="$ans"
3742         x_minus=''
3743         $x_cpp <testcpp.c >testcpp.out 2>&1
3744         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3745                 echo "OK, that will do." >&4
3746         else
3747 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3748                 exit 1
3749         fi
3750 fi
3751
3752 case "$ok" in
3753 false)
3754         cppstdin="$x_cpp"
3755         cppminus="$x_minus"
3756         cpprun="$x_cpp"
3757         cpplast="$x_minus"
3758         set X $x_cpp
3759         shift
3760         case "$1" in
3761         "$cpp")
3762                 echo "Perhaps can we force $cc -E using a wrapper..."
3763                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3764                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3765                 then
3766                         echo "Yup, we can."
3767                         cppstdin="$wrapper"
3768                         cppminus='';
3769                 else
3770                         echo "Nope, we'll have to live without it..."
3771                 fi
3772                 ;;
3773         esac
3774         case "$cpprun" in
3775         "$wrapper")
3776                 cpprun=''
3777                 cpplast=''
3778                 ;;
3779         esac
3780         ;;
3781 esac
3782
3783 case "$cppstdin" in
3784 "$wrapper") ;;
3785 *) $rm -f $wrapper;;
3786 esac
3787 $rm -f testcpp.c testcpp.out
3788
3789 : Set private lib path
3790 case "$plibpth" in
3791 '') if ./mips; then
3792                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3793         fi;;
3794 esac
3795 case "$libpth" in
3796 ' ') dlist='';;
3797 '') dlist="$loclibpth $plibpth $glibpth";;
3798 *) dlist="$libpth";;
3799 esac
3800
3801 : Now check and see which directories actually exist, avoiding duplicates
3802 libpth=''
3803 for xxx in $dlist
3804 do
3805     if $test -d $xxx; then
3806                 case " $libpth " in
3807                 *" $xxx "*) ;;
3808                 *) libpth="$libpth $xxx";;
3809                 esac
3810     fi
3811 done
3812 $cat <<'EOM'
3813
3814 Some systems have incompatible or broken versions of libraries.  Among
3815 the directories listed in the question below, please remove any you
3816 know not to be holding relevant libraries, and add any that are needed.
3817 Say "none" for none.
3818
3819 EOM
3820 case "$libpth" in
3821 '') dflt='none';;
3822 *)
3823         set X $libpth
3824         shift
3825         dflt=${1+"$@"}
3826         ;;
3827 esac
3828 rp="Directories to use for library searches?"
3829 . ./myread
3830 case "$ans" in
3831 none) libpth=' ';;
3832 *) libpth="$ans";;
3833 esac
3834
3835 : compute shared library extension
3836 case "$so" in
3837 '')
3838         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3839                 dflt='sl'
3840         else
3841                 dflt='so'
3842         fi
3843         ;;
3844 *) dflt="$so";;
3845 esac
3846 $cat <<EOM
3847
3848 On some systems, shared libraries may be available.  Answer 'none' if
3849 you want to suppress searching of shared libraries for the remaining
3850 of this configuration.
3851
3852 EOM
3853 rp='What is the file extension used for shared libraries?'
3854 . ./myread
3855 so="$ans"
3856
3857 : Define several unixisms.
3858 : Hints files or command line option can be used to override them.
3859 : The convoluted testing is in case hints files set either the old
3860 : or the new name.
3861 case "$_exe" in
3862 '')     case "$exe_ext" in
3863     '') ;;
3864         *)      _exe="$exe_ext" ;;
3865         esac
3866         ;;
3867 esac
3868 case "$_a" in
3869 '')     case "$lib_ext" in
3870     '') _a='.a';;
3871         *)      _a="$lib_ext" ;;
3872         esac
3873         ;;
3874 esac
3875 case "$_o" in
3876 '') case "$obj_ext" in
3877         '')     _o='.o';;
3878         *)      _o="$obj_ext";;
3879         esac
3880         ;;
3881 esac
3882 case "$p_" in
3883 '') case "$path_sep" in
3884         '')     p_=':';;
3885         *)      p_="$path_sep";;
3886         esac
3887         ;;
3888 esac
3889 exe_ext=$_exe
3890 lib_ext=$_a
3891 obj_ext=$_o
3892 path_sep=$p_
3893
3894 : Which makefile gets called first.  This is used by make depend.
3895 case "$firstmakefile" in
3896 '') firstmakefile='makefile';;
3897 esac
3898
3899 : Looking for optional libraries
3900 echo " "
3901 echo "Checking for optional libraries..." >&4
3902 case "$libs" in
3903 ' '|'') dflt='';;
3904 *) dflt="$libs";;
3905 esac
3906 case "$libswanted" in
3907 '') libswanted='c_s';;
3908 esac
3909 for thislib in $libswanted; do
3910         
3911         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3912                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3913                 echo "Found -l$thislib (shared)."
3914                 case " $dflt " in
3915                 *"-l$thislib "*);;
3916                 *) dflt="$dflt -l$thislib";;
3917                 esac
3918         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3919                 echo "Found -l$thislib (shared)."
3920                 case " $dflt " in
3921                 *"-l$thislib "*);;
3922                 *) dflt="$dflt -l$thislib";;
3923                 esac
3924         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3925                 echo "Found -l$thislib."
3926                 case " $dflt " in
3927                 *"-l$thislib "*);;
3928                 *) dflt="$dflt -l$thislib";;
3929                 esac
3930         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3931                 echo "Found -l$thislib."
3932                 case " $dflt " in
3933                 *"-l$thislib "*);;
3934                 *) dflt="$dflt -l$thislib";;
3935                 esac
3936         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3937                 echo "Found -l${thislib}_s."
3938                 case " $dflt " in
3939                 *"-l$thislib "*);;
3940                 *) dflt="$dflt -l${thislib}_s";;
3941                 esac
3942         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3943                 echo "Found -l$thislib."
3944                 case " $dflt " in
3945                 *"-l$thislib "*);;
3946                 *) dflt="$dflt -l$thislib";;
3947                 esac
3948         else
3949                 echo "No -l$thislib."
3950         fi
3951 done
3952 set X $dflt
3953 shift
3954 dflt="$*"
3955 case "$libs" in
3956 '') dflt="$dflt";;
3957 *) dflt="$libs";;
3958 esac
3959 case "$dflt" in
3960 ' '|'') dflt='none';;
3961 esac
3962
3963 $cat <<EOM
3964  
3965 Some versions of Unix support shared libraries, which make executables smaller
3966 but make load time slightly longer.
3967
3968 On some systems, mostly System V Release 3's, the shared library is included
3969 by putting the option "-lc_s" as the last thing on the cc command line when
3970 linking.  Other systems use shared libraries by default.  There may be other
3971 libraries needed to compile $package on your machine as well.  If your system
3972 needs the "-lc_s" option, include it here.  Include any other special libraries
3973 here as well.  Say "none" for none.
3974 EOM
3975
3976 echo " "
3977 rp="Any additional libraries?"
3978 . ./myread
3979 case "$ans" in
3980 none) libs=' ';;
3981 *) libs="$ans";;
3982 esac
3983
3984 : determine optimize, if desired, or use for debug flag also
3985 case "$optimize" in
3986 ' '|$undef) dflt='none';;
3987 '') dflt='-O';;
3988 *) dflt="$optimize";;
3989 esac
3990 $cat <<EOH
3991
3992 Some C compilers have problems with their optimizers.  By default, $package
3993 compiles with the -O flag to use the optimizer.  Alternately, you might want
3994 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3995 systems).  Either flag can be specified here.  To use neither flag, specify
3996 the word "none".
3997
3998 EOH
3999 rp="What optimizer/debugger flag should be used?"
4000 . ./myread
4001 optimize="$ans"
4002 case "$optimize" in
4003 'none') optimize=" ";;
4004 esac
4005
4006 dflt=''
4007 : We will not override a previous value, but we might want to
4008 : augment a hint file
4009 case "$hint" in
4010 none|recommended)
4011         case "$gccversion" in
4012         1*) dflt='-fpcc-struct-return' ;;
4013         esac
4014         case "$optimize" in
4015         *-g*) dflt="$dflt -DDEBUGGING";;
4016         esac
4017         case "$gccversion" in
4018         2*) if test -d /etc/conf/kconfig.d &&
4019                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4020                 then
4021                         dflt="$dflt -posix"
4022                 fi
4023                 ;;
4024         esac
4025         ;;
4026 esac
4027
4028 case "$mips_type" in
4029 *BSD*|'') inclwanted="$locincpth $usrinc";;
4030 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4031 esac
4032 for thisincl in $inclwanted; do
4033         if $test -d $thisincl; then
4034                 if $test x$thisincl != x$usrinc; then
4035                         case "$dflt" in
4036                         *$thisincl*);;
4037                         *) dflt="$dflt -I$thisincl";;
4038                         esac
4039                 fi
4040         fi
4041 done
4042
4043 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4044         xxx=true;
4045 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4046         xxx=true;
4047 else
4048         xxx=false;
4049 fi;
4050 if $xxx; then
4051         case "$dflt" in
4052         *$2*);;
4053         *) dflt="$dflt -D$2";;
4054         esac;
4055 fi'
4056
4057 if ./osf1; then
4058         set signal.h __LANGUAGE_C__; eval $inctest
4059 else
4060         set signal.h LANGUAGE_C; eval $inctest
4061 fi
4062
4063 case "$hint" in
4064 none|recommended) dflt="$ccflags $dflt" ;;
4065 *) dflt="$ccflags";;
4066 esac
4067
4068 case "$dflt" in
4069 ''|' ') dflt=none;;
4070 esac
4071 $cat <<EOH
4072
4073 Your C compiler may want other flags.  For this question you should include
4074 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4075 but you should NOT include libraries or ld flags like -lwhatever.  If you
4076 want $package to honor its debug switch, you should include -DDEBUGGING here.
4077 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4078
4079 To use no flags, specify the word "none".
4080
4081 EOH
4082 set X $dflt
4083 shift
4084 dflt=${1+"$@"}
4085 rp="Any additional cc flags?"
4086 . ./myread
4087 case "$ans" in
4088 none) ccflags='';;
4089 *) ccflags="$ans";;
4090 esac
4091
4092 : the following weeds options from ccflags that are of no interest to cpp
4093 cppflags="$ccflags"
4094 case "$gccversion" in
4095 1*) cppflags="$cppflags -D__GNUC__"
4096 esac
4097 case "$mips_type" in
4098 '');;
4099 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4100 esac
4101 case "$cppflags" in
4102 '');;
4103 *)
4104         echo " "
4105         echo "Let me guess what the preprocessor flags are..." >&4
4106         set X $cppflags
4107         shift
4108         cppflags=''
4109         $cat >cpp.c <<'EOM'
4110 #define BLURFL foo
4111
4112 BLURFL xx LFRULB
4113 EOM
4114         previous=''
4115         for flag in $*
4116         do
4117                 case "$flag" in
4118                 -*) ftry="$flag";;
4119                 *) ftry="$previous $flag";;
4120                 esac
4121                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4122                         >cpp1.out 2>/dev/null && \
4123                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4124                         >cpp2.out 2>/dev/null && \
4125                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4126                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4127                 then
4128                         cppflags="$cppflags $ftry"
4129                         previous=''
4130                 else
4131                         previous="$flag"
4132                 fi
4133         done
4134         set X $cppflags
4135         shift
4136         cppflags=${1+"$@"}
4137         case "$cppflags" in
4138         *-*)  echo "They appear to be: $cppflags";;
4139         esac
4140         $rm -f cpp.c cpp?.out
4141         ;;
4142 esac
4143
4144 : flags used in final linking phase
4145 case "$ldflags" in
4146 '') if ./venix; then
4147                 dflt='-i -z'
4148         else
4149                 dflt=''
4150         fi
4151         case "$ccflags" in
4152         *-posix*) dflt="$dflt -posix" ;;
4153         esac
4154         ;;
4155 *) dflt="$ldflags";;
4156 esac
4157
4158 : Try to guess additional flags to pick up local libraries.
4159 for thislibdir in $libpth; do
4160         case " $loclibpth " in
4161         *" $thislibdir "*)
4162                 case "$dflt " in 
4163                 *"-L$thislibdir "*) ;;
4164                 *)  dflt="$dflt -L$thislibdir" ;;
4165                 esac
4166                 ;;
4167         esac
4168 done
4169
4170 case "$dflt" in
4171 '') dflt='none' ;;
4172 esac
4173
4174 $cat <<EOH
4175
4176 Your C linker may need flags.  For this question you should
4177 include -L/whatever and any other flags used by the C linker, but you
4178 should NOT include libraries like -lwhatever.
4179
4180 Make sure you include the appropriate -L/path flags if your C linker
4181 does not normally search all of the directories you specified above,
4182 namely
4183         $libpth
4184 To use no flags, specify the word "none".
4185
4186 EOH
4187
4188 rp="Any additional ld flags (NOT including libraries)?"
4189 . ./myread
4190 case "$ans" in
4191 none) ldflags='';;
4192 *) ldflags="$ans";;
4193 esac
4194 rmlist="$rmlist pdp11"
4195
4196 : coherency check
4197 echo " "
4198 echo "Checking your choice of C compiler and flags for coherency..." >&4
4199 $cat > try.c <<'EOF'
4200 #include <stdio.h>
4201 main() { printf("Ok\n"); exit(0); }
4202 EOF
4203 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4204 shift
4205 $cat >try.msg <<'EOM'
4206 I've tried to compile and run the following simple program:
4207
4208 EOM
4209 $cat try.c >> try.msg
4210
4211 $cat >> try.msg <<EOM
4212
4213 I used the command:
4214
4215         $*
4216         ./try
4217
4218 and I got the following output:
4219
4220 EOM
4221 dflt=y
4222 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4223         if sh -c './try' >>try.msg 2>&1; then
4224                 xxx=`./try`
4225                 case "$xxx" in
4226                 "Ok") dflt=n ;;
4227                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4228                         case " $libs " in
4229                         *" -lsfio "*)
4230                                 cat >> try.msg <<'EOQS'
4231 If $libs contains -lsfio, and sfio is mis-configured, then it
4232 sometimes (apparently) runs and exits with a 0 status, but with no
4233 output!  It may have to do with sfio's use of _exit vs. exit.
4234
4235 EOQS
4236                                 rp="You have a big problem.  Shall I abort Configure"
4237                                 dflt=y
4238                                 ;;
4239                         esac
4240                         ;;
4241                 esac
4242         else
4243                 echo "The program compiled OK, but exited with status $?." >>try.msg
4244                 rp="You have a problem.  Shall I abort Configure"
4245                 dflt=y
4246         fi
4247 else
4248         echo "I can't compile the test program." >>try.msg
4249         rp="You have a BIG problem.  Shall I abort Configure"
4250         dflt=y
4251 fi
4252 case "$dflt" in
4253 y)
4254         $cat try.msg >&4
4255         case "$knowitall" in
4256         '')
4257                 echo "(The supplied flags or libraries might be incorrect.)"
4258                 ;;
4259         *) dflt=n;;
4260         esac
4261         echo " "
4262         . ./myread
4263         case "$ans" in
4264         n*|N*) ;;
4265         *)      echo "Ok.  Stopping Configure." >&4
4266                 exit 1
4267                 ;;
4268         esac
4269         ;;
4270 n) echo "OK, that should do.";;
4271 esac
4272 $rm -f try try.* core
4273
4274 : determine filename position in cpp output
4275 echo " "
4276 echo "Computing filename position in cpp output for #include directives..." >&4
4277 echo '#include <stdio.h>' > foo.c
4278 $cat >fieldn <<EOF
4279 $startsh
4280 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4281 $grep '^[       ]*#.*stdio\.h' | \
4282 while read cline; do
4283         pos=1
4284         set \$cline
4285         while $test \$# -gt 0; do
4286                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4287                         echo "\$pos"
4288                         exit 0
4289                 fi
4290                 shift
4291                 pos=\`expr \$pos + 1\`
4292         done
4293 done
4294 EOF
4295 chmod +x fieldn
4296 fieldn=`./fieldn`
4297 $rm -f foo.c fieldn
4298 case $fieldn in
4299 '') pos='???';;
4300 1) pos=first;;
4301 2) pos=second;;
4302 3) pos=third;;
4303 *) pos="${fieldn}th";;
4304 esac
4305 echo "Your cpp writes the filename in the $pos field of the line."
4306
4307 : locate header file
4308 $cat >findhdr <<EOF
4309 $startsh
4310 wanted=\$1
4311 name=''
4312 if test -f $usrinc/\$wanted; then
4313         echo "$usrinc/\$wanted"
4314         exit 0
4315 fi
4316 awkprg='{ print \$$fieldn }'
4317 echo "#include <\$wanted>" > foo\$\$.c
4318 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4319 $grep "^[       ]*#.*\$wanted" | \
4320 while read cline; do
4321         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4322         case "\$name" in
4323         */\$wanted) echo "\$name"; exit 0;;
4324         *) name='';;
4325         esac;
4326 done;
4327 $rm -f foo\$\$.c;
4328 case "\$name" in
4329 '') exit 1;;
4330 esac
4331 EOF
4332 chmod +x findhdr
4333
4334 : define an alternate in-header-list? function
4335 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4336 cont=true; xxf="echo \"<\$1> found.\" >&4";
4337 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4338 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4339 esac;
4340 case $# in 4) instead=instead;; *) instead="at last";; esac;
4341 while $test "$cont"; do
4342         xxx=`./findhdr $1`
4343         var=$2; eval "was=\$$2";
4344         if $test "$xxx" && $test -r "$xxx";
4345         then eval $xxf;
4346         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4347                 cont="";
4348         else eval $xxnf;
4349         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4350         set $yyy; shift; shift; yyy=$@;
4351         case $# in 0) cont="";;
4352         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4353                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4354         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4355                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4356         esac;
4357 done;
4358 while $test "$yyy";
4359 do set $yyy; var=$2; eval "was=\$$2";
4360         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4361         set $yyy; shift; shift; yyy=$@;
4362 done'
4363
4364 : see if this is a malloc.h system
4365 set malloc.h i_malloc
4366 eval $inhdr
4367
4368 : see if stdlib is available
4369 set stdlib.h i_stdlib
4370 eval $inhdr
4371
4372 : determine which malloc to compile in
4373 echo " "
4374 case "$usemymalloc" in
4375 ''|[yY]*|true|$define)  dflt='y' ;;
4376 *)      dflt='n' ;;
4377 esac
4378 rp="Do you wish to attempt to use the malloc that comes with $package?"
4379 . ./myread
4380 usemymalloc="$ans"
4381 case "$ans" in
4382 y*|true)
4383         usemymalloc='y'
4384         mallocsrc='malloc.c'
4385         mallocobj="malloc$_o"
4386         d_mymalloc="$define"
4387         case "$libs" in
4388         *-lmalloc*)
4389                 : Remove malloc from list of libraries to use
4390                 echo "Removing unneeded -lmalloc from library list" >&4
4391                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4392                 shift
4393                 libs="$*"
4394                 echo "libs = $libs" >&4
4395                 ;;
4396         esac
4397         ;;
4398 *)
4399         usemymalloc='n'
4400         mallocsrc=''
4401         mallocobj=''
4402         d_mymalloc="$undef"
4403         ;;
4404 esac
4405
4406 : compute the return types of malloc and free
4407 echo " "
4408 $cat >malloc.c <<END
4409 #$i_malloc I_MALLOC
4410 #$i_stdlib I_STDLIB
4411 #include <stdio.h>
4412 #include <sys/types.h>
4413 #ifdef I_MALLOC
4414 #include <malloc.h>
4415 #endif
4416 #ifdef I_STDLIB
4417 #include <stdlib.h>
4418 #endif
4419 #ifdef TRY_MALLOC
4420 void *malloc();
4421 #endif
4422 #ifdef TRY_FREE
4423 void free();
4424 #endif
4425 END
4426 case "$malloctype" in
4427 '')
4428         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4429                 malloctype='void *'
4430         else
4431                 malloctype='char *'
4432         fi
4433         ;;
4434 esac
4435 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4436
4437 case "$freetype" in
4438 '')
4439         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4440                 freetype='void'
4441         else
4442                 freetype='int'
4443         fi
4444         ;;
4445 esac
4446 echo "Your system uses $freetype free(), it would seem." >&4
4447 $rm -f malloc.[co]
4448 : Cruising for prototypes
4449 echo " "
4450 echo "Checking out function prototypes..." >&4
4451 $cat >prototype.c <<'EOCP'
4452 int main(int argc, char *argv[]) {
4453         exit(0);}
4454 EOCP
4455 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4456         echo "Your C compiler appears to support function prototypes."
4457         val="$define"
4458 else
4459         echo "Your C compiler doesn't seem to understand function prototypes."
4460         val="$undef"
4461 fi
4462 set prototype
4463 eval $setvar
4464 $rm -f prototype*
4465
4466 case "$prototype" in
4467 "$define") ;;
4468 *)      ansi2knr='ansi2knr'
4469         echo " "
4470         cat <<EOM >&4
4471
4472 $me:  FATAL ERROR:
4473 This version of $package can only be compiled by a compiler that 
4474 understands function prototypes.  Unfortunately, your C compiler 
4475         $cc $ccflags
4476 doesn't seem to understand them.  Sorry about that.
4477
4478 If GNU cc is available for your system, perhaps you could try that instead.  
4479
4480 Eventually, we hope to support building Perl with pre-ANSI compilers.
4481 If you would like to help in that effort, please contact <perlbug@perl.org>.
4482
4483 Aborting Configure now.
4484 EOM
4485         exit 2
4486         ;;
4487 esac
4488
4489 : determine where public executables go
4490 echo " "
4491 set dflt bin bin
4492 eval $prefixit
4493 fn=d~
4494 rp='Pathname where the public executables will reside?'
4495 . ./getfile
4496 if $test "X$ansexp" != "X$binexp"; then
4497         installbin=''
4498 fi
4499 bin="$ans"
4500 binexp="$ansexp"
4501 if $afs; then
4502         $cat <<EOM
4503
4504 Since you are running AFS, I need to distinguish the directory in which
4505 executables reside from the directory in which they are installed (and from
4506 which they are presumably copied to the former directory by occult means).
4507
4508 EOM
4509         case "$installbin" in
4510         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4511         *) dflt="$installbin";;
4512         esac
4513         fn=de~
4514         rp='Where will public executables be installed?'
4515         . ./getfile
4516         installbin="$ans"
4517 else
4518         installbin="$binexp"
4519 fi
4520
4521 : determine whether to install perl also as /usr/bin/perl
4522
4523 echo " "
4524 case "$installusrbinperl" in
4525 '') if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4526         $cat <<EOM
4527 Many scripts expect to perl to be installed as /usr/bin/perl.
4528 I can install the perl you are about to compile also as /usr/bin/perl
4529 (in addition to $installbin/perl).
4530 EOM
4531         dflt='y'
4532         rp="Do you want to install perl as /usr/bin/perl?"
4533         . ./myread
4534         case "$ans" in
4535         [yY]*)  val="$define";;
4536         *)      val="$undef";;
4537         esac
4538     fi
4539     ;;
4540 esac
4541 case "$installusrbinperl" in
4542 "$undef"|[nN]*) val="$undef";;
4543 *)              val="$define";;
4544 esac
4545 set installusrbinperl
4546 eval $setvar
4547
4548 : define a shorthand compile call
4549 compile='
4550 mc_file=$1;
4551 shift;
4552 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4553 : define a shorthand compile call for compilations that should be ok.
4554 compile_ok='
4555 mc_file=$1;
4556 shift;
4557 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4558
4559 echo " "
4560 echo "Checking for GNU C Library..." >&4
4561 cat >gnulibc.c <<EOM
4562 #include <stdio.h>
4563 int main()
4564 {
4565 #ifdef __GLIBC__
4566     exit(0);
4567 #else
4568     exit(1);
4569 #endif
4570 }
4571 EOM
4572 set gnulibc
4573 if eval $compile_ok && ./gnulibc; then
4574         val="$define"
4575         echo "You are using the GNU C Library"
4576 else
4577         val="$undef"
4578         echo "You are not using the GNU C Library"
4579 fi
4580 $rm -f gnulibc*
4581 set d_gnulibc
4582 eval $setvar
4583
4584 : see if nm is to be used to determine whether a symbol is defined or not
4585 case "$usenm" in
4586 '')
4587         dflt=''
4588         case "$d_gnulibc" in
4589         "$define")
4590                 echo " "
4591                 echo "nm probably won't work on the GNU C Library." >&4
4592                 dflt=n
4593                 ;;
4594         esac
4595         case "$dflt" in
4596         '') 
4597                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4598                         echo " "
4599                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4600                         echo "'nm' won't be sufficient on this sytem." >&4
4601                         dflt=n
4602                 fi
4603                 ;;
4604         esac
4605         case "$dflt" in
4606         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4607                 if $test $dflt -gt 20; then
4608                         dflt=y
4609                 else
4610                         dflt=n
4611                 fi
4612                 ;;
4613         esac
4614         ;;
4615 *)
4616         case "$usenm" in
4617         true|$define) dflt=y;;
4618         *) dflt=n;;
4619         esac
4620         ;;
4621 esac
4622 $cat <<EOM
4623
4624 I can use $nm to extract the symbols from your C libraries. This
4625 is a time consuming task which may generate huge output on the disk (up
4626 to 3 megabytes) but that should make the symbols extraction faster. The
4627 alternative is to skip the 'nm' extraction part and to compile a small
4628 test program instead to determine whether each symbol is present. If
4629 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4630 this may be the best solution.
4631
4632 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4633
4634 EOM
4635 rp="Shall I use $nm to extract C symbols from the libraries?"
4636 . ./myread
4637 case "$ans" in
4638 [Nn]*) usenm=false;;
4639 *) usenm=true;;
4640 esac
4641
4642 runnm=$usenm
4643 case "$reuseval" in
4644 true) runnm=false;;
4645 esac
4646
4647 : nm options which may be necessary
4648 case "$nm_opt" in
4649 '') if $test -f /mach_boot; then
4650                 nm_opt=''       # Mach
4651         elif $test -d /usr/ccs/lib; then
4652                 nm_opt='-p'     # Solaris (and SunOS?)
4653         elif $test -f /dgux; then
4654                 nm_opt='-p'     # DG-UX
4655         elif $test -f /lib64/rld; then
4656                 nm_opt='-p'     # 64-bit Irix
4657         else
4658                 nm_opt=''
4659         fi;;
4660 esac
4661
4662 : nm options which may be necessary for shared libraries but illegal
4663 : for archive libraries.  Thank you, Linux.
4664 case "$nm_so_opt" in
4665 '')     case "$myuname" in
4666         *linux*)
4667                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4668                         nm_so_opt='--dynamic'
4669                 fi
4670                 ;;
4671         esac
4672         ;;
4673 esac
4674
4675 case "$runnm" in
4676 true)
4677 : get list of predefined functions in a handy place
4678 echo " "
4679 case "$libc" in
4680 '') libc=unknown
4681         case "$libs" in
4682         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4683         esac
4684         ;;
4685 esac
4686 libnames='';
4687 case "$libs" in
4688 '') ;;
4689 *)  for thislib in $libs; do
4690         case "$thislib" in
4691         -lc|-lc_s)
4692                 : Handle C library specially below.
4693                 ;;
4694         -l*)
4695                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4696                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4697                         :
4698                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4699                         :
4700                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4701                         :
4702                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4703                         :
4704                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4705                         :
4706                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4707                         :
4708                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4709                         :
4710                 else
4711                         try=''
4712                 fi
4713                 libnames="$libnames $try"
4714                 ;;
4715         *) libnames="$libnames $thislib" ;;
4716         esac
4717         done
4718         ;;
4719 esac
4720 xxx=normal
4721 case "$libc" in
4722 unknown)
4723         set /lib/libc.$so
4724         for xxx in $libpth; do
4725                 $test -r $1 || set $xxx/libc.$so
4726                 : The messy sed command sorts on library version numbers.
4727                 $test -r $1 || \
4728                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4729                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4730                                 h
4731                                 s/[0-9][0-9]*/0000&/g
4732                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4733                                 G
4734                                 s/\n/ /' | \
4735                          sort | $sed -e 's/^.* //'`
4736                 eval set \$$#
4737         done
4738         $test -r $1 || set /usr/ccs/lib/libc.$so
4739         $test -r $1 || set /lib/libsys_s$_a
4740         ;;
4741 *)
4742         set blurfl
4743         ;;
4744 esac
4745 if $test -r "$1"; then
4746         echo "Your (shared) C library seems to be in $1."
4747         libc="$1"
4748 elif $test -r /lib/libc && $test -r /lib/clib; then
4749         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4750         xxx=apollo
4751         libc='/lib/clib /lib/libc'
4752         if $test -r /lib/syslib; then
4753                 echo "(Your math library is in /lib/syslib.)"
4754                 libc="$libc /lib/syslib"
4755         fi
4756 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4757         echo "Your C library seems to be in $libc, as you said before."
4758 elif $test -r $incpath/usr/lib/libc$_a; then
4759         libc=$incpath/usr/lib/libc$_a;
4760         echo "Your C library seems to be in $libc.  That's fine."
4761 elif $test -r /lib/libc$_a; then
4762         libc=/lib/libc$_a;
4763         echo "Your C library seems to be in $libc.  You're normal."
4764 else
4765         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4766                 :
4767         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4768                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4769         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4770                 :
4771         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4772                 :
4773         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4774                 :
4775         else
4776                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4777         fi
4778         if $test -r "$tans"; then
4779                 echo "Your C library seems to be in $tans, of all places."
4780                 libc=$tans
4781         else
4782                 libc='blurfl'
4783         fi
4784 fi
4785 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4786         dflt="$libc"
4787         cat <<EOM
4788
4789 If the guess above is wrong (which it might be if you're using a strange
4790 compiler, or your machine supports multiple models), you can override it here.
4791
4792 EOM
4793 else
4794         dflt=''
4795         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4796         cat >&4 <<EOM
4797 I can't seem to find your C library.  I've looked in the following places:
4798
4799 EOM
4800         $sed 's/^/      /' libpath
4801         cat <<EOM
4802
4803 None of these seems to contain your C library. I need to get its name...
4804
4805 EOM
4806 fi
4807 fn=f
4808 rp='Where is your C library?'
4809 . ./getfile
4810 libc="$ans"
4811
4812 echo " "
4813 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4814 set X `cat libnames`
4815 shift
4816 xxx=files
4817 case $# in 1) xxx=file; esac
4818 echo "Extracting names from the following $xxx for later perusal:" >&4
4819 echo " "
4820 $sed 's/^/      /' libnames >&4
4821 echo " "
4822 $echo $n "This may take a while...$c" >&4
4823
4824 for file in $*; do
4825         case $file in
4826         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4827         *) $nm $nm_opt $file 2>/dev/null;;
4828         esac
4829 done >libc.tmp
4830
4831 $echo $n ".$c"
4832 $grep fprintf libc.tmp > libc.ptf
4833 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4834 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4835 xxx='[ADTSIW]'
4836 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4837         eval $xscan;\
4838         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4839                 eval $xrun
4840 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4841         eval $xscan;\
4842         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4843                 eval $xrun
4844 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4845         eval $xscan;\
4846         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4847                 eval $xrun
4848 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4849         eval $xscan;\
4850         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4851                 eval $xrun
4852 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4853         eval $xscan;\
4854         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4855                 eval $xrun
4856 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4857         eval $xscan;\
4858         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4859                 eval $xrun
4860 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4861                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4862         eval $xscan;\
4863         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4864                 eval $xrun
4865 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4866         eval $xscan;\
4867         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4868                 eval $xrun
4869 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4870         eval $xscan;\
4871         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4872                 eval $xrun
4873 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4874         eval $xscan;\
4875         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4876                 eval $xrun
4877 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4878         eval $xscan;\
4879         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4880                 eval $xrun
4881 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4882         eval $xscan;\
4883         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4884                 eval $xrun
4885 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4886         eval $xscan;\
4887         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4888                 eval $xrun
4889 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4890         eval $xscan;\
4891         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4892                 eval $xrun
4893 else
4894         $nm -p $* 2>/dev/null >libc.tmp
4895         $grep fprintf libc.tmp > libc.ptf
4896         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4897                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4898         then
4899                 nm_opt='-p'
4900                 eval $xrun
4901         else
4902                 echo " "
4903                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4904                 com=''
4905                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4906                         for thisname in $libnames $libc; do
4907                                 $ar t $thisname >>libc.tmp
4908                         done
4909                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4910                         echo "Ok." >&4
4911                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4912                         # Repeat libc to extract forwarders to DLL entries too
4913                         for thisname in $libnames $libc; do
4914                                 $ar tv $thisname >>libc.tmp
4915                                 # Revision 50 of EMX has bug in $ar.
4916                                 # it will not extract forwarders to DLL entries
4917                                 # Use emximp which will extract exactly them.
4918                                 emximp -o tmp.imp $thisname \
4919                                     2>/dev/null && \
4920                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4921                                     < tmp.imp >>libc.tmp
4922                                 $rm tmp.imp
4923                         done
4924                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4925                         echo "Ok." >&4
4926                 else
4927                         echo "$ar didn't seem to work right." >&4
4928                         echo "Maybe this is a Cray...trying bld instead..." >&4
4929                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4930                         then
4931                                 for thisname in $libnames; do
4932                                         bld t $libnames | \
4933                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4934                                         $ar t $thisname >>libc.tmp
4935                                 done
4936                                 echo "Ok." >&4
4937                         else
4938                                 echo "That didn't work either.  Giving up." >&4
4939                                 exit 1
4940                         fi
4941                 fi
4942         fi
4943 fi
4944 nm_extract="$com"
4945 if $test -f /lib/syscalls.exp; then
4946         echo " "
4947         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4948         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4949 fi
4950 ;;
4951 esac
4952 $rm -f libnames libpath
4953
4954 : see if dld is available
4955 set dld.h i_dld
4956 eval $inhdr
4957
4958 : is a C symbol defined?
4959 csym='tlook=$1;
4960 case "$3" in
4961 -v) tf=libc.tmp; tc=""; tdc="";;
4962 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4963 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4964 esac;
4965 tx=yes;
4966 case "$reuseval-$4" in
4967 true-) ;;
4968 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4969 esac;
4970 case "$tx" in
4971 yes)
4972         case "$runnm" in
4973         true)
4974                 if $contains $tlook $tf >/dev/null 2>&1;
4975                 then tval=true;
4976                 else tval=false;
4977                 fi;;
4978         *)
4979                 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4980                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4981                 then tval=true;
4982                 else tval=false;
4983                 fi;
4984                 $rm -f t t.c;;
4985         esac;;
4986 *)
4987         case "$tval" in
4988         $define) tval=true;;
4989         *) tval=false;;
4990         esac;;
4991 esac;
4992 eval "$2=$tval"'
4993
4994 : define an is-in-libc? function
4995 inlibc='echo " "; td=$define; tu=$undef;
4996 sym=$1; var=$2; eval "was=\$$2";
4997 tx=yes;
4998 case "$reuseval$was" in
4999 true) ;;
5000 true*) tx=no;;
5001 esac;
5002 case "$tx" in
5003 yes)
5004         set $sym tres -f;
5005         eval $csym;
5006         case "$tres" in
5007         true)
5008                 echo "$sym() found." >&4;
5009                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5010         *)
5011                 echo "$sym() NOT found." >&4;
5012                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5013         esac;;
5014 *)
5015         case "$was" in
5016         $define) echo "$sym() found." >&4;;
5017         *) echo "$sym() NOT found." >&4;;
5018         esac;;
5019 esac'
5020
5021 : see if dlopen exists
5022 xxx_runnm="$runnm"
5023 runnm=false
5024 set dlopen d_dlopen
5025 eval $inlibc
5026 runnm="$xxx_runnm"
5027
5028 : determine which dynamic loading, if any, to compile in
5029 echo " "
5030 dldir="ext/DynaLoader"
5031 case "$usedl" in
5032 $define|y|true)
5033         dflt='y'
5034         usedl="$define"
5035         ;;
5036 $undef|n|false)
5037         dflt='n'
5038         usedl="$undef"
5039         ;;
5040 *) 
5041         dflt='n'
5042         case "$d_dlopen" in
5043             $define) dflt='y' ;;
5044         esac
5045         case "$i_dld" in
5046             $define) dflt='y' ;;
5047         esac
5048         : Does a dl_xxx.xs file exist for this operating system
5049         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5050         ;;
5051 esac
5052 rp="Do you wish to use dynamic loading?"
5053 . ./myread
5054 usedl="$ans"
5055 case "$ans" in
5056 y*) usedl="$define"
5057         case "$dlsrc" in
5058         '')
5059                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5060                         dflt="$dldir/dl_${osname}.xs"
5061                 elif $test "$d_dlopen" = "$define" ; then
5062                         dflt="$dldir/dl_dlopen.xs"
5063                 elif $test "$i_dld" = "$define" ; then
5064                         dflt="$dldir/dl_dld.xs"
5065                 else
5066                         dflt=''
5067                 fi
5068                 ;;
5069         *)      dflt="$dldir/$dlsrc"
5070                 ;;
5071         esac
5072     echo "The following dynamic loading files are available:"
5073         : Can not go over to $dldir because getfile has path hard-coded in.
5074         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5075         rp="Source file to use for dynamic loading"
5076         fn="fne"
5077         # XXX This getfile call will fail the existence check if you try 
5078         # building away from $src (this is not supported yet).
5079         . ./getfile
5080         usedl="$define"
5081         : emulate basename
5082         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5083
5084         $cat << EOM
5085
5086 Some systems may require passing special flags to $cc -c to
5087 compile modules that will be used to create a shared library.
5088 To use no flags, say "none".
5089
5090 EOM
5091     case "$cccdlflags" in
5092     '') case "$gccversion" in
5093                 '') case "$osname" in
5094                         hpux)   dflt='+z' ;;
5095                         next)   dflt='none' ;;
5096                         irix*)  dflt='-KPIC' ;;
5097                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5098                         sunos)  dflt='-pic' ;;
5099                         *)      dflt='none' ;;
5100                     esac
5101                         ;;
5102                 *)  case "$osname" in
5103                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5104                         *)      dflt='-fpic' ;;
5105                     esac ;;
5106             esac ;;
5107         ' ') dflt='none' ;;
5108     *)  dflt="$cccdlflags" ;;
5109     esac
5110     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5111     . ./myread
5112     case "$ans" in
5113     none) cccdlflags=' ' ;;
5114     *) cccdlflags="$ans" ;;
5115     esac
5116
5117     cat << EOM
5118
5119 Some systems use ld to create libraries that can be dynamically loaded,
5120 while other systems (such as those using ELF) use $cc.
5121
5122 EOM
5123         case "$ld" in
5124         '')     $cat >try.c <<'EOM'
5125 /* Test for whether ELF binaries are produced */
5126 #include <fcntl.h>
5127 #include <stdlib.h>
5128 int main() {
5129         char b[4];
5130         int i = open("a.out",O_RDONLY);
5131         if(i == -1) 
5132                 exit(1); /* fail */
5133         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5134                 exit(0); /* succeed (yes, it's ELF) */
5135         else
5136                 exit(1); /* fail */
5137 }
5138 EOM
5139                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5140                         cat <<EOM
5141 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5142 EOM
5143                         dflt="$cc"
5144                 else
5145                         echo "I'll use ld to build dynamic libraries."
5146                         dflt='ld'
5147                 fi
5148                 rm -f try.c a.out
5149                 ;;
5150         *)      dflt="$ld"
5151                 ;;
5152         esac
5153
5154     rp="What command should be used to create dynamic libraries?"
5155     . ./myread
5156         ld="$ans"
5157
5158     cat << EOM
5159
5160 Some systems may require passing special flags to $ld to create a
5161 library that can be dynamically loaded.  If your ld flags include
5162 -L/other/path options to locate libraries outside your loader's normal
5163 search path, you may need to specify those -L options here as well.  To
5164 use no flags, say "none".
5165
5166 EOM
5167     case "$lddlflags" in
5168     '') case "$osname" in
5169                         hpux)  dflt='-b' ;;
5170                         linux|irix*)    dflt='-shared' ;;
5171                         next)  dflt='none' ;;
5172                         solaris) dflt='-G' ;;
5173                         sunos) dflt='-assert nodefinitions' ;;
5174                         svr4*|esix*) dflt="-G $ldflags" ;;
5175                 *)     dflt='none' ;;
5176                         esac
5177                         ;;
5178     *) dflt="$lddlflags" ;;
5179     esac
5180
5181         : Try to guess additional flags to pick up local libraries.
5182         : Be careful not to append to a plain 'none'
5183         case "$dflt" in
5184         none) dflt='' ;;
5185         esac
5186         for thisflag in $ldflags; do
5187                 case "$thisflag" in
5188                 -L*)
5189                         case " $dflt " in
5190                         *" $thisflag "*) ;;
5191                         *) dflt="$dflt $thisflag" ;;
5192                         esac
5193                         ;;
5194                 esac
5195         done
5196
5197         case "$dflt" in
5198         ''|' ') dflt='none' ;;
5199         esac
5200
5201     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5202     . ./myread
5203     case "$ans" in
5204     none) lddlflags=' ' ;;
5205     *) lddlflags="$ans" ;;
5206     esac
5207
5208         cat <<EOM
5209
5210 Some systems may require passing special flags to $cc to indicate that
5211 the resulting executable will use dynamic linking.  To use no flags,
5212 say "none".
5213
5214 EOM
5215     case "$ccdlflags" in
5216     '') case "$osname" in
5217                 hpux)   dflt='-Wl,-E' ;;
5218                 linux)  dflt='-rdynamic' ;;
5219                 next)   dflt='none' ;;
5220                 sunos)  dflt='none' ;;
5221                 *)      dflt='none' ;;
5222             esac ;;
5223     ' ')  dflt='none' ;;
5224     *)  dflt="$ccdlflags" ;;
5225     esac
5226     rp="Any special flags to pass to $cc to use dynamic loading?"
5227     . ./myread
5228     case "$ans" in
5229     none) ccdlflags=' ' ;;
5230     *) ccdlflags="$ans" ;;
5231     esac
5232     ;;
5233 *)  usedl="$undef"
5234         ld='ld'
5235     dlsrc='dl_none.xs'
5236     lddlflags=''
5237     ccdlflags=''
5238     ;;
5239 esac
5240
5241 also=''
5242 case "$usedl" in
5243 $undef)
5244         # No dynamic loading being used, so don't bother even to prompt.
5245         useshrplib='false'
5246         ;;
5247 *)      case "$useshrplib" in
5248         '')     case "$osname" in
5249                 svr4*|dgux|dynixptx|esix|powerux)
5250                         dflt=y
5251                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5252                         ;;
5253                 next*)
5254                         case "$osvers" in
5255                         4*)     dflt=y
5256                                 also='Building a shared libperl is needed for MAB support.'
5257                                 ;;
5258                         *)      dflt=n
5259                                 ;;
5260                         esac
5261                         ;;
5262                 *)      dflt=n
5263                         ;;
5264                 esac
5265                 ;;
5266         $define|true|[Yy]*)
5267                 dflt=y
5268                 ;;
5269         *)      dflt=n
5270                 ;;
5271         esac
5272         $cat << EOM
5273
5274 The perl executable is normally obtained by linking perlmain.c with
5275 libperl${_a}, any static extensions (usually just DynaLoader), and
5276 any other libraries needed on this system (such as -lm, etc.).  Since
5277 your system supports dynamic loading, it is probably possible to build
5278 a shared libperl.$so.  If you will have more than one executable linked
5279 to libperl.$so, this will significantly reduce the size of each
5280 executable, but it may have a noticeable affect on performance.  The
5281 default is probably sensible for your system.
5282 $also
5283
5284 EOM
5285         rp="Build a shared libperl.$so (y/n)"
5286         . ./myread
5287         case "$ans" in
5288         true|$define|[Yy]*)
5289                 useshrplib='true'
5290                 # Why does next4 have to be so different?
5291                 case "${osname}${osvers}" in
5292                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5293                 os2*)   xxx='' ;; # Nothing special needed.
5294                 *)              xxx='LD_LIBRARY_PATH' ;;
5295                 esac
5296                 if test X"$xxx" != "X"; then
5297                         $cat <<EOM  | $tee -a ../config.msg >&4
5298
5299 To build perl, you must add the current working directory to your
5300 $xxx environment variable before running make.  You can do
5301 this with
5302    $xxx=\`pwd\`:\$$xxx; export $xxx
5303 for Bourne-style shells, or
5304    setenv $xxx \`pwd\`
5305 for Csh-style shells.  You *MUST* do this before running make.
5306
5307 EOM
5308                 fi
5309                 ;;
5310         *)      useshrplib='false' ;;
5311         esac
5312         ;;
5313 esac
5314
5315 case "$useshrplib" in
5316 true)
5317         case "$libperl" in
5318         '')
5319                 # Figure out a good name for libperl.so.  Since it gets stored in
5320                 # a version-specific architecture-dependent library, the version
5321                 # number isn't really that important, except for making cc/ld happy.
5322                 #
5323                 # A name such as libperl.so.3.1
5324                 majmin="libperl.$so.$patchlevel.$subversion"
5325                 # A name such as libperl.so.301
5326                 majonly=`echo $patchlevel $subversion |
5327                         $awk '{printf "%d%02d", $1, $2}'`
5328                 majonly=libperl.$so.$majonly
5329                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5330                 # rely on figuring it out from the naming of libc.
5331                 case "${osname}${osvers}" in
5332                 next4*)
5333                         dflt=libperl.5.$so
5334                         # XXX How handle the --version stuff for MAB?
5335                         ;;
5336                 linux*)  # ld won't link with a bare -lperl otherwise.
5337                         dflt=libperl.$so
5338                         ;;
5339                 *)      # Try to guess based on whether libc has major.minor.
5340                         case "$libc" in
5341                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5342                         *libc.$so.[0-9]*) dflt=$majonly ;;
5343                         *)      dflt=libperl.$so ;;
5344                         esac
5345                         ;;
5346                 esac
5347                 ;;
5348         *)      dflt=$libperl
5349                 ;;
5350         esac
5351         cat << EOM
5352
5353 I need to select a good name for the shared libperl.  If your system uses
5354 library names with major and minor numbers, then you might want something
5355 like $majmin.  Alternatively, if your system uses a single version
5356 number for shared libraries, then you might want to use $majonly.
5357 Or, your system might be quite happy with a simple libperl.$so.
5358
5359 Since the shared libperl will get installed into a version-specific
5360 architecture-dependent directory, the version number of the shared perl
5361 library probably isn't important, so the default should be o.k.
5362
5363 EOM
5364         rp='What name do you want to give to the shared libperl?'
5365         . ./myread
5366         libperl=$ans
5367         echo "Ok, I'll use $libperl"
5368         ;;
5369 *)
5370         libperl="libperl${_a}"
5371         ;;
5372 esac
5373
5374 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5375 case "$shrpdir" in
5376 '') ;;
5377 *)      $cat >&4 <<EOM
5378 WARNING:  Use of the shrpdir variable for the installation location of
5379 the shared $libperl is not supported.  It was never documented and
5380 will not work in this version.  Let me (jhi@iki.fi)
5381 know of any problems this may cause.
5382
5383 EOM
5384         case "$shrpdir" in
5385         "$archlibexp/CORE")
5386                 $cat >&4 <<EOM
5387 But your current setting of $shrpdir is
5388 the default anyway, so it's harmless.
5389 EOM
5390                 ;;
5391         *)
5392                 $cat >&4 <<EOM
5393 Further, your current attempted setting of $shrpdir
5394 conflicts with the value of $archlibexp/CORE
5395 that installperl will use.
5396 EOM
5397                 ;;
5398         esac
5399         ;;
5400 esac
5401
5402 # How will the perl executable find the installed shared $libperl?
5403 # Add $xxx to ccdlflags.
5404 # If we can't figure out a command-line option, use $shrpenv to
5405 # set env LD_RUN_PATH.  The main perl makefile uses this.
5406 shrpdir=$archlibexp/CORE
5407 xxx=''
5408 tmp_shrpenv=''
5409 if "$useshrplib"; then
5410     case "$osname" in 
5411         aix)
5412                 # We'll set it in Makefile.SH...
5413                 ;;
5414         solaris|netbsd)
5415                 xxx="-R $shrpdir"
5416                 ;;
5417         freebsd)
5418                 xxx="-Wl,-R$shrpdir"
5419                 ;;
5420         linux|irix*|dec_osf)
5421                 xxx="-Wl,-rpath,$shrpdir"
5422                 ;;
5423         next)
5424                 # next doesn't like the default...
5425                 ;;
5426         *)
5427                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5428                 ;;
5429         esac
5430         case "$xxx" in
5431         '') ;;
5432         *)      
5433                 # Only add $xxx if it isn't already in ccdlflags.
5434                 case " $ccdlflags " in
5435                 *" $xxx "*)     ;;
5436                 *)      ccdlflags="$ccdlflags $xxx"
5437                         cat <<EOM >&4
5438
5439 Adding $xxx to the flags
5440 passed to $ld so that the perl executable will find the 
5441 installed shared $libperl.
5442
5443 EOM
5444                         ;;
5445                 esac
5446                 ;;
5447         esac
5448 fi
5449 # Respect a hint or command-line value.
5450 case "$shrpenv" in
5451 '') shrpenv="$tmp_shrpenv" ;;
5452 esac
5453
5454 : determine where manual pages go
5455 set man1dir man1dir none
5456 eval $prefixit
5457 $cat <<EOM
5458
5459 $spackage has manual pages available in source form.
5460 EOM
5461 case "$nroff" in
5462 nroff)
5463         echo "However, you don't have nroff, so they're probably useless to you."
5464         case "$man1dir" in
5465         '') man1dir="none";;
5466         esac;;
5467 esac
5468 echo "If you don't want the manual sources installed, answer 'none'."
5469 case "$man1dir" in
5470 ' ') dflt=none
5471         ;;
5472 '')
5473         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5474         lookpath="$lookpath $prefixexp/man/p_man/man1"
5475         lookpath="$lookpath $prefixexp/man/u_man/man1"
5476         lookpath="$lookpath $prefixexp/man/man.1"
5477         case "$sysman" in
5478         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5479         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5480         esac
5481         set dflt
5482         eval $prefixup
5483         ;;
5484 *)  dflt="$man1dir"
5485         ;;
5486 esac
5487 echo " "
5488 fn=dn+~
5489 rp="Where do the main $spackage manual pages (source) go?"
5490 . ./getfile
5491 if $test "X$man1direxp" != "X$ansexp"; then
5492         installman1dir=''
5493 fi
5494 man1dir="$ans"
5495 man1direxp="$ansexp"
5496 case "$man1dir" in
5497 '') man1dir=' '
5498         installman1dir='';;
5499 esac
5500 if $afs; then
5501         $cat <<EOM
5502
5503 Since you are running AFS, I need to distinguish the directory in which
5504 manual pages reside from the directory in which they are installed (and from
5505 which they are presumably copied to the former directory by occult means).
5506
5507 EOM
5508         case "$installman1dir" in
5509         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5510         *) dflt="$installman1dir";;
5511         esac
5512         fn=de~
5513         rp='Where will man pages be installed?'
5514         . ./getfile
5515         installman1dir="$ans"
5516 else
5517         installman1dir="$man1direxp"
5518 fi
5519
5520 : What suffix to use on installed man pages
5521
5522 case "$man1dir" in
5523 ' ')
5524         man1ext='0'
5525         ;;
5526 *)
5527         rp="What suffix should be used for the main $spackage man pages?"
5528         case "$man1ext" in
5529         '')     case "$man1dir" in
5530                 *1)  dflt=1 ;;
5531                 *1p) dflt=1p ;;
5532                 *1pm) dflt=1pm ;;
5533                 *l) dflt=l;;
5534                 *n) dflt=n;;
5535                 *o) dflt=o;;
5536                 *p) dflt=p;;
5537                 *C) dflt=C;;
5538                 *L) dflt=L;;
5539                 *L1) dflt=L1;;
5540                 *) dflt=1;;
5541                 esac
5542                 ;;
5543         *)      dflt="$man1ext";;
5544         esac
5545         . ./myread
5546         man1ext="$ans"
5547         ;;
5548 esac
5549
5550 : see if we can have long filenames
5551 echo " "
5552 rmlist="$rmlist /tmp/cf$$"
5553 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5554 first=123456789abcdef
5555 second=/tmp/cf$$/$first
5556 $rm -f $first $second
5557 if (echo hi >$first) 2>/dev/null; then
5558         if $test -f 123456789abcde; then
5559                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5560                 val="$undef"
5561         else
5562                 if (echo hi >$second) 2>/dev/null; then
5563                         if $test -f /tmp/cf$$/123456789abcde; then
5564                                 $cat <<'EOM'
5565 That's peculiar... You can have filenames longer than 14 characters, but only
5566 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5567 I shall consider your system cannot support long filenames at all.
5568 EOM
5569                                 val="$undef"
5570                         else
5571                                 echo 'You can have filenames longer than 14 characters.' >&4
5572                                 val="$define"
5573                         fi
5574                 else
5575                         $cat <<'EOM'
5576 How confusing! Some of your filesystems are sane enough to allow filenames
5577 longer than 14 characters but some others like /tmp can't even think about them.
5578 So, for now on, I shall assume your kernel does not allow them at all.
5579 EOM
5580                         val="$undef"
5581                 fi
5582         fi
5583 else
5584         $cat <<'EOM'
5585 You can't have filenames longer than 14 chars.  You can't even think about them!
5586 EOM
5587         val="$undef"
5588 fi 
5589 set d_flexfnam
5590 eval $setvar
5591 $rm -rf /tmp/cf$$ 123456789abcde*
5592
5593 : determine where library module manual pages go
5594 set man3dir man3dir none
5595 eval $prefixit
5596 $cat <<EOM
5597
5598 $spackage has manual pages for many of the library modules.
5599 EOM
5600
5601 case "$nroff" in
5602 nroff)
5603         $cat <<'EOM'
5604 However, you don't have nroff, so they're probably useless to you.
5605 EOM
5606         case "$man3dir" in
5607         '') man3dir="none";;
5608         esac;;
5609 esac
5610
5611 case "$d_flexfnam" in
5612 undef)
5613         $cat <<'EOM'
5614 However, your system can't handle the long file names like File::Basename.3. 
5615 EOM
5616         case "$man3dir" in
5617         '') man3dir="none";;
5618         esac;;
5619 esac
5620
5621 echo "If you don't want the manual sources installed, answer 'none'."
5622 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5623 case "$man3dir" in
5624 '')     case "$prefix" in 
5625         *$prog*) dflt=`echo $man1dir | 
5626                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5627         *)      dflt="$privlib/man/man3" ;;
5628         esac
5629         ;;
5630 ' ') dflt=none;;
5631 *)      dflt="$man3dir" ;;
5632 esac
5633 echo " "
5634
5635 fn=dn+~
5636 rp="Where do the $package library man pages (source) go?"
5637 . ./getfile
5638 if test "X$man3direxp" != "X$ansexp"; then
5639         installman3dir=''
5640 fi
5641
5642 man3dir="$ans"
5643 man3direxp="$ansexp"
5644 case "$man3dir" in
5645 '') man3dir=' '
5646         installman3dir='';;
5647 esac
5648 if $afs; then
5649         $cat <<EOM
5650
5651 Since you are running AFS, I need to distinguish the directory in which
5652 manual pages reside from the directory in which they are installed (and from
5653 which they are presumably copied to the former directory by occult means).
5654
5655 EOM
5656         case "$installman3dir" in
5657         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5658         *) dflt="$installman3dir";;
5659         esac
5660         fn=de~
5661         rp='Where will man pages be installed?'
5662         . ./getfile
5663         installman3dir="$ans"
5664 else
5665         installman3dir="$man3direxp"
5666 fi
5667
5668 : What suffix to use on installed man pages
5669
5670 case "$man3dir" in
5671 ' ')
5672         man3ext='0'
5673         ;;
5674 *)
5675         rp="What suffix should be used for the $package library man pages?"
5676         case "$man3ext" in
5677         '')     case "$man3dir" in
5678                 *3)  dflt=3 ;;
5679                 *3p) dflt=3p ;;
5680                 *3pm) dflt=3pm ;;
5681                 *l) dflt=l;;
5682                 *n) dflt=n;;
5683                 *o) dflt=o;;
5684                 *p) dflt=p;;
5685                 *C) dflt=C;;
5686                 *L) dflt=L;;
5687                 *L3) dflt=L3;;
5688                 *) dflt=3;;
5689                 esac
5690                 ;;
5691         *)      dflt="$man3ext";;
5692         esac
5693         . ./myread
5694         man3ext="$ans"
5695         ;;
5696 esac
5697
5698 : see if we have to deal with yellow pages, now NIS.
5699 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5700         if $test -f /usr/etc/nibindd; then
5701                 echo " "
5702                 echo "I'm fairly confident you're on a NeXT."
5703                 echo " "
5704                 rp='Do you get the hosts file via NetInfo?'
5705                 dflt=y
5706                 case "$hostcat" in
5707                 nidump*) ;;
5708                 '') ;;
5709                 *) dflt=n;;
5710                 esac
5711                 . ./myread
5712                 case "$ans" in
5713                 y*) hostcat='nidump hosts .';;
5714                 *)      case "$hostcat" in
5715                         nidump*) hostcat='';;
5716                         esac
5717                         ;;
5718                 esac
5719         fi
5720         case "$hostcat" in
5721         nidump*) ;;
5722         *)
5723                 case "$hostcat" in
5724                 *ypcat*) dflt=y;;
5725                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5726                                 dflt=y
5727                         else
5728                                 dflt=n
5729                         fi;;
5730                 *) dflt=n;;
5731                 esac
5732                 echo " "
5733                 rp='Are you getting the hosts file via yellow pages?'
5734                 . ./myread
5735                 case "$ans" in
5736                 y*) hostcat='ypcat hosts';;
5737                 *) hostcat='cat /etc/hosts';;
5738                 esac
5739                 ;;
5740         esac
5741 fi
5742 case "$hostcat" in
5743 '') hostcat='cat /etc/hosts';;
5744 esac
5745 case "$groupcat" in
5746 '') groupcat='cat /etc/group';;
5747 esac
5748 case "$passcat" in
5749 '') passcat='cat /etc/passwd';;
5750 esac
5751
5752 : now get the host name
5753 echo " "
5754 echo "Figuring out host name..." >&4
5755 case "$myhostname" in
5756 '') cont=true
5757         echo 'Maybe "hostname" will work...'
5758         if tans=`sh -c hostname 2>&1` ; then
5759                 myhostname=$tans
5760                 phostname=hostname
5761                 cont=''
5762         fi
5763         ;;
5764 *) cont='';;
5765 esac
5766 if $test "$cont"; then
5767         if ./xenix; then
5768                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5769                 if tans=`cat /etc/systemid 2>&1` ; then
5770                         myhostname=$tans
5771                         phostname='cat /etc/systemid'
5772                         echo "Whadyaknow.  Xenix always was a bit strange..."
5773                         cont=''
5774                 fi
5775         elif $test -r /etc/systemid; then
5776                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5777         fi
5778 fi
5779 if $test "$cont"; then
5780         echo 'No, maybe "uuname -l" will work...'
5781         if tans=`sh -c 'uuname -l' 2>&1` ; then
5782                 myhostname=$tans
5783                 phostname='uuname -l'
5784         else
5785                 echo 'Strange.  Maybe "uname -n" will work...'
5786                 if tans=`sh -c 'uname -n' 2>&1` ; then
5787                         myhostname=$tans
5788                         phostname='uname -n'
5789                 else
5790                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5791                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5792                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5793                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5794                         else
5795                                 case "$myhostname" in
5796                                 '') echo "Does this machine have an identity crisis or something?"
5797                                         phostname='';;
5798                                 *)
5799                                         echo "Well, you said $myhostname before..."
5800                                         phostname='echo $myhostname';;
5801                                 esac
5802                         fi
5803                 fi
5804         fi
5805 fi
5806 : you do not want to know about this
5807 set $myhostname
5808 myhostname=$1
5809
5810 : verify guess
5811 if $test "$myhostname" ; then
5812         dflt=y
5813         rp='Your host name appears to be "'$myhostname'".'" Right?"
5814         . ./myread
5815         case "$ans" in
5816         y*) ;;
5817         *) myhostname='';;
5818         esac
5819 fi
5820
5821 : bad guess or no guess
5822 while $test "X$myhostname" = X ; do
5823         dflt=''
5824         rp="Please type the (one word) name of your host:"
5825         . ./myread
5826         myhostname="$ans"
5827 done
5828
5829 : translate upper to lower if necessary
5830 case "$myhostname" in
5831 *[A-Z]*)
5832         echo "(Normalizing case in your host name)"
5833         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5834         ;;
5835 esac
5836
5837 case "$myhostname" in
5838 *.*)
5839         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5840         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5841         echo "(Trimming domain name from host name--host name is now $myhostname)"
5842         ;;
5843 *) case "$mydomain" in
5844         '')
5845                 {
5846                         test "X$hostcat" = "Xypcat hosts" &&
5847                         ypmatch "$myhostname" hosts 2>/dev/null |\
5848                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5849                         $test -s hosts
5850                 } || {
5851                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5852                                         /[       ]$myhostname[  . ]/p" > hosts
5853                 }
5854                 tmp_re="[       . ]"
5855                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5856                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5857                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5858                         hosts | $sort | $uniq | \
5859                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5860                 case `$echo X$dflt` in
5861                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5862                         dflt=.
5863                         ;;
5864                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5865                         ;;
5866                 esac
5867                 case "$dflt" in
5868                 .)
5869                         tans=`./loc resolv.conf X /etc /usr/etc`
5870                         if $test -f "$tans"; then
5871                                 echo "(Attempting domain name extraction from $tans)"
5872                                 dflt=.`$sed -n -e 's/   / /g' \
5873                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5874                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5875                                 case "$dflt" in
5876                                 .) dflt=.`$sed -n -e 's/        / /g' \
5877                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5878                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5879                                         ;;
5880                                 esac
5881                         fi
5882                         ;;
5883                 esac
5884                 case "$dflt" in
5885                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5886                         dflt=.`sh -c domainname 2>/dev/null`
5887                         case "$dflt" in
5888                         '') dflt='.';;
5889                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5890                         esac
5891                         ;;
5892                 esac
5893                 case "$dflt" in
5894                 .) echo "(Lost all hope -- silly guess then)"
5895                         dflt='.uucp'
5896                         ;;
5897                 esac
5898                 $rm -f hosts
5899                 ;;
5900         *) dflt="$mydomain";;
5901         esac;;
5902 esac
5903 echo " "
5904 rp="What is your domain name?"
5905 . ./myread
5906 tans="$ans"
5907 case "$ans" in
5908 '') ;;
5909 .*) ;;
5910 *) tans=".$tans";;
5911 esac
5912 mydomain="$tans"
5913
5914 : translate upper to lower if necessary
5915 case "$mydomain" in
5916 *[A-Z]*)
5917         echo "(Normalizing case in your domain name)"
5918         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5919         ;;
5920 esac
5921
5922 : a little sanity check here
5923 case "$phostname" in
5924 '') ;;
5925 *)
5926         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5927         $myhostname$mydomain|$myhostname) ;;
5928         *)
5929                 case "$phostname" in
5930                 sed*)
5931                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5932                         ;;
5933                 *)
5934                         echo "(That doesn't agree with your $phostname command, by the way.)"
5935                         ;;
5936                 esac
5937         ;;
5938         esac
5939         ;;
5940 esac
5941
5942 $cat <<EOM
5943
5944 I need to get your e-mail address in Internet format if possible, i.e.
5945 something like user@host.domain. Please answer accurately since I have
5946 no easy means to double check it. The default value provided below
5947 is most probably close to the reality but may not be valid from outside
5948 your organization...
5949
5950 EOM
5951 cont=x
5952 while test "$cont"; do
5953         case "$cf_email" in
5954         '') dflt="$cf_by@$myhostname$mydomain";;
5955         *) dflt="$cf_email";;
5956         esac
5957         rp='What is your e-mail address?'
5958         . ./myread
5959         cf_email="$ans"
5960         case "$cf_email" in
5961         *@*.*) cont='' ;;
5962         *)
5963                 rp='Address does not look like an Internet one.  Use it anyway?'
5964                 case "$fastread" in
5965                 yes) dflt=y ;;
5966                 *) dflt=n ;;
5967                 esac
5968                 . ./myread
5969                 case "$ans" in
5970                 y*) cont='' ;;
5971                 *) echo " " ;;
5972                 esac
5973                 ;;
5974         esac
5975 done
5976
5977 $cat <<EOM
5978
5979 If you or somebody else will be maintaining perl at your site, please
5980 fill in the correct e-mail address here so that they may be contacted
5981 if necessary. Currently, the "perlbug" program included with perl
5982 will send mail to this address in addition to perlbug@perl.com. You may
5983 enter "none" for no administrator.
5984
5985 EOM
5986 case "$perladmin" in
5987 '') dflt="$cf_email";;
5988 *) dflt="$perladmin";;
5989 esac
5990 rp='Perl administrator e-mail address'
5991 . ./myread
5992 perladmin="$ans"
5993
5994 : figure out how to guarantee perl startup
5995 case "$startperl" in
5996 '')
5997         case "$sharpbang" in
5998         *!)
5999                 $cat <<EOH
6000
6001 I can use the #! construct to start perl on your system. This will
6002 make startup of perl scripts faster, but may cause problems if you
6003 want to share those scripts and perl is not in a standard place
6004 ($binexp/perl) on all your platforms. The alternative is to force
6005 a shell by starting the script with a single ':' character.
6006
6007 EOH
6008                 dflt="$binexp/perl"
6009                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6010                 . ./myread
6011                 case "$ans" in
6012                 none)   startperl=": # use perl";;
6013                 *)      startperl="#!$ans"
6014                         if $test 30 -lt `echo "$ans" | wc -c`; then
6015                                 $cat >&4 <<EOM
6016
6017 WARNING:  Some systems limit the #! command to 32 characters.
6018 If you experience difficulty running Perl scripts with #!, try
6019 installing Perl in a directory with a shorter pathname.
6020
6021 EOM
6022                         fi ;;
6023                 esac
6024                 ;;
6025         *) startperl=": # use perl"
6026                 ;;
6027         esac
6028         ;;
6029 esac
6030 echo "I'll use $startperl to start perl scripts."
6031
6032 : figure best path for perl in scripts
6033 case "$perlpath" in
6034 '')
6035         perlpath="$binexp/perl"
6036         case "$startperl" in
6037         *!*) ;;
6038         *)
6039                 $cat <<EOH
6040
6041 I will use the "eval 'exec'" idiom to start Perl on your system.
6042 I can use the full path of your Perl binary for this purpose, but
6043 doing so may cause problems if you want to share those scripts and
6044 Perl is not always in a standard place ($binexp/perl).
6045
6046 EOH
6047                 dflt="$binexp/perl"
6048                 rp="What path shall I use in \"eval 'exec'\"?"
6049                 . ./myread
6050                 perlpath="$ans"
6051                 ;;
6052         esac
6053         ;;
6054 esac
6055 case "$startperl" in
6056 *!*)    ;;
6057 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6058 esac
6059
6060 : determine where public executable scripts go
6061 set scriptdir scriptdir
6062 eval $prefixit
6063 case "$scriptdir" in
6064 '')
6065         dflt="$bin"
6066         : guess some guesses
6067         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6068         $test -d /usr/share/bin && dflt=/usr/share/bin
6069         $test -d /usr/local/script && dflt=/usr/local/script
6070         $test -d $prefixexp/script && dflt=$prefixexp/script
6071         set dflt
6072         eval $prefixup
6073         ;;
6074 *)  dflt="$scriptdir"
6075         ;;
6076 esac
6077 $cat <<EOM
6078  
6079 Some installations have a separate directory just for executable scripts so
6080 that they can mount it across multiple architectures but keep the scripts in
6081 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6082 Or you might just lump your scripts in with all your other executables.
6083  
6084 EOM
6085 fn=d~
6086 rp='Where do you keep publicly executable scripts?'
6087 . ./getfile
6088 if $test "X$ansexp" != "X$scriptdirexp"; then
6089         installscript=''
6090 fi
6091 scriptdir="$ans"
6092 scriptdirexp="$ansexp"
6093 if $afs; then
6094         $cat <<EOM
6095
6096 Since you are running AFS, I need to distinguish the directory in which
6097 scripts reside from the directory in which they are installed (and from
6098 which they are presumably copied to the former directory by occult means).
6099
6100 EOM
6101         case "$installscript" in
6102         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6103         *) dflt="$installscript";;
6104         esac
6105         fn=de~
6106         rp='Where will public scripts be installed?'
6107         . ./getfile
6108         installscript="$ans"
6109 else
6110         installscript="$scriptdirexp"
6111 fi
6112
6113 : determine where site specific libraries go.
6114 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6115 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6116 case "$prefix" in
6117 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6118 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6119 esac
6120 eval $prefixit
6121 $cat <<EOM
6122
6123 The installation process will also create a directory for
6124 site-specific extensions and modules.  Some users find it convenient
6125 to place all local files in this directory rather than in the main
6126 distribution directory.
6127
6128 EOM
6129 fn=d~+
6130 rp='Pathname for the site-specific library files?'
6131 . ./getfile
6132 if $test "X$sitelibexp" != "X$ansexp"; then
6133         installsitelib=''
6134 fi
6135 sitelib="$ans"
6136 sitelibexp="$ansexp"
6137 if $afs; then
6138         $cat <<EOM
6139
6140 Since you are running AFS, I need to distinguish the directory in
6141 which site-specific files reside from the directory in which they are
6142 installed (and from which they are presumably copied to the former
6143 directory by occult means).
6144
6145 EOM
6146         case "$installsitelib" in
6147         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6148         *) dflt="$installsitelib";;
6149         esac
6150         fn=de~
6151         rp='Where will site-specific files be installed?'
6152         . ./getfile
6153         installsitelib="$ans"
6154 else
6155         installsitelib="$sitelibexp"
6156 fi
6157
6158 : determine where site specific architecture-dependent libraries go.
6159 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6160 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6161 : sitelib may have an optional trailing /share.
6162 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6163 tdflt="$tdflt/$archname"
6164 set sitearch sitearch none
6165 eval $prefixit
6166 case "$sitearch" in
6167 '')     dflt="$tdflt" ;;
6168 *)      dflt="$sitearch" ;;
6169 esac
6170 $cat <<EOM
6171
6172 The installation process will also create a directory for
6173 architecture-dependent site-specific extensions and modules.
6174
6175 EOM
6176 fn=nd~+
6177 rp='Pathname for the site-specific architecture-dependent library files?'
6178 . ./getfile
6179 if $test "X$sitearchexp" != "X$ansexp"; then
6180         installsitearch=''
6181 fi
6182 sitearch="$ans"
6183 sitearchexp="$ansexp"
6184 if $afs; then
6185         $cat <<EOM
6186
6187 Since you are running AFS, I need to distinguish the directory in
6188 which site-specific architecture-dependent library files reside from
6189 the directory in which they are installed (and from which they are
6190 presumably copied to the former directory by occult means).
6191
6192 EOM
6193         case "$installsitearch" in
6194         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6195         *) dflt="$installsitearch";;
6196         esac
6197         fn=de~
6198         rp='Where will site-specific architecture-dependent files be installed?'
6199         . ./getfile
6200         installsitearch="$ans"
6201 else
6202         installsitearch="$sitearchexp"
6203 fi
6204
6205 cat <<EOM
6206
6207 Previous version of $package used the standard IO mechanisms as defined
6208 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6209 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6210 the default.  This abstraction layer can use AT&T's sfio (if you already
6211 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6212 problems with some extension modules.  Using PerlIO with stdio is safe,
6213 but it is slower than plain stdio and therefore is not the default.
6214
6215 If this doesn't make any sense to you, just accept the default 'n'.
6216 EOM
6217 case "$useperlio" in
6218 $define|true|[yY]*)     dflt='y';;
6219 *) dflt='n';;
6220 esac
6221 rp='Use the experimental PerlIO abstraction layer?'
6222 . ./myread
6223 case "$ans" in
6224 y|Y) 
6225         val="$define"
6226         ;;     
6227 *)      
6228         echo "Ok, doing things the stdio way"
6229         val="$undef"
6230         ;;
6231 esac
6232 set useperlio
6233 eval $setvar 
6234
6235 : Check how to convert floats to strings.
6236 if test "X$d_Gconvert" = X; then
6237         echo " "
6238         echo "Checking for an efficient way to convert floats to strings."
6239         $cat >try.c <<'EOP'
6240 #ifdef TRY_gconvert
6241 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6242 char *myname = "gconvert";
6243 #endif
6244 #ifdef TRY_gcvt
6245 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6246 char *myname = "gcvt";
6247 #endif
6248 #ifdef TRY_sprintf
6249 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6250 char *myname = "sprintf";
6251 #endif
6252
6253 #include <stdio.h>
6254
6255 int
6256 checkit(expect, got)
6257 char *expect;
6258 char *got;
6259 {
6260     if (strcmp(expect, got)) {
6261                 printf("%s oddity:  Expected %s, got %s\n",
6262                         myname, expect, got);
6263                 exit(1);
6264         }
6265 }
6266
6267 int main()
6268
6269         char buf[64]; 
6270         buf[63] = '\0';
6271
6272         /* This must be 1st test on (which?) platform */
6273         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6274         Gconvert(0.1, 8, 0, buf);
6275         checkit("0.1", buf);
6276
6277         Gconvert(1.0, 8, 0, buf); 
6278         checkit("1", buf);
6279
6280         Gconvert(0.0, 8, 0, buf); 
6281         checkit("0", buf);
6282
6283         Gconvert(-1.0, 8, 0, buf); 
6284         checkit("-1", buf);
6285
6286         /* Some Linux gcvt's give 1.e+5 here. */
6287         Gconvert(100000.0, 8, 0, buf); 
6288         checkit("100000", buf);
6289         
6290         /* Some Linux gcvt's give -1.e+5 here. */
6291         Gconvert(-100000.0, 8, 0, buf); 
6292         checkit("-100000", buf);
6293
6294         exit(0);
6295 }
6296 EOP
6297         case "$d_Gconvert" in
6298         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6299         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6300         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6301         *) xxx_list='gconvert gcvt sprintf' ;;
6302         esac
6303
6304         for xxx_convert in $xxx_list; do
6305                 echo "Trying $xxx_convert"
6306                 $rm -f try try$_o
6307                 set try -DTRY_$xxx_convert
6308                 if eval $compile; then
6309                         echo "$xxx_convert" found. >&4
6310                         if ./try; then
6311                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6312                                 break;
6313                         else
6314                                 echo "...But $xxx_convert didn't work as I expected."
6315                         fi
6316                 else
6317                         echo "$xxx_convert NOT found." >&4
6318                 fi
6319         done
6320                 
6321         case "$xxx_convert" in
6322         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6323         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6324         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6325         esac
6326 fi
6327
6328 : Initialize h_fcntl
6329 h_fcntl=false
6330
6331 : Initialize h_sysfile
6332 h_sysfile=false
6333
6334 : access call always available on UNIX
6335 set access d_access
6336 eval $inlibc
6337
6338 : locate the flags for 'access()'
6339 case "$d_access" in
6340 "$define")
6341         echo " "
6342         $cat >access.c <<'EOCP'
6343 #include <sys/types.h>
6344 #ifdef I_FCNTL
6345 #include <fcntl.h>
6346 #endif
6347 #ifdef I_SYS_FILE
6348 #include <sys/file.h>
6349 #endif
6350 #ifdef I_UNISTD
6351 #include <unistd.h>
6352 #endif
6353 main() {
6354         exit(R_OK);
6355 }
6356 EOCP
6357         : check sys/file.h first, no particular reason here
6358         if $test `./findhdr sys/file.h` && \
6359                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6360                 h_sysfile=true;
6361                 echo "<sys/file.h> defines the *_OK access constants." >&4
6362         elif $test `./findhdr fcntl.h` && \
6363                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6364                 h_fcntl=true;
6365                 echo "<fcntl.h> defines the *_OK access constants." >&4
6366         elif $test `./findhdr unistd.h` && \
6367                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6368                 echo "<unistd.h> defines the *_OK access constants." >&4
6369         else
6370                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6371         fi
6372         ;;
6373 esac
6374 $rm -f access*
6375
6376 : see if accessx exists
6377 set accessx d_accessx
6378 eval $inlibc
6379
6380 : see if alarm exists
6381 set alarm d_alarm
6382 eval $inlibc
6383
6384 : Look for GNU-cc style attribute checking
6385 echo " "
6386 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6387 $cat >attrib.c <<'EOCP'
6388 #include <stdio.h>
6389 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6390 EOCP
6391 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6392         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6393                 echo "Your C compiler doesn't fully support __attribute__."
6394                 val="$undef"
6395         else
6396                 echo "Your C compiler supports __attribute__."
6397                 val="$define"
6398         fi
6399 else
6400         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6401         val="$undef"
6402 fi
6403 set d_attribut
6404 eval $setvar
6405 $rm -f attrib*
6406
6407 : see if bcmp exists
6408 set bcmp d_bcmp
6409 eval $inlibc
6410
6411 : see if bcopy exists
6412 set bcopy d_bcopy
6413 eval $inlibc
6414
6415 : see if this is a unistd.h system
6416 set unistd.h i_unistd
6417 eval $inhdr
6418
6419 : see if getpgrp exists
6420 set getpgrp d_getpgrp
6421 eval $inlibc
6422
6423 case "$d_getpgrp" in
6424 "$define")
6425         echo " "
6426         echo "Checking to see which flavor of getpgrp is in use..."
6427         $cat >set.c <<EOP
6428 #$i_unistd I_UNISTD
6429 #include <sys/types.h>
6430 #ifdef I_UNISTD
6431 #  include <unistd.h>
6432 #endif
6433 int main()
6434 {
6435         if (getuid() == 0) {
6436                 printf("(I see you are running Configure as super-user...)\n");
6437                 setuid(1);
6438         }
6439 #ifdef TRY_BSD_PGRP
6440         if (getpgrp(1) == 0)
6441                 exit(0);
6442 #else
6443         if (getpgrp() > 0)
6444                 exit(0);
6445 #endif
6446         exit(1);
6447 }
6448 EOP
6449         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6450                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6451                 val="$define"
6452         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6453                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6454                 val="$undef"
6455         else
6456                 echo "I can't seem to compile and run the test program."
6457                 if ./usg; then
6458                         xxx="a USG one, i.e. you use getpgrp()."
6459                 else
6460                         # SVR4 systems can appear rather BSD-ish.
6461                         case "$i_unistd" in
6462                         $undef)
6463                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6464                                 val="$define"
6465                                 ;;
6466                         $define)
6467                                 xxx="probably a USG one, i.e. you use getpgrp()."
6468                                 val="$undef"
6469                                 ;;
6470                         esac
6471                 fi
6472                 echo "Assuming your getpgrp is $xxx" >&4
6473         fi
6474         ;;
6475 *) val="$undef";;
6476 esac
6477 set d_bsdgetpgrp
6478 eval $setvar
6479 $rm -f set set.c
6480
6481 : see if setpgrp exists
6482 set setpgrp d_setpgrp
6483 eval $inlibc
6484
6485 case "$d_setpgrp" in
6486 "$define")
6487         echo " "
6488         echo "Checking to see which flavor of setpgrp is in use..."
6489         $cat >set.c <<EOP
6490 #$i_unistd I_UNISTD
6491 #include <sys/types.h>
6492 #ifdef I_UNISTD
6493 #  include <unistd.h>
6494 #endif
6495 int main()
6496 {
6497         if (getuid() == 0) {
6498                 printf("(I see you are running Configure as super-user...)\n");
6499                 setuid(1);
6500         }
6501 #ifdef TRY_BSD_PGRP
6502         if (-1 == setpgrp(1, 1))
6503                 exit(0);
6504 #else
6505         if (setpgrp() != -1)
6506                 exit(0);
6507 #endif
6508         exit(1);
6509 }
6510 EOP
6511         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6512                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6513                 val="$define"
6514         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6515                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6516                 val="$undef"
6517         else
6518                 echo "(I can't seem to compile and run the test program.)"
6519                 if ./usg; then
6520                         xxx="a USG one, i.e. you use setpgrp()."
6521                 else
6522                         # SVR4 systems can appear rather BSD-ish.
6523                         case "$i_unistd" in
6524                         $undef)
6525                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6526                                 val="$define"
6527                                 ;;
6528                         $define)
6529                                 xxx="probably a USG one, i.e. you use setpgrp()."
6530                                 val="$undef"
6531                                 ;;
6532                         esac
6533                 fi
6534                 echo "Assuming your setpgrp is $xxx" >&4
6535         fi
6536         ;;
6537 *) val="$undef";;
6538 esac
6539 set d_bsdsetpgrp
6540 eval $setvar
6541 $rm -f set set.c
6542 : see if bzero exists
6543 set bzero d_bzero
6544 eval $inlibc
6545
6546 : check for lengths of integral types
6547 echo " "
6548 case "$intsize" in
6549 '')
6550         echo "Checking to see how big your integers are..." >&4
6551         $cat >intsize.c <<'EOCP'
6552 #include <stdio.h>
6553 main()
6554 {
6555         printf("intsize=%d;\n", sizeof(int));
6556         printf("longsize=%d;\n", sizeof(long));
6557         printf("shortsize=%d;\n", sizeof(short));
6558         exit(0);
6559 }
6560 EOCP
6561         set intsize
6562         if eval $compile_ok && ./intsize > /dev/null; then
6563                 eval `./intsize`
6564                 echo "Your integers are $intsize bytes long."
6565                 echo "Your long integers are $longsize bytes long."
6566                 echo "Your short integers are $shortsize bytes long."
6567         else
6568                 $cat >&4 <<EOM
6569 !
6570 Help! I can't compile and run the intsize test program: please enlighten me!
6571 (This is probably a misconfiguration in your system or libraries, and
6572 you really ought to fix it.  Still, I'll try anyway.)
6573 !
6574 EOM
6575                 dflt=4
6576                 rp="What is the size of an integer (in bytes)?"
6577                 . ./myread
6578                 intsize="$ans"
6579                 dflt=$intsize
6580                 rp="What is the size of a long integer (in bytes)?"
6581                 . ./myread
6582                 longsize="$ans"
6583                 dflt=2
6584                 rp="What is the size of a short integer (in bytes)?"
6585                 . ./myread
6586                 shortsize="$ans"
6587         fi
6588         ;;
6589 esac
6590 $rm -f intsize intsize.*
6591
6592 : see if signal is declared as pointer to function returning int or void
6593 echo " "
6594 xxx=`./findhdr signal.h`
6595 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6596 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6597         echo "You have int (*signal())() instead of void." >&4
6598         val="$undef"
6599 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6600         echo "You have void (*signal())()." >&4
6601         val="$define"
6602 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6603         echo "You have int (*signal())() instead of void." >&4
6604         val="$undef"
6605 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6606         echo "You have void (*signal())()." >&4
6607         val="$define"
6608 else
6609         case "$d_voidsig" in
6610         '')
6611         echo "I can't determine whether signal handler returns void or int..." >&4
6612                 dflt=void
6613                 rp="What type does your signal handler return?"
6614                 . ./myread
6615                 case "$ans" in
6616                 v*) val="$define";;
6617                 *) val="$undef";;
6618                 esac;;
6619         "$define")
6620                 echo "As you already told me, signal handler returns void." >&4
6621                 val="$define"
6622                 ;;
6623         *)      echo "As you already told me, signal handler returns int." >&4
6624                 val="$undef"
6625                 ;;
6626         esac
6627 fi
6628 set d_voidsig
6629 eval $setvar
6630 case "$d_voidsig" in
6631 "$define") signal_t="void";;
6632 *) signal_t="int";;
6633 esac
6634 $rm -f $$.tmp
6635
6636 : check for ability to cast large floats to 32-bit ints.
6637 echo " "
6638 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6639 if $test "$intsize" -ge 4; then
6640         xxx=int
6641 else
6642         xxx=long
6643 fi
6644 $cat >try.c <<EOCP
6645 #include <stdio.h>
6646 #include <sys/types.h>
6647 #include <signal.h>
6648 $signal_t blech(s) int s; { exit(3); }
6649 main()
6650 {
6651         $xxx i32;
6652         double f, g;
6653         int result = 0;
6654         char str[16];
6655         signal(SIGFPE, blech);
6656
6657         /* Don't let compiler optimize the test away.  Store the number 
6658            in a writable string for gcc to pass to sscanf under HP/UX.
6659         */
6660         sprintf(str, "2147483647");
6661         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6662         g = 10 * f;
6663         i32  = ($xxx) g;
6664
6665         /* x86 processors will probably give 0x8000 0000, which is a
6666        sign change.  We don't want that.  We want to mimic SPARC
6667            behavior here, which is to preserve the sign and give
6668            back 0x7fff ffff.
6669         */
6670         if (i32 != ($xxx) f)
6671                 result |= 1;
6672         exit(result);
6673 }
6674 EOCP
6675 set try
6676 if eval $compile_ok; then
6677         ./try
6678         yyy=$?
6679 else
6680         echo "(I can't seem to compile the test program--assuming it can't)"
6681         yyy=1
6682 fi
6683 case "$yyy" in
6684 0)      val="$define"
6685         echo "Yup, it can."
6686         ;;
6687 *)      val="$undef"
6688         echo "Nope, it can't."
6689         ;;
6690 esac
6691 set d_casti32
6692 eval $setvar
6693 $rm -f try try.*
6694
6695 : check for ability to cast negative floats to unsigned
6696 echo " "
6697 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6698 $cat >try.c <<EOCP
6699 #include <stdio.h>
6700 #include <sys/types.h>
6701 #include <signal.h>
6702 $signal_t blech(s) int s; { exit(7); }
6703 $signal_t blech_in_list(s) int s; { exit(4); }
6704 unsigned long dummy_long(p) unsigned long p; { return p; }
6705 unsigned int dummy_int(p) unsigned int p; { return p; }
6706 unsigned short dummy_short(p) unsigned short p; { return p; }
6707 main()
6708 {
6709         double f;
6710         unsigned long along;
6711         unsigned int aint;
6712         unsigned short ashort;
6713         int result = 0;
6714         char str[16];
6715         
6716         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6717            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6718            optimized the whole file away
6719         */
6720         /* Store the number in a writable string for gcc to pass to 
6721            sscanf under HP/UX.
6722         */
6723         sprintf(str, "-123");
6724         sscanf(str, "%lf", &f);  /* f = -123.; */
6725
6726         signal(SIGFPE, blech);
6727         along = (unsigned long)f;
6728         aint = (unsigned int)f;
6729         ashort = (unsigned short)f;
6730         if (along != (unsigned long)-123)
6731                 result |= 1;
6732         if (aint != (unsigned int)-123)
6733                 result |= 1;
6734         if (ashort != (unsigned short)-123)
6735                 result |= 1;
6736         sprintf(str, "1073741824.");
6737         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6738         f = f + f;
6739         along = 0;
6740         along = (unsigned long)f;
6741         if (along != 0x80000000)
6742                 result |= 2;
6743         f -= 1.;
6744         along = 0;
6745         along = (unsigned long)f;
6746         if (along != 0x7fffffff)
6747                 result |= 1;
6748         f += 2.;
6749         along = 0;
6750         along = (unsigned long)f;
6751         if (along != 0x80000001)
6752                 result |= 2;
6753         if (result)
6754                 exit(result);
6755         signal(SIGFPE, blech_in_list);
6756         sprintf(str, "123.");
6757         sscanf(str, "%lf", &f);  /* f = 123.; */
6758         along = dummy_long((unsigned long)f);
6759         aint = dummy_int((unsigned int)f);
6760         ashort = dummy_short((unsigned short)f);
6761         if (along != (unsigned long)123)
6762                 result |= 4;
6763         if (aint != (unsigned int)123)
6764                 result |= 4;
6765         if (ashort != (unsigned short)123)
6766                 result |= 4;
6767         exit(result);
6768
6769 }
6770 EOCP
6771 set try
6772 if eval $compile_ok; then
6773         ./try
6774         castflags=$?
6775 else
6776         echo "(I can't seem to compile the test program--assuming it can't)"
6777         castflags=7
6778 fi
6779 case "$castflags" in
6780 0)      val="$define"
6781         echo "Yup, it can."
6782         ;;
6783 *)      val="$undef"
6784         echo "Nope, it can't."
6785         ;;
6786 esac
6787 set d_castneg
6788 eval $setvar
6789 $rm -f try.*
6790
6791 : see if vprintf exists
6792 echo " "
6793 if set vprintf val -f d_vprintf; eval $csym; $val; then
6794         echo 'vprintf() found.' >&4
6795         val="$define"
6796         $cat >vprintf.c <<'EOF'
6797 #include <varargs.h>
6798
6799 main() { xxx("foo"); }
6800
6801 xxx(va_alist)
6802 va_dcl
6803 {
6804         va_list args;
6805         char buf[10];
6806
6807         va_start(args);
6808         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6809 }
6810 EOF
6811         set vprintf
6812         if eval $compile && ./vprintf; then
6813                 echo "Your vsprintf() returns (int)." >&4
6814                 val2="$undef"
6815         else
6816                 echo "Your vsprintf() returns (char*)." >&4
6817                 val2="$define"
6818         fi
6819 else
6820         echo 'vprintf() NOT found.' >&4
6821                 val="$undef"
6822                 val2="$undef"
6823 fi
6824 set d_vprintf
6825 eval $setvar
6826 val=$val2
6827 set d_charvspr
6828 eval $setvar
6829
6830 : see if chown exists
6831 set chown d_chown
6832 eval $inlibc
6833
6834 : see if chroot exists
6835 set chroot d_chroot
6836 eval $inlibc
6837
6838 : see if chsize exists
6839 set chsize d_chsize
6840 eval $inlibc
6841
6842 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6843 while $test $# -ge 2; do
6844         case "$1" in
6845         $define) echo "#include <$2>";;
6846         esac ;
6847     shift 2;
6848 done > try.c;
6849 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6850 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6851         val="$define";
6852 else
6853         val="$undef";
6854 fi;
6855 set $varname;
6856 eval $setvar;
6857 $rm -f try.c try.o'
6858
6859 : see if this is a sys/uio.h system
6860 set sys/uio.h i_sysuio
6861 eval $inhdr
6862
6863 echo "Checking to see if your system supports struct iovec..." >&4
6864 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6865 eval $hasfield
6866 case "$d_iovec_s" in
6867 "$define")      echo "Yup, it does." >&4
6868                 ;;
6869 *)              echo "Nope, it doesn't." >&4
6870                 ;;
6871 esac
6872
6873 socketlib=''
6874 sockethdr=''
6875 : see whether socket exists
6876 echo " "
6877 $echo $n "Hmm... $c" >&4
6878 if set socket val -f d_socket; eval $csym; $val; then
6879         echo "Looks like you have Berkeley networking support." >&4
6880         d_socket="$define"
6881         if set setsockopt val -f; eval $csym; $val; then
6882                 d_oldsock="$undef"
6883         else
6884                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6885                 d_oldsock="$define"
6886         fi
6887 else
6888         if $contains socklib libc.list >/dev/null 2>&1; then
6889                 echo "Looks like you have Berkeley networking support." >&4
6890                 d_socket="$define"
6891                 : we will have to assume that it supports the 4.2 BSD interface
6892                 d_oldsock="$undef"
6893         else
6894                 echo "You don't have Berkeley networking in libc$_a..." >&4
6895                 if test "X$d_socket" = "X$define"; then
6896                    echo "...but you seem to believe that you have sockets." >&4
6897                 else
6898                         for net in net socket
6899                         do
6900                                 if test -f /usr/lib/lib$net$_a; then
6901                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6902                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6903                                         if $contains socket libc.list >/dev/null 2>&1; then
6904                                                 d_socket="$define"
6905                                                 socketlib="-l$net"
6906                                                 case "$net" in
6907                                                 net)
6908                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6909                                                         sockethdr="-I/usr/netinclude"
6910                                                         ;;
6911                                                 esac
6912                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6913                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6914                                                         d_oldsock="$undef"
6915                                                 else
6916                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6917                                                         d_oldsock="$define"
6918                                                 fi
6919                                                 break
6920                                         fi
6921                                 fi
6922                         done
6923                         if test "X$d_socket" != "X$define"; then
6924                            echo "or anywhere else I see." >&4
6925                            d_socket="$undef"
6926                            d_oldsock="$undef"
6927                         fi
6928                 fi
6929         fi
6930 fi
6931
6932 : see if socketpair exists
6933 set socketpair d_sockpair
6934 eval $inlibc
6935
6936
6937 echo " "
6938 echo "Checking the availability of certain socket constants..." >& 4
6939 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6940         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6941         $cat >try.c <<EOF
6942 #include <sys/types.h>
6943 #include <sys/socket.h>
6944 int main() {
6945     int i = $ENUM;
6946 }
6947 EOF
6948         val="$undef"
6949         set try; if eval $compile; then
6950                 val="$define"
6951         fi
6952         set d_${enum}; eval $setvar
6953         $rm -f try.c try
6954 done
6955
6956 set sendmsg d_sendmsg
6957 eval $inlibc
6958
6959 set recvmsg d_recvmsg
6960 eval $inlibc
6961
6962 echo " "
6963 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6964 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6965 eval $hasfield
6966 case "$d_msghdr_s" in
6967 "$define")      echo "Yup, it does." >&4
6968                 ;;
6969 *)              echo "Nope, it doesn't." >&4
6970                 ;;
6971 esac
6972
6973 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6974 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6975 eval $hasfield
6976 case "$d_cmsghdr_s" in
6977 "$define")      echo "Yup, it does." >&4
6978                 ;;
6979 *)              echo "Nope, it doesn't." >&4
6980                 ;;
6981 esac
6982
6983 : check for const keyword
6984 echo " "
6985 echo 'Checking to see if your C compiler knows about "const"...' >&4
6986 $cat >const.c <<'EOCP'
6987 typedef struct spug { int drokk; } spug;
6988 int main()
6989 {
6990         const char *foo;
6991         const spug y;
6992 }
6993 EOCP
6994 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6995         val="$define"
6996         echo "Yup, it does."
6997 else
6998         val="$undef"
6999         echo "Nope, it doesn't."
7000 fi
7001 set d_const
7002 eval $setvar
7003
7004 : see if crypt exists
7005 echo " "
7006 if set crypt val -f d_crypt; eval $csym; $val; then
7007         echo 'crypt() found.' >&4
7008         val="$define"
7009         cryptlib=''
7010 else
7011         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7012         if $test -z "$cryptlib"; then
7013                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7014         else
7015                 cryptlib=-lcrypt
7016         fi
7017         if $test -z "$cryptlib"; then
7018                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7019         else
7020                 cryptlib=-lcrypt
7021         fi
7022         if $test -z "$cryptlib"; then
7023                 cryptlib=`./loc libcrypt$_a "" $libpth`
7024         else
7025                 cryptlib=-lcrypt
7026         fi
7027         if $test -z "$cryptlib"; then
7028                 echo 'crypt() NOT found.' >&4
7029                 val="$undef"
7030         else
7031                 val="$define"
7032         fi
7033 fi
7034 set d_crypt
7035 eval $setvar
7036
7037 : get csh whereabouts
7038 case "$csh" in
7039 'csh') val="$undef" ;;
7040 *) val="$define" ;;
7041 esac
7042 set d_csh
7043 eval $setvar
7044 : Respect a hint or command line value for full_csh.
7045 case "$full_csh" in
7046 '') full_csh=$csh ;;
7047 esac
7048
7049 : see if cuserid exists
7050 set cuserid d_cuserid
7051 eval $inlibc
7052
7053 : see if this is a limits.h system
7054 set limits.h i_limits
7055 eval $inhdr
7056
7057 : see if this is a float.h system
7058 set float.h i_float
7059 eval $inhdr
7060
7061 : See if number of significant digits in a double precision number is known
7062 echo " "
7063 $cat >dbl_dig.c <<EOM
7064 #$i_limits I_LIMITS
7065 #$i_float I_FLOAT
7066 #ifdef I_LIMITS
7067 #include <limits.h>
7068 #endif
7069 #ifdef I_FLOAT
7070 #include <float.h>
7071 #endif
7072 #ifdef DBL_DIG
7073 printf("Contains DBL_DIG");
7074 #endif
7075 EOM
7076 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7077 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7078         echo "DBL_DIG found." >&4
7079         val="$define"
7080 else
7081         echo "DBL_DIG NOT found." >&4
7082         val="$undef"
7083 fi
7084 $rm -f dbl_dig.?
7085 set d_dbl_dig
7086 eval $setvar
7087
7088
7089 if $test X"$use64bits" = X"$define"; then
7090         : see if dbminit64 exists
7091         set dbminit64 d_dbminit64
7092         eval $inlibc
7093
7094         : see if dbmclose64 exists
7095         set dbmclose64 d_dbmclose64
7096         eval $inlibc
7097
7098         : see if fetch64 exists
7099         set fetch64 d_fetch64
7100         eval $inlibc
7101
7102         : see if store64 exists
7103         set store64 d_store64
7104         eval $inlibc
7105
7106         : see if delete64 exists
7107         set delete64 d_delete64
7108         eval $inlibc
7109
7110         : see if firstkey64 exists
7111         set firstkey64 d_firstkey64
7112         eval $inlibc
7113
7114         : see if nextkey64 exists
7115         set nextkey64 d_nextkey64
7116         eval $inlibc
7117 else
7118         val="$undef"
7119         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7120         do
7121                 set $xxx
7122                 eval $setvar
7123         done
7124 fi
7125
7126 : see if difftime exists
7127 set difftime d_difftime
7128 eval $inlibc
7129
7130 : see if sys/stat.h is available
7131 set sys/stat.h i_sysstat
7132 eval $inhdr
7133
7134 : see if this is a dirent system
7135 echo " "
7136 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7137         val="$define"
7138         echo "<dirent.h> found." >&4
7139 else
7140         val="$undef"
7141         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7142                 echo "<sys/dir.h> found." >&4
7143                 echo " "
7144         else
7145                 xinc=`./findhdr sys/ndir.h`
7146         fi
7147         echo "<dirent.h> NOT found." >&4
7148 fi
7149 set i_dirent
7150 eval $setvar
7151
7152 : Look for type of directory structure.
7153 echo " "
7154 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7155
7156 case "$direntrytype" in
7157 ''|' ')
7158         case "$i_dirent" in
7159         $define) guess1='struct dirent' ;;
7160         *) guess1='struct direct'  ;;
7161         esac
7162         ;;
7163 *)      guess1="$direntrytype"
7164         ;;
7165 esac
7166
7167 case "$guess1" in
7168 'struct dirent') guess2='struct direct' ;;
7169 *) guess2='struct dirent' ;;
7170 esac
7171                 
7172 if $contains "$guess1" try.c >/dev/null 2>&1; then
7173         direntrytype="$guess1"
7174         echo "Your directory entries are $direntrytype." >&4
7175 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7176         direntrytype="$guess2"
7177         echo "Your directory entries seem to be $direntrytype." >&4
7178 else
7179         echo "I don't recognize your system's directory entries." >&4
7180         rp="What type is used for directory entries on this system?"
7181         dflt="$guess1"
7182         . ./myread
7183         direntrytype="$ans"
7184 fi
7185 $rm -f try.c
7186
7187
7188 : see if the directory entry stores field length
7189 echo " "
7190 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7191 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7192         echo "Good, your directory entry keeps length information in d_namlen." >&4
7193         val="$define"
7194 else
7195         echo "Your directory entry does not know about the d_namlen field." >&4
7196         val="$undef"
7197 fi
7198 set d_dirnamlen
7199 eval $setvar
7200 $rm -f try.c
7201
7202
7203 if $test X"$use64bits" = X"$define"; then
7204         : see if fstat64 exists
7205         set fstat64 d_fstat64
7206         eval $inlibc
7207
7208         : see if ftruncate64 exists
7209         set ftruncate64 d_ftruncate64
7210         eval $inlibc
7211
7212         : see if lockf64 exists
7213         set lockf64 d_lockf64
7214         eval $inlibc
7215
7216         : see if lseek64 exists
7217         set lseek64 d_lseek64
7218         eval $inlibc
7219
7220         : see if lstat64 exists
7221         set lstat64 d_lstat64
7222         eval $inlibc
7223
7224         : see if open64 exists
7225         set open64 d_open64
7226         eval $inlibc
7227
7228         : see if opendir64 exists
7229         set opendir64 d_opendir64
7230         eval $inlibc
7231
7232         : see if readdir64 exists
7233         set readdir64 d_readdir64
7234         eval $inlibc
7235
7236         : see if seekdir64 exists
7237         set seekdir64 d_seekdir64
7238         eval $inlibc
7239
7240         : see if stat64 exists
7241         set stat64 d_stat64
7242         eval $inlibc
7243
7244         : see if telldir64 exists
7245         set telldir64 d_telldir64
7246         eval $inlibc
7247
7248         : see if truncate64 exists
7249         set truncate64 d_truncate64
7250         eval $inlibc
7251
7252         : check for off64_t
7253         echo " "
7254         echo $n "Checking to see if your system supports off64_t...$c" >&4
7255         $cat >try.c <<EOCP
7256 #include <sys/types.h>
7257 off64_t foo() { off64_t x; x = 7; return x; }'
7258 EOCP
7259         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7260                 val="$define"
7261                 echo " Yup, it does." >&4
7262         else
7263                 val="$undef"
7264                 echo " Nope, it doesn't." >&4
7265         fi
7266         $rm -f try.*
7267         set d_off64t
7268         eval $setvar
7269
7270         : check for ino64_t
7271         echo " "
7272         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7273         val="$undef"
7274         case "$i_sysstat" in
7275         "$define" )
7276                 $cat >try.c <<EOCP
7277 #include <sys/types.h>
7278 #include <sys/stat.h>
7279 ino64_t foo() { ino64_t x; x = 7; return x; }'
7280 EOCP
7281                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7282                         val="$define"
7283                 fi
7284                 $rm -f try.*
7285                 ;;
7286         esac
7287         if $test "X$val" = X"$define"; then
7288                 echo " Yup, it does." >&4
7289         else
7290                 echo " Nope, it doesn't." >&4
7291         fi
7292         set d_ino64t
7293         eval $setvar
7294
7295         : check for struct flock64
7296         echo " "
7297         echo "Checking to see if your system supports struct flock64..." >&4
7298         if $h_fcntl; then
7299                 set d_flock64_s flock64 l_len define fcntl.h
7300                 eval $hasfield
7301         else
7302                 val="$undef"
7303                 set d_flock64_s
7304                 eval $setvar
7305         fi
7306         case "$d_flock64_s" in
7307         "$define")      echo "Yup, it does." >&4
7308                         ;;
7309         *)              echo "Nope, it doesn't." >&4
7310                         ;;
7311         esac
7312
7313         : check for struct dirent64
7314         echo " "
7315         echo "Checking to see if your system supports struct dirent64..." >&4
7316         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7317         eval $hasfield
7318         case "$d_dirent64_s" in
7319         "$define")      echo "Yup, it does." >&4
7320                         ;;
7321         *)              echo "Nope, it doesn't." >&4
7322                         ;;
7323         esac
7324
7325 else
7326         val="$undef"
7327         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
7328         do
7329                 set $xxx
7330                 eval $setvar
7331         done
7332 fi
7333
7334 : see if dlerror exists
7335 xxx_runnm="$runnm"
7336 runnm=false
7337 set dlerror d_dlerror
7338 eval $inlibc
7339 runnm="$xxx_runnm"
7340
7341 : see if dlfcn is available
7342 set dlfcn.h i_dlfcn
7343 eval $inhdr
7344
7345 case "$usedl" in
7346 $define|y|true)
7347         $cat << EOM
7348
7349 On a few systems, the dynamically loaded modules that perl generates and uses
7350 will need a different extension than shared libs. The default will probably
7351 be appropriate.
7352
7353 EOM
7354         case "$dlext" in
7355         '')     dflt="$so" ;;
7356         *)      dflt="$dlext" ;;
7357         esac
7358         rp='What is the extension of dynamically loaded modules'
7359         . ./myread
7360         dlext="$ans"
7361         ;;
7362 *)
7363         dlext="none"
7364         ;;
7365 esac
7366
7367 : Check if dlsym need a leading underscore
7368 echo " "
7369 val="$undef"
7370
7371 case "$dlsrc" in
7372 dl_dlopen.xs)
7373         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7374         $cat >dyna.c <<'EOM'
7375 fred () { }
7376 EOM
7377
7378 $cat >fred.c<<EOM
7379
7380 #include <stdio.h>
7381 #$i_dlfcn I_DLFCN
7382 #ifdef I_DLFCN
7383 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7384 #else
7385 #include <sys/types.h>
7386 #include <nlist.h>
7387 #include <link.h>
7388 #endif
7389
7390 extern int fred() ;
7391
7392 int main()
7393 {
7394     void * handle ;
7395     void * symbol ;
7396 #ifndef RTLD_LAZY
7397     int mode = 1 ;
7398 #else
7399     int mode = RTLD_LAZY ;
7400 #endif
7401     handle = dlopen("./dyna.$dlext", mode) ;
7402     if (handle == NULL) {
7403         printf ("1\n") ;
7404         fflush (stdout) ;
7405         exit(0);
7406     }
7407     symbol = dlsym(handle, "fred") ;
7408     if (symbol == NULL) {
7409         /* try putting a leading underscore */
7410         symbol = dlsym(handle, "_fred") ;
7411         if (symbol == NULL) {
7412             printf ("2\n") ;
7413             fflush (stdout) ;
7414             exit(0);
7415         }
7416         printf ("3\n") ;
7417     }
7418     else
7419         printf ("4\n") ;
7420     fflush (stdout) ;
7421     exit(0);
7422 }
7423 EOM
7424         : Call the object file tmp-dyna.o in case dlext=o.
7425         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7426                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7427                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7428                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7429                 xxx=`./fred`
7430                 case $xxx in
7431                 1)      echo "Test program failed using dlopen." >&4
7432                         echo "Perhaps you should not use dynamic loading." >&4;;
7433                 2)      echo "Test program failed using dlsym." >&4
7434                         echo "Perhaps you should not use dynamic loading." >&4;;
7435                 3)      echo "dlsym needs a leading underscore" >&4
7436                         val="$define" ;;
7437                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7438                 esac
7439         else
7440                 echo "I can't compile and run the test program." >&4
7441         fi
7442         ;;
7443 esac
7444                 
7445 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7446
7447 set d_dlsymun
7448 eval $setvar
7449
7450 hasproto='varname=$1; func=$2; shift; shift;
7451 while $test $# -ge 2; do
7452         case "$1" in
7453         $define) echo "#include <$2>";;
7454         esac ;
7455     shift 2;
7456 done > try.c;
7457 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7458 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7459         echo "$func() prototype found.";
7460         val="$define";
7461 else
7462         echo "$func() prototype NOT found.";
7463         val="$undef";
7464 fi;
7465 set $varname;
7466 eval $setvar;
7467 $rm -f try.c tryout.c'
7468
7469 : see if prototype for drand48 is available
7470 echo " "
7471 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7472 eval $hasproto
7473
7474 : see if dup2 exists
7475 set dup2 d_dup2
7476 eval $inlibc
7477
7478 : see if eaccess exists
7479 set eaccess d_eaccess
7480 eval $inlibc
7481
7482 : see if endgrent exists
7483 set endgrent d_endgrent
7484 eval $inlibc
7485
7486 : see if endhostent exists
7487 set endhostent d_endhent
7488 eval $inlibc
7489
7490 : see if endnetent exists
7491 set endnetent d_endnent
7492 eval $inlibc
7493
7494 : see if endprotoent exists
7495 set endprotoent d_endpent
7496 eval $inlibc
7497
7498 : see if endpwent exists
7499 set endpwent d_endpwent
7500 eval $inlibc
7501
7502 : see if endservent exists
7503 set endservent d_endsent
7504 eval $inlibc
7505
7506 : Locate the flags for 'open()'
7507 echo " "
7508 $cat >open3.c <<'EOCP'
7509 #include <sys/types.h>
7510 #ifdef I_FCNTL
7511 #include <fcntl.h>
7512 #endif
7513 #ifdef I_SYS_FILE
7514 #include <sys/file.h>
7515 #endif
7516 main() {
7517         if(O_RDONLY);
7518 #ifdef O_TRUNC
7519         exit(0);
7520 #else
7521         exit(1);
7522 #endif
7523 }
7524 EOCP
7525 : check sys/file.h first to get FREAD on Sun
7526 if $test `./findhdr sys/file.h` && \
7527                 set open3 -DI_SYS_FILE && eval $compile; then
7528         h_sysfile=true;
7529         echo "<sys/file.h> defines the O_* constants..." >&4
7530         if ./open3; then
7531                 echo "and you have the 3 argument form of open()." >&4
7532                 val="$define"
7533         else
7534                 echo "but not the 3 argument form of open().  Oh, well." >&4
7535                 val="$undef"
7536         fi
7537 elif $test `./findhdr fcntl.h` && \
7538                 set open3 -DI_FCNTL && eval $compile; then
7539         h_fcntl=true;
7540         echo "<fcntl.h> defines the O_* constants..." >&4
7541         if ./open3; then
7542                 echo "and you have the 3 argument form of open()." >&4
7543                 val="$define"
7544         else
7545                 echo "but not the 3 argument form of open().  Oh, well." >&4
7546                 val="$undef"
7547         fi
7548 else
7549         val="$undef"
7550         echo "I can't find the O_* constant definitions!  You got problems." >&4
7551 fi
7552 set d_open3
7553 eval $setvar
7554 $rm -f open3*
7555
7556 : check for non-blocking I/O stuff
7557 case "$h_sysfile" in
7558 true) echo "#include <sys/file.h>" > head.c;;
7559 *)
7560         case "$h_fcntl" in
7561         true) echo "#include <fcntl.h>" > head.c;;
7562         *) echo "#include <sys/fcntl.h>" > head.c;;
7563         esac
7564         ;;
7565 esac
7566 echo " "
7567 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7568 case "$o_nonblock" in
7569 '')
7570         $cat head.c > try.c
7571         $cat >>try.c <<'EOCP'
7572 main() {
7573 #ifdef O_NONBLOCK
7574         printf("O_NONBLOCK\n");
7575         exit(0);
7576 #endif
7577 #ifdef O_NDELAY
7578         printf("O_NDELAY\n");
7579         exit(0);
7580 #endif
7581 #ifdef FNDELAY
7582         printf("FNDELAY\n");
7583         exit(0);
7584 #endif
7585         exit(0);
7586 }
7587 EOCP
7588         set try
7589         if eval $compile_ok; then
7590                 o_nonblock=`./try`
7591                 case "$o_nonblock" in
7592                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7593                 *) echo "Seems like we can use $o_nonblock.";;
7594                 esac
7595         else
7596                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7597         fi
7598         ;;
7599 *) echo "Using $hint value $o_nonblock.";;
7600 esac
7601 $rm -f try try.* .out core
7602
7603 echo " "
7604 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7605 case "$eagain" in
7606 '')
7607         $cat head.c > try.c
7608         $cat >>try.c <<EOCP
7609 #include <errno.h>
7610 #include <sys/types.h>
7611 #include <signal.h>
7612 #define MY_O_NONBLOCK $o_nonblock
7613 #ifndef errno  /* XXX need better Configure test */
7614 extern int errno;
7615 #endif
7616 $signal_t blech(x) int x; { exit(3); }
7617 EOCP
7618         $cat >> try.c <<'EOCP'
7619 main()
7620 {
7621         int pd[2];
7622         int pu[2];
7623         char buf[1];
7624         char string[100];
7625
7626         pipe(pd);       /* Down: child -> parent */
7627         pipe(pu);       /* Up: parent -> child */
7628         if (0 != fork()) {
7629                 int ret;
7630                 close(pd[1]);   /* Parent reads from pd[0] */
7631                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7632                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7633                         exit(1);
7634                 signal(SIGALRM, blech);
7635                 alarm(5);
7636                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7637                         exit(2);
7638                 sprintf(string, "%d\n", ret);
7639                 write(2, string, strlen(string));
7640                 alarm(0);
7641 #ifdef EAGAIN
7642                 if (errno == EAGAIN) {
7643                         printf("EAGAIN\n");
7644                         goto ok;
7645                 }
7646 #endif
7647 #ifdef EWOULDBLOCK
7648                 if (errno == EWOULDBLOCK)
7649                         printf("EWOULDBLOCK\n");
7650 #endif
7651         ok:
7652                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7653                 sleep(2);                               /* Give it time to close our pipe */
7654                 alarm(5);
7655                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7656                 alarm(0);
7657                 sprintf(string, "%d\n", ret);
7658                 write(3, string, strlen(string));
7659                 exit(0);
7660         }
7661
7662         close(pd[0]);                   /* We write to pd[1] */
7663         close(pu[1]);                   /* We read from pu[0] */
7664         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7665         close(pd[1]);                   /* Pipe pd is now fully closed! */
7666         exit(0);                                /* Bye bye, thank you for playing! */
7667 }
7668 EOCP
7669         set try
7670         if eval $compile_ok; then
7671                 echo "$startsh" >mtry
7672                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7673                 chmod +x mtry
7674                 ./mtry >/dev/null 2>&1
7675                 case $? in
7676                 0) eagain=`$cat try.out`;;
7677                 1) echo "Could not perform non-blocking setting!";;
7678                 2) echo "I did a successful read() for something that was not there!";;
7679                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7680                 *) echo "Something terribly wrong happened during testing.";;
7681                 esac
7682                 rd_nodata=`$cat try.ret`
7683                 echo "A read() system call with no data present returns $rd_nodata."
7684                 case "$rd_nodata" in
7685                 0|-1) ;;
7686                 *)
7687                         echo "(That's peculiar, fixing that to be -1.)"
7688                         rd_nodata=-1
7689                         ;;
7690                 esac
7691                 case "$eagain" in
7692                 '')
7693                         echo "Forcing errno EAGAIN on read() with no data available."
7694                         eagain=EAGAIN
7695                         ;;
7696                 *)
7697                         echo "Your read() sets errno to $eagain when no data is available."
7698                         ;;
7699                 esac
7700                 status=`$cat try.err`
7701                 case "$status" in
7702                 0) echo "And it correctly returns 0 to signal EOF.";;
7703                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7704                 *) echo "However, your read() returns '$status' on EOF??";;
7705                 esac
7706                 val="$define"
7707                 if test "$status" = "$rd_nodata"; then
7708                         echo "WARNING: you can't distinguish between EOF and no data!"
7709                         val="$undef"
7710                 fi
7711         else
7712                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7713                 eagain=EAGAIN
7714         fi
7715         set d_eofnblk
7716         eval $setvar
7717         ;;
7718 *)
7719         echo "Using $hint value $eagain."
7720         echo "Your read() returns $rd_nodata when no data is present."
7721         case "$d_eofnblk" in
7722         "$define") echo "And you can see EOF because read() returns 0.";;
7723         "$undef") echo "But you can't see EOF status from read() returned value.";;
7724         *)
7725                 echo "(Assuming you can't see EOF status from read anyway.)"
7726                 d_eofnblk=$undef
7727                 ;;
7728         esac
7729         ;;
7730 esac
7731 $rm -f try try.* .out core head.c mtry
7732
7733 : see if fchmod exists
7734 set fchmod d_fchmod
7735 eval $inlibc
7736
7737 : see if fchown exists
7738 set fchown d_fchown
7739 eval $inlibc
7740
7741 : see if this is an fcntl system
7742 set fcntl d_fcntl
7743 eval $inlibc
7744
7745 : see if sys/select.h has to be included
7746 set sys/select.h i_sysselct
7747 eval $inhdr
7748
7749 : see if we should include time.h, sys/time.h, or both
7750 echo " "
7751 if test "X$timeincl" = X; then
7752         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7753         $echo $n "I'm now running the test program...$c"
7754         $cat >try.c <<'EOCP'
7755 #include <sys/types.h>
7756 #ifdef I_TIME
7757 #include <time.h>
7758 #endif
7759 #ifdef I_SYSTIME
7760 #ifdef SYSTIMEKERNEL
7761 #define KERNEL
7762 #endif
7763 #include <sys/time.h>
7764 #endif
7765 #ifdef I_SYSSELECT
7766 #include <sys/select.h>
7767 #endif
7768 main()
7769 {
7770         struct tm foo;
7771 #ifdef S_TIMEVAL
7772         struct timeval bar;
7773 #endif
7774 #ifdef S_TIMEZONE
7775         struct timezone tzp;
7776 #endif
7777         if (foo.tm_sec == foo.tm_sec)
7778                 exit(0);
7779 #ifdef S_TIMEVAL
7780         if (bar.tv_sec == bar.tv_sec)
7781                 exit(0);
7782 #endif
7783         exit(1);
7784 }
7785 EOCP
7786         flags=''
7787         for s_timezone in '-DS_TIMEZONE' ''; do
7788         sysselect=''
7789         for s_timeval in '-DS_TIMEVAL' ''; do
7790         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7791         for i_time in '' '-DI_TIME'; do
7792         for i_systime in '-DI_SYSTIME' ''; do
7793                 case "$flags" in
7794                 '') $echo $n ".$c"
7795                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7796                         if eval $compile; then
7797                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7798                                 shift
7799                                 flags="$*"
7800                                 echo " "
7801                                 $echo $n "Succeeded with $flags$c"
7802                         fi
7803                         ;;
7804                 esac
7805         done
7806         done
7807         done
7808         done
7809         done
7810         timeincl=''
7811         echo " "
7812         case "$flags" in
7813         *SYSTIMEKERNEL*) i_systimek="$define"
7814                 timeincl=`./findhdr sys/time.h`
7815                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7816         *) i_systimek="$undef";;
7817         esac
7818         case "$flags" in
7819         *I_TIME*) i_time="$define"
7820                 timeincl=`./findhdr time.h`" $timeincl"
7821                 echo "We'll include <time.h>." >&4;;
7822         *) i_time="$undef";;
7823         esac
7824         case "$flags" in
7825         *I_SYSTIME*) i_systime="$define"
7826                 timeincl=`./findhdr sys/time.h`" $timeincl"
7827                 echo "We'll include <sys/time.h>." >&4;;
7828         *) i_systime="$undef";;
7829         esac
7830         $rm -f try.c try
7831 fi
7832
7833 : check for fd_set items
7834 $cat <<EOM
7835
7836 Checking to see how well your C compiler handles fd_set and friends ...
7837 EOM
7838 $cat >fd_set.c <<EOCP
7839 #$i_systime I_SYS_TIME
7840 #$i_sysselct I_SYS_SELECT
7841 #$d_socket HAS_SOCKET
7842 #include <sys/types.h>
7843 #ifdef HAS_SOCKET
7844 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7845 #endif
7846 #ifdef I_SYS_TIME
7847 #include <sys/time.h>
7848 #endif
7849 #ifdef I_SYS_SELECT
7850 #include <sys/select.h>
7851 #endif
7852 main() {
7853         fd_set fds;
7854
7855 #ifdef TRYBITS
7856         if(fds.fds_bits);
7857 #endif
7858
7859 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7860         exit(0);
7861 #else
7862         exit(1);
7863 #endif
7864 }
7865 EOCP
7866 set fd_set -DTRYBITS
7867 if eval $compile; then
7868         d_fds_bits="$define"
7869         d_fd_set="$define"
7870         echo "Well, your system knows about the normal fd_set typedef..." >&4
7871         if ./fd_set; then
7872                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7873                 d_fd_macros="$define"
7874         else
7875                 $cat >&4 <<'EOM'
7876 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7877 EOM
7878                 d_fd_macros="$undef"
7879         fi
7880 else
7881         $cat <<'EOM'
7882 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7883 EOM
7884         set fd_set
7885         if eval $compile; then
7886                 d_fds_bits="$undef"
7887                 d_fd_set="$define"
7888                 echo "Well, your system has some sort of fd_set available..." >&4
7889                 if ./fd_set; then
7890                         echo "and you have the normal fd_set macros." >&4
7891                         d_fd_macros="$define"
7892                 else
7893                         $cat <<'EOM'
7894 but not the normal fd_set macros!  Gross!  More work for me...
7895 EOM
7896                         d_fd_macros="$undef"
7897                 fi
7898         else
7899         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7900                 d_fd_set="$undef"
7901                 d_fds_bits="$undef"
7902                 d_fd_macros="$undef"
7903         fi
7904 fi
7905 $rm -f fd_set*
7906
7907 : see if fgetpos exists
7908 set fgetpos d_fgetpos
7909 eval $inlibc
7910
7911
7912 if $test X"$use64bits" = X"$define"; then
7913         : see if fgetpos64 exists
7914         set fgetpos64 d_fgetpos64
7915         eval $inlibc
7916
7917         : see if fopen64 exists
7918         set freopen64 d_fopen64
7919         eval $inlibc
7920
7921         : see if freopen64 exists
7922         set freopen64 d_freopen64
7923         eval $inlibc
7924
7925         : see if fseek64 exists
7926         set fseek64 d_fseek64
7927         eval $inlibc
7928
7929         : see if fseeko64 exists
7930         set fseeko64 d_fseeko64
7931         eval $inlibc
7932
7933         : see if fsetpos64 exists
7934         set fsetpos64 d_fsetpos64
7935         eval $inlibc
7936
7937         : see if ftell64 exists
7938         set ftell64 d_ftell64
7939         eval $inlibc
7940
7941         : see if ftello64 exists
7942         set ftello64 d_ftello64
7943         eval $inlibc
7944
7945         : see if tmpfile64 exists
7946         set tmpfile64 d_tmpfile64
7947         eval $inlibc
7948 else
7949         val="$undef"
7950         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7951         do
7952                 set $xxx
7953                 eval $setvar
7954         done
7955 fi
7956
7957 : see if flock exists
7958 set flock d_flock
7959 eval $inlibc
7960
7961 : see if fork exists
7962 set fork d_fork
7963 eval $inlibc
7964
7965 : see if pathconf exists
7966 set pathconf d_pathconf
7967 eval $inlibc
7968
7969 : see if fpathconf exists
7970 set fpathconf d_fpathconf
7971 eval $inlibc
7972
7973 : see if fseeko exists
7974 set fseeko d_fseeko
7975 eval $inlibc
7976
7977 : see if fsetpos exists
7978 set fsetpos d_fsetpos
7979 eval $inlibc
7980
7981 : see if this is a sys/mount.h system
7982 set sys/mount.h i_sysmount
7983 eval $inhdr
7984
7985
7986 : see if statfs exists
7987 set statfs d_statfs
7988 eval $inlibc
7989
7990 : see if fstatfs exists
7991 set fstatfs d_fstatfs
7992 eval $inlibc
7993
7994 : see if statfs knows about mount flags
7995 set d_statfsflags statfs f_flags $i_sysmount sys/mount.h
7996 eval $hasfield
7997
7998
7999 : see if statvfs exists
8000 set statvfs d_statvfs
8001 eval $inlibc
8002
8003 : see if fstatvfs exists
8004 set fstatvfs d_fstatvfs
8005 eval $inlibc
8006
8007
8008 : see if ftello exists
8009 set ftello d_ftello
8010 eval $inlibc
8011
8012 : see if getgrent exists
8013 set getgrent d_getgrent
8014 eval $inlibc
8015
8016 : see if gethostbyaddr exists
8017 set gethostbyaddr d_gethbyaddr
8018 eval $inlibc
8019
8020 : see if gethostbyname exists
8021 set gethostbyname d_gethbyname
8022 eval $inlibc
8023
8024 : see if gethostent exists
8025 set gethostent d_gethent
8026 eval $inlibc
8027
8028 : see how we will look up host name
8029 echo " "
8030 if false; then
8031         : dummy stub to allow use of elif
8032 elif set gethostname val -f d_gethname; eval $csym; $val; then
8033         echo 'gethostname() found.' >&4
8034         d_gethname="$define"
8035         call=gethostname
8036 elif set uname val -f d_uname; eval $csym; $val; then
8037         if ./xenix; then
8038                 $cat <<'EOM'
8039 uname() was found, but you're running xenix, and older versions of xenix
8040 have a broken uname(). If you don't really know whether your xenix is old
8041 enough to have a broken system call, use the default answer.
8042
8043 EOM
8044                 dflt=y
8045                 case "$d_uname" in
8046                 "$define") dflt=n;;
8047                 esac
8048                 rp='Is your uname() broken?'
8049                 . ./myread
8050                 case "$ans" in
8051                 n*) d_uname="$define"; call=uname;;
8052                 esac
8053         else
8054                 echo 'uname() found.' >&4
8055                 d_uname="$define"
8056                 call=uname
8057         fi
8058 fi
8059 case "$d_gethname" in
8060 '') d_gethname="$undef";;
8061 esac
8062 case "$d_uname" in
8063 '') d_uname="$undef";;
8064 esac
8065 case "$d_uname$d_gethname" in
8066 *define*)
8067         dflt=n
8068         cat <<EOM
8069  
8070 Every now and then someone has a $call() that lies about the hostname
8071 but can't be fixed for political or economic reasons.  If you wish, I can
8072 pretend $call() isn't there and maybe compute hostname at run-time
8073 thanks to the '$phostname' command.
8074
8075 EOM
8076         rp="Shall I ignore $call() from now on?"
8077         . ./myread
8078         case "$ans" in
8079         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8080         esac;;
8081 esac
8082 case "$phostname" in
8083 '') aphostname='';;
8084 *) case "$aphostname" in
8085         /*) ;;
8086         *) set X $phostname
8087                 shift
8088                 file=$1
8089                 shift
8090                 file=`./loc $file $file $pth`
8091                 aphostname=`echo $file $*`
8092                 ;;
8093         esac
8094         ;;
8095 esac
8096 case "$d_uname$d_gethname" in
8097 *define*) ;;
8098 *)
8099         case "$phostname" in
8100         '')
8101                 echo "There will be no way for $package to get your hostname." >&4;;
8102         *)
8103         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8104                 ;;
8105         esac;;
8106 esac
8107 case "$d_phostname" in
8108 '') d_phostname="$undef";;
8109 esac
8110
8111 : see if this is a netdb.h system
8112 set netdb.h i_netdb
8113 eval $inhdr
8114
8115 : see if prototypes for various gethostxxx netdb.h functions are available
8116 echo " "
8117 set d_gethostprotos gethostent $i_netdb netdb.h
8118 eval $hasproto
8119
8120 : see if getlogin exists
8121 set getlogin d_getlogin
8122 eval $inlibc
8123
8124 : see if getnetbyaddr exists
8125 set getnetbyaddr d_getnbyaddr
8126 eval $inlibc
8127
8128 : see if getnetbyname exists
8129 set getnetbyname d_getnbyname
8130 eval $inlibc
8131
8132 : see if getnetent exists
8133 set getnetent d_getnent
8134 eval $inlibc
8135
8136 : see if prototypes for various getnetxxx netdb.h functions are available
8137 echo " "
8138 set d_getnetprotos getnetent $i_netdb netdb.h
8139 eval $hasproto
8140
8141
8142 : see if getprotobyname exists
8143 set getprotobyname d_getpbyname
8144 eval $inlibc
8145
8146 : see if getprotobynumber exists
8147 set getprotobynumber d_getpbynumber
8148 eval $inlibc
8149
8150 : see if getprotoent exists
8151 set getprotoent d_getpent
8152 eval $inlibc
8153
8154 : see if getpgid exists
8155 set getpgid d_getpgid
8156 eval $inlibc
8157
8158 : see if getpgrp2 exists
8159 set getpgrp2 d_getpgrp2
8160 eval $inlibc
8161
8162 : see if getppid exists
8163 set getppid d_getppid
8164 eval $inlibc
8165
8166 : see if getpriority exists
8167 set getpriority d_getprior
8168 eval $inlibc
8169
8170 : see if prototypes for various getprotoxxx netdb.h functions are available
8171 echo " "
8172 set d_getprotoprotos getprotoent $i_netdb netdb.h
8173 eval $hasproto
8174
8175 : see if getpwent exists
8176 set getpwent d_getpwent
8177 eval $inlibc
8178
8179
8180 : see if getservbyname exists
8181 set getservbyname d_getsbyname
8182 eval $inlibc
8183
8184 : see if getservbyport exists
8185 set getservbyport d_getsbyport
8186 eval $inlibc
8187
8188 : see if getservent exists
8189 set getservent d_getsent
8190 eval $inlibc
8191
8192 : see if prototypes for various getservxxx netdb.h functions are available
8193 echo " "
8194 set d_getservprotos getservent $i_netdb netdb.h
8195 eval $hasproto
8196
8197 : see if gettimeofday or ftime exists
8198 set gettimeofday d_gettimeod
8199 eval $inlibc
8200 case "$d_gettimeod" in
8201 "$undef")
8202         set ftime d_ftime 
8203         eval $inlibc
8204         ;;
8205 *)
8206         val="$undef"; set d_ftime; eval $setvar
8207         ;;
8208 esac
8209 case "$d_gettimeod$d_ftime" in
8210 "$undef$undef")
8211         echo " "
8212         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8213         ;;
8214 esac
8215
8216 : see if this is an grp system
8217 set grp.h i_grp
8218 eval $inhdr
8219
8220 case "$i_grp" in
8221 $define)
8222         xxx=`./findhdr grp.h`
8223         $cppstdin $cppflags $cppminus < $xxx >$$.h
8224
8225         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8226                 val="$define"
8227         else
8228                 val="$undef"
8229         fi
8230         set d_grpasswd
8231         eval $setvar
8232
8233         $rm -f $$.h
8234         ;;
8235 *)
8236         val="$undef";
8237         set d_grpasswd; eval $setvar
8238         ;;
8239 esac
8240
8241 : see if this is a netinet/in.h or sys/in.h system
8242 set netinet/in.h i_niin sys/in.h i_sysin
8243 eval $inhdr
8244
8245 : see if arpa/inet.h has to be included
8246 set arpa/inet.h i_arpainet
8247 eval $inhdr
8248
8249 : see if htonl --and friends-- exists
8250 val=''
8251 set htonl val
8252 eval $inlibc
8253
8254 : Maybe they are macros.
8255 case "$val" in
8256 $undef)
8257         $cat >htonl.c <<EOM
8258 #include <stdio.h>
8259 #include <sys/types.h>
8260 #$i_niin I_NETINET_IN
8261 #$i_sysin I_SYS_IN
8262 #$i_arpainet I_ARPA_INET
8263 #ifdef I_NETINET_IN
8264 #include <netinet/in.h>
8265 #endif
8266 #ifdef I_SYS_IN
8267 #include <sys/in.h>
8268 #endif
8269 #ifdef I_ARPA_INET
8270 #include <arpa/inet.h>
8271 #endif
8272 #ifdef htonl
8273 printf("Defined as a macro.");
8274 #endif
8275 EOM
8276         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8277         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8278                 val="$define"
8279                 echo "But it seems to be defined as a macro." >&4
8280         fi
8281         $rm -f htonl.?
8282         ;;
8283 esac
8284 set d_htonl
8285 eval $setvar
8286
8287 : see which of string.h or strings.h is needed
8288 echo " "
8289 strings=`./findhdr string.h`
8290 if $test "$strings" && $test -r "$strings"; then
8291         echo "Using <string.h> instead of <strings.h>." >&4
8292         val="$define"
8293 else
8294         val="$undef"
8295         strings=`./findhdr strings.h`
8296         if $test "$strings" && $test -r "$strings"; then
8297                 echo "Using <strings.h> instead of <string.h>." >&4
8298         else
8299                 echo "No string header found -- You'll surely have problems." >&4
8300         fi
8301 fi
8302 set i_string
8303 eval $setvar
8304 case "$i_string" in
8305 "$undef") strings=`./findhdr strings.h`;;
8306 *)        strings=`./findhdr string.h`;;
8307 esac
8308
8309 : index or strchr
8310 echo " "
8311 if set index val -f; eval $csym; $val; then
8312         if set strchr val -f d_strchr; eval $csym; $val; then
8313                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8314                         val="$define"
8315                         vali="$undef"
8316                         echo "strchr() found." >&4
8317                 else
8318                         val="$undef"
8319                         vali="$define"
8320                         echo "index() found." >&4
8321                 fi
8322         else
8323                 val="$undef"
8324                 vali="$define"
8325                 echo "index() found." >&4
8326         fi
8327 else
8328         if set strchr val -f d_strchr; eval $csym; $val; then
8329                 val="$define"
8330                 vali="$undef"
8331                 echo "strchr() found." >&4
8332         else
8333                 echo "No index() or strchr() found!" >&4
8334                 val="$undef"
8335                 vali="$undef"
8336         fi
8337 fi
8338 set d_strchr; eval $setvar
8339 val="$vali"
8340 set d_index; eval $setvar
8341
8342 : check whether inet_aton exists
8343 set inet_aton d_inetaton
8344 eval $inlibc
8345
8346 : see if inttypes.h is available
8347 : we want a real compile instead of Inhdr because some systems
8348 : have an inttypes.h which includes non-existent headers
8349 echo " "
8350 $cat >try.c <<EOCP
8351 #include <inttypes.h>
8352 int main() {
8353         static int32_t foo32 = 0x12345678;
8354 }
8355 EOCP
8356 set try
8357 if eval $compile; then
8358         echo "<inttypes.h> found." >&4
8359         val="$define"
8360 else
8361         echo "<inttypes.h> NOT found." >&4
8362         val="$undef"
8363 fi
8364 $rm -f try.c try
8365 set i_inttypes
8366 eval $setvar
8367
8368 : check for int64_t
8369 case "$use64bits" in
8370 "$define" )
8371         echo " "
8372         echo $n "Checking to see if your system supports int64_t...$c" >&4
8373         $cat >try.c <<EOCP
8374 #include <sys/types.h>
8375 #$i_inttypes I_INTTYPES
8376 #ifdef I_INTTYPES
8377 #include <inttypes.h>
8378 #endif
8379 int64_t foo() { int64_t x; x = 7; return x; }
8380 EOCP
8381         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8382                 val="$define"
8383                 echo " Yup, it does." >&4
8384         else
8385                 val="$undef"
8386                 echo " Nope, it doesn't." >&4
8387         fi
8388         $rm -f try.*
8389         ;;
8390 *)      val="$undef"
8391         ;;
8392 esac
8393 set d_int64t
8394 eval $setvar
8395
8396
8397 : Look for isascii
8398 echo " "
8399 $cat >isascii.c <<'EOCP'
8400 #include <stdio.h>
8401 #include <ctype.h>
8402 main() {
8403         int c = 'A';
8404         if (isascii(c))
8405                 exit(0);
8406         else
8407                 exit(1);
8408 }
8409 EOCP
8410 set isascii
8411 if eval $compile; then
8412         echo "isascii() found." >&4
8413         val="$define"
8414 else
8415         echo "isascii() NOT found." >&4
8416         val="$undef"
8417 fi
8418 set d_isascii
8419 eval $setvar
8420 $rm -f isascii*
8421
8422 : see if killpg exists
8423 set killpg d_killpg
8424 eval $inlibc
8425
8426 : see if lchown exists
8427 echo " "
8428 $cat > try.c <<'EOCP'
8429 /* System header to define __stub macros and hopefully few prototypes,
8430     which can conflict with char lchown(); below.  */
8431 #include <assert.h>
8432 /* Override any gcc2 internal prototype to avoid an error.  */
8433 /* We use char because int might match the return type of a gcc2
8434    builtin and then its argument prototype would still apply.  */
8435 char lchown();
8436 int main() {
8437     /*  The GNU C library defines this for functions which it implements
8438         to always fail with ENOSYS.  Some functions are actually named
8439         something starting with __ and the normal name is an alias.  */
8440 #if defined (__stub_lchown) || defined (__stub___lchown)
8441 choke me
8442 #else
8443 lchown();
8444 #endif
8445 ; return 0; }
8446 EOCP
8447 set try
8448 if eval $compile; then
8449     $echo "lchown() found." >&4
8450     val="$define"
8451 else
8452     $echo "lchown() NOT found." >&4
8453     val="$undef"
8454 fi
8455 set d_lchown
8456 eval $setvar
8457
8458 : see if link exists
8459 set link d_link
8460 eval $inlibc
8461
8462 : see if localeconv exists
8463 set localeconv d_locconv
8464 eval $inlibc
8465
8466 : see if lockf exists
8467 set lockf d_lockf
8468 eval $inlibc
8469
8470 : check for length of double
8471 echo " "
8472 case "$doublesize" in
8473 '')
8474         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8475         $cat >try.c <<'EOCP'
8476 #include <stdio.h>
8477 main()
8478 {
8479         printf("%d\n", sizeof(double));
8480 }
8481 EOCP
8482         set try
8483         if eval $compile_ok; then
8484                 doublesize=`./try`
8485                 $echo " $doublesize bytes." >&4
8486         else
8487                 dflt='8'
8488                 echo "(I can't seem to compile the test program.  Guessing...)"
8489                 rp="What is the size of a double precision number (in bytes)?"
8490                 . ./myread
8491                 doublesize="$ans"
8492         fi
8493         ;;
8494 esac
8495 $rm -f try.c try
8496
8497 : check for long doubles
8498 echo " "
8499 echo $n "Checking to see if your system supports long doubles...$c" >&4
8500 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8501 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8502         val="$define"
8503         echo " Yup, it does." >&4
8504 else
8505         val="$undef"
8506         echo " Nope, it doesn't." >&4
8507 fi
8508 $rm try.*
8509 set d_longdbl
8510 eval $setvar
8511
8512 : check for length of long double
8513 case "${d_longdbl}${longdblsize}" in
8514 $define)
8515         echo " "
8516         $echo $n "Checking to see how big your long doubles are...$c" >&4
8517         $cat >try.c <<'EOCP'
8518 #include <stdio.h>
8519 int main()
8520 {
8521         printf("%d\n", sizeof(long double));
8522 }
8523 EOCP
8524         set try
8525         if eval $compile; then
8526                 longdblsize=`./try`
8527                 $echo " $longdblsize bytes." >&4
8528         else
8529                 dflt='8'
8530                 echo " "
8531                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8532                 rp="What is the size of a long double (in bytes)?"
8533                 . ./myread
8534                 longdblsize="$ans"
8535         fi
8536         if $test "X$doublesize" = "X$longdblsize"; then
8537                 echo "(That isn't any different from an ordinary double.)"
8538         fi      
8539         ;;
8540 esac
8541 $rm -f try.c try
8542
8543 : check for long long
8544 echo " "
8545 echo $n "Checking to see if your system supports long long...$c" >&4
8546 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8547 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8548         val="$define"
8549         echo " Yup, it does." >&4
8550 else
8551         val="$undef"
8552         echo " Nope, it doesn't." >&4
8553 fi
8554 $rm try.*
8555 set d_longlong
8556 eval $setvar
8557
8558 : check for length of long long
8559 case "${d_longlong}${longlongsize}" in
8560 $define)
8561         echo " "
8562         $echo $n "Checking to see how big your long longs are...$c" >&4
8563         $cat >try.c <<'EOCP'
8564 #include <stdio.h>
8565 int main()
8566 {
8567         printf("%d\n", sizeof(long long));
8568 }
8569 EOCP
8570         set try
8571         if eval $compile_ok; then
8572                 longlongsize=`./try`
8573                 $echo " $longlongsize bytes." >&4
8574         else
8575                 dflt='8'
8576                 echo " "
8577                 echo "(I can't seem to compile the test program.  Guessing...)"
8578                 rp="What is the size of a long long (in bytes)?"
8579                 . ./myread
8580                 longlongsize="$ans"
8581         fi
8582         if $test "X$longsize" = "X$longlongsize"; then
8583                 echo "(That isn't any different from an ordinary long.)"
8584         fi      
8585         ;;
8586 esac
8587 $rm -f try.c try
8588
8589 : see if lstat exists
8590 set lstat d_lstat
8591 eval $inlibc
8592
8593 : see if mblen exists
8594 set mblen d_mblen
8595 eval $inlibc
8596
8597 : see if mbstowcs exists
8598 set mbstowcs d_mbstowcs
8599 eval $inlibc
8600
8601 : see if mbtowc exists
8602 set mbtowc d_mbtowc
8603 eval $inlibc
8604
8605 : see if memcmp exists
8606 set memcmp d_memcmp
8607 eval $inlibc
8608
8609 : see if memcpy exists
8610 set memcpy d_memcpy
8611 eval $inlibc
8612
8613 : see if memmove exists
8614 set memmove d_memmove
8615 eval $inlibc
8616
8617 : see if memset exists
8618 set memset d_memset
8619 eval $inlibc
8620
8621 : see if mkdir exists
8622 set mkdir d_mkdir
8623 eval $inlibc
8624
8625 : see if mkfifo exists
8626 set mkfifo d_mkfifo
8627 eval $inlibc
8628
8629 : see if mktime exists
8630 set mktime d_mktime
8631 eval $inlibc
8632
8633 : see if msgctl exists
8634 set msgctl d_msgctl
8635 eval $inlibc
8636
8637 : see if msgget exists
8638 set msgget d_msgget
8639 eval $inlibc
8640
8641 : see if msgsnd exists
8642 set msgsnd d_msgsnd
8643 eval $inlibc
8644
8645 : see if msgrcv exists
8646 set msgrcv d_msgrcv
8647 eval $inlibc
8648
8649 : see how much of the 'msg*(2)' library is present.
8650 h_msg=true
8651 echo " "
8652 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8653 *"$undef"*) h_msg=false;;
8654 esac
8655 case "$osname" in
8656 freebsd)
8657     case "`ipcs 2>&1`" in
8658     "SVID messages"*"not configured"*)
8659         echo "Your $osname does not have the msg*(2) configured." >&4
8660         h_msg=false
8661         val="$undef"
8662         set msgctl d_msgctl
8663         eval $setvar
8664         set msgget d_msgget
8665         eval $setvar
8666         set msgsnd d_msgsnd
8667         eval $setvar
8668         set msgrcv d_msgrcv
8669         eval $setvar
8670         ;;
8671     esac
8672     ;;
8673 esac
8674 : we could also check for sys/ipc.h ...
8675 if $h_msg && $test `./findhdr sys/msg.h`; then
8676         echo "You have the full msg*(2) library." >&4
8677         val="$define"
8678 else
8679         echo "You don't have the full msg*(2) library." >&4
8680         val="$undef"
8681 fi
8682 set d_msg
8683 eval $setvar
8684
8685 : see if nice exists
8686 set nice d_nice
8687 eval $inlibc
8688
8689 : how to create joinable pthreads
8690 if test "X$usethreads" = "X$define"; then
8691         echo " "
8692         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8693         $cat >try.c <<'EOCP'
8694 #include <pthread.h>
8695 int main() {
8696     int detachstate = JOINABLE;
8697 }
8698 EOCP
8699         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8700         if eval $compile; then
8701                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8702                 val="$undef" # Yes, undef.
8703                 set d_old_pthread_create_joinable
8704                 eval $setvar
8705                 val=""
8706                 set old_pthread_create_joinable
8707                 eval $setvar
8708         else
8709                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8710                 if eval $compile; then
8711                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8712                         val="$define"
8713                         set d_old_pthread_create_joinable
8714                         eval $setvar
8715                         val=PTHREAD_CREATE_UNDETACHED
8716                         set old_pthread_create_joinable
8717                         eval $setvar
8718                 else            
8719                         set try -DJOINABLE=__UNDETACHED
8720                         if eval $compile; then
8721                                 echo "You seem to use __UNDETACHED." >&2
8722                                 val="$define"
8723                                 set d_old_pthread_create_joinable
8724                                 eval $setvar
8725                                 val=__UNDETACHED
8726                                 set old_pthread_create_joinable
8727                                 eval $setvar
8728                         else
8729                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
8730                                 val="$define"
8731                                 set d_old_pthread_create_joinable
8732                                 eval $setvar
8733                                 val=0
8734                                 set old_pthread_create_joinable
8735                                 eval $setvar
8736                         fi
8737                 fi
8738         fi
8739         $rm -f try try.*
8740 else
8741     d_old_pthread_create_joinable="$undef"
8742     old_pthread_create_joinable=""
8743 fi
8744
8745 : see if pause exists
8746 set pause d_pause
8747 eval $inlibc
8748
8749 : see if pipe exists
8750 set pipe d_pipe
8751 eval $inlibc
8752
8753 : see if poll exists
8754 set poll d_poll
8755 eval $inlibc
8756
8757
8758 : see whether the various POSIXish _yields exist
8759 $cat >try.c <<EOP
8760 #include <pthread.h>
8761 #include <stdio.h>
8762 int main() {
8763 #ifdef SCHED_YIELD
8764         sched_yield();
8765 #else
8766 #ifdef PTHREAD_YIELD
8767         pthread_yield();
8768 #else
8769 #ifdef PTHREAD_YIELD_NULL
8770         pthread_yield(NULL);
8771 #endif
8772 #endif
8773 #endif
8774 }
8775 EOP
8776 : see if sched_yield exists
8777 set try -DSCHED_YIELD
8778 if eval $compile; then
8779     val="$define"
8780     sched_yield='sched_yield()'
8781 else
8782     val="$undef"
8783 fi
8784 case "$usethreads" in
8785 $define)
8786         case "$val" in
8787         $define) echo 'sched_yield() found.' >&4        ;;
8788         *)       echo 'sched_yield() NOT found.' >&4    ;;
8789         esac
8790 esac
8791 set d_sched_yield
8792 eval $setvar
8793
8794 : see if pthread_yield exists
8795 set try -DPTHREAD_YIELD
8796 if eval $compile; then
8797     val="$define"
8798     case "$sched_yield" in
8799     '') sched_yield='pthread_yield()' ;;
8800     esac
8801 else
8802     set try -DPTHREAD_YIELD_NULL
8803     if eval $compile; then
8804         val="$define"
8805         case "$sched_yield" in
8806         '') sched_yield='pthread_yield(NULL)' ;;
8807         esac
8808     else
8809         val="$undef"
8810     fi
8811 fi
8812 case "$usethreads" in
8813 $define)
8814         case "$val" in
8815         $define) echo 'pthread_yield() found.' >&4      ;;
8816         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8817         esac
8818         ;;
8819 esac
8820 set d_pthread_yield
8821 eval $setvar
8822
8823 case "$sched_yield" in
8824 '') sched_yield=undef ;;
8825 esac
8826
8827 $rm -f try try.*
8828
8829 : see if this is a pwd.h system
8830 set pwd.h i_pwd
8831 eval $inhdr
8832
8833 case "$i_pwd" in
8834 $define)
8835         xxx=`./findhdr pwd.h`
8836         $cppstdin $cppflags $cppminus < $xxx >$$.h
8837
8838         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8839                 val="$define"
8840         else
8841                 val="$undef"
8842         fi
8843         set d_pwquota
8844         eval $setvar
8845
8846         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8847                 val="$define"
8848         else
8849                 val="$undef"
8850         fi
8851         set d_pwage
8852         eval $setvar
8853
8854         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8855                 val="$define"
8856         else
8857                 val="$undef"
8858         fi
8859         set d_pwchange
8860         eval $setvar
8861
8862         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8863                 val="$define"
8864         else
8865                 val="$undef"
8866         fi
8867         set d_pwclass
8868         eval $setvar
8869
8870         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8871                 val="$define"
8872         else
8873                 val="$undef"
8874         fi
8875         set d_pwexpire
8876         eval $setvar
8877
8878         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8879                 val="$define"
8880         else
8881                 val="$undef"
8882         fi
8883         set d_pwcomment
8884         eval $setvar
8885
8886         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8887                 val="$define"
8888         else
8889                 val="$undef"
8890         fi
8891         set d_pwgecos
8892         eval $setvar
8893
8894         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8895                 val="$define"
8896         else
8897                 val="$undef"
8898         fi
8899         set d_pwpasswd
8900         eval $setvar
8901
8902         $rm -f $$.h
8903         ;;
8904 *)
8905         val="$undef"; 
8906         set d_pwquota; eval $setvar
8907         set d_pwage; eval $setvar
8908         set d_pwchange; eval $setvar
8909         set d_pwclass; eval $setvar
8910         set d_pwexpire; eval $setvar
8911         set d_pwcomment; eval $setvar
8912         set d_pwgecos; eval $setvar
8913         set d_pwpasswd; eval $setvar
8914         ;;
8915 esac
8916
8917 : see if readdir and friends exist
8918 set readdir d_readdir
8919 eval $inlibc
8920 set seekdir d_seekdir
8921 eval $inlibc
8922 set telldir d_telldir
8923 eval $inlibc
8924 set rewinddir d_rewinddir
8925 eval $inlibc
8926
8927 : see if readlink exists
8928 set readlink d_readlink
8929 eval $inlibc
8930
8931 : see if readv exists
8932 set readv d_readv
8933 eval $inlibc
8934
8935 : see if rename exists
8936 set rename d_rename
8937 eval $inlibc
8938
8939 : see if rmdir exists
8940 set rmdir d_rmdir
8941 eval $inlibc
8942
8943 : see if memory.h is available.
8944 val=''
8945 set memory.h val
8946 eval $inhdr
8947
8948 : See if it conflicts with string.h
8949 case "$val" in
8950 $define)
8951         case "$strings" in
8952         '') ;;
8953         *)
8954                 $cppstdin $cppflags $cppminus < $strings > mem.h
8955                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8956                         echo " "
8957                         echo "We won't be including <memory.h>."
8958                         val="$undef"
8959                 fi
8960                 $rm -f mem.h
8961                 ;;
8962         esac
8963 esac
8964 set i_memory
8965 eval $setvar
8966
8967 : can bcopy handle overlapping blocks?
8968 val="$undef"
8969 case "$d_bcopy" in
8970 "$define")
8971         echo " "
8972         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8973         $cat >try.c <<EOCP
8974 #$i_memory I_MEMORY
8975 #$i_stdlib I_STDLIB
8976 #$i_string I_STRING
8977 #$i_unistd I_UNISTD
8978 EOCP
8979         $cat >>try.c <<'EOCP'
8980 #include <stdio.h>
8981 #ifdef I_MEMORY
8982 #  include <memory.h>
8983 #endif
8984 #ifdef I_STDLIB
8985 #  include <stdlib.h>
8986 #endif
8987 #ifdef I_STRING
8988 #  include <string.h>
8989 #else
8990 #  include <strings.h>
8991 #endif
8992 #ifdef I_UNISTD
8993 #  include <unistd.h>  /* Needed for NetBSD */
8994 #endif
8995 main()
8996 {
8997 char buf[128], abc[128];
8998 char *b;
8999 int len;
9000 int off;
9001 int align;
9002
9003 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9004
9005 for (align = 7; align >= 0; align--) {
9006         for (len = 36; len; len--) {
9007                 b = buf+align;
9008                 bcopy(abc, b, len);
9009                 for (off = 1; off <= len; off++) {
9010                         bcopy(b, b+off, len);
9011                         bcopy(b+off, b, len);
9012                         if (bcmp(b, abc, len))
9013                                 exit(1);
9014                 }
9015         }
9016 }
9017 exit(0);
9018 }
9019 EOCP
9020         set try
9021         if eval $compile_ok; then
9022                 if ./try 2>/dev/null; then
9023                         echo "Yes, it can."
9024                         val="$define"
9025                 else
9026                         echo "It can't, sorry."
9027                         case "$d_memmove" in
9028                         "$define") echo "But that's Ok since you have memmove()." ;;
9029                         esac
9030                 fi
9031         else
9032                 echo "(I can't compile the test program, so we'll assume not...)"
9033                 case "$d_memmove" in
9034                 "$define") echo "But that's Ok since you have memmove()." ;;
9035                 esac
9036         fi
9037         ;;
9038 esac
9039 $rm -f try.* try core
9040 set d_safebcpy
9041 eval $setvar
9042
9043 : can memcpy handle overlapping blocks?
9044 val="$undef"
9045 case "$d_memcpy" in
9046 "$define")
9047         echo " "
9048         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9049         $cat >try.c <<EOCP
9050 #$i_memory I_MEMORY
9051 #$i_stdlib I_STDLIB
9052 #$i_string I_STRING
9053 #$i_unistd I_UNISTD
9054 EOCP
9055         $cat >>try.c <<'EOCP'
9056 #include <stdio.h>
9057 #ifdef I_MEMORY
9058 #  include <memory.h>
9059 #endif
9060 #ifdef I_STDLIB
9061 #  include <stdlib.h>
9062 #endif
9063 #ifdef I_STRING
9064 #  include <string.h>
9065 #else
9066 #  include <strings.h>
9067 #endif
9068 #ifdef I_UNISTD
9069 #  include <unistd.h>  /* Needed for NetBSD */
9070 #endif
9071 main()
9072 {
9073 char buf[128], abc[128];
9074 char *b;
9075 int len;
9076 int off;
9077 int align;
9078
9079 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9080    try to store the string in read-only memory. */
9081 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9082
9083 for (align = 7; align >= 0; align--) {
9084         for (len = 36; len; len--) {
9085                 b = buf+align;
9086                 memcpy(b, abc, len);
9087                 for (off = 1; off <= len; off++) {
9088                         memcpy(b+off, b, len);
9089                         memcpy(b, b+off, len);
9090                         if (memcmp(b, abc, len))
9091                                 exit(1);
9092                 }
9093         }
9094 }
9095 exit(0);
9096 }
9097 EOCP
9098         set try
9099         if eval $compile_ok; then
9100                 if ./try 2>/dev/null; then
9101                         echo "Yes, it can."
9102                         val="$define"
9103                 else
9104                         echo "It can't, sorry."
9105                         case "$d_memmove" in
9106                         "$define") echo "But that's Ok since you have memmove()." ;;
9107                         esac
9108                 fi
9109         else
9110                 echo "(I can't compile the test program, so we'll assume not...)"
9111                 case "$d_memmove" in
9112                 "$define") echo "But that's Ok since you have memmove()." ;;
9113                 esac
9114         fi
9115         ;;
9116 esac
9117 $rm -f try.* try core
9118 set d_safemcpy
9119 eval $setvar
9120
9121 : can memcmp be trusted to compare relative magnitude?
9122 val="$undef"
9123 case "$d_memcmp" in
9124 "$define")
9125         echo " "
9126         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9127         $cat >try.c <<EOCP
9128 #$i_memory I_MEMORY
9129 #$i_stdlib I_STDLIB
9130 #$i_string I_STRING
9131 #$i_unistd I_UNISTD
9132 EOCP
9133         $cat >>try.c <<'EOCP'
9134 #include <stdio.h>
9135 #ifdef I_MEMORY
9136 #  include <memory.h>
9137 #endif
9138 #ifdef I_STDLIB
9139 #  include <stdlib.h>
9140 #endif
9141 #ifdef I_STRING
9142 #  include <string.h>
9143 #else
9144 #  include <strings.h>
9145 #endif
9146 #ifdef I_UNISTD
9147 #  include <unistd.h>  /* Needed for NetBSD */
9148 #endif
9149 main()
9150 {
9151 char a = -1;
9152 char b = 0;
9153 if ((a < b) && memcmp(&a, &b, 1) < 0)
9154         exit(1);
9155 exit(0);
9156 }
9157 EOCP
9158         set try
9159         if eval $compile_ok; then
9160                 if ./try 2>/dev/null; then
9161                         echo "Yes, it can."
9162                         val="$define"
9163                 else
9164                         echo "No, it can't (it uses signed chars)."
9165                 fi
9166         else
9167                 echo "(I can't compile the test program, so we'll assume not...)"
9168         fi
9169         ;;
9170 esac
9171 $rm -f try.* try core
9172 set d_sanemcmp
9173 eval $setvar
9174
9175 : see if select exists
9176 set select d_select
9177 eval $inlibc
9178
9179 : see if semctl exists
9180 set semctl d_semctl
9181 eval $inlibc
9182
9183 : see if semget exists
9184 set semget d_semget
9185 eval $inlibc
9186
9187 : see if semop exists
9188 set semop d_semop
9189 eval $inlibc
9190
9191 : see how much of the 'sem*(2)' library is present.
9192 h_sem=true
9193 echo " "
9194 case "$d_semctl$d_semget$d_semop" in
9195 *"$undef"*) h_sem=false;;
9196 esac
9197 case "$osname" in
9198 freebsd)
9199     case "`ipcs 2>&1`" in
9200     "SVID messages"*"not configured"*)
9201         echo "Your $osname does not have the sem*(2) configured." >&4
9202         h_sem=false
9203         val="$undef"
9204         set semctl d_semctl
9205         eval $setvar
9206         set semget d_semget
9207         eval $setvar
9208         set semop d_semop
9209         eval $setvar
9210         ;;
9211     esac
9212     ;;
9213 esac
9214 : we could also check for sys/ipc.h ...
9215 if $h_sem && $test `./findhdr sys/sem.h`; then
9216         echo "You have the full sem*(2) library." >&4
9217         val="$define"
9218 else
9219         echo "You don't have the full sem*(2) library." >&4
9220         val="$undef"
9221 fi
9222 set d_sem
9223 eval $setvar
9224
9225 : see whether sys/sem.h defines union semun
9226 echo " "
9227 $cat > try.c <<'END'
9228 #include <sys/types.h>
9229 #include <sys/ipc.h>
9230 #include <sys/sem.h>
9231 int main () { union semun semun; semun.buf = 0; }
9232 END
9233 set try
9234 if eval $compile; then
9235     echo "You have union semun in <sys/sem.h>." >&4
9236     val="$define"
9237 else
9238     echo "You do not have union semun in <sys/sem.h>." >&4
9239     val="$undef"
9240 fi
9241 $rm -f try try.c try.h
9242 set d_union_semun
9243 eval $setvar
9244
9245 : see how to do semctl IPC_STAT
9246 case "$d_sem" in
9247 $define)
9248     : see whether semctl IPC_STAT can use union semun
9249     echo " "
9250     $cat > try.h <<END
9251 #ifndef S_IRUSR
9252 #   ifdef S_IREAD
9253 #       define S_IRUSR S_IREAD
9254 #       define S_IWUSR S_IWRITE
9255 #       define S_IXUSR S_IEXEC
9256 #   else
9257 #       define S_IRUSR 0400
9258 #       define S_IWUSR 0200
9259 #       define S_IXUSR 0100
9260 #   endif
9261 #   define S_IRGRP (S_IRUSR>>3)
9262 #   define S_IWGRP (S_IWUSR>>3)
9263 #   define S_IXGRP (S_IXUSR>>3)
9264 #   define S_IROTH (S_IRUSR>>6)
9265 #   define S_IWOTH (S_IWUSR>>6)
9266 #   define S_IXOTH (S_IXUSR>>6)
9267 #endif
9268 #ifndef S_IRWXU
9269 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9270 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9271 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9272 #endif
9273 END
9274
9275     $cat > try.c <<END
9276 #include <sys/types.h>
9277 #include <sys/ipc.h>
9278 #include <sys/sem.h>
9279 #include <sys/stat.h>
9280 #include <stdio.h>
9281 #include <errno.h>
9282 #include "try.h"
9283 #ifndef errno
9284 extern int errno;
9285 #endif
9286 #$d_union_semun HAS_UNION_SEMUN
9287 int main() {
9288     union semun
9289 #ifndef HAS_UNION_SEMUN
9290     {
9291         int val;
9292         struct semid_ds *buf;
9293         unsigned short *array;
9294     }
9295 #endif
9296     arg;
9297     int sem, st;
9298
9299 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9300     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9301     if (sem > -1) {
9302         struct semid_ds argbuf;
9303         arg.buf = &argbuf;
9304 #       ifdef IPC_STAT
9305         st = semctl(sem, 0, IPC_STAT, arg);
9306         if (st == 0)
9307             printf("semun\n");
9308         else
9309 #       endif /* IPC_STAT */
9310             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9311 #       ifdef IPC_RMID
9312         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9313 #       endif /* IPC_RMID */
9314             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9315     } else
9316 #endif /* IPC_PRIVATE && ... */
9317         printf("semget failed: errno = %d\n", errno);
9318   return 0;
9319 }
9320 END
9321     val="$undef"
9322     set try
9323     if eval $compile; then
9324         xxx=`./try`
9325         case "$xxx" in
9326         semun) val="$define" ;;
9327         esac
9328     fi
9329     $rm -f try try.c
9330     set d_semctl_semun
9331     eval $setvar
9332     case "$d_semctl_semun" in
9333     $define)
9334         echo "You can use union semun for semctl IPC_STAT." >&4
9335         also='also'
9336         ;;
9337     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9338         also=''
9339         ;;
9340     esac
9341
9342     : see whether semctl IPC_STAT can use struct semid_ds pointer
9343     $cat > try.c <<'END'
9344 #include <sys/types.h>
9345 #include <sys/ipc.h>
9346 #include <sys/sem.h>
9347 #include <sys/stat.h>
9348 #include "try.h"
9349 #include <stdio.h>
9350 #include <errno.h>
9351 #ifndef errno
9352 extern int errno;
9353 #endif
9354 int main() {
9355     struct semid_ds arg;
9356     int sem, st;
9357
9358 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9359     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9360     if (sem > -1) {
9361 #       ifdef IPC_STAT
9362         st = semctl(sem, 0, IPC_STAT, &arg);
9363         if (st == 0)
9364             printf("semid_ds\n");
9365         else
9366 #       endif /* IPC_STAT */
9367             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9368 #       ifdef IPC_RMID
9369         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9370 #       endif /* IPC_RMID */
9371             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9372     } else
9373 #endif /* IPC_PRIVATE && ... */
9374         printf("semget failed: errno = %d\n", errno);
9375
9376     return 0;
9377 }
9378 END
9379     val="$undef"
9380     set try
9381     if eval $compile; then
9382         xxx=`./try`
9383         case "$xxx" in
9384         semid_ds) val="$define" ;;
9385         esac
9386     fi
9387     $rm -f try try.c
9388     set d_semctl_semid_ds
9389     eval $setvar
9390     case "$d_semctl_semid_ds" in
9391     $define)
9392         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9393         ;;
9394     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9395         ;;
9396     esac
9397     $rm -f try.h
9398     ;;
9399 *)  val="$undef"
9400
9401     # We do not have the full sem*(2) library, so assume we can not
9402     # use either.
9403
9404     set d_semctl_semun
9405     eval $setvar
9406
9407     set d_semctl_semid_ds
9408     eval $setvar
9409     ;;
9410 esac
9411
9412 : see if setegid exists
9413 set setegid d_setegid
9414 eval $inlibc
9415
9416 : see if seteuid exists
9417 set seteuid d_seteuid
9418 eval $inlibc
9419
9420 : see if setgrent exists
9421 set setgrent d_setgrent
9422 eval $inlibc
9423
9424 : see if sethostent exists
9425 set sethostent d_sethent
9426 eval $inlibc
9427
9428 : see if setlinebuf exists
9429 set setlinebuf d_setlinebuf
9430 eval $inlibc
9431
9432 : see if setlocale exists
9433 set setlocale d_setlocale
9434 eval $inlibc
9435
9436 : see if setnetent exists
9437 set setnetent d_setnent
9438 eval $inlibc
9439
9440 : see if setprotoent exists
9441 set setprotoent d_setpent
9442 eval $inlibc
9443
9444 : see if setpgid exists
9445 set setpgid d_setpgid
9446 eval $inlibc
9447
9448 : see if setpgrp2 exists
9449 set setpgrp2 d_setpgrp2
9450 eval $inlibc
9451
9452 : see if setpriority exists
9453 set setpriority d_setprior
9454 eval $inlibc
9455
9456 : see if setpwent exists
9457 set setpwent d_setpwent
9458 eval $inlibc
9459
9460 : see if setregid exists
9461 set setregid d_setregid
9462 eval $inlibc
9463 set setresgid d_setresgid
9464 eval $inlibc
9465
9466 : see if setreuid exists
9467 set setreuid d_setreuid
9468 eval $inlibc
9469 set setresuid d_setresuid
9470 eval $inlibc
9471
9472 : see if setrgid exists
9473 set setrgid d_setrgid
9474 eval $inlibc
9475
9476 : see if setruid exists
9477 set setruid d_setruid
9478 eval $inlibc
9479
9480 : see if setservent exists
9481 set setservent d_setsent
9482 eval $inlibc
9483
9484 : see if setsid exists
9485 set setsid d_setsid
9486 eval $inlibc
9487
9488 : see if setvbuf exists
9489 set setvbuf d_setvbuf
9490 eval $inlibc
9491
9492 : see if sfio.h is available
9493 set sfio.h i_sfio
9494 eval $inhdr
9495
9496
9497 : see if sfio library is available
9498 case "$i_sfio" in
9499 $define)
9500         val=''
9501         set sfreserve val
9502         eval $inlibc
9503         ;;
9504 *)
9505         val="$undef"
9506         ;;
9507 esac
9508 : Ok, but do we want to use it.
9509 case "$val" in
9510 $define)
9511         case "$usesfio" in
9512         true|$define|[yY]*) dflt='y';;
9513         *) dflt='n';;
9514         esac
9515         echo "$package can use the sfio library, but it is experimental."
9516         rp="You seem to have sfio available, do you want to try using it?"
9517         . ./myread
9518         case "$ans" in
9519         y|Y) ;;
9520         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9521                 val="$undef"
9522                 : Remove sfio from list of libraries to use
9523                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9524                 shift
9525                 libs="$*"
9526                 echo "libs = $libs" >&4
9527                 ;;
9528         esac
9529         ;;
9530 *)      case "$usesfio" in
9531         true|$define|[yY]*)
9532                 echo "Sorry, cannot find sfio on this machine" >&4
9533                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9534                 ;;
9535         esac
9536         ;;
9537 esac
9538 set d_sfio
9539 eval $setvar
9540 case "$d_sfio" in
9541 $define) usesfio='true';;
9542 *) usesfio='false';;
9543 esac
9544
9545 : see if shmctl exists
9546 set shmctl d_shmctl
9547 eval $inlibc
9548
9549 : see if shmget exists
9550 set shmget d_shmget
9551 eval $inlibc
9552
9553 : see if shmat exists
9554 set shmat d_shmat
9555 eval $inlibc
9556 : see what shmat returns
9557 case "$d_shmat" in
9558 "$define")
9559         $cat >shmat.c <<'END'
9560 #include <sys/shm.h>
9561 void *shmat();
9562 END
9563         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9564                 shmattype='void *'
9565         else
9566                 shmattype='char *'
9567         fi
9568         echo "and it returns ($shmattype)." >&4
9569         : see if a prototype for shmat is available
9570         xxx=`./findhdr sys/shm.h`
9571         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9572         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9573                 val="$define"
9574         else
9575                 val="$undef"
9576         fi
9577         $rm -f shmat.[co]
9578         ;;
9579 *)
9580         val="$undef"
9581         ;;
9582 esac
9583 set d_shmatprototype
9584 eval $setvar
9585
9586 : see if shmdt exists
9587 set shmdt d_shmdt
9588 eval $inlibc
9589
9590 : see how much of the 'shm*(2)' library is present.
9591 h_shm=true
9592 echo " "
9593 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9594 *"$undef"*) h_shm=false;;
9595 esac
9596 case "$osname" in
9597 freebsd)
9598     case "`ipcs 2>&1`" in
9599     "SVID shared memory"*"not configured"*)
9600         echo "Your $osname does not have the shm*(2) configured." >&4
9601         h_shm=false
9602         val="$undef"
9603         set shmctl d_shmctl
9604         evat $setvar
9605         set shmget d_shmget
9606         evat $setvar
9607         set shmat d_shmat
9608         evat $setvar
9609         set shmdt d_shmdt
9610         evat $setvar
9611         ;;
9612     esac
9613     ;;
9614 esac
9615 : we could also check for sys/ipc.h ...
9616 if $h_shm && $test `./findhdr sys/shm.h`; then
9617         echo "You have the full shm*(2) library." >&4
9618         val="$define"
9619 else
9620         echo "You don't have the full shm*(2) library." >&4
9621         val="$undef"
9622 fi
9623 set d_shm
9624 eval $setvar
9625
9626 echo " "
9627 : see if we have sigaction
9628 if set sigaction val -f d_sigaction; eval $csym; $val; then
9629         echo 'sigaction() found.' >&4
9630         $cat > try.c <<'EOP'
9631 #include <stdio.h>
9632 #include <sys/types.h>
9633 #include <signal.h>
9634 main()
9635 {
9636     struct sigaction act, oact;
9637 }
9638 EOP
9639         set try
9640         if eval $compile_ok; then
9641                 val="$define"
9642         else
9643                 echo "But you don't seem to have a useable struct sigaction." >&4
9644                 val="$undef"
9645         fi
9646 else
9647         echo 'sigaction NOT found.' >&4
9648         val="$undef"
9649 fi
9650 set d_sigaction; eval $setvar
9651 $rm -f try try$_o try.c
9652
9653 : see if sigsetjmp exists
9654 echo " "
9655 case "$d_sigsetjmp" in
9656 '')
9657         $cat >try.c <<'EOP'
9658 #include <setjmp.h>
9659 sigjmp_buf env;
9660 int set = 1;
9661 main()
9662 {
9663         if (sigsetjmp(env,1))
9664                 exit(set);
9665         set = 0;
9666         siglongjmp(env, 1);
9667         exit(1);
9668 }
9669 EOP
9670         set try
9671         if eval $compile; then
9672                 if ./try >/dev/null 2>&1; then
9673                         echo "POSIX sigsetjmp found." >&4
9674                         val="$define"
9675                 else
9676                         $cat >&4 <<EOM
9677 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9678 I'll ignore them.
9679 EOM
9680                         val="$undef"
9681                 fi
9682         else
9683                 echo "sigsetjmp not found." >&4
9684                 val="$undef"
9685         fi
9686         ;;
9687 *) val="$d_sigsetjmp"
9688         case "$d_sigsetjmp" in
9689         $define) echo "POSIX sigsetjmp found." >&4;;
9690         $undef) echo "sigsetjmp not found." >&4;;
9691         esac
9692         ;;
9693 esac
9694 set d_sigsetjmp
9695 eval $setvar
9696 $rm -f try.c try
9697
9698 : see if stat knows about block sizes
9699 echo " "
9700 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9701 eval $hasfield
9702
9703 : see if _ptr and _cnt from stdio act std
9704 echo " "
9705 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9706         echo "(Looks like you have stdio.h from Linux.)"
9707         case "$stdio_ptr" in
9708         '') stdio_ptr='((fp)->_IO_read_ptr)'
9709                 ptr_lval=$define
9710                 ;;
9711         *)      ptr_lval=$d_stdio_ptr_lval;;
9712         esac
9713         case "$stdio_cnt" in
9714         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9715                 cnt_lval=$undef
9716                 ;;
9717         *)      cnt_lval=$d_stdio_cnt_lval;;
9718         esac
9719         case "$stdio_base" in
9720         '') stdio_base='((fp)->_IO_read_base)';;
9721         esac
9722         case "$stdio_bufsiz" in
9723         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9724         esac
9725 else
9726         case "$stdio_ptr" in
9727         '') stdio_ptr='((fp)->_ptr)'
9728                 ptr_lval=$define
9729                 ;;
9730         *)      ptr_lval=$d_stdio_ptr_lval;;
9731         esac
9732         case "$stdio_cnt" in
9733         '') stdio_cnt='((fp)->_cnt)'
9734                 cnt_lval=$define
9735                 ;;
9736         *)      cnt_lval=$d_stdio_cnt_lval;;
9737         esac
9738         case "$stdio_base" in
9739         '') stdio_base='((fp)->_base)';;
9740         esac
9741         case "$stdio_bufsiz" in
9742         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9743         esac
9744 fi
9745 : test whether _ptr and _cnt really work
9746 echo "Checking how std your stdio is..." >&4
9747 $cat >try.c <<EOP
9748 #include <stdio.h>
9749 #define FILE_ptr(fp)    $stdio_ptr
9750 #define FILE_cnt(fp)    $stdio_cnt
9751 main() {
9752         FILE *fp = fopen("try.c", "r");
9753         char c = getc(fp);
9754         if (
9755                 18 <= FILE_cnt(fp) &&
9756                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9757         )
9758                 exit(0);
9759         exit(1);
9760 }
9761 EOP
9762 val="$undef"
9763 set try
9764 if eval $compile; then
9765         if ./try; then
9766                 echo "Your stdio acts pretty std."
9767                 val="$define"
9768         else
9769                 echo "Your stdio isn't very std."
9770         fi
9771 else
9772         echo "Your stdio doesn't appear very std."
9773 fi
9774 $rm -f try.c try
9775 set d_stdstdio
9776 eval $setvar
9777
9778 : Can _ptr be used as an lvalue?
9779 case "$d_stdstdio$ptr_lval" in
9780 $define$define) val=$define ;;
9781 *) val=$undef ;;
9782 esac
9783 set d_stdio_ptr_lval
9784 eval $setvar
9785
9786 : Can _cnt be used as an lvalue?
9787 case "$d_stdstdio$cnt_lval" in
9788 $define$define) val=$define ;;
9789 *) val=$undef ;;
9790 esac
9791 set d_stdio_cnt_lval
9792 eval $setvar
9793
9794 : see if _base is also standard
9795 val="$undef"
9796 case "$d_stdstdio" in
9797 $define)
9798         $cat >try.c <<EOP
9799 #include <stdio.h>
9800 #define FILE_base(fp)   $stdio_base
9801 #define FILE_bufsiz(fp) $stdio_bufsiz
9802 main() {
9803         FILE *fp = fopen("try.c", "r");
9804         char c = getc(fp);
9805         if (
9806                 19 <= FILE_bufsiz(fp) &&
9807                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9808         )
9809                 exit(0);
9810         exit(1);
9811 }
9812 EOP
9813         set try
9814         if eval $compile; then
9815                 if ./try; then
9816                         echo "And its _base field acts std."
9817                         val="$define"
9818                 else
9819                         echo "But its _base field isn't std."
9820                 fi
9821         else
9822                 echo "However, it seems to be lacking the _base field."
9823         fi
9824         $rm -f try.c try
9825         ;;
9826 esac
9827 set d_stdiobase
9828 eval $setvar
9829
9830 : see if strcoll exists
9831 set strcoll d_strcoll
9832 eval $inlibc
9833
9834 : check for structure copying
9835 echo " "
9836 echo "Checking to see if your C compiler can copy structs..." >&4
9837 $cat >try.c <<'EOCP'
9838 int main()
9839 {
9840         struct blurfl {
9841                 int dyick;
9842         } foo, bar;
9843
9844         foo = bar;
9845 }
9846 EOCP
9847 if $cc -c try.c >/dev/null 2>&1 ; then
9848         val="$define"
9849         echo "Yup, it can."
9850 else
9851         val="$undef"
9852         echo "Nope, it can't."
9853 fi
9854 set d_strctcpy
9855 eval $setvar
9856 $rm -f try.*
9857
9858 : see if strerror and/or sys_errlist[] exist
9859 echo " "
9860 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9861     if set strerror val -f d_strerror; eval $csym; $val; then
9862                 echo 'strerror() found.' >&4
9863                 d_strerror="$define"
9864                 d_strerrm='strerror(e)'
9865                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9866                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9867                         d_syserrlst="$define"
9868                 else
9869                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9870                         d_syserrlst="$undef"
9871                 fi
9872     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9873                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9874                 echo 'strerror() found in string header.' >&4
9875                 d_strerror="$define"
9876                 d_strerrm='strerror(e)'
9877                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9878                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9879                                 d_syserrlst="$define"
9880                 else
9881                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9882                         d_syserrlst="$undef"
9883                 fi
9884     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9885                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9886                 d_strerror="$undef"
9887                 d_syserrlst="$define"
9888                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9889     else
9890                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9891                 d_strerror="$undef"
9892                 d_syserrlst="$undef"
9893                 d_strerrm='"unknown"'
9894     fi
9895 fi
9896
9897 : see if strtod exists
9898 set strtod d_strtod
9899 eval $inlibc
9900
9901 : see if strtol exists
9902 set strtol d_strtol
9903 eval $inlibc
9904
9905 : see if strtoul exists
9906 set strtoul d_strtoul
9907 eval $inlibc
9908
9909 : see if strxfrm exists
9910 set strxfrm d_strxfrm
9911 eval $inlibc
9912
9913 : see if symlink exists
9914 set symlink d_symlink
9915 eval $inlibc
9916
9917 : see if syscall exists
9918 set syscall d_syscall
9919 eval $inlibc
9920
9921 : see if sysconf exists
9922 set sysconf d_sysconf
9923 eval $inlibc
9924
9925 : see if system exists
9926 set system d_system
9927 eval $inlibc
9928
9929 : see if tcgetpgrp exists
9930 set tcgetpgrp d_tcgetpgrp
9931 eval $inlibc
9932
9933 : see if tcsetpgrp exists
9934 set tcsetpgrp d_tcsetpgrp
9935 eval $inlibc
9936
9937 : define an is-a-typedef? function
9938 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9939 case "$inclist" in
9940 "") inclist="sys/types.h";;
9941 esac;
9942 eval "varval=\$$var";
9943 case "$varval" in
9944 "")
9945         $rm -f temp.c;
9946         for inc in $inclist; do
9947                 echo "#include <$inc>" >>temp.c;
9948         done;
9949         echo "#ifdef $type" >> temp.c;
9950         echo "printf(\"We have $type\");" >> temp.c;
9951         echo "#endif" >> temp.c;
9952         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9953         if $contains $type temp.E >/dev/null 2>&1; then
9954                 eval "$var=\$type";
9955         else
9956                 eval "$var=\$def";
9957         fi;
9958         $rm -f temp.?;;
9959 *) eval "$var=\$varval";;
9960 esac'
9961
9962 : define an is-a-typedef? function that prompts if the type is not available.
9963 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9964 case "$inclist" in
9965 "") inclist="sys/types.h";;
9966 esac;
9967 eval "varval=\$$var";
9968 case "$varval" in
9969 "")
9970         $rm -f temp.c;
9971         for inc in $inclist; do
9972                 echo "#include <$inc>" >>temp.c;
9973         done;
9974         echo "#ifdef $type" >> temp.c;
9975         echo "printf(\"We have $type\");" >> temp.c;
9976         echo "#endif" >> temp.c;
9977         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9978         echo " " ;
9979         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9980         if $contains $type temp.E >/dev/null 2>&1; then
9981                 echo "$type found." >&4;
9982                 eval "$var=\$type";
9983         else
9984                 echo "$type NOT found." >&4;
9985                 dflt="$def";
9986                 . ./myread ;
9987                 eval "$var=\$ans";
9988         fi;
9989         $rm -f temp.?;;
9990 *) eval "$var=\$varval";;
9991 esac'
9992
9993 : see if this is a sys/times.h system
9994 set sys/times.h i_systimes
9995 eval $inhdr
9996
9997 : see if times exists
9998 echo " "
9999 if set times val -f d_times; eval $csym; $val; then
10000         echo 'times() found.' >&4
10001         d_times="$define"
10002         inc=''
10003         case "$i_systimes" in
10004         "$define") inc='sys/times.h';;
10005         esac
10006         rp="What is the type returned by times() on this system?"
10007         set clock_t clocktype long stdio.h sys/types.h $inc
10008         eval $typedef_ask
10009 else
10010         echo 'times() NOT found, hope that will do.' >&4
10011         d_times="$undef"
10012         clocktype='int'
10013 fi
10014
10015 : see if truncate exists
10016 set truncate d_truncate
10017 eval $inlibc
10018
10019 : see if tzname[] exists
10020 echo " "
10021 if set tzname val -a d_tzname; eval $csym; $val; then
10022         val="$define"
10023         echo 'tzname[] found.' >&4
10024 else
10025         val="$undef"
10026         echo 'tzname[] NOT found.' >&4
10027 fi
10028 set d_tzname
10029 eval $setvar
10030
10031 : see if umask exists
10032 set umask d_umask
10033 eval $inlibc
10034
10035 : backward compatibility for d_hvfork
10036 if test X$d_hvfork != X; then
10037         d_vfork="$d_hvfork"
10038         d_hvfork=''
10039 fi
10040 : see if there is a vfork
10041 val=''
10042 set vfork val
10043 eval $inlibc
10044
10045 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10046 : perl on Solaris 2.x, and probably elsewhere.
10047 case "$val" in
10048 $define)
10049         echo " "
10050         case "$usevfork" in
10051         false) dflt='n';;
10052         *) dflt='y';;
10053         esac
10054         rp="Some systems have problems with vfork().  Do you want to use it?"
10055         . ./myread
10056         case "$ans" in
10057         y|Y) ;;
10058         *)
10059                 echo "Ok, we won't use vfork()."
10060                 val="$undef"
10061                 ;;
10062         esac
10063         ;;
10064 esac
10065 set d_vfork
10066 eval $setvar
10067 case "$d_vfork" in
10068 $define) usevfork='true';;
10069 *) usevfork='false';;
10070 esac
10071
10072 : see if this is an sysdir system
10073 set sys/dir.h i_sysdir
10074 eval $inhdr
10075
10076 : see if this is an sysndir system
10077 set sys/ndir.h i_sysndir
10078 eval $inhdr
10079
10080 : see if sys/types.h has to be included
10081 set sys/types.h i_systypes
10082 eval $inhdr
10083
10084 : see if closedir exists
10085 set closedir d_closedir
10086 eval $inlibc
10087
10088 case "$d_closedir" in
10089 "$define")
10090         echo " "
10091         echo "Checking whether closedir() returns a status..." >&4
10092         cat > closedir.c <<EOM
10093 #$i_dirent I_DIRENT             /**/
10094 #$i_sysdir I_SYS_DIR            /**/
10095 #$i_sysndir I_SYS_NDIR          /**/
10096 #$i_systypes I_SYS_TYPES        /**/
10097
10098 #if defined(I_SYS_TYPES)
10099 #include <sys/types.h>
10100 #endif
10101 #if defined(I_DIRENT)
10102 #include <dirent.h>
10103 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10104 #include <sys/dir.h>
10105 #endif
10106 #else
10107 #ifdef I_SYS_NDIR
10108 #include <sys/ndir.h>
10109 #else
10110 #ifdef I_SYS_DIR
10111 #ifdef hp9000s500
10112 #include <ndir.h>       /* may be wrong in the future */
10113 #else
10114 #include <sys/dir.h>
10115 #endif
10116 #endif
10117 #endif
10118 #endif 
10119 int main() { return closedir(opendir(".")); }
10120 EOM
10121         set closedir
10122         if eval $compile_ok; then
10123                 if ./closedir > /dev/null 2>&1 ; then
10124                         echo "Yes, it does."
10125                         val="$undef"
10126                 else
10127                         echo "No, it doesn't."
10128                         val="$define"
10129                 fi
10130         else
10131                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10132                 val="$define"
10133         fi
10134         ;;
10135 *)
10136         val="$undef";
10137         ;;
10138 esac
10139 set d_void_closedir
10140 eval $setvar
10141 $rm -f closedir*
10142 : check for volatile keyword
10143 echo " "
10144 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10145 $cat >try.c <<'EOCP'
10146 int main()
10147 {
10148         typedef struct _goo_struct goo_struct;
10149         goo_struct * volatile goo = ((goo_struct *)0);
10150         struct _goo_struct {
10151                 long long_int;
10152                 int reg_int;
10153                 char char_var;
10154         };
10155         typedef unsigned short foo_t;
10156         char *volatile foo;
10157         volatile int bar;
10158         volatile foo_t blech;
10159         foo = foo;
10160 }
10161 EOCP
10162 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10163         val="$define"
10164         echo "Yup, it does."
10165 else
10166         val="$undef"
10167         echo "Nope, it doesn't."
10168 fi
10169 set d_volatile
10170 eval $setvar
10171 $rm -f try.*
10172
10173 : see if there is a wait4
10174 set wait4 d_wait4
10175 eval $inlibc
10176
10177 : see if waitpid exists
10178 set waitpid d_waitpid
10179 eval $inlibc
10180
10181 : see if wcstombs exists
10182 set wcstombs d_wcstombs
10183 eval $inlibc
10184
10185 : see if wctomb exists
10186 set wctomb d_wctomb
10187 eval $inlibc
10188
10189 : see if writev exists
10190 set writev d_writev
10191 eval $inlibc
10192
10193 : preserve RCS keywords in files with variable substitution, grrr
10194 Date='$Date'
10195 Id='$Id'
10196 Log='$Log'
10197 RCSfile='$RCSfile'
10198 Revision='$Revision'
10199
10200 : check for alignment requirements
10201 echo " "
10202 case "$alignbytes" in
10203 '') echo "Checking alignment constraints..." >&4
10204         $cat >try.c <<'EOCP'
10205 struct foobar {
10206         char foo;
10207         double bar;
10208 } try;
10209 main()
10210 {
10211         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10212 }
10213 EOCP
10214         set try
10215         if eval $compile_ok; then
10216                 dflt=`./try`
10217         else
10218                 dflt='8'
10219                 echo "(I can't seem to compile the test program...)"
10220         fi
10221         ;;
10222 *) dflt="$alignbytes"
10223         ;;
10224 esac
10225 rp="Doubles must be aligned on a how-many-byte boundary?"
10226 . ./myread
10227 alignbytes="$ans"
10228 $rm -f try.c try
10229
10230 : check for ordering of bytes in a long
10231 case "$byteorder" in
10232 '')
10233         $cat <<'EOM'
10234   
10235 In the following, larger digits indicate more significance.  A big-endian
10236 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10237 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10238 machines may have weird orders like 3412.  A Cray will report 87654321. If
10239 the test program works the default is probably right.
10240 I'm now running the test program...
10241 EOM
10242         $cat >try.c <<'EOCP'
10243 #include <stdio.h>
10244 main()
10245 {
10246         int i;
10247         union {
10248                 unsigned long l;
10249                 char c[sizeof(long)];
10250         } u;
10251
10252         if (sizeof(long) > 4)
10253                 u.l = (0x08070605L << 32) | 0x04030201L;
10254         else
10255                 u.l = 0x04030201L;
10256         for (i = 0; i < sizeof(long); i++)
10257                 printf("%c", u.c[i]+'0');
10258         printf("\n");
10259         exit(0);
10260 }
10261 EOCP
10262         xxx_prompt=y
10263         set try
10264         if eval $compile && ./try > /dev/null; then
10265                 dflt=`./try`
10266                 case "$dflt" in
10267                 [1-4][1-4][1-4][1-4]|12345678|87654321)
10268                         echo "(The test program ran ok.)"
10269                         echo "byteorder=$dflt"
10270                         xxx_prompt=n
10271                         ;;
10272                 ????|????????) echo "(The test program ran ok.)" ;;
10273                 *) echo "(The test program didn't run right for some reason.)" ;;
10274                 esac
10275         else
10276                 dflt='4321'
10277                 cat <<'EOM'
10278 (I can't seem to compile the test program.  Guessing big-endian...)
10279 EOM
10280         fi
10281         case "$xxx_prompt" in
10282         y)
10283                 rp="What is the order of bytes in a long?"
10284                 . ./myread
10285                 byteorder="$ans"
10286                 ;;
10287         *)      byteorder=$dflt
10288                 ;;
10289         esac
10290         ;;
10291 esac
10292 $rm -f try.c try
10293
10294 : how do we catenate cpp tokens here?
10295 echo " "
10296 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10297 $cat >cpp_stuff.c <<'EOCP'
10298 #define RCAT(a,b)a/**/b
10299 #define ACAT(a,b)a ## b
10300 RCAT(Rei,ser)
10301 ACAT(Cir,cus)
10302 EOCP
10303 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10304 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10305         echo "Oh!  Smells like ANSI's been here." >&4
10306         echo "We can catify or stringify, separately or together!"
10307         cpp_stuff=42
10308 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10309         echo "Ah, yes!  The good old days!" >&4
10310         echo "However, in the good old days we don't know how to stringify and"
10311         echo "catify at the same time."
10312         cpp_stuff=1
10313 else
10314         $cat >&4 <<EOM
10315 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10316 to have to edit the values of CAT[2-5] in config.h...
10317 EOM
10318         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10319 fi
10320 $rm -f cpp_stuff.*
10321
10322 : see if this is a db.h system
10323 set db.h i_db
10324 eval $inhdr
10325
10326 case "$i_db" in
10327 $define)
10328         : Check db version.
10329         echo " "
10330         echo "Checking Berkeley DB version ..." >&4
10331         $cat >try.c <<EOCP
10332 #$d_const HASCONST
10333 #ifndef HASCONST
10334 #define const
10335 #endif
10336 #include <sys/types.h>
10337 #include <stdio.h>
10338 #include <db.h>
10339 main()
10340 {
10341 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10342     int Major, Minor, Patch ;
10343     unsigned long Version ;
10344     (void)db_version(&Major, &Minor, &Patch) ;
10345     printf("You have Berkeley DB Version 2 or greater\n");
10346
10347     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10348                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10349     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10350                 Major, Minor, Patch) ;
10351
10352     /* check that db.h & libdb are compatible */
10353     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10354         printf("db.h and libdb are incompatible\n") ;
10355         exit(3);        
10356     }
10357
10358     printf("db.h and libdb are compatible\n") ;
10359
10360     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10361                 + DB_VERSION_PATCH ;
10362
10363     /* needs to be >= 2.3.4 */
10364     if (Version < 2003004) {
10365     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10366         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10367         exit(2);        
10368     }
10369
10370     exit(0);
10371 #else
10372 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10373     printf("You have Berkeley DB Version 1\n");
10374     exit(0);    /* DB version < 2: the coast is clear. */
10375 #else
10376     exit(1);    /* <db.h> not Berkeley DB? */
10377 #endif
10378 #endif
10379 }
10380 EOCP
10381         set try
10382         if eval $compile && ./try; then
10383                 echo 'Looks OK.' >&4
10384         else
10385                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10386                 i_db=$undef
10387                 case " $libs " in
10388                 *"-ldb "*)
10389                         : Remove db from list of libraries to use
10390                         echo "Removing unusable -ldb from library list" >&4
10391                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10392                         shift
10393                         libs="$*"
10394                         echo "libs = $libs" >&4
10395                         ;;
10396                 esac
10397         fi
10398         $rm -f try.*
10399         ;;
10400 esac
10401
10402 case "$i_db" in
10403 define)
10404         : Check the return type needed for hash 
10405         echo " "
10406         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10407         $cat >try.c <<EOCP
10408 #$d_const HASCONST
10409 #ifndef HASCONST
10410 #define const
10411 #endif
10412 #include <sys/types.h>
10413 #include <db.h>
10414
10415 #ifndef DB_VERSION_MAJOR
10416 u_int32_t hash_cb (ptr, size)
10417 const void *ptr;
10418 size_t size;
10419 {
10420 }
10421 HASHINFO info;
10422 main()
10423 {
10424         info.hash = hash_cb;
10425 }
10426 #endif
10427 EOCP
10428         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10429                 if $contains warning try.out >>/dev/null 2>&1 ; then
10430                         db_hashtype='int'
10431                 else
10432                         db_hashtype='u_int32_t'
10433                 fi
10434         else
10435                 : XXX Maybe we should just give up here.
10436                 db_hashtype=u_int32_t
10437                 $cat try.out >&4
10438                 echo "Help:  I can't seem to compile the db test program." >&4
10439                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10440         fi
10441         $rm -f try.*
10442         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10443         ;;
10444 *)      db_hashtype=u_int32_t
10445         ;;
10446 esac
10447 case "$i_db" in
10448 define)
10449         : Check the return type needed for prefix 
10450         echo " "
10451         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10452         cat >try.c <<EOCP
10453 #$d_const HASCONST
10454 #ifndef HASCONST
10455 #define const
10456 #endif
10457 #include <sys/types.h>
10458 #include <db.h>
10459
10460 #ifndef DB_VERSION_MAJOR
10461 size_t prefix_cb (key1, key2)
10462 const DBT *key1;
10463 const DBT *key2;
10464 {
10465 }
10466 BTREEINFO info;
10467 main()
10468 {
10469         info.prefix = prefix_cb;
10470 }
10471 #endif
10472 EOCP
10473         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10474                 if $contains warning try.out >>/dev/null 2>&1 ; then
10475                         db_prefixtype='int'
10476                 else
10477                         db_prefixtype='size_t'
10478                 fi
10479         else
10480                 db_prefixtype='size_t'
10481                 : XXX Maybe we should just give up here.
10482                 $cat try.out >&4
10483                 echo "Help:  I can't seem to compile the db test program." >&4
10484                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10485         fi
10486         $rm -f try.*
10487         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10488         ;;
10489 *)      db_prefixtype='size_t'
10490         ;;
10491 esac
10492
10493 : check for void type
10494 echo " "
10495 echo "Checking to see how well your C compiler groks the void type..." >&4
10496 case "$voidflags" in
10497 '')
10498         $cat >try.c <<'EOCP'
10499 #if TRY & 1
10500 void sub() {
10501 #else
10502 sub() {
10503 #endif
10504         extern void moo();      /* function returning void */
10505         void (*goo)();          /* ptr to func returning void */
10506 #if TRY & 8
10507         void *hue;              /* generic ptr */
10508 #endif
10509 #if TRY & 2
10510         void (*foo[10])();
10511 #endif
10512
10513 #if TRY & 4
10514         if(goo == moo) {
10515                 exit(0);
10516         }
10517 #endif
10518         exit(0);
10519 }
10520 main() { sub(); }
10521 EOCP
10522         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10523                 voidflags=$defvoidused
10524         echo "Good.  It appears to support void to the level $package wants.">&4
10525                 if $contains warning .out >/dev/null 2>&1; then
10526                         echo "However, you might get some warnings that look like this:"
10527                         $cat .out
10528                 fi
10529         else
10530 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10531                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10532                         echo "It supports 1..."
10533                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10534                                 echo "It also supports 2..."
10535                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10536                                         voidflags=7
10537                                         echo "And it supports 4 but not 8 definitely."
10538                                 else
10539                                         echo "It doesn't support 4..."
10540                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10541                                                 voidflags=11
10542                                                 echo "But it supports 8."
10543                                         else
10544                                                 voidflags=3
10545                                                 echo "Neither does it support 8."
10546                                         fi
10547                                 fi
10548                         else
10549                                 echo "It does not support 2..."
10550                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10551                                         voidflags=13
10552                                         echo "But it supports 4 and 8."
10553                                 else
10554                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10555                                                 voidflags=5
10556                                                 echo "And it supports 4 but has not heard about 8."
10557                                         else
10558                                                 echo "However it supports 8 but not 4."
10559                                         fi
10560                                 fi
10561                         fi
10562                 else
10563                         echo "There is no support at all for void."
10564                         voidflags=0
10565                 fi
10566         fi
10567 esac
10568 case "$voidflags" in
10569 "$defvoidused") ;;
10570 *)      $cat >&4 <<'EOM'
10571   Support flag bits are:
10572     1: basic void declarations.
10573     2: arrays of pointers to functions returning void.
10574     4: operations between pointers to and addresses of void functions.
10575     8: generic void pointers.
10576 EOM
10577         dflt="$voidflags";
10578         rp="Your void support flags add up to what?"
10579         . ./myread
10580         voidflags="$ans"
10581         ;;
10582 esac
10583 $rm -f try.* .out
10584
10585
10586 : How can we generate normalized random numbers ?
10587 echo " "
10588 echo "Looking for a random number function..." >&4
10589 case "$randfunc" in
10590 '')
10591         if set drand48 val -f; eval $csym; $val; then
10592                 dflt="drand48"
10593                 echo "Good, found drand48()." >&4
10594         elif set random val -f; eval $csym; $val; then
10595                 dflt="random"
10596                 echo "OK, found random()." >&4
10597         else
10598                 dflt="rand"
10599                 echo "Yick, looks like I have to use rand()." >&4
10600         fi
10601         echo " "
10602         ;;
10603 *)
10604         dflt="$randfunc"
10605         ;;
10606 esac
10607 cont=true
10608
10609 case "$ccflags" in
10610 *-Dmy_rand=*|*-Dmy_srand=*)
10611         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10612         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10613         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10614         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10615         ;;
10616 esac
10617
10618 while $test "$cont"; do
10619         rp="Use which function to generate random numbers?"
10620         . ./myread
10621         if $test "$ans" = "$dflt"; then
10622                 : null
10623         else
10624                 randbits=''
10625         fi
10626         randfunc="$ans"
10627         if set $ans val -f; eval $csym; $val; then
10628                 cont=''
10629         else
10630                 dflt=y
10631                 rp="I cannot find function $ans. Use that name anyway?"
10632                 . ./myread
10633                 dflt=rand
10634                 case "$ans" in
10635                         [yY]*) cont='';;
10636                 esac
10637         fi
10638         case "$cont" in
10639         '')
10640                 case "$randfunc" in
10641                 drand48)
10642                         drand01="drand48()"
10643                         seedfunc="srand48"
10644                         randbits=48
10645                         randseedtype=long
10646                         ;;
10647                 rand|random)
10648                         case "$randbits" in
10649                         '')
10650 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10651                                 $cat >try.c <<EOCP
10652 #$i_unistd I_UNISTD
10653 #$i_stdlib I_STDLIB
10654 #include <stdio.h>
10655 #ifdef I_UNISTD
10656 #  include <unistd.h>
10657 #endif
10658 #ifdef I_STDLIB
10659 #  include <stdlib.h>
10660 #endif
10661 main()
10662 {
10663         register int i;
10664         register unsigned long tmp;
10665         register unsigned long max = 0L;
10666
10667         for (i = 1000; i; i--) {
10668                 tmp = (unsigned long) $randfunc();
10669                 if (tmp > max) max = tmp;
10670         }
10671         for (i = 0; max; i++)
10672                 max /= 2;
10673         printf("%d\n",i);
10674 }
10675 EOCP
10676                                 set try
10677                                 if eval $compile_ok; then
10678                                         dflt=`try`
10679                                 else
10680                                         dflt='?'
10681                                         echo "(I can't seem to compile the test program...)"
10682                                 fi
10683                                 ;;
10684                         *)
10685                                 dflt="$randbits"
10686                                 ;;
10687                         esac
10688                         rp="How many bits does your $randfunc() function produce?"
10689                         . ./myread
10690                         randbits="$ans"
10691                         $rm -f try.c try
10692                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10693                         seedfunc="s$randfunc"
10694                         randseedtype=unsigned
10695                         ;;
10696                 *)
10697                         dflt="31"
10698                         rp="How many bits does your $randfunc() function produce?"
10699                         . ./myread
10700                         randbits="$ans"
10701                         seedfunc="s$randfunc"
10702                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10703                         if set $seedfunc val -f; eval $csym; $val; then
10704                                 echo "(Using $seedfunc() to seed random generator)"
10705                         else
10706                                 echo "(Warning: no $seedfunc() to seed random generator)"
10707                                 seedfunc=rand
10708                         fi
10709                         randseedtype=unsigned
10710                         ;;
10711                 esac
10712                 ;;
10713         esac
10714 done
10715
10716 echo " "
10717 echo "Determining whether or not we are on an EBCDIC system..." >&4
10718 $cat >tebcdic.c <<'EOM'
10719 int main()
10720 {
10721   if ('M'==0xd4) return 0;
10722   return 1;
10723 }
10724 EOM
10725
10726 val=$undef
10727 set tebcdic
10728 if eval $compile_ok; then
10729         if ./tebcdic; then
10730                 echo "You have EBCDIC." >&4
10731                 val="$define"
10732         else
10733                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10734         fi
10735 else
10736         echo "I'm unable to compile the test program." >&4
10737         echo "I'll assume ASCII or some ISO Latin." >&4
10738 fi
10739 $rm -f tebcdic.c tebcdic
10740 set ebcdic
10741 eval $setvar
10742
10743 : see what type file positions are declared as in the library
10744 rp="What is the type for file position used by fsetpos()?"
10745 set fpos_t fpostype long stdio.h sys/types.h
10746 eval $typedef_ask
10747
10748 : Store the full pathname to the sed program for use in the C program
10749 full_sed=$sed
10750
10751 : see what type gids are declared as in the kernel
10752 echo " "
10753 echo "Looking for the type for group ids returned by getgid()."
10754 set gid_t gidtype xxx stdio.h sys/types.h
10755 eval $typedef
10756 case "$gidtype" in
10757 xxx)
10758         xxx=`./findhdr sys/user.h`
10759         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10760         case $1 in
10761         unsigned) dflt="$1 $2" ;;
10762         *) dflt="$1" ;;
10763         esac
10764         ;;
10765 *) dflt="$gidtype";;
10766 esac
10767 case "$gidtype" in
10768 gid_t) echo "gid_t found." ;;
10769 *)      rp="What is the type for group ids returned by getgid()?"
10770         . ./myread
10771         gidtype="$ans"
10772         ;;
10773 esac
10774
10775 : see if getgroups exists
10776 set getgroups d_getgrps
10777 eval $inlibc
10778
10779 : see if setgroups exists
10780 set setgroups d_setgrps
10781 eval $inlibc
10782
10783
10784 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10785 echo " "
10786 case "$d_getgrps$d_setgrps" in
10787 *define*)
10788         case "$groupstype" in
10789         '') dflt="$gidtype" ;;
10790         *)  dflt="$groupstype" ;;
10791         esac
10792         $cat <<EOM
10793 What type of pointer is the second argument to getgroups() and setgroups()?
10794 Usually this is the same as group ids, $gidtype, but not always.
10795
10796 EOM
10797         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10798         . ./myread
10799         groupstype="$ans"
10800         ;;
10801 *)  groupstype="$gidtype";;
10802 esac
10803
10804 : see what type lseek is declared as in the kernel
10805 rp="What is the type used for lseek's offset on this system?"
10806 set off_t lseektype long stdio.h sys/types.h
10807 eval $typedef_ask
10808
10809 echo " "
10810 $echo $n "Checking to see how big your file offsets are...$c" >&4
10811 $cat >try.c <<EOCP
10812 #include <sys/types.h>
10813 #include <stdio.h>
10814 int main()
10815 {
10816         printf("%d\n", sizeof($lseektype));
10817 }
10818 EOCP
10819 set try
10820 if eval $compile_ok; then
10821         lseeksize=`./try`
10822         $echo " $lseeksize bytes." >&4
10823 else
10824         dflt='4'
10825         echo " "
10826         echo "(I can't seem to compile the test program.  Guessing...)"
10827         rp="What is the size of your file offsets (in bytes)?"
10828         . ./myread
10829         lseeksize="$ans"
10830 fi
10831 $rm -f try.c try
10832
10833 echo " "
10834 echo "Checking if your $make program sets \$(MAKE)..." >&4
10835 case "$make_set_make" in
10836 '')
10837         $sed 's/^X //' > testmake.mak << 'EOF'
10838 Xall:
10839 X       @echo 'maketemp="$(MAKE)"'
10840 EOF
10841         case "`$make -f testmake.mak 2>/dev/null`" in
10842         *maketemp=*) make_set_make='#' ;;
10843         *)      make_set_make="MAKE=$make" ;;
10844         esac
10845         $rm -f testmake.mak
10846         ;;
10847 esac
10848 case "$make_set_make" in
10849 '#') echo "Yup, it does.";;
10850 *) echo "Nope, it doesn't.";;
10851 esac
10852
10853 : see what type is used for mode_t
10854 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10855 set mode_t modetype int stdio.h sys/types.h
10856 eval $typedef_ask
10857
10858 : define a fucntion to check prototypes
10859 $cat > protochk <<EOSH
10860 $startsh
10861 cc="$cc"
10862 optimize="$optimize"
10863 ccflags="$ccflags"
10864 prototype="$prototype"
10865 define="$define"
10866 rm=$rm
10867 EOSH
10868
10869 $cat >> protochk <<'EOSH'
10870
10871 $rm -f try.c
10872 foo="$1"
10873 shift
10874 while test $# -ge 2; do
10875         case "$1" in
10876                 $define) echo "#include <$2>" >> try.c ;;
10877                 literal) echo "$2" >> try.c ;;
10878         esac
10879     shift 2
10880 done
10881 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
10882 cat >> try.c <<'EOCP'
10883 #ifdef CAN_PROTOTYPE
10884 #define _(args) args
10885 #else
10886 #define _(args) ()
10887 #endif
10888 EOCP
10889 echo "$foo" >> try.c
10890 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10891 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10892 status=$?
10893 $rm -f try.[co]
10894 exit $status
10895 EOSH
10896 chmod +x protochk
10897 $eunicefix protochk
10898
10899 : see what type is used for size_t
10900 rp="What is the type used for the length parameter for string functions?"
10901 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10902 eval $typedef_ask
10903
10904 : check for type of arguments to gethostbyaddr. 
10905 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10906         case "$d_gethbyaddr" in
10907         $define)
10908                 $cat <<EOM
10909
10910 Checking to see what type of arguments are accepted by gethostbyaddr().
10911 EOM
10912                 hdrs="$define sys/types.h
10913                         $d_socket sys/socket.h 
10914                         $i_niin netinet/in.h 
10915                         $i_netdb netdb.h
10916                         $i_unistd unistd.h"
10917                 : The first arg can 'char *' or 'void *'
10918                 : The second arg is some of integral type
10919                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10920                         for yyy in size_t long int; do
10921                                 case "$netdb_host_type" in
10922                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10923                                         if ./protochk "$try" $hdrs; then
10924                                                 echo "Your system accepts $xxx for the first arg."
10925                                                 echo "...and $yyy for the second arg."
10926                                                 netdb_host_type="$xxx"
10927                                                 netdb_hlen_type="$yyy"
10928                                         fi
10929                                         ;;
10930                                 esac
10931                         done
10932                 done
10933                 : In case none of those worked, prompt the user.
10934                 case "$netdb_host_type" in
10935                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
10936                         dflt='char *'
10937                         . ./myread
10938                         netdb_host_type=$ans
10939                         rp='What is the type for the 2nd argument to gethostbyaddr?'
10940                         dflt="$sizetype"
10941                         . ./myread
10942                         netdb_hlen_type=$ans
10943                         ;;
10944                 esac
10945                 ;;
10946         *)      : no gethostbyaddr, so pick harmless defaults
10947                 netdb_host_type='char *'
10948                 netdb_hlen_type="$sizetype"
10949                 ;;
10950         esac
10951         # Remove the "const" if needed. -- but then we'll have a 
10952         # prototype clash!
10953         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10954 fi
10955
10956 : check for type of argument to gethostbyname. 
10957 if test "X$netdb_name_type" = X ; then
10958         case "$d_gethbyname" in
10959         $define)
10960                 $cat <<EOM
10961
10962 Checking to see what type of argument is accepted by gethostbyname().
10963 EOM
10964                 hdrs="$define sys/types.h
10965                         $d_socket sys/socket.h 
10966                         $i_niin netinet/in.h 
10967                         $i_netdb netdb.h
10968                         $i_unistd unistd.h"
10969                 for xxx in "const char *" "char *"; do
10970                         case "$netdb_name_type" in
10971                         '')     try="extern struct hostent *gethostbyname($xxx);"
10972                                 if ./protochk "$try" $hdrs; then
10973                                         echo "Your system accepts $xxx."
10974                                         netdb_name_type="$xxx"
10975                                 fi
10976                                 ;;
10977                         esac
10978                 done
10979                 : In case none of those worked, prompt the user.
10980                 case "$netdb_name_type" in
10981                 '')     rp='What is the type for the 1st argument to gethostbyname?'
10982                         dflt='char *'
10983                         . ./myread
10984                         netdb_name_type=$ans
10985                         ;;
10986                 esac
10987                 ;;
10988         *)      : no gethostbyname, so pick harmless default
10989                 netdb_name_type='char *'
10990                 ;;
10991         esac
10992 fi
10993
10994 : check for type of 1st argument to getnetbyaddr. 
10995 if test "X$netdb_net_type" = X ; then
10996         case "$d_getnbyaddr" in
10997         $define)
10998                 $cat <<EOM
10999
11000 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11001 EOM
11002                 hdrs="$define sys/types.h
11003                         $d_socket sys/socket.h 
11004                         $i_niin netinet/in.h 
11005                         $i_netdb netdb.h
11006                         $i_unistd unistd.h"
11007                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11008                         case "$netdb_net_type" in
11009                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11010                                 if ./protochk "$try" $hdrs; then
11011                                         echo "Your system accepts $xxx."
11012                                         netdb_net_type="$xxx"
11013                                 fi
11014                                 ;;
11015                         esac
11016                 done
11017                 : In case none of those worked, prompt the user.
11018                 case "$netdb_net_type" in
11019                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11020                         dflt='long'
11021                         . ./myread
11022                         netdb_net_type=$ans
11023                         ;;
11024                 esac
11025                 ;;
11026         *)      : no getnetbyaddr, so pick harmless default
11027                 netdb_net_type='long'
11028                 ;;
11029         esac
11030 fi
11031 : locate the preferred pager for this system
11032 case "$pager" in
11033 '')
11034         dflt=''
11035         case "$pg" in
11036         /*) dflt=$pg;;
11037         esac
11038         case "$more" in
11039         /*) dflt=$more;;
11040         esac
11041         case "$less" in
11042         /*) dflt=$less;;
11043         esac
11044         case "$dflt" in
11045         '') dflt=/usr/ucb/more;;
11046         esac
11047         ;;
11048 *) dflt="$pager";;
11049 esac
11050 echo " "
11051 fn=f/
11052 rp='What pager is used on your system?'
11053 . ./getfile
11054 pager="$ans"
11055
11056 : see what type pids are declared as in the kernel
11057 rp="What is the type of process ids on this system?"
11058 set pid_t pidtype int stdio.h sys/types.h
11059 eval $typedef_ask
11060
11061 : check for length of pointer
11062 echo " "
11063 case "$ptrsize" in
11064 '')
11065         $echo $n "Checking to see how big your pointers are...$c" >&4
11066         if test "$voidflags" -gt 7; then
11067                 echo '#define VOID_PTR char *' > try.c
11068         else
11069                 echo '#define VOID_PTR void *' > try.c
11070         fi
11071         $cat >>try.c <<'EOCP'
11072 #include <stdio.h>
11073 main()
11074 {
11075         printf("%d\n", sizeof(VOID_PTR));
11076         exit(0);
11077 }
11078 EOCP
11079         set try
11080         if eval $compile_ok; then
11081                 ptrsize=`./try`
11082                 $echo " $ptrsize bytes." >&4
11083         else
11084                 dflt='4'
11085                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11086                 rp="What is the size of a pointer (in bytes)?"
11087                 . ./myread
11088                 ptrsize="$ans"
11089         fi
11090         ;;
11091 esac
11092 $rm -f try.c try
11093
11094 : see if ar generates random libraries by itself
11095 echo " "
11096 echo "Checking how to generate random libraries on your machine..." >&4
11097 echo 'int bar1() { return bar2(); }' > bar1.c
11098 echo 'int bar2() { return 2; }' > bar2.c
11099 $cat > foo.c <<'EOP'
11100 main() { printf("%d\n", bar1()); exit(0); }
11101 EOP
11102 $cc $ccflags -c bar1.c >/dev/null 2>&1
11103 $cc $ccflags -c bar2.c >/dev/null 2>&1
11104 $cc $ccflags -c foo.c >/dev/null 2>&1
11105 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11106 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11107         ./foobar >/dev/null 2>&1; then
11108         echo "$ar appears to generate random libraries itself."
11109         orderlib=false
11110         ranlib=":"
11111 elif $ar ts bar$_a >/dev/null 2>&1 &&
11112         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11113         ./foobar >/dev/null 2>&1; then
11114                 echo "a table of contents needs to be added with '$ar ts'."
11115                 orderlib=false
11116                 ranlib="$ar ts"
11117 else
11118         case "$ranlib" in
11119         :) ranlib='';;
11120         '')
11121                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11122                 $test -f $ranlib || ranlib=''
11123                 ;;
11124         esac
11125         if $test -n "$ranlib"; then
11126                 echo "your system has '$ranlib'; we'll use that."
11127                 orderlib=false
11128         else
11129                 echo "your system doesn't seem to support random libraries"
11130                 echo "so we'll use lorder and tsort to order the libraries."
11131                 orderlib=true
11132                 ranlib=":"
11133         fi
11134 fi
11135 $rm -f foo* bar* 
11136
11137 : check for type of arguments to select. 
11138 case "$selecttype" in
11139 '') case "$d_select" in
11140         $define)
11141                 $cat <<EOM
11142 Checking to see what type of arguments are accepted by select().
11143 EOM
11144                 hdrs="$define sys/types.h
11145                         $i_systime sys/time.h 
11146                         $i_sysselct sys/select.h
11147                         $d_socket sys/socket.h"
11148                 : The first arg can be int, unsigned, or size_t
11149                 : The last arg may or may not be 'const'
11150                 val=''
11151                 : void pointer has been seen but using that
11152                 : breaks the selectminbits test
11153                 for xxx in 'fd_set *' 'int *'; do
11154                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11155                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11156                                         case "$val" in
11157                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11158                                                 if ./protochk "$try" $hdrs; then
11159                                                         echo "Your system accepts $xxx."
11160                                                         val="$xxx"
11161                                                 fi
11162                                                 ;;
11163                                         esac
11164                                 done
11165                         done
11166                 done
11167                 case "$val" in
11168                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11169                         case "$d_fd_set" in
11170                                 $define) dflt="fd_set *" ;;
11171                                 *)              dflt="int *" ;;
11172                         esac
11173                         . ./myread
11174                         val=$ans
11175                         ;;
11176                 esac
11177                 selecttype="$val"
11178                 ;;
11179         *)      : no select, so pick a harmless default
11180                 selecttype='int *'
11181                 ;;
11182         esac
11183         ;;
11184 esac
11185
11186 : check for the select 'width'
11187 case "$selectminbits" in
11188 '') case "$d_select" in
11189         $define)
11190                 $cat <<EOM
11191
11192 Checking to see on how many bits at a time your select() operates...
11193 EOM
11194                 $cat >try.c <<EOCP
11195 #include <sys/types.h>
11196 #$i_time I_TIME
11197 #$i_systime I_SYS_TIME
11198 #$i_systimek I_SYS_TIME_KERNEL
11199 #ifdef I_TIME
11200 #   include <time.h>
11201 #endif
11202 #ifdef I_SYS_TIME
11203 #   ifdef I_SYS_TIME_KERNEL
11204 #       define KERNEL
11205 #   endif
11206 #   include <sys/time.h>
11207 #   ifdef I_SYS_TIME_KERNEL
11208 #       undef KERNEL
11209 #   endif
11210 #endif
11211 #$i_sysselct I_SYS_SELECT
11212 #ifdef I_SYS_SELECT
11213 #include <sys/select.h>
11214 #endif
11215 #include <stdio.h>
11216 $selecttype b;
11217 #define S sizeof(*(b))
11218 #define MINBITS 64
11219 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11220 #define NBITS  (NBYTES * 8)
11221 int main() {
11222     char s[NBYTES];
11223     struct timeval t;
11224     int i;
11225     FILE* fp;
11226     int fd;
11227
11228     fclose(stdin);
11229     fp = fopen("try.c", "r");
11230     if (fp == 0)
11231       exit(1);
11232     fd = fileno(fp);
11233     if (fd < 0)
11234       exit(2);
11235     b = ($selecttype)s;
11236     for (i = 0; i < NBITS; i++)
11237         FD_SET(i, b);
11238     t.tv_sec  = 0;
11239     t.tv_usec = 0;
11240     select(fd + 1, b, 0, 0, &t);
11241     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11242     printf("%d\n", i + 1);
11243     return 0;
11244 }
11245 EOCP
11246                 set try
11247                 if eval $compile_ok; then
11248                         selectminbits=`./try`
11249                         case "$selectminbits" in
11250                         '')     cat >&4 <<EOM
11251 Cannot figure out on how many bits at a time your select() operates.
11252 I'll play safe and guess it is 32 bits.
11253 EOM
11254                                 selectminbits=32
11255                                 bits="32 bits"
11256                                 ;;
11257                         1)      bits="1 bit" ;;
11258                         *)      bits="$selectminbits bits" ;;
11259                         esac
11260                         echo "Your select() operates on $bits at a time." >&4
11261                 else
11262                         rp='What is the minimum number of bits your select() operates on?'
11263                         case "$byteorder" in
11264                         1234|12345678)  dflt=32 ;;
11265                         *)              dflt=1  ;;
11266                         esac
11267                         . ./myread
11268                         val=$ans
11269                         selectminbits="$val"
11270                 fi
11271                 $rm -f try.* try
11272                 ;;
11273         *)      : no select, so pick a harmless default
11274                 selectminbits='32'
11275                 ;;
11276         esac
11277         ;;
11278 esac
11279
11280 : Trace out the files included by signal.h, then look for SIGxxx names.
11281 : Remove SIGARRAYSIZE used by HPUX.
11282 : Remove SIGTYP void lines used by OS2.
11283 xxx=`echo '#include <signal.h>' |
11284         $cppstdin $cppminus $cppflags 2>/dev/null |
11285         $grep '^[       ]*#.*include' | 
11286         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11287 : Check this list of files to be sure we have parsed the cpp output ok.
11288 : This will also avoid potentially non-existent files, such 
11289 : as ../foo/bar.h
11290 xxxfiles=''
11291 for xx in $xxx /dev/null ; do
11292         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11293 done
11294 : If we have found no files, at least try signal.h
11295 case "$xxxfiles" in
11296 '')     xxxfiles=`./findhdr signal.h` ;;
11297 esac
11298 xxx=`awk '
11299 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11300         print substr($2, 4, 20)
11301 }
11302 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11303         print substr($3, 4, 20)
11304 }' $xxxfiles`
11305 : Append some common names just in case the awk scan failed.
11306 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11307 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11308 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11309 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11310 : generate a few handy files for later
11311 $cat > signal.c <<'EOCP'
11312 #include <sys/types.h>
11313 #include <signal.h>
11314 #include <stdio.h>
11315 int main() {
11316
11317 /* Strange style to avoid deeply-nested #if/#else/#endif */
11318 #ifndef NSIG
11319 #  ifdef _NSIG
11320 #    define NSIG (_NSIG)
11321 #  endif
11322 #endif
11323
11324 #ifndef NSIG
11325 #  ifdef SIGMAX
11326 #    define NSIG (SIGMAX+1)
11327 #  endif
11328 #endif
11329
11330 #ifndef NSIG
11331 #  ifdef SIG_MAX
11332 #    define NSIG (SIG_MAX+1)
11333 #  endif
11334 #endif
11335
11336 #ifndef NSIG
11337 #  ifdef MAXSIG
11338 #    define NSIG (MAXSIG+1)
11339 #  endif
11340 #endif
11341
11342 #ifndef NSIG
11343 #  ifdef MAX_SIG
11344 #    define NSIG (MAX_SIG+1)
11345 #  endif
11346 #endif
11347
11348 #ifndef NSIG
11349 #  ifdef SIGARRAYSIZE
11350 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11351 #  endif
11352 #endif
11353
11354 #ifndef NSIG
11355 #  ifdef _sys_nsig
11356 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11357 #  endif
11358 #endif
11359
11360 /* Default to some arbitrary number that's big enough to get most
11361    of the common signals.
11362 */
11363 #ifndef NSIG
11364 #    define NSIG 50
11365 #endif
11366
11367 printf("NSIG %d\n", NSIG);
11368
11369 #ifndef JUST_NSIG
11370
11371 EOCP
11372
11373 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11374 {
11375         printf "#ifdef SIG"; printf $1; printf "\n"
11376         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11377         printf $1; printf ");\n"
11378         printf "#endif\n"
11379 }
11380 END {
11381         printf "#endif /* JUST_NSIG */\n";
11382         printf "}\n";
11383 }
11384 ' >>signal.c
11385 $cat >signal.awk <<'EOP'
11386 BEGIN { ndups = 0 }
11387 $1 ~ /^NSIG$/ { nsig = $2 }
11388 ($1 !~ /^NSIG$/) && (NF == 2) {
11389     if ($2 > maxsig) { maxsig = $2 }
11390     if (sig_name[$2]) {
11391         dup_name[ndups] = $1
11392         dup_num[ndups] = $2
11393         ndups++ 
11394     }
11395     else {
11396         sig_name[$2] = $1
11397         sig_num[$2] = $2
11398     }
11399
11400 }
11401 END { 
11402     if (nsig == 0) { nsig = maxsig + 1 }
11403         for (n = 1; n < nsig; n++) {
11404                 if (sig_name[n]) {
11405                         printf("%s %d\n", sig_name[n], sig_num[n])
11406                 }
11407                 else {
11408                         printf("NUM%d %d\n", n, n) 
11409                 }
11410         }
11411     for (n = 0; n < ndups; n++) {
11412                 printf("%s %d\n", dup_name[n], dup_num[n])
11413     }
11414 }
11415 EOP
11416 $cat >signal_cmd <<EOS
11417 $startsh
11418 if $test -s signal.lst; then
11419     echo "Using your existing signal.lst file"
11420         exit 0
11421 fi
11422 xxx="$xxx"
11423 EOS
11424 $cat >>signal_cmd <<'EOS'
11425
11426 set signal
11427 if eval $compile_ok; then
11428         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11429 else
11430         echo "(I can't seem be able to compile the whole test program)" >&4
11431         echo "(I'll try it in little pieces.)" >&4
11432         set signal -DJUST_NSIG
11433         if eval $compile_ok; then
11434                 ./signal$_exe > signal.nsg
11435                 $cat signal.nsg
11436         else
11437                 echo "I can't seem to figure out how many signals you have." >&4
11438                 echo "Guessing 50." >&4
11439                 echo 'NSIG 50' > signal.nsg
11440         fi
11441         : Now look at all the signal names, one at a time.
11442         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11443                 $cat > signal.c <<EOCP
11444 #include <sys/types.h>
11445 #include <signal.h>
11446 #include <stdio.h>
11447 int main() {
11448 printf("$xx %d\n", SIG${xx});
11449 return 0;
11450 }
11451 EOCP
11452                 set signal
11453                 if eval $compile; then
11454                         echo "SIG${xx} found."
11455                         ./signal$_exe  >> signal.ls1
11456                 else
11457                         echo "SIG${xx} NOT found."
11458                 fi
11459         done
11460         if $test -s signal.ls1; then
11461                 $cat signal.nsg signal.ls1 |
11462                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11463         fi
11464
11465 fi
11466 if $test -s signal.lst; then
11467         :
11468 else
11469         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11470         echo 'kill -l' >signal
11471         set X `csh -f <signal`
11472         $rm -f signal
11473         shift
11474         case $# in
11475         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11476         esac
11477         echo $@ | $tr ' ' $trnl | \
11478                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11479 fi
11480 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11481 EOS
11482 chmod a+x signal_cmd
11483 $eunicefix signal_cmd
11484
11485 : generate list of signal names
11486 echo " "
11487 case "$sig_name_init" in
11488 '') doinit=yes ;;
11489 *)  case "$sig_num_init" in
11490     ''|*,*) doinit=yes ;;
11491     esac ;;
11492 esac
11493 case "$doinit" in
11494 yes)
11495         echo "Generating a list of signal names and numbers..." >&4
11496         . ./signal_cmd
11497         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11498         sig_name="ZERO $sig_name"
11499         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11500                                                 { printf "\"%s\", ", $1 }
11501                                                 END { printf "0\n" }' signal.lst`
11502         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11503         sig_num="0 $sig_num"
11504         sig_num_init=`$awk 'BEGIN { printf "0, " }
11505                                         { printf "%d, ", $2}
11506                                         END { printf "0\n"}' signal.lst`
11507         ;;
11508 esac
11509 echo "The following signals are available:"
11510 echo " "
11511 echo $sig_name | $awk \
11512 'BEGIN { linelen = 0 }
11513 {
11514         for (i = 1; i <= NF; i++) {
11515                 name = "SIG" $i " "
11516                 linelen = linelen + length(name)
11517                 if (linelen > 70) {
11518                         printf "\n"
11519                         linelen = length(name)
11520                 }
11521                 printf "%s", name
11522         }
11523         printf "\n"
11524 }'
11525 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11526
11527 : see what type is used for signed size_t
11528 set ssize_t ssizetype int stdio.h sys/types.h
11529 eval $typedef
11530 dflt="$ssizetype"
11531 $cat > ssize.c <<EOM
11532 #include <stdio.h>
11533 #include <sys/types.h>
11534 #define Size_t $sizetype
11535 #define SSize_t $dflt
11536 main()
11537 {
11538         if (sizeof(Size_t) == sizeof(SSize_t))
11539                 printf("$dflt\n");
11540         else if (sizeof(Size_t) == sizeof(int))
11541                 printf("int\n");
11542         else 
11543                 printf("long\n");
11544         exit(0);
11545 }
11546 EOM
11547 echo " "
11548 set ssize
11549 if eval $compile_ok && ./ssize > /dev/null; then
11550         ssizetype=`./ssize`
11551         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11552 else
11553         $cat >&4 <<EOM
11554 Help! I can't compile and run the ssize_t test program: please enlighten me!
11555 (This is probably a misconfiguration in your system or libraries, and
11556 you really ought to fix it.  Still, I'll try anyway.)
11557
11558 I need a type that is the same size as $sizetype, but is guaranteed to
11559 be signed.  Common values are ssize_t, int and long.
11560
11561 EOM
11562         rp="What signed type is the same size as $sizetype?"
11563         . ./myread
11564         ssizetype="$ans"
11565 fi
11566 $rm -f ssize ssize.*
11567
11568 : see what type of char stdio uses.
11569 echo " "
11570 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11571         echo "Your stdio uses unsigned chars." >&4
11572         stdchar="unsigned char"
11573 else
11574         echo "Your stdio uses signed chars." >&4
11575         stdchar="char"
11576 fi
11577
11578 : see if time exists
11579 echo " "
11580 if test "X$d_time" = X -o X"$timetype" = X; then
11581     if set time val -f d_time; eval $csym; $val; then
11582                 echo 'time() found.' >&4
11583                 val="$define"
11584                 rp="What is the type returned by time() on this system?"
11585                 set time_t timetype long stdio.h sys/types.h
11586                 eval $typedef_ask
11587     else
11588                 echo 'time() not found, hope that will do.' >&4
11589                 val="$undef"
11590                 timetype='int';
11591     fi
11592     set d_time
11593     eval $setvar
11594 fi
11595
11596 : see what type uids are declared as in the kernel
11597 echo " "
11598 echo "Looking for the type for user ids returned by getuid()."
11599 set uid_t uidtype xxx stdio.h sys/types.h
11600 eval $typedef
11601 case "$uidtype" in
11602 xxx)
11603         xxx=`./findhdr sys/user.h`
11604         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11605         case $1 in
11606         unsigned) dflt="$1 $2" ;;
11607         *) dflt="$1" ;;
11608         esac
11609         ;;
11610 *) dflt="$uidtype";;
11611 esac
11612 case "$uidtype" in
11613 uid_t)  echo "uid_t found." ;;
11614 *)      rp="What is the type for user ids returned by getuid()?"
11615         . ./myread
11616         uidtype="$ans"
11617         ;;
11618 esac
11619
11620 : see if dbm.h is available
11621 : see if dbmclose exists
11622 set dbmclose d_dbmclose
11623 eval $inlibc
11624
11625 case "$d_dbmclose" in
11626 $define)
11627         set dbm.h i_dbm
11628         eval $inhdr
11629         case "$i_dbm" in
11630         $define)
11631                 val="$undef"
11632                 set i_rpcsvcdbm
11633                 eval $setvar
11634                 ;;
11635         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11636                 eval $inhdr
11637                 ;;
11638         esac
11639         ;;
11640 *)      echo "We won't be including <dbm.h>"
11641         val="$undef"
11642         set i_dbm
11643         eval $setvar
11644         val="$undef"
11645         set i_rpcsvcdbm
11646         eval $setvar
11647         ;;
11648 esac
11649
11650 : see if this is a sys/file.h system
11651 val=''
11652 set sys/file.h val
11653 eval $inhdr
11654
11655 : do we need to include sys/file.h ?
11656 case "$val" in
11657 "$define")
11658         echo " "
11659         if $h_sysfile; then
11660                 val="$define"
11661                 echo "We'll be including <sys/file.h>." >&4
11662         else
11663                 val="$undef"
11664                 echo "We won't be including <sys/file.h>." >&4
11665         fi
11666         ;;
11667 *)
11668         h_sysfile=false
11669         ;;
11670 esac
11671 set i_sysfile
11672 eval $setvar
11673
11674 : see if fcntl.h is there
11675 val=''
11676 set fcntl.h val
11677 eval $inhdr
11678
11679 : see if we can include fcntl.h
11680 case "$val" in
11681 "$define")
11682         echo " "
11683         if $h_fcntl; then
11684                 val="$define"
11685                 echo "We'll be including <fcntl.h>." >&4
11686         else
11687                 val="$undef"
11688                 if $h_sysfile; then
11689         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11690                 else
11691                         echo "We won't be including <fcntl.h>." >&4
11692                 fi
11693         fi
11694         ;;
11695 *)
11696         h_fcntl=false
11697         val="$undef"
11698         ;;
11699 esac
11700 set i_fcntl
11701 eval $setvar
11702
11703 : see if locale.h is available
11704 set locale.h i_locale
11705 eval $inhdr
11706
11707 : see if mach cthreads are available
11708 if test "X$usethreads" = "X$define"; then
11709         set mach/cthreads.h i_machcthr
11710         eval $inhdr
11711 else
11712         i_machcthr="$undef"
11713 fi
11714
11715
11716
11717 : see if this is a math.h system
11718 set math.h i_math
11719 eval $inhdr
11720
11721 : see if this is a mntent.h system
11722 set mntent.h i_mntent
11723 eval $inhdr
11724
11725 : see if ndbm.h is available
11726 set ndbm.h t_ndbm
11727 eval $inhdr
11728 case "$t_ndbm" in
11729 $define)
11730         : see if dbm_open exists
11731         set dbm_open d_dbm_open
11732         eval $inlibc
11733         case "$d_dbm_open" in
11734         $undef)
11735                 t_ndbm="$undef"
11736                 echo "We won't be including <ndbm.h>"
11737                 ;;
11738         esac
11739         ;;
11740 esac
11741 val="$t_ndbm"
11742 set i_ndbm
11743 eval $setvar
11744
11745 : see if net/errno.h is available
11746 val=''
11747 set net/errno.h val
11748 eval $inhdr
11749
11750 : Unfortunately, it causes problems on some systems.  Arrgh.
11751 case "$val" in
11752 $define)
11753         cat > try.c <<'EOM'
11754 #include <stdio.h>
11755 #include <errno.h>
11756 #include <net/errno.h>
11757 int func()
11758 {
11759         return ENOTSOCK;
11760 }
11761 EOM
11762         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11763                 echo "We'll be including <net/errno.h>." >&4
11764         else
11765                 echo "We won't be including <net/errno.h>." >&4
11766                 val="$undef"
11767         fi
11768         $rm -f try.* try
11769         ;;
11770 esac
11771 set i_neterrno
11772 eval $setvar
11773
11774 : see if this is a poll.h system
11775 set poll.h i_poll
11776 eval $inhdr
11777
11778 : get C preprocessor symbols handy
11779 echo " "
11780 $echo $n "Hmm... $c"
11781 echo $al | $tr ' ' $trnl >Cppsym.know
11782 $cat <<EOSS >Cppsym
11783 $startsh
11784 case "\$1" in
11785 -l) list=true
11786         shift
11787         ;;
11788 esac
11789 unknown=''
11790 case "\$list\$#" in
11791 1|2)
11792         for sym do
11793                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11794                         exit 0
11795                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11796                         :
11797                 else
11798                         unknown="\$unknown \$sym"
11799                 fi
11800         done
11801         set X \$unknown
11802         shift
11803         ;;
11804 esac
11805 case \$# in
11806 0) exit 1;;
11807 esac
11808 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11809 #ifdef \1\\
11810 exit 0; _ _ _ _\1\\      \1\\
11811 #endif\\
11812 /' >Cppsym\$\$
11813 echo "exit 1; _ _ _" >>Cppsym\$\$
11814 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11815 case "\$list" in
11816 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11817 *)
11818         sh Cppsym2\$\$
11819         status=\$?
11820         ;;
11821 esac
11822 $rm -f Cppsym\$\$ Cppsym2\$\$
11823 exit \$status
11824 EOSS
11825 chmod +x Cppsym
11826 $eunicefix Cppsym
11827 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11828
11829 : now check the C compiler for additional symbols
11830 $cat >ccsym <<EOS
11831 $startsh
11832 $cat >tmp.c <<EOF
11833 extern int foo;
11834 EOF
11835 for i in \`$cc -v -c tmp.c 2>&1\`
11836 do
11837         case "\$i" in
11838         -D*) echo "\$i" | $sed 's/^-D//';;
11839         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11840         esac
11841 done
11842 $rm -f try.c
11843 EOS
11844 chmod +x ccsym
11845 $eunicefix ccsym
11846 ./ccsym > ccsym1.raw
11847 if $test -s ccsym1.raw; then
11848        $sort ccsym1.raw | $uniq >ccsym.raw
11849 else
11850        mv ccsym1.raw ccsym.raw
11851 fi
11852
11853 $awk '/\=/ { print $0; next }
11854         { print $0"=1" }' ccsym.raw >ccsym.list
11855 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11856 $comm -13 ccsym.true ccsym.list >ccsym.own
11857 $comm -12 ccsym.true ccsym.list >ccsym.com
11858 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11859 also=''
11860 symbols='symbols'
11861 if $test -z ccsym.raw; then
11862         echo "Your C compiler doesn't seem to define any symbol!" >&4
11863         echo " "
11864         echo "However, your C preprocessor defines the following ones:"
11865         $cat Cppsym.true
11866 else
11867         if $test -s ccsym.com; then
11868                 echo "Your C compiler and pre-processor define these symbols:"
11869                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11870                 also='also '
11871                 symbols='ones'
11872                 $test "$silent" || sleep 1
11873         fi
11874         if $test -s ccsym.cpp; then
11875                 $test "$also" && echo " "
11876                 echo "Your C pre-processor ${also}defines the following $symbols:"
11877                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11878                 also='further '
11879                 $test "$silent" || sleep 1
11880         fi
11881         if $test -s ccsym.own; then
11882                 $test "$also" && echo " "
11883                 echo "Your C compiler ${also}defines the following cpp variables:"
11884                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11885                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11886                 $test "$silent" || sleep 1
11887         fi
11888 fi
11889 $rm -f ccsym*
11890
11891 : see if this is a termio system
11892 val="$undef"
11893 val2="$undef"
11894 val3="$undef"
11895 if $test `./findhdr termios.h`; then
11896         set tcsetattr i_termios
11897         eval $inlibc
11898         val3="$i_termios"
11899 fi
11900 echo " "
11901 case "$val3" in
11902 "$define") echo "You have POSIX termios.h... good!" >&4;;
11903 *) if ./Cppsym pyr; then
11904                 case "`/bin/universe`" in
11905                 ucb) if $test `./findhdr sgtty.h`; then
11906                                 val2="$define"
11907                                 echo "<sgtty.h> found." >&4
11908                         else
11909                                 echo "System is pyramid with BSD universe."
11910                                 echo "<sgtty.h> not found--you could have problems." >&4
11911                         fi;;
11912                 *) if $test `./findhdr termio.h`; then
11913                                 val="$define"
11914                                 echo "<termio.h> found." >&4
11915                         else
11916                                 echo "System is pyramid with USG universe."
11917                                 echo "<termio.h> not found--you could have problems." >&4
11918                         fi;;
11919                 esac
11920         elif ./usg; then
11921                 if $test `./findhdr termio.h`; then
11922                         echo "<termio.h> found." >&4
11923                         val="$define"
11924                 elif $test `./findhdr sgtty.h`; then
11925                         echo "<sgtty.h> found." >&4
11926                         val2="$define"
11927                 else
11928 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11929                 fi
11930         else
11931                 if $test `./findhdr sgtty.h`; then
11932                         echo "<sgtty.h> found." >&4
11933                         val2="$define"
11934                 elif $test `./findhdr termio.h`; then
11935                         echo "<termio.h> found." >&4
11936                         val="$define"
11937                 else
11938 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11939                 fi
11940         fi;;
11941 esac
11942 set i_termio; eval $setvar
11943 val=$val2; set i_sgtty; eval $setvar
11944 val=$val3; set i_termios; eval $setvar
11945
11946 : see if stdarg is available
11947 echo " "
11948 if $test `./findhdr stdarg.h`; then
11949         echo "<stdarg.h> found." >&4
11950         valstd="$define"
11951 else
11952         echo "<stdarg.h> NOT found." >&4
11953         valstd="$undef"
11954 fi
11955
11956 : see if varags is available
11957 echo " "
11958 if $test `./findhdr varargs.h`; then
11959         echo "<varargs.h> found." >&4
11960 else
11961         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11962 fi
11963
11964 : set up the varargs testing programs
11965 $cat > varargs.c <<EOP
11966 #ifdef I_STDARG
11967 #include <stdarg.h>
11968 #endif
11969 #ifdef I_VARARGS
11970 #include <varargs.h>
11971 #endif
11972
11973 #ifdef I_STDARG
11974 int f(char *p, ...)
11975 #else
11976 int f(va_alist)
11977 va_dcl
11978 #endif
11979 {
11980         va_list ap;
11981 #ifndef I_STDARG
11982         char *p;
11983 #endif
11984 #ifdef I_STDARG
11985         va_start(ap,p);
11986 #else
11987         va_start(ap);
11988         p = va_arg(ap, char *);
11989 #endif
11990         va_end(ap);
11991 }
11992 EOP
11993 $cat > varargs <<EOP
11994 $startsh
11995 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
11996         echo "true"
11997 else
11998         echo "false"
11999 fi
12000 $rm -f varargs$_o
12001 EOP
12002 chmod +x varargs
12003
12004 : now check which varargs header should be included
12005 echo " "
12006 i_varhdr=''
12007 case "$valstd" in
12008 "$define")
12009         if `./varargs I_STDARG`; then
12010                 val='stdarg.h'
12011         elif `./varargs I_VARARGS`; then
12012                 val='varargs.h'
12013         fi
12014         ;;
12015 *)
12016         if `./varargs I_VARARGS`; then
12017                 val='varargs.h'
12018         fi
12019         ;;
12020 esac
12021 case "$val" in
12022 '')
12023 echo "I could not find the definition for va_dcl... You have problems..." >&4
12024         val="$undef"; set i_stdarg; eval $setvar
12025         val="$undef"; set i_varargs; eval $setvar
12026         ;;
12027 *) 
12028         set i_varhdr
12029         eval $setvar
12030         case "$i_varhdr" in
12031         stdarg.h)
12032                 val="$define"; set i_stdarg; eval $setvar
12033                 val="$undef"; set i_varargs; eval $setvar
12034                 ;;
12035         varargs.h)
12036                 val="$undef"; set i_stdarg; eval $setvar
12037                 val="$define"; set i_varargs; eval $setvar
12038                 ;;
12039         esac
12040         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12041 esac
12042 $rm -f varargs*
12043
12044 : see if stddef is available
12045 set stddef.h i_stddef
12046 eval $inhdr
12047
12048 : see if sys/access.h is available
12049 set sys/access.h i_sysaccess
12050 eval $inhdr
12051
12052 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12053 set sys/filio.h i_sysfilio
12054 eval $inhdr
12055 echo " "
12056 if $test `./findhdr sys/ioctl.h`; then
12057         val="$define"
12058         echo '<sys/ioctl.h> found.' >&4
12059 else
12060         val="$undef"
12061         if $test $i_sysfilio = "$define"; then
12062             echo '<sys/ioctl.h> NOT found.' >&4
12063         else
12064                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12065                 $test $i_termio = "$define" && xxx="termio.h"
12066                 $test $i_termios = "$define" && xxx="termios.h"
12067 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12068         fi
12069 fi
12070 set i_sysioctl
12071 eval $setvar
12072
12073 : see if this is a sys/param system
12074 set sys/param.h i_sysparam
12075 eval $inhdr
12076
12077 : see if sys/resource.h has to be included
12078 set sys/resource.h i_sysresrc
12079 eval $inhdr
12080
12081 : see if sys/security.h is available
12082 set sys/security.h i_syssecrt
12083 eval $inhdr
12084
12085 : see if this is a sys/statvfs.h system
12086 set sys/statvfs.h i_sysstatvfs
12087 eval $inhdr
12088
12089 : see if this is a sys/un.h system
12090 set sys/un.h i_sysun
12091 eval $inhdr
12092
12093 : see if this is a syswait system
12094 set sys/wait.h i_syswait
12095 eval $inhdr
12096
12097 : see if this is an utime system
12098 set utime.h i_utime
12099 eval $inhdr
12100
12101 : see if this is a values.h system
12102 set values.h i_values
12103 eval $inhdr
12104
12105 : see if this is a vfork system
12106 case "$d_vfork" in
12107 "$define")
12108         set vfork.h i_vfork
12109         eval $inhdr
12110         ;;
12111 *)
12112         i_vfork="$undef"
12113         ;;
12114 esac
12115
12116 : see if gdbm.h is available
12117 set gdbm.h t_gdbm
12118 eval $inhdr
12119 case "$t_gdbm" in
12120 $define)
12121         : see if gdbm_open exists
12122         set gdbm_open d_gdbm_open
12123         eval $inlibc
12124         case "$d_gdbm_open" in
12125         $undef)
12126                 t_gdbm="$undef"
12127                 echo "We won't be including <gdbm.h>"
12128                 ;;
12129         esac
12130         ;;
12131 esac
12132 val="$t_gdbm"
12133 set i_gdbm
12134 eval $setvar
12135
12136 echo " "
12137 echo "Looking for extensions..." >&4
12138 tdir=`pwd`
12139 cd $rsrc/ext
12140 : If we are using the old config.sh, known_extensions may contain
12141 : old or inaccurate or duplicate values.
12142 known_extensions=''
12143 nonxs_extensions=''
12144 : We do not use find because it might not be available.
12145 : We do not just use MANIFEST because the user may have dropped
12146 : some additional extensions into the source tree and expect them
12147 : to be built.
12148 for xxx in * ; do
12149         case "$xxx" in
12150         DynaLoader|dynaload) ;;
12151         *)      if $test -f $xxx/$xxx.xs; then
12152                         known_extensions="$known_extensions $xxx"
12153                 elif $test -f $xxx/Makefile.PL; then
12154                         nonxs_extensions="$nonxs_extensions $xxx"
12155                 else
12156                         if $test -d $xxx; then
12157                                 # Look for nested extensions, eg. Devel/Dprof.
12158                                 cd $xxx
12159                                 for yyy in * ; do
12160                                 if $test -f $yyy/$yyy.xs; then
12161                                         known_extensions="$known_extensions $xxx/$yyy"
12162                                 elif $test -f $yyy/Makefile.PL; then
12163                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12164                                 fi
12165                                 done
12166                                 cd ..
12167                         fi
12168                 fi 
12169                 ;;
12170         esac
12171 done
12172 set X $nonxs_extensions
12173 shift
12174 nonxs_extensions="$*"
12175 set X $known_extensions
12176 shift
12177 known_extensions="$*"
12178 cd $tdir
12179
12180 : Now see which are supported on this system.
12181 avail_ext=''
12182 for xxx in $known_extensions ; do
12183         case "$xxx" in
12184         DB_File|db_file)
12185                 case "$i_db" in
12186                 $define) avail_ext="$avail_ext $xxx" ;;
12187                 esac
12188                 ;;
12189         GDBM_File|gdbm_fil)
12190                 case "$i_gdbm" in 
12191                 $define) avail_ext="$avail_ext $xxx" ;;
12192                 esac
12193                 ;;
12194         NDBM_File|ndbm_fil)
12195                 case "$i_ndbm" in
12196                 $define) avail_ext="$avail_ext $xxx" ;;
12197                 esac
12198                 ;;
12199         ODBM_File|odbm_fil) 
12200                 case "${i_dbm}${i_rpcsvcdbm}" in
12201                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12202                 esac
12203                 ;;
12204         POSIX|posix)
12205                 case "$useposix" in
12206                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12207                 esac
12208                 ;;
12209         Opcode|opcode)
12210                 case "$useopcode" in
12211                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12212                 esac
12213                 ;;
12214         Socket|socket)
12215                 case "$d_socket" in 
12216                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12217                 esac
12218                 ;;
12219         Thread|thread)
12220                 case "$usethreads" in 
12221                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12222                 esac
12223                 ;;
12224         IPC/SysV|ipc/sysv)
12225                 : XXX Do we need a useipcsysv variable here
12226                 case "${d_msg}${d_sem}${d_shm}" in 
12227                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12228                 esac
12229                 ;;
12230         *)      avail_ext="$avail_ext $xxx"
12231                 ;;
12232         esac
12233 done
12234
12235 set X $avail_ext
12236 shift
12237 avail_ext="$*"
12238
12239 : Now see which nonxs extensions are supported on this system.
12240 : For now assume all are.
12241 nonxs_ext=''
12242 for xxx in $nonxs_extensions ; do
12243         case "$xxx" in
12244         *)      nonxs_ext="$nonxs_ext $xxx"
12245                 ;;
12246         esac
12247 done
12248
12249 set X $nonxs_ext
12250 shift
12251 nonxs_ext="$*"
12252
12253 case $usedl in
12254 $define)
12255         $cat <<EOM
12256 A number of extensions are supplied with $package.  You may choose to
12257 compile these extensions for dynamic loading (the default), compile
12258 them into the $package executable (static loading), or not include
12259 them at all.  Answer "none" to include no extensions.
12260 Note that DynaLoader is always built and need not be mentioned here.
12261
12262 EOM
12263         case "$dynamic_ext" in
12264         '') dflt="$avail_ext" ;;
12265         *)      dflt="$dynamic_ext"
12266                 # Perhaps we are reusing an old out-of-date config.sh.
12267                 case "$hint" in
12268                 previous)
12269                         if test X"$dynamic_ext" != X"$avail_ext"; then
12270                                 $cat <<EOM
12271 NOTICE:  Your previous config.sh list may be incorrect. 
12272 The extensions now available to you are 
12273         ${avail_ext}
12274 but the default list from your previous config.sh is
12275         ${dynamic_ext} 
12276
12277 EOM
12278                         fi
12279                         ;;
12280                 esac
12281                 ;;
12282         esac
12283         case "$dflt" in
12284         '')     dflt=none;;
12285         esac
12286         rp="What extensions do you wish to load dynamically?"
12287         . ./myread
12288         case "$ans" in
12289         none) dynamic_ext=' ' ;;
12290         *) dynamic_ext="$ans" ;;
12291         esac
12292
12293         case "$static_ext" in
12294         '')
12295                 : Exclude those already listed in dynamic linking
12296                 dflt=''
12297                 for xxx in $avail_ext; do
12298                         case " $dynamic_ext " in
12299                         *" $xxx "*) ;;
12300                         *) dflt="$dflt $xxx" ;;
12301                         esac
12302                 done
12303                 set X $dflt
12304                 shift
12305                 dflt="$*"
12306                 ;;
12307         *)  dflt="$static_ext" 
12308                 ;;
12309         esac
12310
12311         case "$dflt" in
12312         '')     dflt=none;;
12313         esac
12314         rp="What extensions do you wish to load statically?"
12315         . ./myread
12316         case "$ans" in
12317         none) static_ext=' ' ;;
12318         *) static_ext="$ans" ;;
12319         esac
12320         ;;
12321 *)
12322         $cat <<EOM
12323 A number of extensions are supplied with $package.  Answer "none" 
12324 to include no extensions. 
12325 Note that DynaLoader is always built and need not be mentioned here.
12326
12327 EOM
12328         case "$static_ext" in
12329         '') dflt="$avail_ext" ;;
12330         *)      dflt="$static_ext"
12331                 # Perhaps we are reusing an old out-of-date config.sh.
12332                 case "$hint" in
12333                 previous)
12334                         if test X"$static_ext" != X"$avail_ext"; then
12335                                 $cat <<EOM
12336 NOTICE:  Your previous config.sh list may be incorrect. 
12337 The extensions now available to you are 
12338         ${avail_ext}
12339 but the default list from your previous config.sh is
12340         ${static_ext} 
12341
12342 EOM
12343                         fi
12344                         ;;
12345                 esac
12346                 ;;
12347         esac
12348         : Exclude those that are not xs extensions
12349         case "$dflt" in
12350         '')     dflt=none;;
12351         esac
12352         rp="What extensions do you wish to include?"
12353         . ./myread
12354         case "$ans" in
12355         none) static_ext=' ' ;;
12356         *) static_ext="$ans" ;;
12357         esac
12358         ;;
12359 esac
12360
12361 set X $dynamic_ext $static_ext $nonxs_ext
12362 shift
12363 extensions="$*"
12364
12365 : Remove build directory name from cppstdin so it can be used from
12366 : either the present location or the final installed location.
12367 echo " "
12368 : Get out of the UU directory to get correct path name.
12369 cd ..
12370 case "$cppstdin" in
12371 `pwd`/cppstdin)
12372         echo "Stripping down cppstdin path name"
12373         cppstdin=cppstdin
12374         ;;
12375 esac
12376 cd UU
12377
12378 : end of configuration questions
12379 echo " "
12380 echo "End of configuration questions."
12381 echo " "
12382
12383 : back to where it started
12384 if test -d ../UU; then
12385         cd ..
12386 fi
12387
12388 : configuration may be patched via a 'config.over' file
12389 if $test -f config.over; then
12390         echo " "
12391         dflt=y
12392         rp='I see a config.over file.  Do you wish to load it?'
12393         . UU/myread
12394         case "$ans" in
12395         n*) echo "OK, I'll ignore it.";;
12396         *)      . ./config.over
12397                 echo "Configuration override changes have been loaded."
12398                 ;;
12399         esac
12400 fi
12401
12402 : in case they want portability, strip down executable paths
12403 case "$d_portable" in
12404 "$define")
12405         echo " "
12406         echo "Stripping down executable paths..." >&4
12407         for file in $loclist $trylist; do
12408                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12409                         eval $file="\$file"
12410                 fi
12411         done
12412         ;;
12413 esac
12414
12415 : create config.sh file
12416 echo " "
12417 echo "Creating config.sh..." >&4
12418 $spitshell <<EOT >config.sh
12419 $startsh
12420 #
12421 # This file was produced by running the Configure script. It holds all the
12422 # definitions figured out by Configure. Should you modify one of these values,
12423 # do not forget to propagate your changes by running "Configure -der". You may
12424 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12425 #
12426
12427 # Package name      : $package
12428 # Source directory  : $src
12429 # Configuration time: $cf_time
12430 # Configured by     : $cf_by
12431 # Target system     : $myuname
12432
12433 Author='$Author'
12434 Date='$Date'
12435 Header='$Header'
12436 Id='$Id'
12437 Locker='$Locker'
12438 Log='$Log'
12439 Mcc='$Mcc'
12440 RCSfile='$RCSfile'
12441 Revision='$Revision'
12442 Source='$Source'
12443 State='$State'
12444 _a='$_a'
12445 _exe='$_exe'
12446 _o='$_o'
12447 afs='$afs'
12448 alignbytes='$alignbytes'
12449 ansi2knr='$ansi2knr'
12450 aphostname='$aphostname'
12451 apiversion='$apiversion'
12452 ar='$ar'
12453 archlib='$archlib'
12454 archlibexp='$archlibexp'
12455 archname64='$archname64'
12456 archname='$archname'
12457 archobjs='$archobjs'
12458 awk='$awk'
12459 baserev='$baserev'
12460 bash='$bash'
12461 bin='$bin'
12462 binexp='$binexp'
12463 bison='$bison'
12464 byacc='$byacc'
12465 byteorder='$byteorder'
12466 c='$c'
12467 castflags='$castflags'
12468 cat='$cat'
12469 cc='$cc'
12470 cccdlflags='$cccdlflags'
12471 ccdlflags='$ccdlflags'
12472 ccflags='$ccflags'
12473 cf_by='$cf_by'
12474 cf_email='$cf_email'
12475 cf_time='$cf_time'
12476 chgrp='$chgrp'
12477 chmod='$chmod'
12478 chown='$chown'
12479 clocktype='$clocktype'
12480 comm='$comm'
12481 compress='$compress'
12482 contains='$contains'
12483 cp='$cp'
12484 cpio='$cpio'
12485 cpp='$cpp'
12486 cpp_stuff='$cpp_stuff'
12487 cppflags='$cppflags'
12488 cpplast='$cpplast'
12489 cppminus='$cppminus'
12490 cpprun='$cpprun'
12491 cppstdin='$cppstdin'
12492 cryptlib='$cryptlib'
12493 csh='$csh'
12494 d_Gconvert='$d_Gconvert'
12495 d_access='$d_access'
12496 d_accessx='$d_accessx'
12497 d_alarm='$d_alarm'
12498 d_archlib='$d_archlib'
12499 d_attribut='$d_attribut'
12500 d_bcmp='$d_bcmp'
12501 d_bcopy='$d_bcopy'
12502 d_bsd='$d_bsd'
12503 d_bsdgetpgrp='$d_bsdgetpgrp'
12504 d_bsdsetpgrp='$d_bsdsetpgrp'
12505 d_bzero='$d_bzero'
12506 d_casti32='$d_casti32'
12507 d_castneg='$d_castneg'
12508 d_charvspr='$d_charvspr'
12509 d_chown='$d_chown'
12510 d_chroot='$d_chroot'
12511 d_chsize='$d_chsize'
12512 d_closedir='$d_closedir'
12513 d_cmsghdr_s='$d_cmsghdr_s'
12514 d_const='$d_const'
12515 d_crypt='$d_crypt'
12516 d_csh='$d_csh'
12517 d_cuserid='$d_cuserid'
12518 d_dbl_dig='$d_dbl_dig'
12519 d_dbmclose64='$d_dbmclose64'
12520 d_dbminit64='$d_dbminit64'
12521 d_delete64='$d_delete64'
12522 d_difftime='$d_difftime'
12523 d_dirent64_s='$d_dirent64_s'
12524 d_dirnamlen='$d_dirnamlen'
12525 d_dlerror='$d_dlerror'
12526 d_dlopen='$d_dlopen'
12527 d_dlsymun='$d_dlsymun'
12528 d_dosuid='$d_dosuid'
12529 d_drand48proto='$d_drand48proto'
12530 d_dup2='$d_dup2'
12531 d_eaccess='$d_eaccess'
12532 d_endgrent='$d_endgrent'
12533 d_endhent='$d_endhent'
12534 d_endnent='$d_endnent'
12535 d_endpent='$d_endpent'
12536 d_endpwent='$d_endpwent'
12537 d_endsent='$d_endsent'
12538 d_eofnblk='$d_eofnblk'
12539 d_eunice='$d_eunice'
12540 d_fchmod='$d_fchmod'
12541 d_fchown='$d_fchown'
12542 d_fcntl='$d_fcntl'
12543 d_fd_macros='$d_fd_macros'
12544 d_fd_set='$d_fd_set'
12545 d_fds_bits='$d_fds_bits'
12546 d_fetch64='$d_fetch64'
12547 d_fgetpos64='$d_fgetpos64'
12548 d_fgetpos='$d_fgetpos'
12549 d_firstkey64='$d_firstkey64'
12550 d_flexfnam='$d_flexfnam'
12551 d_flock64_s='$d_flock64_s'
12552 d_flock='$d_flock'
12553 d_fopen64='$d_fopen64'
12554 d_fork='$d_fork'
12555 d_fpathconf='$d_fpathconf'
12556 d_freopen64='$d_freopen64'
12557 d_fseek64='$d_fseek64'
12558 d_fseeko64='$d_fseeko64'
12559 d_fseeko='$d_fseeko'
12560 d_fsetpos64='$d_fsetpos64'
12561 d_fsetpos='$d_fsetpos'
12562 d_fstat64='$d_fstat64'
12563 d_fstatfs='$d_fstatfs'
12564 d_fstatvfs='$d_fstatvfs'
12565 d_ftell64='$d_ftell64'
12566 d_ftello64='$d_ftello64'
12567 d_ftello='$d_ftello'
12568 d_ftime='$d_ftime'
12569 d_ftruncate64='$d_ftruncate64'
12570 d_getgrent='$d_getgrent'
12571 d_getgrps='$d_getgrps'
12572 d_gethbyaddr='$d_gethbyaddr'
12573 d_gethbyname='$d_gethbyname'
12574 d_gethent='$d_gethent'
12575 d_gethname='$d_gethname'
12576 d_gethostprotos='$d_gethostprotos'
12577 d_getlogin='$d_getlogin'
12578 d_getnbyaddr='$d_getnbyaddr'
12579 d_getnbyname='$d_getnbyname'
12580 d_getnent='$d_getnent'
12581 d_getnetprotos='$d_getnetprotos'
12582 d_getpbyname='$d_getpbyname'
12583 d_getpbynumber='$d_getpbynumber'
12584 d_getpent='$d_getpent'
12585 d_getpgid='$d_getpgid'
12586 d_getpgrp2='$d_getpgrp2'
12587 d_getpgrp='$d_getpgrp'
12588 d_getppid='$d_getppid'
12589 d_getprior='$d_getprior'
12590 d_getprotoprotos='$d_getprotoprotos'
12591 d_getpwent='$d_getpwent'
12592 d_getsbyname='$d_getsbyname'
12593 d_getsbyport='$d_getsbyport'
12594 d_getsent='$d_getsent'
12595 d_getservprotos='$d_getservprotos'
12596 d_gettimeod='$d_gettimeod'
12597 d_gnulibc='$d_gnulibc'
12598 d_grpasswd='$d_grpasswd'
12599 d_htonl='$d_htonl'
12600 d_index='$d_index'
12601 d_inetaton='$d_inetaton'
12602 d_ino64t='$d_ino64t'
12603 d_int64t='$d_int64t'
12604 d_iovec_s='$d_iovec_s'
12605 d_isascii='$d_isascii'
12606 d_killpg='$d_killpg'
12607 d_lchown='$d_lchown'
12608 d_link='$d_link'
12609 d_locconv='$d_locconv'
12610 d_lockf64='$d_lockf64'
12611 d_lockf='$d_lockf'
12612 d_longdbl='$d_longdbl'
12613 d_longlong='$d_longlong'
12614 d_lseek64='$d_lseek64'
12615 d_lstat64='$d_lstat64'
12616 d_lstat='$d_lstat'
12617 d_mblen='$d_mblen'
12618 d_mbstowcs='$d_mbstowcs'
12619 d_mbtowc='$d_mbtowc'
12620 d_memcmp='$d_memcmp'
12621 d_memcpy='$d_memcpy'
12622 d_memmove='$d_memmove'
12623 d_memset='$d_memset'
12624 d_mkdir='$d_mkdir'
12625 d_mkfifo='$d_mkfifo'
12626 d_mktime='$d_mktime'
12627 d_msg='$d_msg'
12628 d_msg_ctrunc='$d_msg_ctrunc'
12629 d_msg_dontroute='$d_msg_dontroute'
12630 d_msg_oob='$d_msg_oob'
12631 d_msg_peek='$d_msg_peek'
12632 d_msg_proxy='$d_msg_proxy'
12633 d_msgctl='$d_msgctl'
12634 d_msgget='$d_msgget'
12635 d_msghdr_s='$d_msghdr_s'
12636 d_msgrcv='$d_msgrcv'
12637 d_msgsnd='$d_msgsnd'
12638 d_mymalloc='$d_mymalloc'
12639 d_nextkey64='$d_nextkey64'
12640 d_nice='$d_nice'
12641 d_off64t='$d_off64t'
12642 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12643 d_oldpthreads='$d_oldpthreads'
12644 d_oldsock='$d_oldsock'
12645 d_open3='$d_open3'
12646 d_open64='$d_open64'
12647 d_opendir64='$d_opendir64'
12648 d_pathconf='$d_pathconf'
12649 d_pause='$d_pause'
12650 d_phostname='$d_phostname'
12651 d_pipe='$d_pipe'
12652 d_poll='$d_poll'
12653 d_portable='$d_portable'
12654 d_pthread_yield='$d_pthread_yield'
12655 d_pwage='$d_pwage'
12656 d_pwchange='$d_pwchange'
12657 d_pwclass='$d_pwclass'
12658 d_pwcomment='$d_pwcomment'
12659 d_pwexpire='$d_pwexpire'
12660 d_pwgecos='$d_pwgecos'
12661 d_pwpasswd='$d_pwpasswd'
12662 d_pwquota='$d_pwquota'
12663 d_readdir64='$d_readdir64'
12664 d_readdir='$d_readdir'
12665 d_readlink='$d_readlink'
12666 d_readv='$d_readv'
12667 d_recvmsg='$d_recvmsg'
12668 d_rename='$d_rename'
12669 d_rewinddir='$d_rewinddir'
12670 d_rmdir='$d_rmdir'
12671 d_safebcpy='$d_safebcpy'
12672 d_safemcpy='$d_safemcpy'
12673 d_sanemcmp='$d_sanemcmp'
12674 d_sched_yield='$d_sched_yield'
12675 d_scm_rights='$d_scm_rights'
12676 d_seekdir64='$d_seekdir64'
12677 d_seekdir='$d_seekdir'
12678 d_select='$d_select'
12679 d_sem='$d_sem'
12680 d_semctl='$d_semctl'
12681 d_semctl_semid_ds='$d_semctl_semid_ds'
12682 d_semctl_semun='$d_semctl_semun'
12683 d_semget='$d_semget'
12684 d_semop='$d_semop'
12685 d_sendmsg='$d_sendmsg'
12686 d_setegid='$d_setegid'
12687 d_seteuid='$d_seteuid'
12688 d_setgrent='$d_setgrent'
12689 d_setgrps='$d_setgrps'
12690 d_sethent='$d_sethent'
12691 d_setlinebuf='$d_setlinebuf'
12692 d_setlocale='$d_setlocale'
12693 d_setnent='$d_setnent'
12694 d_setpent='$d_setpent'
12695 d_setpgid='$d_setpgid'
12696 d_setpgrp2='$d_setpgrp2'
12697 d_setpgrp='$d_setpgrp'
12698 d_setprior='$d_setprior'
12699 d_setpwent='$d_setpwent'
12700 d_setregid='$d_setregid'
12701 d_setresgid='$d_setresgid'
12702 d_setresuid='$d_setresuid'
12703 d_setreuid='$d_setreuid'
12704 d_setrgid='$d_setrgid'
12705 d_setruid='$d_setruid'
12706 d_setsent='$d_setsent'
12707 d_setsid='$d_setsid'
12708 d_setvbuf='$d_setvbuf'
12709 d_sfio='$d_sfio'
12710 d_shm='$d_shm'
12711 d_shmat='$d_shmat'
12712 d_shmatprototype='$d_shmatprototype'
12713 d_shmctl='$d_shmctl'
12714 d_shmdt='$d_shmdt'
12715 d_shmget='$d_shmget'
12716 d_sigaction='$d_sigaction'
12717 d_sigsetjmp='$d_sigsetjmp'
12718 d_socket='$d_socket'
12719 d_sockpair='$d_sockpair'
12720 d_stat64='$d_stat64'
12721 d_statblks='$d_statblks'
12722 d_statfs='$d_statfs'
12723 d_statfsflags='$d_statfsflags'
12724 d_statvfs='$d_statvfs'
12725 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12726 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12727 d_stdiobase='$d_stdiobase'
12728 d_stdstdio='$d_stdstdio'
12729 d_store64='$d_store64'
12730 d_strchr='$d_strchr'
12731 d_strcoll='$d_strcoll'
12732 d_strctcpy='$d_strctcpy'
12733 d_strerrm='$d_strerrm'
12734 d_strerror='$d_strerror'
12735 d_strtod='$d_strtod'
12736 d_strtol='$d_strtol'
12737 d_strtoul='$d_strtoul'
12738 d_strxfrm='$d_strxfrm'
12739 d_suidsafe='$d_suidsafe'
12740 d_symlink='$d_symlink'
12741 d_syscall='$d_syscall'
12742 d_sysconf='$d_sysconf'
12743 d_sysernlst='$d_sysernlst'
12744 d_syserrlst='$d_syserrlst'
12745 d_system='$d_system'
12746 d_tcgetpgrp='$d_tcgetpgrp'
12747 d_tcsetpgrp='$d_tcsetpgrp'
12748 d_telldir64='$d_telldir64'
12749 d_telldir='$d_telldir'
12750 d_time='$d_time'
12751 d_times='$d_times'
12752 d_tmpfile64='$d_tmpfile64'
12753 d_truncate64='$d_truncate64'
12754 d_truncate='$d_truncate'
12755 d_tzname='$d_tzname'
12756 d_umask='$d_umask'
12757 d_uname='$d_uname'
12758 d_union_semun='$d_union_semun'
12759 d_vfork='$d_vfork'
12760 d_void_closedir='$d_void_closedir'
12761 d_voidsig='$d_voidsig'
12762 d_voidtty='$d_voidtty'
12763 d_volatile='$d_volatile'
12764 d_vprintf='$d_vprintf'
12765 d_wait4='$d_wait4'
12766 d_waitpid='$d_waitpid'
12767 d_wcstombs='$d_wcstombs'
12768 d_wctomb='$d_wctomb'
12769 d_writev='$d_writev'
12770 d_xenix='$d_xenix'
12771 date='$date'
12772 db_hashtype='$db_hashtype'
12773 db_prefixtype='$db_prefixtype'
12774 defvoidused='$defvoidused'
12775 direntrytype='$direntrytype'
12776 dlext='$dlext'
12777 dlsrc='$dlsrc'
12778 doublesize='$doublesize'
12779 drand01='$drand01'
12780 dynamic_ext='$dynamic_ext'
12781 eagain='$eagain'
12782 ebcdic='$ebcdic'
12783 echo='$echo'
12784 egrep='$egrep'
12785 emacs='$emacs'
12786 eunicefix='$eunicefix'
12787 exe_ext='$exe_ext'
12788 expr='$expr'
12789 extensions='$extensions'
12790 find='$find'
12791 firstmakefile='$firstmakefile'
12792 flex='$flex'
12793 fpostype='$fpostype'
12794 freetype='$freetype'
12795 full_csh='$full_csh'
12796 full_sed='$full_sed'
12797 gccversion='$gccversion'
12798 gidtype='$gidtype'
12799 glibpth='$glibpth'
12800 grep='$grep'
12801 groupcat='$groupcat'
12802 groupstype='$groupstype'
12803 gzip='$gzip'
12804 h_fcntl='$h_fcntl'
12805 h_sysfile='$h_sysfile'
12806 hint='$hint'
12807 hostcat='$hostcat'
12808 huge='$huge'
12809 i_arpainet='$i_arpainet'
12810 i_bsdioctl='$i_bsdioctl'
12811 i_db='$i_db'
12812 i_dbm='$i_dbm'
12813 i_dirent='$i_dirent'
12814 i_dld='$i_dld'
12815 i_dlfcn='$i_dlfcn'
12816 i_fcntl='$i_fcntl'
12817 i_float='$i_float'
12818 i_gdbm='$i_gdbm'
12819 i_grp='$i_grp'
12820 i_inttypes='$i_inttypes'
12821 i_limits='$i_limits'
12822 i_locale='$i_locale'
12823 i_machcthr='$i_machcthr'
12824 i_malloc='$i_malloc'
12825 i_math='$i_math'
12826 i_memory='$i_memory'
12827 i_mntent='$i_mntent'
12828 i_ndbm='$i_ndbm'
12829 i_netdb='$i_netdb'
12830 i_neterrno='$i_neterrno'
12831 i_niin='$i_niin'
12832 i_poll='$i_poll'
12833 i_pwd='$i_pwd'
12834 i_rpcsvcdbm='$i_rpcsvcdbm'
12835 i_sfio='$i_sfio'
12836 i_sgtty='$i_sgtty'
12837 i_stdarg='$i_stdarg'
12838 i_stddef='$i_stddef'
12839 i_stdlib='$i_stdlib'
12840 i_string='$i_string'
12841 i_sysaccess='$i_sysaccess'
12842 i_sysdir='$i_sysdir'
12843 i_sysfile='$i_sysfile'
12844 i_sysfilio='$i_sysfilio'
12845 i_sysin='$i_sysin'
12846 i_sysioctl='$i_sysioctl'
12847 i_sysmount='$i_sysmount'
12848 i_sysndir='$i_sysndir'
12849 i_sysparam='$i_sysparam'
12850 i_sysresrc='$i_sysresrc'
12851 i_syssecrt='$i_syssecrt'
12852 i_sysselct='$i_sysselct'
12853 i_syssockio='$i_syssockio'
12854 i_sysstat='$i_sysstat'
12855 i_sysstatvfs='$i_sysstatvfs'
12856 i_systime='$i_systime'
12857 i_systimek='$i_systimek'
12858 i_systimes='$i_systimes'
12859 i_systypes='$i_systypes'
12860 i_sysuio='$i_sysuio'
12861 i_sysun='$i_sysun'
12862 i_syswait='$i_syswait'
12863 i_termio='$i_termio'
12864 i_termios='$i_termios'
12865 i_time='$i_time'
12866 i_unistd='$i_unistd'
12867 i_utime='$i_utime'
12868 i_values='$i_values'
12869 i_varargs='$i_varargs'
12870 i_varhdr='$i_varhdr'
12871 i_vfork='$i_vfork'
12872 ignore_versioned_solibs='$ignore_versioned_solibs'
12873 incpath='$incpath'
12874 inews='$inews'
12875 installarchlib='$installarchlib'
12876 installbin='$installbin'
12877 installman1dir='$installman1dir'
12878 installman3dir='$installman3dir'
12879 installprivlib='$installprivlib'
12880 installscript='$installscript'
12881 installsitearch='$installsitearch'
12882 installsitelib='$installsitelib'
12883 installusrbinperl='$installusrbinperl'
12884 intsize='$intsize'
12885 known_extensions='$known_extensions'
12886 ksh='$ksh'
12887 large='$large'
12888 ld='$ld'
12889 lddlflags='$lddlflags'
12890 ldflags='$ldflags'
12891 less='$less'
12892 lib_ext='$lib_ext'
12893 libc='$libc'
12894 libperl='$libperl'
12895 libpth='$libpth'
12896 libs='$libs'
12897 libswanted='$libswanted'
12898 line='$line'
12899 lint='$lint'
12900 lkflags='$lkflags'
12901 ln='$ln'
12902 lns='$lns'
12903 locincpth='$locincpth'
12904 loclibpth='$loclibpth'
12905 longdblsize='$longdblsize'
12906 longlongsize='$longlongsize'
12907 longsize='$longsize'
12908 lp='$lp'
12909 lpr='$lpr'
12910 ls='$ls'
12911 lseeksize='$lseeksize'
12912 lseektype='$lseektype'
12913 mail='$mail'
12914 mailx='$mailx'
12915 make='$make'
12916 make_set_make='$make_set_make'
12917 mallocobj='$mallocobj'
12918 mallocsrc='$mallocsrc'
12919 malloctype='$malloctype'
12920 man1dir='$man1dir'
12921 man1direxp='$man1direxp'
12922 man1ext='$man1ext'
12923 man3dir='$man3dir'
12924 man3direxp='$man3direxp'
12925 man3ext='$man3ext'
12926 medium='$medium'
12927 mips='$mips'
12928 mips_type='$mips_type'
12929 mkdir='$mkdir'
12930 models='$models'
12931 modetype='$modetype'
12932 more='$more'
12933 mv='$mv'
12934 myarchname='$myarchname'
12935 mydomain='$mydomain'
12936 myhostname='$myhostname'
12937 myuname='$myuname'
12938 n='$n'
12939 netdb_hlen_type='$netdb_hlen_type'
12940 netdb_host_type='$netdb_host_type'
12941 netdb_name_type='$netdb_name_type'
12942 netdb_net_type='$netdb_net_type'
12943 nm='$nm'
12944 nm_opt='$nm_opt'
12945 nm_so_opt='$nm_so_opt'
12946 nonxs_ext='$nonxs_ext'
12947 nroff='$nroff'
12948 o_nonblock='$o_nonblock'
12949 obj_ext='$obj_ext'
12950 old_pthread_create_joinable='$old_pthread_create_joinable'
12951 optimize='$optimize'
12952 orderlib='$orderlib'
12953 osname='$osname'
12954 osvers='$osvers'
12955 package='$package'
12956 pager='$pager'
12957 passcat='$passcat'
12958 patchlevel='$patchlevel'
12959 path_sep='$path_sep'
12960 perl='$perl'
12961 perladmin='$perladmin'
12962 perlpath='$perlpath'
12963 pg='$pg'
12964 phostname='$phostname'
12965 pidtype='$pidtype'
12966 plibpth='$plibpth'
12967 pmake='$pmake'
12968 pr='$pr'
12969 prefix='$prefix'
12970 prefixexp='$prefixexp'
12971 privlib='$privlib'
12972 privlibexp='$privlibexp'
12973 prototype='$prototype'
12974 ptrsize='$ptrsize'
12975 randbits='$randbits'
12976 randfunc='$randfunc'
12977 randseedtype='$randseedtype'
12978 ranlib='$ranlib'
12979 rd_nodata='$rd_nodata'
12980 rm='$rm'
12981 rmail='$rmail'
12982 runnm='$runnm'
12983 sched_yield='$sched_yield'
12984 scriptdir='$scriptdir'
12985 scriptdirexp='$scriptdirexp'
12986 sed='$sed'
12987 seedfunc='$seedfunc'
12988 selectminbits='$selectminbits'
12989 selecttype='$selecttype'
12990 sendmail='$sendmail'
12991 sh='$sh'
12992 shar='$shar'
12993 sharpbang='$sharpbang'
12994 shmattype='$shmattype'
12995 shortsize='$shortsize'
12996 shrpenv='$shrpenv'
12997 shsharp='$shsharp'
12998 sig_name='$sig_name'
12999 sig_name_init='$sig_name_init'
13000 sig_num='$sig_num'
13001 sig_num_init='$sig_num_init'
13002 signal_t='$signal_t'
13003 sitearch='$sitearch'
13004 sitearchexp='$sitearchexp'
13005 sitelib='$sitelib'
13006 sitelibexp='$sitelibexp'
13007 sizetype='$sizetype'
13008 sleep='$sleep'
13009 smail='$smail'
13010 small='$small'
13011 so='$so'
13012 sockethdr='$sockethdr'
13013 socketlib='$socketlib'
13014 sort='$sort'
13015 spackage='$spackage'
13016 spitshell='$spitshell'
13017 split='$split'
13018 src='$src'
13019 ssizetype='$ssizetype'
13020 startperl='$startperl'
13021 startsh='$startsh'
13022 static_ext='$static_ext'
13023 stdchar='$stdchar'
13024 stdio_base='$stdio_base'
13025 stdio_bufsiz='$stdio_bufsiz'
13026 stdio_cnt='$stdio_cnt'
13027 stdio_filbuf='$stdio_filbuf'
13028 stdio_ptr='$stdio_ptr'
13029 strings='$strings'
13030 submit='$submit'
13031 subversion='$subversion'
13032 sysman='$sysman'
13033 tail='$tail'
13034 tar='$tar'
13035 tbl='$tbl'
13036 tee='$tee'
13037 test='$test'
13038 timeincl='$timeincl'
13039 timetype='$timetype'
13040 touch='$touch'
13041 tr='$tr'
13042 trnl='$trnl'
13043 troff='$troff'
13044 uidtype='$uidtype'
13045 uname='$uname'
13046 uniq='$uniq'
13047 use64bits='$use64bits'
13048 usedl='$usedl'
13049 usemultiplicity='$usemultiplicity'
13050 usemymalloc='$usemymalloc'
13051 usenm='$usenm'
13052 useopcode='$useopcode'
13053 useperlio='$useperlio'
13054 useposix='$useposix'
13055 usesfio='$usesfio'
13056 useshrplib='$useshrplib'
13057 usethreads='$usethreads'
13058 usevfork='$usevfork'
13059 usrinc='$usrinc'
13060 uuname='$uuname'
13061 version='$version'
13062 vi='$vi'
13063 voidflags='$voidflags'
13064 xlibpth='$xlibpth'
13065 zcat='$zcat'
13066 zip='$zip'
13067 EOT
13068
13069 : Add in command line options if available
13070 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13071
13072 : add special variables
13073 $test -f $src/patchlevel.h && \
13074 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13075 echo "CONFIG=true" >>config.sh
13076
13077 : propagate old symbols
13078 if $test -f UU/config.sh; then
13079         <UU/config.sh sort | uniq >UU/oldconfig.sh
13080         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13081         sort | uniq -u >UU/oldsyms
13082         set X `cat UU/oldsyms`
13083         shift
13084         case $# in
13085         0) ;;
13086         *)
13087                 cat <<EOM
13088 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13089 EOM
13090                 echo "# Variables propagated from previous config.sh file." >>config.sh
13091                 for sym in `cat UU/oldsyms`; do
13092                         echo "    Propagating $hint variable "'$'"$sym..."
13093                         eval 'tmp="$'"${sym}"'"'
13094                         echo "$tmp" | \
13095                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13096                 done
13097                 ;;
13098         esac
13099 fi
13100
13101 : Finish up by extracting the .SH files
13102 case "$alldone" in
13103 exit)
13104         $rm -rf UU
13105         echo "Done."
13106         exit 0
13107         ;;
13108 cont)
13109         ;;
13110 '')
13111         dflt=''
13112         nostick=true
13113         $cat <<EOM
13114
13115 If you'd like to make any changes to the config.sh file before I begin
13116 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13117
13118 EOM
13119         rp="Press return or use a shell escape to edit config.sh:"
13120         . UU/myread
13121         nostick=''
13122         case "$ans" in
13123         '') ;;
13124         *) : in case they cannot read
13125                 sh 1>&4 -c "$ans";;
13126         esac
13127         ;;
13128 esac
13129
13130 : if this fails, just run all the .SH files by hand
13131 . ./config.sh
13132
13133 echo " "
13134 exec 1>&4
13135 . ./UU/extract
13136
13137 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13138         dflt=y
13139         case "$silent" in
13140         true) ;;
13141         *)
13142                 $cat <<EOM
13143
13144 Now you need to generate make dependencies by running "$make depend".
13145 You might prefer to run it in background: "$make depend > makedepend.out &"
13146 It can take a while, so you might not want to run it right now.
13147
13148 EOM
13149                 ;;
13150         esac
13151         rp="Run $make depend now?"
13152         . UU/myread
13153         case "$ans" in
13154         y*)
13155                 $make depend && echo "Now you must run a $make."
13156                 ;;
13157         *)
13158                 echo "You must run '$make depend' then '$make'."
13159                 ;;
13160         esac
13161 elif test -f [Mm]akefile; then
13162         echo " "
13163         echo "Now you must run a $make."
13164 else
13165         echo "Done."
13166 fi
13167
13168 if $test -f Policy.sh; then
13169     $cat <<EOM
13170
13171 If you compile $package on a different machine or from a different object
13172 directory, copy the Policy.sh file from this object directory to the
13173 new one before you run Configure -- this will help you with most of
13174 the policy defaults.
13175
13176 EOM
13177 fi
13178 if $test -f config.msg; then
13179     echo "Hmm.  I also noted the following information while running:"
13180     echo " "
13181     $cat config.msg >&4
13182     $rm -f config.msg
13183 fi
13184 $rm -f kit*isdone ark*isdone
13185 $rm -rf UU
13186
13187 : End of Configure
13188