153b502cc66f82212bf2681985f9074753903121
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Tue Feb  2 13:43:18 EET 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 case "$inksh/$needksh" in
112 /[a-z]*)
113                 ENV=''
114                 changesh=true
115                 reason="$needksh"
116         ;;
117 esac
118 case "$inksh/$avoidksh" in
119 true/[a-z]*)
120         changesh=true
121         reason="$avoidksh"
122         ;;
123 esac
124 case "$inksh/$needksh-$avoidksh-" in
125 true/--)
126                 cat <<EOM
127 (I see you are using the Korn shell.  Some ksh's blow up on $me,
128 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
129 EOM
130         ;;
131 esac
132 case "$changesh" in
133 true)
134         echo "(Feeding myself to $newsh $reason.)"
135         case "$0" in
136         Configure|*/Configure) exec $newsh $0 "$@";;
137         *) exec $newsh Configure "$@";;
138         esac
139         ;;
140 esac
141
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
144 case "$CDPATH" in
145 '')     ;;
146 *)      case "$SHELL" in
147         *bash*) CDPATH='.' ;;
148         *)              CDPATH='' ;;
149         esac
150         ;;
151 esac
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
154 cd UU && rm -f ./*
155
156 dynamic_ext=''
157 extensions=''
158 known_extensions=''
159 nonxs_ext=''
160 static_ext=''
161 useopcode=''
162 useposix=''
163 d_bsd=''
164 d_eunice=''
165 d_xenix=''
166 eunicefix=''
167 Mcc=''
168 ar=''
169 awk=''
170 bash=''
171 bison=''
172 byacc=''
173 cat=''
174 chgrp=''
175 chmod=''
176 chown=''
177 comm=''
178 compress=''
179 cp=''
180 cpio=''
181 cpp=''
182 csh=''
183 date=''
184 echo=''
185 egrep=''
186 emacs=''
187 expr=''
188 find=''
189 flex=''
190 grep=''
191 gzip=''
192 inews=''
193 ksh=''
194 less=''
195 line=''
196 lint=''
197 ln=''
198 lp=''
199 lpr=''
200 ls=''
201 mail=''
202 mailx=''
203 make=''
204 mkdir=''
205 more=''
206 mv=''
207 nm=''
208 nroff=''
209 perl=''
210 pg=''
211 pmake=''
212 pr=''
213 rm=''
214 rmail=''
215 sed=''
216 sendmail=''
217 shar=''
218 sleep=''
219 smail=''
220 sort=''
221 submit=''
222 tail=''
223 tar=''
224 tbl=''
225 tee=''
226 test=''
227 touch=''
228 tr=''
229 troff=''
230 uname=''
231 uniq=''
232 uuname=''
233 vi=''
234 zcat=''
235 zip=''
236 full_sed=''
237 libswanted=''
238 hint=''
239 myuname=''
240 osname=''
241 osvers=''
242 Author=''
243 Date=''
244 Header=''
245 Id=''
246 Locker=''
247 Log=''
248 RCSfile=''
249 Revision=''
250 Source=''
251 State=''
252 _a=''
253 _exe=''
254 _o=''
255 archobjs=''
256 exe_ext=''
257 firstmakefile=''
258 lib_ext=''
259 obj_ext=''
260 path_sep=''
261 afs=''
262 alignbytes=''
263 ansi2knr=''
264 archlib=''
265 archlibexp=''
266 d_archlib=''
267 installarchlib=''
268 archname=''
269 myarchname=''
270 baserev=''
271 bin=''
272 binexp=''
273 installbin=''
274 byteorder=''
275 cc=''
276 gccversion=''
277 ccflags=''
278 cppflags=''
279 ldflags=''
280 lkflags=''
281 locincpth=''
282 optimize=''
283 cf_email=''
284 cf_by=''
285 cf_time=''
286 contains=''
287 cpp_stuff=''
288 cpplast=''
289 cppminus=''
290 cpprun=''
291 cppstdin=''
292 d_access=''
293 d_accessx=''
294 d_alarm=''
295 d_attribut=''
296 d_bcmp=''
297 d_bcopy=''
298 d_bzero=''
299 d_casti32=''
300 castflags=''
301 d_castneg=''
302 d_chown=''
303 d_chroot=''
304 d_chsize=''
305 d_closedir=''
306 d_void_closedir=''
307 d_const=''
308 cryptlib=''
309 d_crypt=''
310 d_csh=''
311 full_csh=''
312 d_cuserid=''
313 d_dbl_dig=''
314 d_difftime=''
315 d_dlerror=''
316 d_dlopen=''
317 d_dlsymun=''
318 d_dosuid=''
319 d_suidsafe=''
320 d_drand48proto=''
321 d_dup2=''
322 d_eaccess=''
323 d_endgrent=''
324 d_endhent=''
325 d_endnent=''
326 d_endpent=''
327 d_endpwent=''
328 d_endsent=''
329 d_fchmod=''
330 d_fchown=''
331 d_fcntl=''
332 d_fd_macros=''
333 d_fd_set=''
334 d_fds_bits=''
335 d_fgetpos=''
336 d_flexfnam=''
337 d_flock=''
338 d_fork=''
339 d_fseeko=''
340 d_fsetpos=''
341 d_ftello=''
342 d_ftime=''
343 d_gettimeod=''
344 d_Gconvert=''
345 d_getgrent=''
346 d_getgrps=''
347 d_gethbyaddr=''
348 d_gethbyname=''
349 d_gethent=''
350 aphostname=''
351 d_gethname=''
352 d_phostname=''
353 d_uname=''
354 d_gethostprotos=''
355 d_getlogin=''
356 d_getnbyaddr=''
357 d_getnbyname=''
358 d_getnent=''
359 d_getnetprotos=''
360 d_getpent=''
361 d_getpgid=''
362 d_getpgrp2=''
363 d_bsdgetpgrp=''
364 d_getpgrp=''
365 d_getppid=''
366 d_getprior=''
367 d_getpbyname=''
368 d_getpbynumber=''
369 d_getprotoprotos=''
370 d_getpwent=''
371 d_getsent=''
372 d_getservprotos=''
373 d_getsbyname=''
374 d_getsbyport=''
375 d_gnulibc=''
376 d_htonl=''
377 d_inetaton=''
378 d_isascii=''
379 d_killpg=''
380 d_lchown=''
381 d_link=''
382 d_locconv=''
383 d_lockf=''
384 d_longdbl=''
385 longdblsize=''
386 d_longlong=''
387 longlongsize=''
388 d_lstat=''
389 d_mblen=''
390 d_mbstowcs=''
391 d_mbtowc=''
392 d_memcmp=''
393 d_memcpy=''
394 d_memmove=''
395 d_memset=''
396 d_mkdir=''
397 d_mkfifo=''
398 d_mktime=''
399 d_msg=''
400 d_msgctl=''
401 d_msgget=''
402 d_msgrcv=''
403 d_msgsnd=''
404 d_nice=''
405 d_open3=''
406 d_fpathconf=''
407 d_pathconf=''
408 d_pause=''
409 d_pipe=''
410 d_poll=''
411 d_portable=''
412 d_old_pthread_create_joinable=''
413 old_pthread_create_joinable=''
414 d_pthread_yield=''
415 d_sched_yield=''
416 sched_yield=''
417 d_readdir=''
418 d_rewinddir=''
419 d_seekdir=''
420 d_telldir=''
421 d_readlink=''
422 d_readv=''
423 d_rename=''
424 d_rmdir=''
425 d_safebcpy=''
426 d_safemcpy=''
427 d_sanemcmp=''
428 d_select=''
429 d_sem=''
430 d_semctl=''
431 d_semget=''
432 d_semop=''
433 d_setegid=''
434 d_seteuid=''
435 d_setgrent=''
436 d_setgrps=''
437 d_sethent=''
438 d_setlinebuf=''
439 d_setlocale=''
440 d_setnent=''
441 d_setpent=''
442 d_setpgid=''
443 d_setpgrp2=''
444 d_bsdsetpgrp=''
445 d_setpgrp=''
446 d_setprior=''
447 d_setpwent=''
448 d_setregid=''
449 d_setresgid=''
450 d_setresuid=''
451 d_setreuid=''
452 d_setrgid=''
453 d_setruid=''
454 d_setsent=''
455 d_setsid=''
456 d_setvbuf=''
457 d_sfio=''
458 usesfio=''
459 d_shm=''
460 d_shmat=''
461 d_shmatprototype=''
462 shmattype=''
463 d_shmctl=''
464 d_shmdt=''
465 d_shmget=''
466 d_sigaction=''
467 d_sigsetjmp=''
468 d_cmsghdr_s=''
469 d_msg_ctrunc=''
470 d_msg_dontroute=''
471 d_msg_oob=''
472 d_msg_peek=''
473 d_msg_proxy=''
474 d_msghdr_s=''
475 d_oldsock=''
476 d_recvmsg=''
477 d_scm_rights=''
478 d_sendmsg=''
479 d_socket=''
480 d_sockpair=''
481 sockethdr=''
482 socketlib=''
483 d_statblks=''
484 d_fstatfs=''
485 d_statfs=''
486 d_statfsflags=''
487 d_fstatvfs=''
488 d_statvfs=''
489 d_stdio_cnt_lval=''
490 d_stdio_ptr_lval=''
491 d_stdiobase=''
492 d_stdstdio=''
493 stdio_base=''
494 stdio_bufsiz=''
495 stdio_cnt=''
496 stdio_filbuf=''
497 stdio_ptr=''
498 d_index=''
499 d_strchr=''
500 d_strcoll=''
501 d_strctcpy=''
502 d_strerrm=''
503 d_strerror=''
504 d_sysernlst=''
505 d_syserrlst=''
506 d_strtod=''
507 d_strtol=''
508 d_strtoul=''
509 d_strxfrm=''
510 d_symlink=''
511 d_syscall=''
512 d_sysconf=''
513 d_system=''
514 d_tcgetpgrp=''
515 d_tcsetpgrp=''
516 d_time=''
517 timetype=''
518 clocktype=''
519 d_times=''
520 d_truncate=''
521 d_tzname=''
522 d_umask=''
523 d_semctl_semid_ds=''
524 d_semctl_semun=''
525 d_union_semun=''
526 d_vfork=''
527 usevfork=''
528 d_voidsig=''
529 signal_t=''
530 d_volatile=''
531 d_charvspr=''
532 d_vprintf=''
533 d_wait4=''
534 d_waitpid=''
535 d_wcstombs=''
536 d_wctomb=''
537 d_writev=''
538 d_dbmclose64=''
539 d_dbminit64=''
540 d_delete64=''
541 d_fetch64=''
542 d_firstkey64=''
543 d_nextkey64=''
544 d_store64=''
545 dlext=''
546 cccdlflags=''
547 ccdlflags=''
548 dlsrc=''
549 ld=''
550 lddlflags=''
551 usedl=''
552 doublesize=''
553 ebcdic=''
554 fpostype=''
555 gidtype=''
556 groupstype=''
557 h_fcntl=''
558 h_sysfile=''
559 i_arpainet=''
560 db_hashtype=''
561 db_prefixtype=''
562 i_db=''
563 i_dbm=''
564 i_rpcsvcdbm=''
565 d_dirnamlen=''
566 direntrytype=''
567 i_dirent=''
568 i_dld=''
569 i_dlfcn=''
570 i_fcntl=''
571 i_float=''
572 i_gdbm=''
573 d_grpasswd=''
574 i_grp=''
575 d_int64t=''
576 i_inttypes=''
577 i_limits=''
578 i_locale=''
579 i_machcthr=''
580 i_malloc=''
581 i_math=''
582 i_memory=''
583 i_mntent=''
584 i_ndbm=''
585 i_netdb=''
586 i_neterrno=''
587 i_niin=''
588 i_sysin=''
589 i_poll=''
590 d_pwage=''
591 d_pwchange=''
592 d_pwclass=''
593 d_pwcomment=''
594 d_pwexpire=''
595 d_pwgecos=''
596 d_pwpasswd=''
597 d_pwquota=''
598 i_pwd=''
599 i_sfio=''
600 i_stddef=''
601 i_stdlib=''
602 i_string=''
603 strings=''
604 i_sysaccess=''
605 i_sysdir=''
606 i_sysfile=''
607 d_voidtty=''
608 i_bsdioctl=''
609 i_sysfilio=''
610 i_sysioctl=''
611 i_syssockio=''
612 i_sysmount=''
613 i_sysndir=''
614 i_sysparam=''
615 i_sysresrc=''
616 i_syssecrt=''
617 i_sysselct=''
618 i_sysstat=''
619 i_sysstatvfs=''
620 i_systimes=''
621 i_systypes=''
622 d_iovec_s=''
623 i_sysuio=''
624 i_sysun=''
625 i_syswait=''
626 i_sgtty=''
627 i_termio=''
628 i_termios=''
629 i_systime=''
630 i_systimek=''
631 i_time=''
632 timeincl=''
633 i_unistd=''
634 i_utime=''
635 i_values=''
636 i_stdarg=''
637 i_varargs=''
638 i_varhdr=''
639 i_vfork=''
640 installusrbinperl=''
641 intsize=''
642 longsize=''
643 shortsize=''
644 d_dirent64_s=''
645 d_flock64_s=''
646 d_fstat64=''
647 d_ftruncate64=''
648 d_ino64t=''
649 d_lockf64=''
650 d_lseek64=''
651 d_lstat64=''
652 d_off64t=''
653 d_open64=''
654 d_opendir64=''
655 d_readdir64=''
656 d_seekdir64=''
657 d_stat64=''
658 d_telldir64=''
659 d_truncate64=''
660 libc=''
661 libperl=''
662 shrpenv=''
663 useshrplib=''
664 glibpth=''
665 libpth=''
666 loclibpth=''
667 plibpth=''
668 xlibpth=''
669 ignore_versioned_solibs=''
670 libs=''
671 lns=''
672 lseeksize=''
673 lseektype=''
674 make_set_make=''
675 d_mymalloc=''
676 freetype=''
677 mallocobj=''
678 mallocsrc=''
679 malloctype=''
680 usemymalloc=''
681 installman1dir=''
682 man1dir=''
683 man1direxp=''
684 man1ext=''
685 installman3dir=''
686 man3dir=''
687 man3direxp=''
688 man3ext=''
689 huge=''
690 large=''
691 medium=''
692 models=''
693 small=''
694 split=''
695 modetype=''
696 mydomain=''
697 myhostname=''
698 phostname=''
699 c=''
700 n=''
701 d_eofnblk=''
702 eagain=''
703 o_nonblock=''
704 rd_nodata=''
705 netdb_hlen_type=''
706 netdb_host_type=''
707 netdb_name_type=''
708 netdb_net_type=''
709 groupcat=''
710 hostcat=''
711 passcat=''
712 orderlib=''
713 ranlib=''
714 package=''
715 spackage=''
716 pager=''
717 apiversion=''
718 patchlevel=''
719 subversion=''
720 version=''
721 perladmin=''
722 perlpath=''
723 pidtype=''
724 prefix=''
725 prefixexp=''
726 installprivlib=''
727 privlib=''
728 privlibexp=''
729 prototype=''
730 ptrsize=''
731 drand01=''
732 randbits=''
733 randfunc=''
734 randseedtype=''
735 seedfunc=''
736 installscript=''
737 scriptdir=''
738 scriptdirexp=''
739 selectminbits=''
740 selecttype=''
741 sh=''
742 sig_name=''
743 sig_name_init=''
744 sig_num=''
745 sig_num_init=''
746 installsitearch=''
747 sitearch=''
748 sitearchexp=''
749 installsitelib=''
750 sitelib=''
751 sitelibexp=''
752 sizetype=''
753 so=''
754 sharpbang=''
755 shsharp=''
756 spitshell=''
757 src=''
758 ssizetype=''
759 startperl=''
760 startsh=''
761 stdchar=''
762 d_fgetpos64=''
763 d_fopen64=''
764 d_freopen64=''
765 d_fseek64=''
766 d_fseeko64=''
767 d_fsetpos64=''
768 d_ftell64=''
769 d_ftello64=''
770 d_tmpfile64=''
771 sysman=''
772 trnl=''
773 uidtype=''
774 archname64=''
775 use64bits=''
776 usemultiplicity=''
777 nm_opt=''
778 nm_so_opt=''
779 runnm=''
780 usenm=''
781 useperlio=''
782 d_oldpthreads=''
783 usethreads=''
784 incpath=''
785 mips=''
786 mips_type=''
787 usrinc=''
788 defvoidused=''
789 voidflags=''
790 CONFIG=''
791
792 define='define'
793 undef='undef'
794 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
795 rmlist=''
796
797 : We must find out about Eunice early
798 eunicefix=':'
799 if test -f /etc/unixtovms; then
800         eunicefix=/etc/unixtovms
801 fi
802 if test -f /etc/unixtovms.exe; then
803         eunicefix=/etc/unixtovms.exe
804 fi
805
806 i_whoami=''
807 : change the next line if compiling for Xenix/286 on Xenix/386
808 xlibpth='/usr/lib/386 /lib/386'
809
810 : Possible local library directories to search.
811 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
812 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
813
814 : general looking path for locating libraries
815 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
816 glibpth="$glibpth /lib /usr/lib $xlibpth"
817 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
818 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
819
820 : Private path used by Configure to find libraries.  Its value
821 : is prepended to libpth. This variable takes care of special
822 : machines, like the mips.  Usually, it should be empty.
823 plibpth=''
824
825 : Possible local include directories to search.
826 : Set locincpth to "" in a hint file to defeat local include searches.
827 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
828 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
829 :
830 : no include file wanted by default
831 inclwanted=''
832
833 : list of known cpp symbols, sorted alphabetically
834 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
835 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
836 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
837 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
838 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
839 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
840 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
841 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
842 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
843 al="$al VMS Xenix286"
844 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
845 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
846 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
847 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
848 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
849 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
850 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
851 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
852 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
853 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
854 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
855 al="$al __SVR4_2__ __UMAXV__"
856 al="$al ____386BSD____ __alpha __alpha__ __amiga"
857 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
858 al="$al __host_mips__"
859 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
860 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
861 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
862 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
863 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
864 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
865 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
866 al="$al __mc88100 __mc88100__ __mips __mips__"
867 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
868 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
869 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
870 al="$al _host_mips _mips _unix"
871 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
872 al="$al apollo ardent att386 att3b"
873 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
874 al="$al cadmus clipper concurrent convex cray ctix"
875 al="$al dmert encore gcos gcx gimpel gould"
876 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
877 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
878 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
879 al="$al i186 i286 i386 i486 i8086"
880 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
881 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
882 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
883 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
884 al="$al mc88000 mc88100 merlin mert mips mvs n16"
885 al="$al ncl_el ncl_mr"
886 al="$al news1500 news1700 news1800 news1900 news3700"
887 al="$al news700 news800 news900 ns16000 ns32000"
888 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
889 al="$al parisc pc532 pdp11 plexus posix pyr"
890 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
891 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
892 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
893 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
894 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
895 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
896 al="$al xenix z8000"
897
898 : Trailing extension.  Override this in a hint file, if needed.
899 _exe=''
900 : Extra object files, if any, needed on this platform.
901 archobjs=''
902 groupstype=''
903 : default library list
904 libswanted=''
905 : some systems want to use only the non-versioned libso:s
906 ignore_versioned_solibs=''
907 : full support for void wanted by default
908 defvoidused=15
909
910 : set useposix=false in your hint file to disable the POSIX extension.
911 useposix=true
912 : set useopcode=false in your hint file to disable the Opcode extension.
913 useopcode=true
914 : set usemultiplicity on the Configure command line to enable multiplicity.
915 : set usethreads on the Configure command line to enable threads.
916 : List of libraries we want.
917 : If anyone needs -lnet, put it in a hint file.
918 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
919 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
920 libswanted="$libswanted ucb bsd BSD PW x"
921 : We probably want to search /usr/shlib before most other libraries.
922 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
923 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
924 glibpth="/usr/shlib $glibpth"
925 : Do not use vfork unless overridden by a hint file.
926 usevfork=false
927
928 : Find the basic shell for Bourne shell scripts
929 case "$sh" in
930 '')
931         case "$SYSTYPE" in
932         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
933         *) xxx='/bin/sh';;
934         esac
935         if test -f "$xxx"; then
936                 sh="$xxx"
937         else
938                 : Build up a list and do a single loop so we can 'break' out.
939                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
940                 for xxx in sh bash ksh pdksh ash; do
941                         for p in $pth; do
942                                 try="$try ${p}/${xxx}"
943                         done
944                 done
945                 for xxx in $try; do
946                         if test -f "$xxx"; then
947                                 sh="$xxx";
948                                 break
949                         elif test -f "$xxx.exe"; then
950                                 sh="$xxx";
951                                 break
952                         fi
953                 done
954         fi
955         ;;
956 esac
957
958 case "$sh" in
959 '')     cat <<EOM >&2
960 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
961
962 Usually it's in /bin/sh.  How did you even get this far?
963 Please contact me (Perl Maintainers) at perlbug@perl.com and 
964 we'll try to straighten this all out.
965 EOM
966         exit 1
967         ;;
968 esac
969
970 : see if sh knows # comments
971 if `$sh -c '#' >/dev/null 2>&1`; then
972         shsharp=true
973         spitshell=cat
974         xcat=/bin/cat
975         test -f $xcat || xcat=/usr/bin/cat
976         echo "#!$xcat" >try
977         $eunicefix try
978         chmod +x try
979         ./try > today
980         if test -s today; then
981                 sharpbang='#!'
982         else
983                 echo "#! $xcat" > try
984                 $eunicefix try
985                 chmod +x try
986                 ./try > today
987                 if test -s today; then
988                         sharpbang='#! '
989                 else
990                         sharpbang=': use '
991                 fi
992         fi
993 else
994         echo " "
995         echo "Your $sh doesn't grok # comments--I will strip them later on."
996         shsharp=false
997         cd ..
998         echo "exec grep -v '^[  ]*#'" >spitshell
999         chmod +x spitshell
1000         $eunicefix spitshell
1001         spitshell=`pwd`/spitshell
1002         cd UU
1003         echo "I presume that if # doesn't work, #! won't work either!"
1004         sharpbang=': use '
1005 fi
1006 rm -f try today
1007
1008 : figure out how to guarantee sh startup
1009 case "$startsh" in
1010 '') startsh=${sharpbang}${sh} ;;
1011 *)
1012 esac
1013 cat >try <<EOSS
1014 $startsh
1015 set abc
1016 test "$?abc" != 1
1017 EOSS
1018
1019 chmod +x try
1020 $eunicefix try
1021 if ./try; then
1022         : echo "Yup, it does."
1023 else
1024         echo "Hmm... '$startsh' does not guarantee sh startup..."
1025         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1026 fi
1027 rm -f try
1028
1029
1030 : Save command line options in file UU/cmdline.opt for later use in
1031 : generating config.sh.
1032 cat > cmdline.opt <<EOSH
1033 # Configure command line arguments.
1034 config_arg0='$0'
1035 config_args='$*'
1036 config_argc=$#
1037 EOSH
1038 argn=1
1039 for arg in "$@"; do
1040         cat >>cmdline.opt <<EOSH
1041 config_arg$argn='$arg'
1042 EOSH
1043         argn=`expr $argn + 1`
1044 done
1045
1046 : produce awk script to parse command line options
1047 cat >options.awk <<'EOF'
1048 BEGIN {
1049         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1050
1051         len = length(optstr);
1052         for (i = 1; i <= len; i++) {
1053                 c = substr(optstr, i, 1);
1054                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1055                 if (a == ":") {
1056                         arg[c] = 1;
1057                         i++;
1058                 }
1059                 opt[c] = 1;
1060         }
1061 }
1062 {
1063         expect = 0;
1064         str = $0;
1065         if (substr(str, 1, 1) != "-") {
1066                 printf("'%s'\n", str);
1067                 next;
1068         }
1069         len = length($0);
1070         for (i = 2; i <= len; i++) {
1071                 c = substr(str, i, 1);
1072                 if (!opt[c]) {
1073                         printf("-%s\n", substr(str, i));
1074                         next;
1075                 }
1076                 printf("-%s\n", c);
1077                 if (arg[c]) {
1078                         if (i < len)
1079                                 printf("'%s'\n", substr(str, i + 1));
1080                         else
1081                                 expect = 1;
1082                         next;
1083                 }
1084         }
1085 }
1086 END {
1087         if (expect)
1088                 print "?";
1089 }
1090 EOF
1091
1092 : process the command line options
1093 set X `for arg in "$@"; do echo "X$arg"; done |
1094         sed -e s/X// | awk -f options.awk`
1095 eval "set $*"
1096 shift
1097 rm -f options.awk
1098
1099 : set up default values
1100 fastread=''
1101 reuseval=false
1102 config_sh=''
1103 alldone=''
1104 error=''
1105 silent=''
1106 extractsh=''
1107 override=''
1108 knowitall=''
1109 rm -f optdef.sh
1110 cat >optdef.sh <<EOS
1111 $startsh
1112 EOS
1113
1114
1115 : option parsing
1116 while test $# -gt 0; do
1117         case "$1" in
1118         -d) shift; fastread=yes;;
1119         -e) shift; alldone=cont;;
1120         -f)
1121                 shift
1122                 cd ..
1123                 if test -r "$1"; then
1124                         config_sh="$1"
1125                 else
1126                         echo "$me: cannot read config file $1." >&2
1127                         error=true
1128                 fi
1129                 cd UU
1130                 shift;;
1131         -h) shift; error=true;;
1132         -r) shift; reuseval=true;;
1133         -s) shift; silent=true; realsilent=true;;
1134         -E) shift; alldone=exit;;
1135         -K) shift; knowitall=true;;
1136         -O) shift; override=true;;
1137         -S) shift; silent=true; extractsh=true;;
1138         -D)
1139                 shift
1140                 case "$1" in
1141                 *=)
1142                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1143                         echo "$me: ignoring -D $1" >&2
1144                         ;;
1145                 *=*) echo "$1" | \
1146                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1147                 *) echo "$1='define'" >> optdef.sh;;
1148                 esac
1149                 shift
1150                 ;;
1151         -U)
1152                 shift
1153                 case "$1" in
1154                 *=) echo "$1" >> optdef.sh;;
1155                 *=*)
1156                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1157                         echo "$me: ignoring -U $1" >&2
1158                         ;;
1159                 *) echo "$1='undef'" >> optdef.sh;;
1160                 esac
1161                 shift
1162                 ;;
1163         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1164                 exit 0;;
1165         --) break;;
1166         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1167         *) break;;
1168         esac
1169 done
1170
1171 case "$error" in
1172 true)
1173         cat >&2 <<EOM
1174 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1175                  [-U symbol] [-U symbol=]
1176   -d : use defaults for all answers.
1177   -e : go on without questioning past the production of config.sh.
1178   -f : specify an alternate default configuration file.
1179   -h : print this help message and exit (with an error status).
1180   -r : reuse C symbols value if possible (skips costly nm extraction).
1181   -s : silent mode, only echoes questions and essential information.
1182   -D : define symbol to have some value:
1183          -D symbol         symbol gets the value 'define'
1184          -D symbol=value   symbol gets the value 'value'
1185   -E : stop at the end of questions, after having produced config.sh.
1186   -K : do not use unless you know what you are doing.
1187   -O : let -D and -U override definitions from loaded configuration file.
1188   -S : perform variable substitutions on all .SH files (can mix with -f)
1189   -U : undefine symbol:
1190          -U symbol    symbol gets the value 'undef'
1191          -U symbol=   symbol gets completely empty
1192   -V : print version number and exit (with a zero status).
1193 EOM
1194         exit 1
1195         ;;
1196 esac
1197
1198 : Sanity checks
1199 case "$fastread$alldone" in
1200 yescont|yesexit) ;;
1201 *)
1202         if test ! -t 0; then
1203                 echo "Say 'sh Configure', not 'sh <Configure'"
1204                 exit 1
1205         fi
1206         ;;
1207 esac
1208
1209 exec 4>&1
1210 case "$silent" in
1211 true) exec 1>/dev/null;;
1212 esac
1213
1214 : run the defines and the undefines, if any, but leave the file out there...
1215 touch optdef.sh
1216 . ./optdef.sh
1217
1218 : set package name
1219 package=perl5
1220 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1221 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1222 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1223 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1224 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1225 esac
1226
1227 : Some greps do not return status, grrr.
1228 echo "grimblepritz" >grimble
1229 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1230         contains=contains
1231 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1232         contains=grep
1233 else
1234         contains=contains
1235 fi
1236 rm -f grimble
1237 : the following should work in any shell
1238 case "$contains" in
1239 contains*)
1240         echo " "
1241         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1242         cat >contains <<'EOSS'
1243 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1244 EOSS
1245 chmod +x contains
1246 esac
1247
1248 : Find the path to the source tree
1249 case "$src" in
1250 '') case "$0" in
1251     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1252     *)   src='.';;
1253     esac;;
1254 esac
1255 case "$src" in
1256 '')     src=/
1257         rsrc=/
1258         ;;
1259 /*) rsrc="$src";;
1260 *) rsrc="../$src";;
1261 esac
1262 if test -f $rsrc/Configure && \
1263         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1264 then
1265    : found it, so we are ok.
1266 else
1267         rsrc=''
1268         for src in . .. ../.. ../../.. ../../../..; do
1269                 if test -f ../$src/Configure && \
1270                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1271                 then
1272                         rsrc=../$src
1273                         break
1274                 fi
1275         done
1276 fi
1277 case "$rsrc" in
1278 '')
1279         cat <<EOM >&4
1280
1281 Sorry, I can't seem to locate the source dir for $package.  Please start
1282 Configure with an explicit path -- i.e. /some/path/Configure.
1283
1284 EOM
1285         exit 1
1286         ;;
1287 ../.)   rsrc='..';;
1288 *)
1289         echo " "
1290         echo "Sources for $package found in \"$src\"." >&4
1291         ;;
1292 esac
1293
1294 : script used to extract .SH files with variable substitutions
1295 cat >extract <<'EOS'
1296 CONFIG=true
1297 echo "Doing variable substitutions on .SH files..."
1298 if test -f $src/MANIFEST; then
1299         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1300 else
1301         echo "(Looking for .SH files under the source directory.)"
1302         set x `(cd $src; find . -name "*.SH" -print)`
1303 fi
1304 shift
1305 case $# in
1306 0) set x `(cd $src; echo *.SH)`; shift;;
1307 esac
1308 if test ! -f $src/$1; then
1309         shift
1310 fi
1311 mkdir_p='
1312 name=$1;
1313 create="";
1314 while test $name; do
1315         if test ! -d "$name"; then
1316                 create="$name $create";
1317                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1318                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1319         else
1320                 name="";
1321         fi;
1322 done;
1323 for file in $create; do
1324         mkdir $file;
1325 done
1326 '
1327 for file in $*; do
1328         case "$src" in
1329         ".")
1330                 case "$file" in
1331                 */*)
1332                         dir=`expr X$file : 'X\(.*\)/'`
1333                         file=`expr X$file : 'X.*/\(.*\)'`
1334                         (cd $dir && . ./$file)
1335                         ;;
1336                 *)
1337                         . ./$file
1338                         ;;
1339                 esac
1340                 ;;
1341         *)
1342                 case "$file" in
1343                 */*)
1344                         dir=`expr X$file : 'X\(.*\)/'`
1345                         file=`expr X$file : 'X.*/\(.*\)'`
1346                         (set x $dir; shift; eval $mkdir_p)
1347                         sh <$src/$dir/$file
1348                         ;;
1349                 *)
1350                         sh <$src/$file
1351                         ;;
1352                 esac
1353                 ;;
1354         esac
1355 done
1356 if test -f $src/config_h.SH; then
1357         if test ! -f config.h; then
1358         : oops, they left it out of MANIFEST, probably, so do it anyway.
1359         . $src/config_h.SH
1360         fi
1361 fi
1362 EOS
1363
1364 : extract files and exit if asked to do so
1365 case "$extractsh" in
1366 true)
1367         case "$realsilent" in
1368         true) ;;
1369         *) exec 1>&4;;
1370         esac
1371         case "$config_sh" in
1372         '') config_sh='config.sh';;
1373         esac
1374         echo " "
1375         echo "Fetching answers from $config_sh..."
1376         cd ..
1377         . $config_sh
1378         test "$override" && . ./optdef.sh
1379         echo " "
1380         . UU/extract
1381         rm -rf UU
1382         echo "Done."
1383         exit 0
1384         ;;
1385 esac
1386
1387 : Eunice requires " " instead of "", can you believe it
1388 echo " "
1389 : Here we go...
1390 echo "Beginning of configuration questions for $package."
1391
1392 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1393
1394 : first determine how to suppress newline on echo command
1395 echo " "
1396 echo "Checking echo to see how to suppress newlines..."
1397 (echo "hi there\c" ; echo " ") >.echotmp
1398 if $contains c .echotmp >/dev/null 2>&1 ; then
1399         echo "...using -n."
1400         n='-n'
1401         c=''
1402 else
1403         cat <<'EOM'
1404 ...using \c
1405 EOM
1406         n=''
1407         c='\c'
1408 fi
1409 echo $n "The star should be here-->$c"
1410 echo '*'
1411 rm -f .echotmp
1412
1413 : Now test for existence of everything in MANIFEST
1414 echo " "
1415 if test -f $rsrc/MANIFEST; then
1416         echo "First let's make sure your kit is complete.  Checking..." >&4
1417         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1418         rm -f missing
1419         tmppwd=`pwd`
1420         for filelist in x??; do
1421                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1422         done
1423         if test -s missing; then
1424                 cat missing >&4
1425                 cat >&4 <<'EOM'
1426
1427 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1428
1429 You have the option of continuing the configuration process, despite the
1430 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1431 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1432 and contact the author (perlbug@perl.com).
1433
1434 EOM
1435                 echo $n "Continue? [n] $c" >&4
1436                 read ans
1437                 case "$ans" in
1438                 y*)
1439                         echo "Continuing..." >&4
1440                         rm -f missing
1441                         ;;
1442                 *)
1443                         echo "ABORTING..." >&4
1444                         kill $$
1445                         ;;
1446                 esac
1447         else
1448                 echo "Looks good..."
1449         fi
1450 else
1451         echo "There is no MANIFEST file.  I hope your kit is complete !"
1452 fi
1453 rm -f missing x??
1454
1455 echo " "
1456 : Find the appropriate value for a newline for tr
1457 if test -n "$DJGPP"; then
1458        trnl='\012'
1459 fi
1460 if test X"$trnl" = X; then
1461         case "`echo foo|tr '\n' x 2>/dev/null`" in
1462         foox) trnl='\n' ;;
1463         esac
1464 fi
1465 if test X"$trnl" = X; then
1466         case "`echo foo|tr '\012' x 2>/dev/null`" in
1467         foox) trnl='\012' ;;
1468         esac
1469 fi
1470 if test X"$trnl" = X; then
1471         cat <<EOM >&2
1472
1473 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1474
1475 EOM
1476         exit 1
1477 fi
1478
1479 : compute the number of columns on the terminal for proper question formatting
1480 case "$COLUMNS" in
1481 '') COLUMNS='80';;
1482 esac
1483
1484 : set up the echo used in my read
1485 myecho="case \"\$xxxm\" in
1486 '') echo $n \"\$rp $c\" >&4;;
1487 *) case \"\$rp\" in
1488         '') echo $n \"[\$xxxm] $c\";;
1489         *)
1490                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1491                         echo \"\$rp\" >&4
1492                         echo $n \"[\$xxxm] $c\" >&4
1493                 else
1494                         echo $n \"\$rp [\$xxxm] $c\" >&4
1495                 fi
1496                 ;;
1497         esac;;
1498 esac"
1499
1500 : now set up to do reads with possible shell escape and default assignment
1501 cat <<EOSC >myread
1502 $startsh
1503 xxxm=\$dflt
1504 $myecho
1505 ans='!'
1506 case "\$fastread" in
1507 yes) case "\$dflt" in
1508         '') ;;
1509         *) ans='';
1510                 case "\$silent-\$rp" in
1511                 true-) ;;
1512                 *) echo " " >&4;;
1513                 esac;;
1514         esac;;
1515 *) case "\$silent" in
1516         true) case "\$rp" in
1517                 '') ans='';;
1518                 esac;;
1519         esac;;
1520 esac
1521 while expr "X\$ans" : "X!" >/dev/null; do
1522         read answ
1523         set x \$xxxm
1524         shift
1525         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1526         case  "\$answ" in
1527         "!")
1528                 sh 1>&4
1529                 echo " "
1530                 $myecho
1531                 ;;
1532         !*)
1533                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1534                 shift
1535                 sh 1>&4 -c "\$*"
1536                 echo " "
1537                 $myecho
1538                 ;;
1539         "\$ans")
1540                 case "\$ans" in
1541                 \\&*)
1542                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1543                         shift
1544                         case "\$1" in
1545                         -d)
1546                                 fastread=yes
1547                                 echo "(OK, I'll run with -d after this question.)" >&4
1548                                 ;;
1549                         -*)
1550                                 echo "*** Sorry, \$1 not supported yet." >&4
1551                                 ;;
1552                         esac
1553                         $myecho
1554                         ans=!
1555                         ;;
1556                 esac;;
1557         *)
1558                 case "\$aok" in
1559                 y)
1560                         echo "*** Substitution done -- please confirm."
1561                         xxxm="\$ans"
1562                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1563                         xxxm="\$ans"
1564                         ans=!
1565                         ;;
1566                 *)
1567                         echo "*** Error -- try again."
1568                         ans=!
1569                         ;;
1570                 esac
1571                 $myecho
1572                 ;;
1573         esac
1574         case "\$ans\$xxxm\$nostick" in
1575         '')
1576                 ans=!
1577                 $myecho
1578                 ;;
1579         esac
1580 done
1581 case "\$ans" in
1582 '') ans="\$xxxm";;
1583 esac
1584 EOSC
1585
1586 : create .config dir to save info across Configure sessions
1587 test -d ../.config || mkdir ../.config
1588 cat >../.config/README <<EOF
1589 This directory created by Configure to save information that should
1590 persist across sessions for $package.
1591
1592 You may safely delete it if you wish.
1593 EOF
1594
1595 : general instructions
1596 needman=true
1597 firsttime=true
1598 user=`(logname) 2>/dev/null`
1599 case "$user" in
1600 '') user=`whoami 2>&1`;;
1601 esac
1602 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1603         firsttime=false
1604         echo " "
1605         rp='Would you like to see the instructions?'
1606         dflt=n
1607         . ./myread
1608         case "$ans" in
1609         [yY]*) ;;
1610         *) needman=false;;
1611         esac
1612 fi
1613 if $needman; then
1614         cat <<EOH
1615
1616 This installation shell script will examine your system and ask you questions
1617 to determine how the perl5 package should be installed. If you get
1618 stuck on a question, you may use a ! shell escape to start a subshell or
1619 execute a command.  Many of the questions will have default answers in square
1620 brackets; typing carriage return will give you the default.
1621
1622 On some of the questions which ask for file or directory names you are allowed
1623 to use the ~name construct to specify the login directory belonging to "name",
1624 even if you don't have a shell which knows about that.  Questions where this is
1625 allowed will be marked "(~name ok)".
1626
1627 EOH
1628         rp=''
1629         dflt='Type carriage return to continue'
1630         . ./myread
1631         cat <<'EOH'
1632
1633 The prompter used in this script allows you to use shell variables and
1634 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1635 in the default answer, as if the default line was a set of arguments given to a
1636 script shell.  This means you may also use $* to repeat the whole default line,
1637 so you do not have to re-type everything to add something to the default.
1638
1639 Everytime there is a substitution, you will have to confirm.  If there is an
1640 error (e.g. an unmatched backtick), the default answer will remain unchanged
1641 and you will be prompted again.
1642
1643 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1644 the questions and use the computed defaults (or the previous answers if there
1645 was already a config.sh file). Type 'Configure -h' for a list of options.
1646 You may also start interactively and then answer '& -d' at any prompt to turn
1647 on the non-interactive behaviour for the remainder of the execution.
1648
1649 EOH
1650         . ./myread
1651         cat <<EOH
1652
1653 Much effort has been expended to ensure that this shell script will run on any
1654 Unix system.  If despite that it blows up on yours, your best bet is to edit
1655 Configure and run it again.  If you can't run Configure for some reason,
1656 you'll have to generate a config.sh file by hand.  Whatever problems you
1657 have, let me (perlbug@perl.com) know how I blew it.
1658
1659 This installation script affects things in two ways:
1660
1661 1) it may do direct variable substitutions on some of the files included
1662    in this kit.
1663 2) it builds a config.h file for inclusion in C programs.  You may edit
1664    any of these files as the need arises after running this script.
1665
1666 If you make a mistake on a question, there is no easy way to back up to it
1667 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1668 files.  Configure will offer to let you do this before it runs the SH files.
1669
1670 EOH
1671         dflt='Type carriage return to continue'
1672         . ./myread
1673         case "$firsttime" in
1674         true) echo $user >>../.config/instruct;;
1675         esac
1676 fi
1677
1678 : find out where common programs are
1679 echo " "
1680 echo "Locating common programs..." >&4
1681 cat <<EOSC >loc
1682 $startsh
1683 case \$# in
1684 0) exit 1;;
1685 esac
1686 thing=\$1
1687 shift
1688 dflt=\$1
1689 shift
1690 for dir in \$*; do
1691         case "\$thing" in
1692         .)
1693         if test -d \$dir/\$thing; then
1694                 echo \$dir
1695                 exit 0
1696         fi
1697         ;;
1698         *)
1699         for thisthing in \$dir/\$thing; do
1700                 : just loop through to pick last item
1701         done
1702         if test -f \$thisthing; then
1703                 echo \$thisthing
1704                 exit 0
1705         elif test -f \$dir/\$thing.exe; then
1706                 if test -n "$DJGPP"; then
1707                         echo \$dir/\$thing.exe
1708                 else
1709                         : on Eunice apparently
1710                         echo \$dir/\$thing
1711                 fi
1712                 exit 0
1713         fi
1714         ;;
1715         esac
1716 done
1717 echo \$dflt
1718 exit 1
1719 EOSC
1720 chmod +x loc
1721 $eunicefix loc
1722 loclist="
1723 awk
1724 cat
1725 comm
1726 cp
1727 echo
1728 expr
1729 grep
1730 ls
1731 make
1732 mkdir
1733 rm
1734 sed
1735 sort
1736 touch
1737 tr
1738 uniq
1739 "
1740 trylist="
1741 Mcc
1742 ar
1743 byacc
1744 cpp
1745 csh
1746 date
1747 egrep
1748 gzip
1749 less
1750 ln
1751 more
1752 nm
1753 nroff
1754 pg
1755 tee
1756 test
1757 uname
1758 zip
1759 "
1760 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1761 pth="$pth /lib /usr/lib"
1762 for file in $loclist; do
1763         eval xxx=\$$file
1764         case "$xxx" in
1765         /*|?:[\\/]*)
1766                 if test -f "$xxx"; then
1767                         : ok
1768                 else
1769                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1770                         xxx=`./loc $file $file $pth`
1771                 fi
1772                 ;;
1773         '') xxx=`./loc $file $file $pth`;;
1774         *) xxx=`./loc $xxx $xxx $pth`;;
1775         esac
1776         eval $file=$xxx
1777         eval _$file=$xxx
1778         case "$xxx" in
1779         /*)
1780                 echo $file is in $xxx.
1781                 ;;
1782         ?:[\\/]*)
1783                 echo $file is in $xxx.
1784                 ;;
1785         *)
1786                 echo "I don't know where '$file' is, and my life depends on it." >&4
1787                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1788                 exit 1
1789                 ;;
1790         esac
1791 done
1792 echo " "
1793 echo "Don't worry if any of the following aren't found..."
1794 say=offhand
1795 for file in $trylist; do
1796         eval xxx=\$$file
1797         case "$xxx" in
1798         /*|?:[\\/]*)
1799                 if test -f "$xxx"; then
1800                         : ok
1801                 else
1802                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1803                         xxx=`./loc $file $file $pth`
1804                 fi
1805                 ;;
1806         '') xxx=`./loc $file $file $pth`;;
1807         *) xxx=`./loc $xxx $xxx $pth`;;
1808         esac
1809         eval $file=$xxx
1810         eval _$file=$xxx
1811         case "$xxx" in
1812         /*)
1813                 echo $file is in $xxx.
1814                 ;;
1815         ?:[\\/]*)
1816                 echo $file is in $xxx.
1817                 ;;
1818         *)
1819                 echo "I don't see $file out there, $say."
1820                 say=either
1821                 ;;
1822         esac
1823 done
1824 case "$egrep" in
1825 egrep)
1826         echo "Substituting grep for egrep."
1827         egrep=$grep
1828         ;;
1829 esac
1830 case "$ln" in
1831 ln)
1832         echo "Substituting cp for ln."
1833         ln=$cp
1834         ;;
1835 esac
1836 case "$test" in
1837 test)
1838         echo "Hopefully test is built into your sh."
1839         ;;
1840 *)
1841         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1842                 echo "Using the test built into your sh."
1843                 test=test
1844                 _test=test
1845         fi
1846         ;;
1847 esac
1848 case "$echo" in
1849 echo)
1850         echo "Hopefully echo is built into your sh."
1851         ;;
1852 '') ;;
1853 *)
1854         echo " "
1855 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1856         $echo $n "hi there$c" >foo1
1857         echo $n "hi there$c" >foo2
1858         if cmp foo1 foo2 >/dev/null 2>&1; then
1859                 echo "They are compatible.  In fact, they may be identical."
1860         else
1861                 case "$n" in
1862                 '-n') n='' c='\c';;
1863                 *) n='-n' c='';;
1864                 esac
1865                 cat <<FOO
1866 They are not compatible!  You are probably running ksh on a non-USG system.
1867 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1868 have echo built in and we may have to run some Bourne shell scripts.  That
1869 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1870
1871 FOO
1872                 $echo $n "The star should be here-->$c"
1873                 $echo "*"
1874         fi
1875         $rm -f foo1 foo2
1876         ;;
1877 esac
1878
1879 : determine whether symbolic links are supported
1880 echo " "
1881 $touch blurfl
1882 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1883         echo "Symbolic links are supported." >&4
1884         lns="$ln -s"
1885 else
1886         echo "Symbolic links are NOT supported." >&4
1887         lns="$ln"
1888 fi
1889 $rm -f blurfl sym
1890
1891 : see whether [:lower:] and [:upper:] are supported character classes
1892 echo " "
1893 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1894 ABYZ)
1895         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1896         up='[:upper:]'
1897         low='[:lower:]'
1898         ;;
1899 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1900         # (0xc9 and 0xd1), therefore that is a nice testing point.
1901         if test "X$up" = X -o "X$low" = X; then
1902             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1903             ij) up='[A-Z]'
1904                 low='[a-z]'
1905                 ;;
1906             esac
1907         fi
1908         if test "X$up" = X -o "X$low" = X; then
1909             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1910             ij) up='A-Z'
1911                 low='a-z'
1912                 ;;
1913             esac
1914         fi
1915         if test "X$up" = X -o "X$low" = X; then
1916             case "`echo IJ | od -x 2>/dev/null`" in
1917             *C9D1*|*c9d1*)
1918                 echo "Hey, this might be EBCDIC." >&4
1919                 if test "X$up" = X -o "X$low" = X; then
1920                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1921                     ij) up='[A-IJ-RS-Z]'
1922                         low='[a-ij-rs-z]'
1923                         ;;
1924                     esac
1925                 fi
1926                 if test "X$up" = X -o "X$low" = X; then
1927                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1928                     ij) up='A-IJ-RS-Z'
1929                         low='a-ij-rs-z'
1930                         ;;
1931                     esac
1932                 fi
1933                 ;;
1934             esac
1935         fi
1936 esac
1937 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1938 ij)
1939     echo "Using $up and $low to convert case." >&4
1940     ;;
1941 *)
1942     echo "I don't know how to translate letters from upper to lower case." >&4
1943     echo "Your tr is not acting any way I know of." >&4
1944     exit 1
1945     ;;
1946 esac
1947 : set up the translation script tr, must be called with ./tr of course
1948 cat >tr <<EOSC
1949 $startsh
1950 case "\$1\$2" in
1951 '[A-Z][a-z]') exec $tr '$up' '$low';;
1952 '[a-z][A-Z]') exec $tr '$low' '$up';;
1953 esac
1954 exec $tr "\$@"
1955 EOSC
1956 chmod +x tr
1957 $eunicefix tr
1958
1959 : Try to determine whether config.sh was made on this system
1960 case "$config_sh" in
1961 '')
1962 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1963 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1964 # because the A-Z/a-z are not consecutive.
1965 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1966         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1967 newmyuname="$myuname"
1968 dflt=n
1969 case "$knowitall" in
1970 '')
1971         if test -f ../config.sh; then
1972                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1973                         eval "`grep myuname= ../config.sh`"
1974                 fi
1975                 if test "X$myuname" = "X$newmyuname"; then
1976                         dflt=y
1977                 fi
1978         fi
1979         ;;
1980 *) dflt=y;;
1981 esac
1982
1983 : Get old answers from old config file if Configure was run on the
1984 : same system, otherwise use the hints.
1985 hint=default
1986 cd ..
1987 if test -f config.sh; then
1988         echo " "
1989         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1990         . UU/myread
1991         case "$ans" in
1992         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1993         *)  echo "Fetching default answers from your old config.sh file..." >&4
1994                 tmp_n="$n"
1995                 tmp_c="$c"
1996                 tmp_sh="$sh"
1997                 . ./config.sh
1998                 cp config.sh UU
1999                 n="$tmp_n"
2000                 c="$tmp_c"
2001                 : Older versions did not always set $sh.  Catch re-use of such
2002                 : an old config.sh.
2003                 case "$sh" in
2004                 '') sh="$tmp_sh" ;;
2005                 esac
2006                 hint=previous
2007                 ;;
2008         esac
2009 fi
2010 if test ! -f config.sh; then
2011         $cat <<EOM
2012
2013 First time through, eh?  I have some defaults handy for some systems
2014 that need some extra help getting the Configure answers right:
2015
2016 EOM
2017         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2018         dflt=''
2019         : Half the following guesses are probably wrong... If you have better
2020         : tests or hints, please send them to perlbug@perl.com
2021         : The metaconfig authors would also appreciate a copy...
2022         $test -f /irix && osname=irix
2023         $test -f /xenix && osname=sco_xenix
2024         $test -f /dynix && osname=dynix
2025         $test -f /dnix && osname=dnix
2026         $test -f /lynx.os && osname=lynxos
2027         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2028         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2029         $test -f /bin/mips && /bin/mips && osname=mips
2030         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2031                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2032         $test -d /usr/apollo/bin && osname=apollo
2033         $test -f /etc/saf/_sactab && osname=svr4
2034         $test -d /usr/include/minix && osname=minix
2035         if $test -d /MachTen -o -d /MachTen_Folder; then
2036                 osname=machten
2037                 if $test -x /sbin/version; then
2038                         osvers=`/sbin/version | $awk '{print $2}' |
2039                         $sed -e 's/[A-Za-z]$//'`
2040                 elif $test -x /usr/etc/version; then
2041                         osvers=`/usr/etc/version | $awk '{print $2}' |
2042                         $sed -e 's/[A-Za-z]$//'`
2043                 else
2044                         osvers="$2.$3"
2045                 fi
2046         fi
2047        $test -f /sys/posix.dll &&
2048                $test -f /usr/bin/what &&
2049                set X `/usr/bin/what /sys/posix.dll` &&
2050                $test "$3" = UWIN &&
2051                osname=uwin &&
2052                osvers="$5"
2053         if $test -f $uname; then
2054                 set X $myuname
2055                 shift
2056
2057                 case "$5" in
2058                 fps*) osname=fps ;;
2059                 mips*)
2060                         case "$4" in
2061                         umips) osname=umips ;;
2062                         *) osname=mips ;;
2063                         esac;;
2064                 [23]100) osname=mips ;;
2065                 next*) osname=next ;;
2066                 i386*)
2067                         if $test -f /etc/kconfig; then
2068                                 osname=isc
2069                                 if test "$lns" = "ln -s"; then
2070                                         osvers=4
2071                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2072                                         osvers=3
2073                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2074                                         osvers=2
2075                                 fi
2076                         fi
2077                         ;;
2078                 pc*)
2079                         if test -n "$DJGPP"; then
2080                                 osname=dos
2081                                 osvers=djgpp
2082                         fi
2083                         ;;
2084                 esac
2085
2086                 case "$1" in
2087                 aix) osname=aix
2088                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2089                         case "$tmp" in
2090                         'not found') osvers="$4"."$3" ;;
2091                         '<3240'|'<>3240') osvers=3.2.0 ;;
2092                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2093                         '=3250'|'>3250') osvers=3.2.5 ;;
2094                         *) osvers=$tmp;;
2095                         esac
2096                         ;;
2097                 *dc.osx) osname=dcosx
2098                         osvers="$3"
2099                         ;;
2100                 dnix) osname=dnix
2101                         osvers="$3"
2102                         ;;
2103                 domainos) osname=apollo
2104                         osvers="$3"
2105                         ;;
2106                 dgux) osname=dgux 
2107                         osvers="$3"
2108                         ;;
2109                 dynixptx*) osname=dynixptx
2110                         osvers=`echo "$4"|sed 's/^v//'`
2111                         ;;
2112                 freebsd) osname=freebsd 
2113                         osvers="$3" ;;
2114                 genix) osname=genix ;;
2115                 hp*) osname=hpux 
2116                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2117                         ;;
2118                 irix*) osname=irix
2119                         case "$3" in
2120                         4*) osvers=4 ;;
2121                         5*) osvers=5 ;;
2122                         *)      osvers="$3" ;;
2123                         esac
2124                         ;;
2125                 linux) osname=linux
2126                         case "$3" in
2127                         *)      osvers="$3" ;;
2128                         esac
2129                         ;;
2130                 MiNT) osname=mint
2131                         ;;
2132                 netbsd*) osname=netbsd
2133                         osvers="$3"
2134                         ;;
2135                 news-os) osvers="$3"
2136                         case "$3" in
2137                         4*) osname=newsos4 ;;
2138                         *) osname=newsos ;;
2139                         esac
2140                         ;;
2141                 bsd386) osname=bsd386
2142                         osvers=`$uname -r`
2143                         ;;
2144                 POSIX-BC | posix-bc ) osname=posix-bc
2145                         osvers="$3"
2146                         ;;
2147                 powerux | power_ux | powermax_os | powermaxos | \
2148                 powerunix | power_unix) osname=powerux
2149                         osvers="$3"
2150                         ;;
2151                 next*) osname=next ;;
2152                 solaris) osname=solaris
2153                         case "$3" in
2154                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2155                         *)      osvers="$3" ;;
2156                         esac
2157                         ;;
2158                 sunos) osname=sunos
2159                         case "$3" in
2160                         5*) osname=solaris
2161                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2162                         *)      osvers="$3" ;;
2163                         esac
2164                         ;;
2165                 titanos) osname=titanos
2166                         case "$3" in
2167                         1*) osvers=1 ;;
2168                         2*) osvers=2 ;;
2169                         3*) osvers=3 ;;
2170                         4*) osvers=4 ;;
2171                         *)      osvers="$3" ;;
2172                         esac
2173                         ;;
2174                 ultrix) osname=ultrix
2175                         osvers="$3"
2176                         ;;
2177                 osf1|mls+)      case "$5" in
2178                                 alpha)
2179                                         osname=dec_osf
2180                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2181                                         ;;
2182                         hp*)    osname=hp_osf1  ;;
2183                         mips)   osname=mips_osf1 ;;
2184                         esac
2185                         ;;
2186                 uts) osname=uts 
2187                         osvers="$3"
2188                         ;;
2189                 qnx) osname=qnx
2190                         osvers="$4"
2191                         ;;
2192                 $2) case "$osname" in
2193                         *isc*) ;;
2194                         *freebsd*) ;;
2195                         svr*)
2196                                 : svr4.x or possibly later
2197                                 case "svr$3" in 
2198                                 ${osname}*)
2199                                         osname=svr$3
2200                                         osvers=$4
2201                                         ;;
2202                                 esac
2203                                 case "$osname" in
2204                                 svr4.0)
2205                                         : Check for ESIX
2206                                         if test -f /stand/boot ; then
2207                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2208                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2209                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2210                                                         if test -n "$isesix"; then
2211                                                                 osname=esix4
2212                                                         fi
2213                                                 fi
2214                                         fi
2215                                         ;;
2216                                 esac
2217                                 ;;
2218                         *)      if test -f /etc/systemid; then
2219                                         osname=sco
2220                                         set `echo $3 | $sed 's/\./ /g'` $4
2221                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2222                                                 osvers=$1.$2.$3
2223                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2224                                                 osvers=$1.$2
2225                                         elif $test -f $src/hints/sco_$1.sh; then
2226                                                 osvers=$1
2227                                         fi
2228                                 else
2229                                         case "$osname" in
2230                                         '') : Still unknown.  Probably a generic Sys V.
2231                                                 osname="sysv"
2232                                                 osvers="$3"
2233                                                 ;;
2234                                         esac
2235                                 fi
2236                                 ;;
2237                         esac
2238                         ;;
2239                 *)      case "$osname" in
2240                         '') : Still unknown.  Probably a generic BSD.
2241                                 osname="$1"
2242                                 osvers="$3"
2243                                 ;;
2244                         esac
2245                         ;;
2246                 esac
2247         else
2248                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2249                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2250                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2251                                 osname=news_os
2252                         fi
2253                         $rm -f UU/kernel.what
2254                 elif test -d c:/.; then
2255                         set X $myuname
2256                         osname=os2
2257                         osvers="$5"
2258                 fi
2259         fi
2260         
2261         : Now look for a hint file osname_osvers, unless one has been
2262         : specified already.
2263         case "$hintfile" in
2264         ''|' ')
2265                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2266                 : Also try without trailing minor version numbers.
2267                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2268                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2269                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2270                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2271                 case "$file" in
2272                 '') dflt=none ;;
2273                 *)  case "$osvers" in
2274                         '') dflt=$file
2275                                 ;;
2276                         *)  if $test -f $src/hints/$file.sh ; then
2277                                         dflt=$file
2278                                 elif $test -f $src/hints/$xfile.sh ; then
2279                                         dflt=$xfile
2280                                 elif $test -f $src/hints/$xxfile.sh ; then
2281                                         dflt=$xxfile
2282                                 elif $test -f $src/hints/$xxxfile.sh ; then
2283                                         dflt=$xxxfile
2284                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2285                                         dflt=$xxxxfile
2286                                 elif $test -f "$src/hints/${osname}.sh" ; then
2287                                         dflt="${osname}"
2288                                 else
2289                                         dflt=none
2290                                 fi
2291                                 ;;
2292                         esac
2293                         ;;
2294                 esac
2295                 if $test -f Policy.sh ; then
2296                         case "$dflt" in
2297                         *Policy*) ;;
2298                         none) dflt="Policy" ;;
2299                         *) dflt="Policy $dflt" ;;
2300                         esac
2301                 fi
2302                 ;;
2303         *)
2304                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2305                 ;;
2306         esac
2307
2308         if $test -f Policy.sh ; then
2309                 $cat <<EOM
2310
2311 There's also a Policy hint file available, which should make the
2312 site-specific (policy) questions easier to answer.
2313 EOM
2314
2315         fi
2316
2317         $cat <<EOM
2318
2319 You may give one or more space-separated answers, or "none" if appropriate.
2320 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2321 is a good thing.  DO NOT give a wrong version.
2322
2323 EOM
2324
2325         rp="Which of these apply, if any?"
2326         . UU/myread
2327         tans=$ans
2328         for file in $tans; do
2329                 if $test X$file = XPolicy -a -f Policy.sh; then
2330                         . Policy.sh
2331                         $cat Policy.sh >> UU/config.sh
2332                 elif $test -f $src/hints/$file.sh; then
2333                         . $src/hints/$file.sh
2334                         $cat $src/hints/$file.sh >> UU/config.sh
2335                 elif $test X$tans = X -o X$tans = Xnone ; then
2336                         : nothing
2337                 else
2338                         : Give one chance to correct a possible typo.
2339                         echo "$file.sh does not exist"
2340                         dflt=$file
2341                         rp="hint to use instead?"
2342                         . UU/myread
2343                         for file in $ans; do
2344                                 if $test -f "$src/hints/$file.sh"; then
2345                                         . $src/hints/$file.sh
2346                                         $cat $src/hints/$file.sh >> UU/config.sh
2347                                 elif $test X$ans = X -o X$ans = Xnone ; then
2348                                         : nothing
2349                                 else
2350                                         echo "$file.sh does not exist -- ignored."
2351                                 fi
2352                         done
2353                 fi
2354         done
2355
2356         hint=recommended
2357         : Remember our hint file for later.
2358         if $test -f "$src/hints/$file.sh" ; then
2359                 hintfile="$file"
2360         else
2361                 hintfile=''
2362         fi
2363 fi
2364 cd UU
2365 ;;
2366 *)
2367         echo " "
2368         echo "Fetching default answers from $config_sh..." >&4
2369         tmp_n="$n"
2370         tmp_c="$c"
2371         cd ..
2372         cp $config_sh config.sh 2>/dev/null
2373         chmod +w config.sh
2374         . ./config.sh
2375         cd UU
2376         cp ../config.sh .
2377         n="$tmp_n"
2378         c="$tmp_c"
2379         hint=previous
2380         ;;
2381 esac
2382 test "$override" && . ./optdef.sh
2383 myuname="$newmyuname"
2384
2385 : Restore computed paths
2386 for file in $loclist $trylist; do
2387         eval $file="\$_$file"
2388 done
2389
2390 cat << EOM
2391
2392 Configure uses the operating system name and version to set some defaults.
2393 The default value is probably right if the name rings a bell. Otherwise,
2394 since spelling matters for me, either accept the default or answer "none"
2395 to leave it blank.
2396
2397 EOM
2398 case "$osname" in
2399         ''|' ')
2400                 case "$hintfile" in
2401                 ''|' '|none) dflt=none ;;
2402                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2403                 esac
2404                 ;;
2405         *) dflt="$osname" ;;
2406 esac
2407 rp="Operating system name?"
2408 . ./myread
2409 case "$ans" in
2410 none)  osname='' ;;
2411 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2412 esac
2413 echo " "
2414 case "$osvers" in
2415         ''|' ')
2416                 case "$hintfile" in
2417                 ''|' '|none) dflt=none ;;
2418                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2419                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2420                         case "$dflt" in
2421                         ''|' ') dflt=none ;;
2422                         esac
2423                         ;;
2424                 esac
2425                 ;;
2426         *) dflt="$osvers" ;;
2427 esac
2428 rp="Operating system version?"
2429 . ./myread
2430 case "$ans" in
2431 none)  osvers='' ;;
2432 *) osvers="$ans" ;;
2433 esac
2434
2435 : who configured the system
2436 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2437 cf_by=`(logname) 2>/dev/null`
2438 case "$cf_by" in
2439 "")
2440         cf_by=`(whoami) 2>/dev/null`
2441         case "$cf_by" in
2442         "") cf_by=unknown ;;
2443         esac ;;
2444 esac
2445
2446 : set up the script used to warn in case of inconsistency
2447 cat <<EOS >whoa
2448 $startsh
2449 EOS
2450 cat <<'EOSC' >>whoa
2451 dflt=y
2452 echo " "
2453 echo "*** WHOA THERE!!! ***" >&4
2454 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2455 rp="    Keep the $hint value?"
2456 . ./myread
2457 case "$ans" in
2458 y) td=$was; tu=$was;;
2459 esac
2460 EOSC
2461
2462 : function used to set $1 to $val
2463 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2464 case "$val$was" in
2465 $define$undef) . ./whoa; eval "$var=\$td";;
2466 $undef$define) . ./whoa; eval "$var=\$tu";;
2467 *) eval "$var=$val";;
2468 esac'
2469
2470 cat <<EOM
2471
2472 Perl can be built to take advantage of threads, on some systems.
2473 To do so, Configure must be run with -Dusethreads.
2474 (See README.threads for details.)
2475 EOM
2476 case "$usethreads" in
2477 $define|true|[yY]*)     dflt='y';;
2478 *) dflt='n';;
2479 esac
2480 rp='Build a threading Perl?'
2481 . ./myread
2482 case "$ans" in
2483 y|Y)    val="$define" ;;     
2484 *)      val="$undef" ;;
2485 esac
2486 set usethreads
2487 eval $setvar 
2488
2489 case "$d_oldpthreads" in
2490 '')     : Configure tests would be welcome here.  For now, assume undef.
2491         val="$undef" ;;
2492 *)      val="$d_oldpthreads" ;;
2493 esac
2494 set d_oldpthreads
2495 eval $setvar
2496
2497
2498 case "$usethreads" in
2499 "$define"|true|[yY]*)
2500 : Look for a hint-file generated 'call-back-unit'.  If the
2501 : user has specified that a threading perl is to be built,
2502 : we may need to set or change some other defaults.
2503         if $test -f usethreads.cbu; then
2504                 . ./usethreads.cbu
2505         fi
2506         case "$osname" in
2507         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|os2|solaris|vmesa)
2508                 # Known thread-capable platforms.
2509                 ;;
2510         *)
2511                 cat >&4 <<EOM
2512 $osname is not known to support threads.
2513 Please let me (jhi@iki.fi) know how to do that.
2514
2515 Cannot continue, aborting.
2516 EOM
2517                 exit 1
2518         ;;
2519         esac # $osname
2520     ;;
2521 esac # $usethreads
2522
2523 cat <<EOM
2524
2525 Perl can be built so that multiple Perl interpreters can coexist
2526 within the same Perl executable.  To do so, Configure must be run with
2527 -Dusemultiplicity.
2528
2529 Normally you do not need this and you should answer no.
2530
2531 EOM
2532 case "$usemultiplicity" in
2533 $define|true|[yY]*)     dflt='y';;
2534 *) dflt='n';;
2535 esac
2536 rp='Build Perl for multiplicity?'
2537 . ./myread
2538 case "$ans" in
2539 y|Y)    val="$define" ;;     
2540 *)      val="$undef" ;;
2541 esac
2542 set usemultiplicity
2543 eval $setvar 
2544
2545 cat <<EOM
2546
2547 Perl can be built to take advantage of explicit 64-bit interfaces,
2548 on some systems.  To do so, Configure must be run with -Duse64bits.
2549
2550 If this doesn't make any sense to you, just accept the default 'n'.
2551 EOM
2552 case "$use64bits" in
2553 $define|true|[yY]*)     dflt='y';;
2554 *) dflt='n';;
2555 esac
2556 rp='Try to use explicit 64-bit interfaces, if available?'
2557 . ./myread
2558 case "$ans" in
2559 y|Y) 
2560         val="$define"
2561         ;;     
2562 *)      
2563         val="$undef"
2564         ;;
2565 esac
2566 set use64bits
2567 eval $setvar
2568
2569 case "$archname64" in
2570 '') archname64='' ;;    # not a typo
2571 esac
2572
2573 case "$use64bits" in
2574 "$define"|true|[yY]*)
2575 : Look for a hint-file generated 'call-back-unit'.  If the
2576 : user has specified that a threading perl is to be built,
2577 : we may need to set or change some other defaults.
2578         if $test -f use64bits.cbu; then
2579                 . ./use64bits.cbu
2580         fi
2581         case "$osname" in
2582         dec_osf|hpux|irix|solaris|unicos)
2583                 # Known 64-bit capable platforms.
2584                 ;;
2585         *)
2586                 cat >&4 <<EOM
2587 $osname is not known to support 64-bit interfaces.
2588 Please let me (jhi@iki.fi) know how to do that.
2589
2590 Cannot continue, aborting.
2591 EOM
2592                 exit 1
2593                 ;;
2594         esac
2595         ;;
2596 esac
2597
2598 : determine the architecture name
2599 echo " "
2600 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2601         tarch=`arch`"-$osname"
2602 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2603         if uname -m > tmparch 2>&1 ; then
2604                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2605                         -e 's/$/'"-$osname/" tmparch`
2606         else
2607                 tarch="$osname"
2608         fi
2609         $rm -f tmparch
2610 else
2611         tarch="$osname"
2612 fi
2613 case "$myarchname" in
2614 ''|"$tarch") ;;
2615 *)
2616         echo "(Your architecture name used to be $myarchname.)"
2617         archname=''
2618         ;;
2619 esac
2620 myarchname="$tarch"
2621 case "$archname" in
2622 '') dflt="$tarch";;
2623 *) dflt="$archname";;
2624 esac
2625 rp='What is your architecture name'
2626 . ./myread
2627 archname="$ans"
2628 case "$usethreads" in
2629 $define)
2630         echo "Threads selected." >&4
2631         case "$archname" in
2632         *-thread*) echo "...and architecture name already has -thread." >&4
2633                 ;;
2634         *)      archname="$archname-thread"
2635                 echo "...setting architecture name to $archname." >&4
2636                 ;;
2637         esac
2638         ;;
2639 esac
2640 case "$usemultiplicity" in
2641 $define)
2642         echo "Multiplicity selected." >&4
2643         case "$archname" in
2644         *-multi*) echo "...and architecture name already has -multi." >&4
2645                 ;;
2646         *)      archname="$archname-multi"
2647                 echo "...setting architecture name to $archname." >&4
2648                 ;;
2649         esac
2650         ;;
2651 esac
2652 case "$use64bits" in
2653 $define)
2654         echo "Explicit 64-bitness selected." >&4
2655         case "$archname64" in
2656         '')
2657                 ;;
2658         *)
2659                 case "$archname" in
2660                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2661                         ;;
2662                 *)      archname="$archname-$archname64"
2663                         echo "...setting architecture name to $archname." >&4
2664                         ;;
2665                 esac
2666                 ;;
2667         esac
2668 esac
2669
2670 : is AFS running?
2671 echo " "
2672 case "$afs" in
2673 $define|true)   afs=true ;;
2674 $undef|false)   afs=false ;;
2675 *)      if test -d /afs; then
2676                 afs=true
2677         else
2678                 afs=false
2679         fi
2680         ;;
2681 esac
2682 if $afs; then
2683         echo "AFS may be running... I'll be extra cautious then..." >&4
2684 else
2685         echo "AFS does not seem to be running..." >&4
2686 fi
2687
2688 : decide how portable to be.  Allow command line overrides.
2689 case "$d_portable" in
2690 "$undef") ;;
2691 *)      d_portable="$define" ;;
2692 esac
2693
2694 : set up shell script to do ~ expansion
2695 cat >filexp <<EOSS
2696 $startsh
2697 : expand filename
2698 case "\$1" in
2699  ~/*|~)
2700         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2701         ;;
2702  ~*)
2703         if $test -f /bin/csh; then
2704                 /bin/csh -f -c "glob \$1"
2705                 failed=\$?
2706                 echo ""
2707                 exit \$failed
2708         else
2709                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2710                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2711                 if $test ! -d "\$dir"; then
2712                         me=\`basename \$0\`
2713                         echo "\$me: can't locate home directory for: \$name" >&2
2714                         exit 1
2715                 fi
2716                 case "\$1" in
2717                 */*)
2718                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2719                         ;;
2720                 *)
2721                         echo \$dir
2722                         ;;
2723                 esac
2724         fi
2725         ;;
2726 *)
2727         echo \$1
2728         ;;
2729 esac
2730 EOSS
2731 chmod +x filexp
2732 $eunicefix filexp
2733
2734 : now set up to get a file name
2735 cat <<EOS >getfile
2736 $startsh
2737 EOS
2738 cat <<'EOSC' >>getfile
2739 tilde=''
2740 fullpath=''
2741 already=''
2742 skip=''
2743 none_ok=''
2744 exp_file=''
2745 nopath_ok=''
2746 orig_rp="$rp"
2747 orig_dflt="$dflt"
2748
2749 case "$fn" in
2750 *\(*)
2751         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2752         fn=`echo $fn | sed 's/(.*)//'`
2753         ;;
2754 esac
2755
2756 case "$fn" in
2757 *:*)
2758         loc_file=`expr $fn : '.*:\(.*\)'`
2759         fn=`expr $fn : '\(.*\):.*'`
2760         ;;
2761 esac
2762
2763 case "$fn" in
2764 *~*) tilde=true;;
2765 esac
2766 case "$fn" in
2767 */*) fullpath=true;;
2768 esac
2769 case "$fn" in
2770 *+*) skip=true;;
2771 esac
2772 case "$fn" in
2773 *n*) none_ok=true;;
2774 esac
2775 case "$fn" in
2776 *e*) exp_file=true;;
2777 esac
2778 case "$fn" in
2779 *p*) nopath_ok=true;;
2780 esac
2781
2782 case "$fn" in
2783 *f*) type='File';;
2784 *d*) type='Directory';;
2785 *l*) type='Locate';;
2786 esac
2787
2788 what="$type"
2789 case "$what" in
2790 Locate) what='File';;
2791 esac
2792
2793 case "$exp_file" in
2794 '')
2795         case "$d_portable" in
2796         "$define") ;;
2797         *) exp_file=true;;
2798         esac
2799         ;;
2800 esac
2801
2802 cd ..
2803 while test "$type"; do
2804         redo=''
2805         rp="$orig_rp"
2806         dflt="$orig_dflt"
2807         case "$tilde" in
2808         true) rp="$rp (~name ok)";;
2809         esac
2810         . UU/myread
2811         if test -f UU/getfile.ok && \
2812                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2813         then
2814                 value="$ans"
2815                 ansexp="$ans"
2816                 break
2817         fi
2818         case "$ans" in
2819         none)
2820                 value=''
2821                 ansexp=''
2822                 case "$none_ok" in
2823                 true) type='';;
2824                 esac
2825                 ;;
2826         *)
2827                 case "$tilde" in
2828                 '') value="$ans"
2829                         ansexp="$ans";;
2830                 *)
2831                         value=`UU/filexp $ans`
2832                         case $? in
2833                         0)
2834                                 if test "$ans" != "$value"; then
2835                                         echo "(That expands to $value on this system.)"
2836                                 fi
2837                                 ;;
2838                         *) value="$ans";;
2839                         esac
2840                         ansexp="$value"
2841                         case "$exp_file" in
2842                         '') value="$ans";;
2843                         esac
2844                         ;;
2845                 esac
2846                 case "$fullpath" in
2847                 true)
2848                         case "$ansexp" in
2849                         /*) value="$ansexp" ;;
2850                         *)
2851                                 redo=true
2852                                 case "$already" in
2853                                 true)
2854                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2855                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2856                                         ;;
2857                                 *)
2858                                 echo "Please give a full path name, starting with slash." >&4
2859                                         case "$tilde" in
2860                                         true)
2861                                 echo "Note that using ~name is ok provided it expands well." >&4
2862                                                 already=true
2863                                                 ;;
2864                                         esac
2865                                 esac
2866                                 ;;
2867                         esac
2868                         ;;
2869                 esac
2870                 case "$redo" in
2871                 '')
2872                         case "$type" in
2873                         File)
2874                                 if test -f "$ansexp"; then
2875                                         type=''
2876                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2877                                 then
2878                                         echo "($value is not a plain file, but that's ok.)"
2879                                         type=''
2880                                 fi
2881                                 ;;
2882                         Directory)
2883                                 if test -d "$ansexp"; then
2884                                         type=''
2885                                 fi
2886                                 ;;
2887                         Locate)
2888                                 if test -d "$ansexp"; then
2889                                         echo "(Looking for $loc_file in directory $value.)"
2890                                         value="$value/$loc_file"
2891                                         ansexp="$ansexp/$loc_file"
2892                                 fi
2893                                 if test -f "$ansexp"; then
2894                                         type=''
2895                                 fi
2896                                 case "$nopath_ok" in
2897                                 true)   case "$value" in
2898                                         */*) ;;
2899                                         *)      echo "Assuming $value will be in people's path."
2900                                                 type=''
2901                                                 ;;
2902                                         esac
2903                                         ;;
2904                                 esac
2905                                 ;;
2906                         esac
2907
2908                         case "$skip" in
2909                         true) type='';
2910                         esac
2911
2912                         case "$type" in
2913                         '') ;;
2914                         *)
2915                                 if test "$fastread" = yes; then
2916                                         dflt=y
2917                                 else
2918                                         dflt=n
2919                                 fi
2920                                 rp="$what $value doesn't exist.  Use that name anyway?"
2921                                 . UU/myread
2922                                 dflt=''
2923                                 case "$ans" in
2924                                 y*) type='';;
2925                                 *) echo " ";;
2926                                 esac
2927                                 ;;
2928                         esac
2929                         ;;
2930                 esac
2931                 ;;
2932         esac
2933 done
2934 cd UU
2935 ans="$value"
2936 rp="$orig_rp"
2937 dflt="$orig_dflt"
2938 rm -f getfile.ok
2939 EOSC
2940
2941 : determine root of directory hierarchy where package will be installed.
2942 case "$prefix" in
2943 '')
2944         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2945         ;;
2946 *)
2947         dflt="$prefix"
2948         ;;
2949 esac
2950 $cat <<EOM
2951
2952 By default, $package will be installed in $dflt/bin, manual
2953 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2954 all installation directories. Typically set to /usr/local, but you
2955 may choose /usr if you wish to install $package among your system
2956 binaries. If you wish to have binaries under /bin but manual pages
2957 under /usr/local/man, that's ok: you will be prompted separately
2958 for each of the installation directories, the prefix being only used
2959 to set the defaults.
2960
2961 EOM
2962 fn=d~
2963 rp='Installation prefix to use?'
2964 . ./getfile
2965 oldprefix=''
2966 case "$prefix" in
2967 '') ;;
2968 *)
2969         case "$ans" in
2970         "$prefix") ;;
2971         *) oldprefix="$prefix";;
2972         esac
2973         ;;
2974 esac
2975 prefix="$ans"
2976 prefixexp="$ansexp"
2977
2978 : set the prefixit variable, to compute a suitable default value
2979 prefixit='case "$3" in
2980 ""|none)
2981         case "$oldprefix" in
2982         "") eval "$1=\"\$$2\"";;
2983         *)
2984                 case "$3" in
2985                 "") eval "$1=";;
2986                 none)
2987                         eval "tp=\"\$$2\"";
2988                         case "$tp" in
2989                         ""|" ") eval "$1=\"\$$2\"";;
2990                         *) eval "$1=";;
2991                         esac;;
2992                 esac;;
2993         esac;;
2994 *)
2995         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2996         case "$tp" in
2997         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2998         /*-$oldprefix/*|\~*-$oldprefix/*)
2999                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3000         *) eval "$1=\"\$$2\"";;
3001         esac;;
3002 esac'
3003
3004 : set the base revision
3005 baserev=5.0
3006
3007 : get the patchlevel
3008 echo " "
3009 echo "Getting the current patchlevel..." >&4
3010 if $test -r $rsrc/patchlevel.h;then
3011         patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
3012         subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3013 else
3014         patchlevel=0
3015         subversion=0
3016 fi
3017 $echo $n "(You have $package" $c
3018 case "$package" in
3019 "*$baserev")    ;;
3020 *)              $echo $n " $baserev" $c ;;
3021 esac
3022 $echo $n " patchlevel $patchlevel" $c
3023 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3024 echo ".)"
3025
3026 if test 0 -eq "$subversion"; then
3027         version=`LC_ALL=C; export LC_ALL; \
3028                  LANGUAGE=C; export LANGUAGE; \
3029                  echo $baserev $patchlevel | \
3030                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3031 else
3032         version=`LC_ALL=C; export LC_ALL; \
3033                  LANGUAGE=C; export LANGUAGE; \
3034                  echo $baserev $patchlevel $subversion | \
3035                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3036 fi
3037 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3038 if test "$subversion" -lt 50; then
3039         apiversion=`LC_ALL=C; export LC_ALL; \
3040                  LANGUAGE=C; export LANGUAGE; \
3041                  echo $baserev $patchlevel | \
3042                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3043 else
3044         apiversion="$version"
3045 fi
3046
3047 : determine where private library files go
3048 : Usual default is /usr/local/lib/perl5/$version.
3049 : Also allow things like /opt/perl/lib/$version, since 
3050 : /opt/perl/lib/perl5... would be redundant.
3051 case "$prefix" in
3052 *perl*) set dflt privlib lib/$version ;;
3053 *)       set dflt privlib lib/$package/$version ;;
3054 esac
3055 eval $prefixit
3056 $cat <<EOM
3057
3058 There are some auxiliary files for $package that need to be put into a
3059 private library directory that is accessible by everyone.
3060
3061 EOM
3062 fn=d~+
3063 rp='Pathname where the private library files will reside?'
3064 . ./getfile
3065 if $test "X$privlibexp" != "X$ansexp"; then
3066         installprivlib=''
3067 fi
3068 privlib="$ans"
3069 privlibexp="$ansexp"
3070 if $afs; then
3071         $cat <<EOM
3072
3073 Since you are running AFS, I need to distinguish the directory in which
3074 private files reside from the directory in which they are installed (and from
3075 which they are presumably copied to the former directory by occult means).
3076
3077 EOM
3078         case "$installprivlib" in
3079         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3080         *) dflt="$installprivlib";;
3081         esac
3082         fn=de~
3083         rp='Where will private files be installed?'
3084         . ./getfile
3085         installprivlib="$ans"
3086 else
3087         installprivlib="$privlibexp"
3088 fi
3089
3090 : set the prefixup variable, to restore leading tilda escape
3091 prefixup='case "$prefixexp" in
3092 "$prefix") ;;
3093 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3094 esac'
3095
3096 : determine where public architecture dependent libraries go
3097 set archlib archlib
3098 eval $prefixit
3099 : privlib default is /usr/local/lib/$package/$version
3100 : archlib default is /usr/local/lib/$package/$version/$archname
3101 : privlib may have an optional trailing /share.
3102 tdflt=`echo $privlib | $sed 's,/share$,,'`
3103 tdflt=$tdflt/$archname
3104 case "$archlib" in
3105 '')     dflt=$tdflt
3106         ;;
3107 *)      dflt="$archlib"
3108     ;;
3109 esac
3110 cat <<EOM
3111
3112 $spackage contains architecture-dependent library files.  If you are
3113 sharing libraries in a heterogeneous environment, you might store
3114 these files in a separate location.  Otherwise, you can just include
3115 them with the rest of the public library files.
3116
3117 EOM
3118 fn=d+~
3119 rp='Where do you want to put the public architecture-dependent libraries?'
3120 . ./getfile
3121 archlib="$ans"
3122 archlibexp="$ansexp"
3123
3124 if $afs; then
3125         $cat <<EOM
3126
3127 Since you are running AFS, I need to distinguish the directory in
3128 which architecture-dependent library files reside from the directory
3129 in which they are installed (and from which they are presumably copied
3130 to the former directory by occult means).
3131
3132 EOM
3133         case "$installarchlib" in
3134         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3135         *) dflt="$installarchlib";;
3136         esac
3137         fn=de~
3138         rp='Where will architecture-dependent library files be installed?'
3139         . ./getfile
3140         installarchlib="$ans"
3141 else
3142         installarchlib="$archlibexp"
3143 fi
3144 if $test X"$archlib" = X"$privlib"; then
3145         d_archlib="$undef"
3146 else
3147         d_archlib="$define"
3148 fi
3149
3150 : make some quick guesses about what we are up against
3151 echo " "
3152 $echo $n "Hmm...  $c"
3153 echo exit 1 >bsd
3154 echo exit 1 >usg
3155 echo exit 1 >v7
3156 echo exit 1 >osf1
3157 echo exit 1 >eunice
3158 echo exit 1 >xenix
3159 echo exit 1 >venix
3160 echo exit 1 >os2
3161 d_bsd="$undef"
3162 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3163 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3164 then
3165         echo "Looks kind of like an OSF/1 system, but we'll see..."
3166         echo exit 0 >osf1
3167 elif test `echo abc | tr a-z A-Z` = Abc ; then
3168         xxx=`./loc addbib blurfl $pth`
3169         if $test -f $xxx; then
3170         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3171                 echo exit 0 >bsd
3172                 echo exit 0 >usg
3173         else
3174                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3175                         echo "Looks kind of like an extended USG system, but we'll see..."
3176                 else
3177                         echo "Looks kind of like a USG system, but we'll see..."
3178                 fi
3179                 echo exit 0 >usg
3180         fi
3181 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3182         echo "Looks kind of like a BSD system, but we'll see..."
3183         d_bsd="$define"
3184         echo exit 0 >bsd
3185 else
3186         echo "Looks kind of like a Version 7 system, but we'll see..."
3187         echo exit 0 >v7
3188 fi
3189 case "$eunicefix" in
3190 *unixtovms*)
3191         $cat <<'EOI'
3192 There is, however, a strange, musty smell in the air that reminds me of
3193 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3194 EOI
3195         echo exit 0 >eunice
3196         d_eunice="$define"
3197 : it so happens the Eunice I know will not run shell scripts in Unix format
3198         ;;
3199 *)
3200         echo " "
3201         echo "Congratulations.  You aren't running Eunice."
3202         d_eunice="$undef"
3203         ;;
3204 esac
3205 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3206 case "$p_" in
3207 :) ;;
3208 *)
3209         $cat <<'EOI'
3210 I have the feeling something is not exactly right, however...don't tell me...
3211 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3212 EOI
3213         echo exit 0 >os2
3214         ;;
3215 esac
3216 if test -f /xenix; then
3217         echo "Actually, this looks more like a XENIX system..."
3218         echo exit 0 >xenix
3219         d_xenix="$define"
3220 else
3221         echo " "
3222         echo "It's not Xenix..."
3223         d_xenix="$undef"
3224 fi
3225 chmod +x xenix
3226 $eunicefix xenix
3227 if test -f /venix; then
3228         echo "Actually, this looks more like a VENIX system..."
3229         echo exit 0 >venix
3230 else
3231         echo " "
3232         if ./xenix; then
3233                 : null
3234         else
3235                 echo "Nor is it Venix..."
3236         fi
3237 fi
3238 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3239 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3240 $rm -f foo
3241
3242 : see if setuid scripts can be secure
3243 $cat <<EOM
3244
3245 Some kernels have a bug that prevents setuid #! scripts from being
3246 secure.  Some sites have disabled setuid #! scripts because of this.
3247
3248 First let's decide if your kernel supports secure setuid #! scripts.
3249 (If setuid #! scripts would be secure but have been disabled anyway,
3250 don't say that they are secure if asked.)
3251
3252 EOM
3253
3254 val="$undef"
3255 if $test -d /dev/fd; then
3256         echo "#!$ls" >reflect
3257         chmod +x,u+s reflect
3258         ./reflect >flect 2>&1
3259         if $contains "/dev/fd" flect >/dev/null; then
3260                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3261                 val="$define"
3262         else
3263                 $cat <<EOM
3264 If you are not sure if they are secure, I can check but I'll need a
3265 username and password different from the one you are using right now.
3266 If you don't have such a username or don't want me to test, simply
3267 enter 'none'.
3268
3269 EOM
3270                 rp='Other username to test security of setuid scripts with?'
3271                 dflt='none'
3272                 . ./myread
3273                 case "$ans" in
3274                 n|none)
3275                         case "$d_suidsafe" in
3276                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3277                                 dflt=n;;
3278                         "$undef")
3279                                 echo "Well, the $hint value is *not* secure." >&4
3280                                 dflt=n;;
3281                         *)      echo "Well, the $hint value *is* secure." >&4
3282                                 dflt=y;;
3283                         esac
3284                         ;;
3285                 *)
3286                         $rm -f reflect flect
3287                         echo "#!$ls" >reflect
3288                         chmod +x,u+s reflect
3289                         echo >flect
3290                         chmod a+w flect
3291                         echo '"su" will (probably) prompt you for '"$ans's password."
3292                         su $ans -c './reflect >flect'
3293                         if $contains "/dev/fd" flect >/dev/null; then
3294                                 echo "Okay, it looks like setuid scripts are secure." >&4
3295                                 dflt=y
3296                         else
3297                                 echo "I don't think setuid scripts are secure." >&4
3298                                 dflt=n
3299                         fi
3300                         ;;
3301                 esac
3302                 rp='Does your kernel have *secure* setuid scripts?'
3303                 . ./myread
3304                 case "$ans" in
3305                 [yY]*)  val="$define";;
3306                 *)      val="$undef";;
3307                 esac
3308         fi
3309 else
3310         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3311         echo "(That's for file descriptors, not floppy disks.)"
3312         val="$undef"
3313 fi
3314 set d_suidsafe
3315 eval $setvar
3316
3317 $rm -f reflect flect
3318
3319 : now see if they want to do setuid emulation
3320 echo " "
3321 val="$undef"
3322 case "$d_suidsafe" in
3323 "$define")
3324         val="$undef"
3325         echo "No need to emulate SUID scripts since they are secure here." >& 4
3326         ;;
3327 *)
3328         $cat <<EOM
3329 Some systems have disabled setuid scripts, especially systems where
3330 setuid scripts cannot be secure.  On systems where setuid scripts have
3331 been disabled, the setuid/setgid bits on scripts are currently
3332 useless.  It is possible for $package to detect those bits and emulate
3333 setuid/setgid in a secure fashion.  This emulation will only work if
3334 setuid scripts have been disabled in your kernel.
3335
3336 EOM
3337         case "$d_dosuid" in
3338         "$define") dflt=y ;;
3339         *) dflt=n ;;
3340         esac
3341         rp="Do you want to do setuid/setgid emulation?"
3342         . ./myread
3343         case "$ans" in
3344         [yY]*)  val="$define";;
3345         *)      val="$undef";;
3346         esac
3347         ;;
3348 esac
3349 set d_dosuid
3350 eval $setvar
3351
3352 : determine where manual pages are on this system
3353 echo " "
3354 case "$sysman" in
3355 '') 
3356         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3357         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3358         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3359         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3360         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3361         sysman=`./loc . /usr/man/man1 $syspath`
3362         ;;
3363 esac
3364 if $test -d "$sysman"; then
3365         echo "System manual is in $sysman." >&4
3366 else
3367         echo "Could not find manual pages in source form." >&4
3368 fi
3369
3370 : see what memory models we can support
3371 case "$models" in
3372 '')
3373         $cat >pdp11.c <<'EOP'
3374 main() {
3375 #ifdef pdp11
3376         exit(0);
3377 #else
3378         exit(1);
3379 #endif
3380 }
3381 EOP
3382         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3383         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3384                 dflt='unsplit split'
3385         else
3386                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3387                 case "$tans" in
3388                 X) dflt='none';;
3389                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3390                                 dflt='small'
3391                         else
3392                                 dflt=''
3393                         fi
3394                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3395                                 dflt="$dflt medium"
3396                         fi
3397                         if $test -d /lib/large || $test -d /usr/lib/large; then
3398                                 dflt="$dflt large"
3399                         fi
3400                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3401                                 dflt="$dflt huge"
3402                         fi
3403                 esac
3404         fi;;
3405 *) dflt="$models";;
3406 esac
3407 $cat <<EOM
3408  
3409 Some systems have different model sizes.  On most systems they are called
3410 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3411 split.  If your system doesn't support different memory models, say "none".
3412 If you wish to force everything to one memory model, say "none" here and
3413 put the appropriate flags later when it asks you for other cc and ld flags.
3414 Venix systems may wish to put "none" and let the compiler figure things out.
3415 (In the following question multiple model names should be space separated.)
3416
3417 The default for most systems is "none".
3418
3419 EOM
3420 rp="Which memory models are supported?"
3421 . ./myread
3422 models="$ans"
3423
3424 case "$models" in
3425 none)
3426         small=''
3427         medium=''
3428         large=''
3429         huge=''
3430         unsplit=''
3431         split=''
3432         ;;
3433 *split)
3434         case "$split" in
3435         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3436                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3437                         dflt='-i'
3438                 else
3439                         dflt='none'
3440                 fi;;
3441         *) dflt="$split";;
3442         esac
3443         rp="What flag indicates separate I and D space?"
3444         . ./myread
3445         tans="$ans"
3446         case "$tans" in
3447         none) tans='';;
3448         esac
3449         split="$tans"
3450         unsplit='';;
3451 *large*|*small*|*medium*|*huge*)
3452         case "$models" in
3453         *large*)
3454                 case "$large" in
3455                 '') dflt='-Ml';;
3456                 *) dflt="$large";;
3457                 esac
3458         rp="What flag indicates large model?"
3459         . ./myread
3460         tans="$ans"
3461         case "$tans" in
3462         none) tans='';
3463         esac
3464         large="$tans";;
3465         *) large='';;
3466         esac
3467         case "$models" in
3468         *huge*) case "$huge" in
3469                 '') dflt='-Mh';;
3470                 *) dflt="$huge";;
3471                 esac
3472                 rp="What flag indicates huge model?"
3473                 . ./myread
3474                 tans="$ans"
3475                 case "$tans" in
3476                 none) tans='';
3477                 esac
3478                 huge="$tans";;
3479         *) huge="$large";;
3480         esac
3481         case "$models" in
3482         *medium*) case "$medium" in
3483                 '') dflt='-Mm';;
3484                 *) dflt="$medium";;
3485                 esac
3486                 rp="What flag indicates medium model?"
3487                 . ./myread
3488                 tans="$ans"
3489                 case "$tans" in
3490                 none) tans='';
3491                 esac
3492                 medium="$tans";;
3493         *) medium="$large";;
3494         esac
3495         case "$models" in
3496         *small*) case "$small" in
3497                 '') dflt='none';;
3498                 *) dflt="$small";;
3499                 esac
3500                 rp="What flag indicates small model?"
3501                 . ./myread
3502                 tans="$ans"
3503                 case "$tans" in
3504                 none) tans='';
3505                 esac
3506                 small="$tans";;
3507         *) small='';;
3508         esac
3509         ;;
3510 *)
3511         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3512         ;;
3513 esac
3514 $rm -f pdp11.* pdp11
3515
3516 : see if we need a special compiler
3517 echo " "
3518 if ./usg; then
3519         case "$cc" in
3520         '') case "$Mcc" in
3521                 /*) dflt='Mcc';;
3522                 *) case "$large" in
3523                         -M*) dflt='cc';;
3524                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3525                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3526                                                 dflt='cc'
3527                                         else
3528                                                 dflt='cc -M'
3529                                         fi
3530                                 else
3531                                         dflt='cc'
3532                                 fi;;
3533                         esac;;
3534                 esac;;
3535         *)  dflt="$cc";;
3536         esac
3537         case "$dflt" in
3538         *M*)    $cat <<'EOM'
3539 On some older systems the default C compiler will not resolve multiple global
3540 references that happen to have the same name.  On some such systems the "Mcc"
3541 command may be used to force these to be resolved.  On other systems a "cc -M"
3542 command is required.  (Note that the -M flag on other systems indicates a
3543 memory model to use!) If you have the Gnu C compiler, you might wish to use
3544 that instead.
3545
3546 EOM
3547         ;;
3548         esac
3549         rp="Use which C compiler?"
3550         . ./myread
3551         cc="$ans"
3552 else
3553         case "$cc" in
3554         '') dflt=cc;;
3555         *) dflt="$cc";;
3556         esac
3557         rp="Use which C compiler?"
3558         . ./myread
3559         cc="$ans"
3560 fi
3561 : Look for a hint-file generated 'call-back-unit'.  Now that the
3562 : user has specified the compiler, we may need to set or change some
3563 : other defaults.
3564 if $test -f cc.cbu; then
3565     . ./cc.cbu
3566 fi
3567 echo " "
3568 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3569 $cat >gccvers.c <<EOM
3570 #include <stdio.h>
3571 int main() {
3572 #ifdef __GNUC__
3573 #ifdef __VERSION__
3574         printf("%s\n", __VERSION__);
3575 #else
3576         printf("%s\n", "1");
3577 #endif
3578 #endif
3579         exit(0);
3580 }
3581 EOM
3582 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3583         gccversion=`./gccvers`
3584         case "$gccversion" in
3585         '') echo "You are not using GNU cc." ;;
3586         *)  echo "You are using GNU cc $gccversion." ;;
3587         esac
3588 else
3589         echo " "
3590         echo "*** WHOA THERE!!! ***" >&4
3591         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3592         case "$knowitall" in
3593         '')
3594         echo "    You'd better start hunting for one and let me know about it." >&4
3595                 exit 1
3596                 ;;
3597         esac
3598 fi
3599 $rm -f gccvers*
3600 case "$gccversion" in
3601 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3602 esac
3603
3604 : What should the include directory be ?
3605 echo " "
3606 $echo $n "Hmm...  $c"
3607 dflt='/usr/include'
3608 incpath=''
3609 mips_type=''
3610 if $test -f /bin/mips && /bin/mips; then
3611         echo "Looks like a MIPS system..."
3612         $cat >usr.c <<'EOCP'
3613 #ifdef SYSTYPE_BSD43
3614 /bsd43
3615 #endif
3616 EOCP
3617         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3618                 dflt='/bsd43/usr/include'
3619                 incpath='/bsd43'
3620                 mips_type='BSD 4.3'
3621         else
3622                 mips_type='System V'
3623         fi
3624         $rm -f usr.c usr.out
3625         echo "and you're compiling with the $mips_type compiler and libraries."
3626         xxx_prompt=y
3627         echo "exit 0" >mips
3628 else
3629         echo "Doesn't look like a MIPS system."
3630         xxx_prompt=n
3631         echo "exit 1" >mips
3632 fi
3633 chmod +x mips
3634 $eunicefix mips
3635 case "$usrinc" in
3636 '') ;;
3637 *) dflt="$usrinc";;
3638 esac
3639 case "$xxx_prompt" in
3640 y)      fn=d/
3641         echo " "
3642         rp='Where are the include files you want to use?'
3643         . ./getfile
3644         usrinc="$ans"
3645         ;;
3646 *)      usrinc="$dflt"
3647         ;;
3648 esac
3649
3650 : see how we invoke the C preprocessor
3651 echo " "
3652 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3653 cat <<'EOT' >testcpp.c
3654 #define ABC abc
3655 #define XYZ xyz
3656 ABC.XYZ
3657 EOT
3658 cd ..
3659 if test ! -f cppstdin; then
3660         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3661 else
3662         echo "Keeping your $hint cppstdin wrapper."
3663 fi
3664 chmod 755 cppstdin
3665 wrapper=`pwd`/cppstdin
3666 ok='false'
3667 cd UU
3668
3669 if $test "X$cppstdin" != "X" && \
3670         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3671         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3672 then
3673         echo "You used to use $cppstdin $cppminus so we'll use that again."
3674         case "$cpprun" in
3675         '') echo "But let's see if we can live without a wrapper..." ;;
3676         *)
3677                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3678                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3679                 then
3680                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3681                         ok='true'
3682                 else
3683                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3684                 fi
3685                 ;;
3686         esac
3687 else
3688         case "$cppstdin" in
3689         '') ;;
3690         *)
3691                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3692                 ;;
3693         esac
3694 fi
3695
3696 if $ok; then
3697         : nothing
3698 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3699         $cc -E <testcpp.c >testcpp.out 2>&1; \
3700         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3701         echo "Yup, it does."
3702         x_cpp="$cc -E"
3703         x_minus='';
3704 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3705         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3706         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3707         echo "Yup, it does."
3708         x_cpp="$cc -E"
3709         x_minus='-';
3710 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3711         $cc -P <testcpp.c >testcpp.out 2>&1; \
3712         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3713         echo "Yipee, that works!"
3714         x_cpp="$cc -P"
3715         x_minus='';
3716 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3717         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3718         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3719         echo "At long last!"
3720         x_cpp="$cc -P"
3721         x_minus='-';
3722 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3723         $cpp <testcpp.c >testcpp.out 2>&1; \
3724         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3725         echo "It works!"
3726         x_cpp="$cpp"
3727         x_minus='';
3728 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3729         $cpp - <testcpp.c >testcpp.out 2>&1; \
3730         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3731         echo "Hooray, it works!  I was beginning to wonder."
3732         x_cpp="$cpp"
3733         x_minus='-';
3734 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3735         $wrapper <testcpp.c >testcpp.out 2>&1; \
3736         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3737         x_cpp="$wrapper"
3738         x_minus=''
3739         echo "Eureka!"
3740 else
3741         dflt=''
3742         rp="No dice.  I can't find a C preprocessor.  Name one:"
3743         . ./myread
3744         x_cpp="$ans"
3745         x_minus=''
3746         $x_cpp <testcpp.c >testcpp.out 2>&1
3747         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3748                 echo "OK, that will do." >&4
3749         else
3750 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3751                 exit 1
3752         fi
3753 fi
3754
3755 case "$ok" in
3756 false)
3757         cppstdin="$x_cpp"
3758         cppminus="$x_minus"
3759         cpprun="$x_cpp"
3760         cpplast="$x_minus"
3761         set X $x_cpp
3762         shift
3763         case "$1" in
3764         "$cpp")
3765                 echo "Perhaps can we force $cc -E using a wrapper..."
3766                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3767                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3768                 then
3769                         echo "Yup, we can."
3770                         cppstdin="$wrapper"
3771                         cppminus='';
3772                 else
3773                         echo "Nope, we'll have to live without it..."
3774                 fi
3775                 ;;
3776         esac
3777         case "$cpprun" in
3778         "$wrapper")
3779                 cpprun=''
3780                 cpplast=''
3781                 ;;
3782         esac
3783         ;;
3784 esac
3785
3786 case "$cppstdin" in
3787 "$wrapper"|'cppstdin') ;;
3788 *) $rm -f $wrapper;;
3789 esac
3790 $rm -f testcpp.c testcpp.out
3791
3792 : Set private lib path
3793 case "$plibpth" in
3794 '') if ./mips; then
3795                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3796         fi;;
3797 esac
3798 case "$libpth" in
3799 ' ') dlist='';;
3800 '') dlist="$loclibpth $plibpth $glibpth";;
3801 *) dlist="$libpth";;
3802 esac
3803
3804 : Now check and see which directories actually exist, avoiding duplicates
3805 libpth=''
3806 for xxx in $dlist
3807 do
3808     if $test -d $xxx; then
3809                 case " $libpth " in
3810                 *" $xxx "*) ;;
3811                 *) libpth="$libpth $xxx";;
3812                 esac
3813     fi
3814 done
3815 $cat <<'EOM'
3816
3817 Some systems have incompatible or broken versions of libraries.  Among
3818 the directories listed in the question below, please remove any you
3819 know not to be holding relevant libraries, and add any that are needed.
3820 Say "none" for none.
3821
3822 EOM
3823 case "$libpth" in
3824 '') dflt='none';;
3825 *)
3826         set X $libpth
3827         shift
3828         dflt=${1+"$@"}
3829         ;;
3830 esac
3831 rp="Directories to use for library searches?"
3832 . ./myread
3833 case "$ans" in
3834 none) libpth=' ';;
3835 *) libpth="$ans";;
3836 esac
3837
3838 : compute shared library extension
3839 case "$so" in
3840 '')
3841         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3842                 dflt='sl'
3843         else
3844                 dflt='so'
3845         fi
3846         ;;
3847 *) dflt="$so";;
3848 esac
3849 $cat <<EOM
3850
3851 On some systems, shared libraries may be available.  Answer 'none' if
3852 you want to suppress searching of shared libraries for the remaining
3853 of this configuration.
3854
3855 EOM
3856 rp='What is the file extension used for shared libraries?'
3857 . ./myread
3858 so="$ans"
3859
3860 : Define several unixisms.
3861 : Hints files or command line option can be used to override them.
3862 : The convoluted testing is in case hints files set either the old
3863 : or the new name.
3864 case "$_exe" in
3865 '')     case "$exe_ext" in
3866     '') ;;
3867         *)      _exe="$exe_ext" ;;
3868         esac
3869         ;;
3870 esac
3871 case "$_a" in
3872 '')     case "$lib_ext" in
3873     '') _a='.a';;
3874         *)      _a="$lib_ext" ;;
3875         esac
3876         ;;
3877 esac
3878 case "$_o" in
3879 '') case "$obj_ext" in
3880         '')     _o='.o';;
3881         *)      _o="$obj_ext";;
3882         esac
3883         ;;
3884 esac
3885 case "$p_" in
3886 '') case "$path_sep" in
3887         '')     p_=':';;
3888         *)      p_="$path_sep";;
3889         esac
3890         ;;
3891 esac
3892 exe_ext=$_exe
3893 lib_ext=$_a
3894 obj_ext=$_o
3895 path_sep=$p_
3896
3897 : Which makefile gets called first.  This is used by make depend.
3898 case "$firstmakefile" in
3899 '') firstmakefile='makefile';;
3900 esac
3901
3902 : Looking for optional libraries
3903 echo " "
3904 echo "Checking for optional libraries..." >&4
3905 case "$libs" in
3906 ' '|'') dflt='';;
3907 *) dflt="$libs";;
3908 esac
3909 case "$libswanted" in
3910 '') libswanted='c_s';;
3911 esac
3912 for thislib in $libswanted; do
3913         
3914         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3915                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3916                 echo "Found -l$thislib (shared)."
3917                 case " $dflt " in
3918                 *"-l$thislib "*);;
3919                 *) dflt="$dflt -l$thislib";;
3920                 esac
3921         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3922                 echo "Found -l$thislib (shared)."
3923                 case " $dflt " in
3924                 *"-l$thislib "*);;
3925                 *) dflt="$dflt -l$thislib";;
3926                 esac
3927         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3928                 echo "Found -l$thislib."
3929                 case " $dflt " in
3930                 *"-l$thislib "*);;
3931                 *) dflt="$dflt -l$thislib";;
3932                 esac
3933         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3934                 echo "Found -l$thislib."
3935                 case " $dflt " in
3936                 *"-l$thislib "*);;
3937                 *) dflt="$dflt -l$thislib";;
3938                 esac
3939         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3940                 echo "Found -l${thislib}_s."
3941                 case " $dflt " in
3942                 *"-l$thislib "*);;
3943                 *) dflt="$dflt -l${thislib}_s";;
3944                 esac
3945         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3946                 echo "Found -l$thislib."
3947                 case " $dflt " in
3948                 *"-l$thislib "*);;
3949                 *) dflt="$dflt -l$thislib";;
3950                 esac
3951         else
3952                 echo "No -l$thislib."
3953         fi
3954 done
3955 set X $dflt
3956 shift
3957 dflt="$*"
3958 case "$libs" in
3959 '') dflt="$dflt";;
3960 *) dflt="$libs";;
3961 esac
3962 case "$dflt" in
3963 ' '|'') dflt='none';;
3964 esac
3965
3966 $cat <<EOM
3967  
3968 Some versions of Unix support shared libraries, which make executables smaller
3969 but make load time slightly longer.
3970
3971 On some systems, mostly System V Release 3's, the shared library is included
3972 by putting the option "-lc_s" as the last thing on the cc command line when
3973 linking.  Other systems use shared libraries by default.  There may be other
3974 libraries needed to compile $package on your machine as well.  If your system
3975 needs the "-lc_s" option, include it here.  Include any other special libraries
3976 here as well.  Say "none" for none.
3977 EOM
3978
3979 echo " "
3980 rp="Any additional libraries?"
3981 . ./myread
3982 case "$ans" in
3983 none) libs=' ';;
3984 *) libs="$ans";;
3985 esac
3986
3987 : determine optimize, if desired, or use for debug flag also
3988 case "$optimize" in
3989 ' '|$undef) dflt='none';;
3990 '') dflt='-O';;
3991 *) dflt="$optimize";;
3992 esac
3993 $cat <<EOH
3994
3995 Some C compilers have problems with their optimizers.  By default, $package
3996 compiles with the -O flag to use the optimizer.  Alternately, you might want
3997 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3998 systems).  Either flag can be specified here.  To use neither flag, specify
3999 the word "none".
4000
4001 EOH
4002 rp="What optimizer/debugger flag should be used?"
4003 . ./myread
4004 optimize="$ans"
4005 case "$optimize" in
4006 'none') optimize=" ";;
4007 esac
4008
4009 dflt=''
4010 : We will not override a previous value, but we might want to
4011 : augment a hint file
4012 case "$hint" in
4013 none|recommended)
4014         case "$gccversion" in
4015         1*) dflt='-fpcc-struct-return' ;;
4016         esac
4017         case "$optimize" in
4018         *-g*) dflt="$dflt -DDEBUGGING";;
4019         esac
4020         case "$gccversion" in
4021         2*) if test -d /etc/conf/kconfig.d &&
4022                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4023                 then
4024                         dflt="$dflt -posix"
4025                 fi
4026                 ;;
4027         esac
4028         ;;
4029 esac
4030
4031 case "$mips_type" in
4032 *BSD*|'') inclwanted="$locincpth $usrinc";;
4033 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4034 esac
4035 for thisincl in $inclwanted; do
4036         if $test -d $thisincl; then
4037                 if $test x$thisincl != x$usrinc; then
4038                         case "$dflt" in
4039                         *$thisincl*);;
4040                         *) dflt="$dflt -I$thisincl";;
4041                         esac
4042                 fi
4043         fi
4044 done
4045
4046 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4047         xxx=true;
4048 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4049         xxx=true;
4050 else
4051         xxx=false;
4052 fi;
4053 if $xxx; then
4054         case "$dflt" in
4055         *$2*);;
4056         *) dflt="$dflt -D$2";;
4057         esac;
4058 fi'
4059
4060 if ./osf1; then
4061         set signal.h __LANGUAGE_C__; eval $inctest
4062 else
4063         set signal.h LANGUAGE_C; eval $inctest
4064 fi
4065
4066 case "$hint" in
4067 none|recommended) dflt="$ccflags $dflt" ;;
4068 *) dflt="$ccflags";;
4069 esac
4070
4071 case "$dflt" in
4072 ''|' ') dflt=none;;
4073 esac
4074 $cat <<EOH
4075
4076 Your C compiler may want other flags.  For this question you should include
4077 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4078 but you should NOT include libraries or ld flags like -lwhatever.  If you
4079 want $package to honor its debug switch, you should include -DDEBUGGING here.
4080 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4081
4082 To use no flags, specify the word "none".
4083
4084 EOH
4085 set X $dflt
4086 shift
4087 dflt=${1+"$@"}
4088 rp="Any additional cc flags?"
4089 . ./myread
4090 case "$ans" in
4091 none) ccflags='';;
4092 *) ccflags="$ans";;
4093 esac
4094
4095 : the following weeds options from ccflags that are of no interest to cpp
4096 cppflags="$ccflags"
4097 case "$gccversion" in
4098 1*) cppflags="$cppflags -D__GNUC__"
4099 esac
4100 case "$mips_type" in
4101 '');;
4102 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4103 esac
4104 case "$cppflags" in
4105 '');;
4106 *)
4107         echo " "
4108         echo "Let me guess what the preprocessor flags are..." >&4
4109         set X $cppflags
4110         shift
4111         cppflags=''
4112         $cat >cpp.c <<'EOM'
4113 #define BLURFL foo
4114
4115 BLURFL xx LFRULB
4116 EOM
4117         previous=''
4118         for flag in $*
4119         do
4120                 case "$flag" in
4121                 -*) ftry="$flag";;
4122                 *) ftry="$previous $flag";;
4123                 esac
4124                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4125                         >cpp1.out 2>/dev/null && \
4126                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4127                         >cpp2.out 2>/dev/null && \
4128                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4129                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4130                 then
4131                         cppflags="$cppflags $ftry"
4132                         previous=''
4133                 else
4134                         previous="$flag"
4135                 fi
4136         done
4137         set X $cppflags
4138         shift
4139         cppflags=${1+"$@"}
4140         case "$cppflags" in
4141         *-*)  echo "They appear to be: $cppflags";;
4142         esac
4143         $rm -f cpp.c cpp?.out
4144         ;;
4145 esac
4146
4147 : flags used in final linking phase
4148 case "$ldflags" in
4149 '') if ./venix; then
4150                 dflt='-i -z'
4151         else
4152                 dflt=''
4153         fi
4154         case "$ccflags" in
4155         *-posix*) dflt="$dflt -posix" ;;
4156         esac
4157         ;;
4158 *) dflt="$ldflags";;
4159 esac
4160
4161 : Try to guess additional flags to pick up local libraries.
4162 for thislibdir in $libpth; do
4163         case " $loclibpth " in
4164         *" $thislibdir "*)
4165                 case "$dflt " in 
4166                 *"-L$thislibdir "*) ;;
4167                 *)  dflt="$dflt -L$thislibdir" ;;
4168                 esac
4169                 ;;
4170         esac
4171 done
4172
4173 case "$dflt" in
4174 '') dflt='none' ;;
4175 esac
4176
4177 $cat <<EOH
4178
4179 Your C linker may need flags.  For this question you should
4180 include -L/whatever and any other flags used by the C linker, but you
4181 should NOT include libraries like -lwhatever.
4182
4183 Make sure you include the appropriate -L/path flags if your C linker
4184 does not normally search all of the directories you specified above,
4185 namely
4186         $libpth
4187 To use no flags, specify the word "none".
4188
4189 EOH
4190
4191 rp="Any additional ld flags (NOT including libraries)?"
4192 . ./myread
4193 case "$ans" in
4194 none) ldflags='';;
4195 *) ldflags="$ans";;
4196 esac
4197 rmlist="$rmlist pdp11"
4198
4199 : coherency check
4200 echo " "
4201 echo "Checking your choice of C compiler and flags for coherency..." >&4
4202 $cat > try.c <<'EOF'
4203 #include <stdio.h>
4204 main() { printf("Ok\n"); exit(0); }
4205 EOF
4206 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4207 shift
4208 $cat >try.msg <<'EOM'
4209 I've tried to compile and run the following simple program:
4210
4211 EOM
4212 $cat try.c >> try.msg
4213
4214 $cat >> try.msg <<EOM
4215
4216 I used the command:
4217
4218         $*
4219         ./try
4220
4221 and I got the following output:
4222
4223 EOM
4224 dflt=y
4225 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4226         if sh -c './try' >>try.msg 2>&1; then
4227                 xxx=`./try`
4228                 case "$xxx" in
4229                 "Ok") dflt=n ;;
4230                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4231                         case " $libs " in
4232                         *" -lsfio "*)
4233                                 cat >> try.msg <<'EOQS'
4234 If $libs contains -lsfio, and sfio is mis-configured, then it
4235 sometimes (apparently) runs and exits with a 0 status, but with no
4236 output!  It may have to do with sfio's use of _exit vs. exit.
4237
4238 EOQS
4239                                 rp="You have a big problem.  Shall I abort Configure"
4240                                 dflt=y
4241                                 ;;
4242                         esac
4243                         ;;
4244                 esac
4245         else
4246                 echo "The program compiled OK, but exited with status $?." >>try.msg
4247                 rp="You have a problem.  Shall I abort Configure"
4248                 dflt=y
4249         fi
4250 else
4251         echo "I can't compile the test program." >>try.msg
4252         rp="You have a BIG problem.  Shall I abort Configure"
4253         dflt=y
4254 fi
4255 case "$dflt" in
4256 y)
4257         $cat try.msg >&4
4258         case "$knowitall" in
4259         '')
4260                 echo "(The supplied flags or libraries might be incorrect.)"
4261                 ;;
4262         *) dflt=n;;
4263         esac
4264         echo " "
4265         . ./myread
4266         case "$ans" in
4267         n*|N*) ;;
4268         *)      echo "Ok.  Stopping Configure." >&4
4269                 exit 1
4270                 ;;
4271         esac
4272         ;;
4273 n) echo "OK, that should do.";;
4274 esac
4275 $rm -f try try.* core
4276
4277 : determine filename position in cpp output
4278 echo " "
4279 echo "Computing filename position in cpp output for #include directives..." >&4
4280 echo '#include <stdio.h>' > foo.c
4281 $cat >fieldn <<EOF
4282 $startsh
4283 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4284 $grep '^[       ]*#.*stdio\.h' | \
4285 while read cline; do
4286         pos=1
4287         set \$cline
4288         while $test \$# -gt 0; do
4289                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4290                         echo "\$pos"
4291                         exit 0
4292                 fi
4293                 shift
4294                 pos=\`expr \$pos + 1\`
4295         done
4296 done
4297 EOF
4298 chmod +x fieldn
4299 fieldn=`./fieldn`
4300 $rm -f foo.c fieldn
4301 case $fieldn in
4302 '') pos='???';;
4303 1) pos=first;;
4304 2) pos=second;;
4305 3) pos=third;;
4306 *) pos="${fieldn}th";;
4307 esac
4308 echo "Your cpp writes the filename in the $pos field of the line."
4309
4310 : locate header file
4311 $cat >findhdr <<EOF
4312 $startsh
4313 wanted=\$1
4314 name=''
4315 if test -f $usrinc/\$wanted; then
4316         echo "$usrinc/\$wanted"
4317         exit 0
4318 fi
4319 awkprg='{ print \$$fieldn }'
4320 echo "#include <\$wanted>" > foo\$\$.c
4321 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4322 $grep "^[       ]*#.*\$wanted" | \
4323 while read cline; do
4324         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4325         case "\$name" in
4326         */\$wanted) echo "\$name"; exit 0;;
4327         *) name='';;
4328         esac;
4329 done;
4330 $rm -f foo\$\$.c;
4331 case "\$name" in
4332 '') exit 1;;
4333 esac
4334 EOF
4335 chmod +x findhdr
4336
4337 : define an alternate in-header-list? function
4338 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4339 cont=true; xxf="echo \"<\$1> found.\" >&4";
4340 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4341 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4342 esac;
4343 case $# in 4) instead=instead;; *) instead="at last";; esac;
4344 while $test "$cont"; do
4345         xxx=`./findhdr $1`
4346         var=$2; eval "was=\$$2";
4347         if $test "$xxx" && $test -r "$xxx";
4348         then eval $xxf;
4349         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4350                 cont="";
4351         else eval $xxnf;
4352         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4353         set $yyy; shift; shift; yyy=$@;
4354         case $# in 0) cont="";;
4355         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4356                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4357         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4358                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4359         esac;
4360 done;
4361 while $test "$yyy";
4362 do set $yyy; var=$2; eval "was=\$$2";
4363         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4364         set $yyy; shift; shift; yyy=$@;
4365 done'
4366
4367 : see if this is a malloc.h system
4368 set malloc.h i_malloc
4369 eval $inhdr
4370
4371 : see if stdlib is available
4372 set stdlib.h i_stdlib
4373 eval $inhdr
4374
4375 : determine which malloc to compile in
4376 echo " "
4377 case "$usemymalloc" in
4378 ''|[yY]*|true|$define)  dflt='y' ;;
4379 *)      dflt='n' ;;
4380 esac
4381 rp="Do you wish to attempt to use the malloc that comes with $package?"
4382 . ./myread
4383 usemymalloc="$ans"
4384 case "$ans" in
4385 y*|true)
4386         usemymalloc='y'
4387         mallocsrc='malloc.c'
4388         mallocobj="malloc$_o"
4389         d_mymalloc="$define"
4390         case "$libs" in
4391         *-lmalloc*)
4392                 : Remove malloc from list of libraries to use
4393                 echo "Removing unneeded -lmalloc from library list" >&4
4394                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4395                 shift
4396                 libs="$*"
4397                 echo "libs = $libs" >&4
4398                 ;;
4399         esac
4400         ;;
4401 *)
4402         usemymalloc='n'
4403         mallocsrc=''
4404         mallocobj=''
4405         d_mymalloc="$undef"
4406         ;;
4407 esac
4408
4409 : compute the return types of malloc and free
4410 echo " "
4411 $cat >malloc.c <<END
4412 #$i_malloc I_MALLOC
4413 #$i_stdlib I_STDLIB
4414 #include <stdio.h>
4415 #include <sys/types.h>
4416 #ifdef I_MALLOC
4417 #include <malloc.h>
4418 #endif
4419 #ifdef I_STDLIB
4420 #include <stdlib.h>
4421 #endif
4422 #ifdef TRY_MALLOC
4423 void *malloc();
4424 #endif
4425 #ifdef TRY_FREE
4426 void free();
4427 #endif
4428 END
4429 case "$malloctype" in
4430 '')
4431         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4432                 malloctype='void *'
4433         else
4434                 malloctype='char *'
4435         fi
4436         ;;
4437 esac
4438 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4439
4440 case "$freetype" in
4441 '')
4442         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4443                 freetype='void'
4444         else
4445                 freetype='int'
4446         fi
4447         ;;
4448 esac
4449 echo "Your system uses $freetype free(), it would seem." >&4
4450 $rm -f malloc.[co]
4451 : Cruising for prototypes
4452 echo " "
4453 echo "Checking out function prototypes..." >&4
4454 $cat >prototype.c <<'EOCP'
4455 int main(int argc, char *argv[]) {
4456         exit(0);}
4457 EOCP
4458 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4459         echo "Your C compiler appears to support function prototypes."
4460         val="$define"
4461 else
4462         echo "Your C compiler doesn't seem to understand function prototypes."
4463         val="$undef"
4464 fi
4465 set prototype
4466 eval $setvar
4467 $rm -f prototype*
4468
4469 case "$prototype" in
4470 "$define") ;;
4471 *)      ansi2knr='ansi2knr'
4472         echo " "
4473         cat <<EOM >&4
4474
4475 $me:  FATAL ERROR:
4476 This version of $package can only be compiled by a compiler that 
4477 understands function prototypes.  Unfortunately, your C compiler 
4478         $cc $ccflags
4479 doesn't seem to understand them.  Sorry about that.
4480
4481 If GNU cc is available for your system, perhaps you could try that instead.  
4482
4483 Eventually, we hope to support building Perl with pre-ANSI compilers.
4484 If you would like to help in that effort, please contact <perlbug@perl.org>.
4485
4486 Aborting Configure now.
4487 EOM
4488         exit 2
4489         ;;
4490 esac
4491
4492 : determine where public executables go
4493 echo " "
4494 set dflt bin bin
4495 eval $prefixit
4496 fn=d~
4497 rp='Pathname where the public executables will reside?'
4498 . ./getfile
4499 if $test "X$ansexp" != "X$binexp"; then
4500         installbin=''
4501 fi
4502 bin="$ans"
4503 binexp="$ansexp"
4504 if $afs; then
4505         $cat <<EOM
4506
4507 Since you are running AFS, I need to distinguish the directory in which
4508 executables reside from the directory in which they are installed (and from
4509 which they are presumably copied to the former directory by occult means).
4510
4511 EOM
4512         case "$installbin" in
4513         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4514         *) dflt="$installbin";;
4515         esac
4516         fn=de~
4517         rp='Where will public executables be installed?'
4518         . ./getfile
4519         installbin="$ans"
4520 else
4521         installbin="$binexp"
4522 fi
4523
4524 : determine whether to install perl also as /usr/bin/perl
4525
4526 echo " "
4527 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4528         $cat <<EOM
4529 Many scripts expect to perl to be installed as /usr/bin/perl.
4530 I can install the perl you are about to compile also as /usr/bin/perl
4531 (in addition to $installbin/perl).
4532 EOM
4533         case "$installusrbinperl" in
4534         "$undef"|[nN]*) dflt='n';;
4535         *)              dflt='y';;
4536         esac
4537         rp="Do you want to install perl as /usr/bin/perl?"
4538         . ./myread
4539         case "$ans" in
4540         [yY]*)  val="$define";;
4541         *)      val="$undef" ;;
4542         esac
4543 else
4544         val="$undef"
4545 fi
4546 set installusrbinperl
4547 eval $setvar
4548
4549 : define a shorthand compile call
4550 compile='
4551 mc_file=$1;
4552 shift;
4553 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4554 : define a shorthand compile call for compilations that should be ok.
4555 compile_ok='
4556 mc_file=$1;
4557 shift;
4558 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4559
4560 echo " "
4561 echo "Checking for GNU C Library..." >&4
4562 cat >gnulibc.c <<EOM
4563 #include <stdio.h>
4564 int main()
4565 {
4566 #ifdef __GLIBC__
4567     exit(0);
4568 #else
4569     exit(1);
4570 #endif
4571 }
4572 EOM
4573 set gnulibc
4574 if eval $compile_ok && ./gnulibc; then
4575         val="$define"
4576         echo "You are using the GNU C Library"
4577 else
4578         val="$undef"
4579         echo "You are not using the GNU C Library"
4580 fi
4581 $rm -f gnulibc*
4582 set d_gnulibc
4583 eval $setvar
4584
4585 : see if nm is to be used to determine whether a symbol is defined or not
4586 case "$usenm" in
4587 '')
4588         dflt=''
4589         case "$d_gnulibc" in
4590         "$define")
4591                 echo " "
4592                 echo "nm probably won't work on the GNU C Library." >&4
4593                 dflt=n
4594                 ;;
4595         esac
4596         case "$dflt" in
4597         '') 
4598                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4599                         echo " "
4600                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4601                         echo "'nm' won't be sufficient on this sytem." >&4
4602                         dflt=n
4603                 fi
4604                 ;;
4605         esac
4606         case "$dflt" in
4607         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4608                 if $test $dflt -gt 20; then
4609                         dflt=y
4610                 else
4611                         dflt=n
4612                 fi
4613                 ;;
4614         esac
4615         ;;
4616 *)
4617         case "$usenm" in
4618         true|$define) dflt=y;;
4619         *) dflt=n;;
4620         esac
4621         ;;
4622 esac
4623 $cat <<EOM
4624
4625 I can use $nm to extract the symbols from your C libraries. This
4626 is a time consuming task which may generate huge output on the disk (up
4627 to 3 megabytes) but that should make the symbols extraction faster. The
4628 alternative is to skip the 'nm' extraction part and to compile a small
4629 test program instead to determine whether each symbol is present. If
4630 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4631 this may be the best solution.
4632
4633 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4634
4635 EOM
4636 rp="Shall I use $nm to extract C symbols from the libraries?"
4637 . ./myread
4638 case "$ans" in
4639 [Nn]*) usenm=false;;
4640 *) usenm=true;;
4641 esac
4642
4643 runnm=$usenm
4644 case "$reuseval" in
4645 true) runnm=false;;
4646 esac
4647
4648 : nm options which may be necessary
4649 case "$nm_opt" in
4650 '') if $test -f /mach_boot; then
4651                 nm_opt=''       # Mach
4652         elif $test -d /usr/ccs/lib; then
4653                 nm_opt='-p'     # Solaris (and SunOS?)
4654         elif $test -f /dgux; then
4655                 nm_opt='-p'     # DG-UX
4656         elif $test -f /lib64/rld; then
4657                 nm_opt='-p'     # 64-bit Irix
4658         else
4659                 nm_opt=''
4660         fi;;
4661 esac
4662
4663 : nm options which may be necessary for shared libraries but illegal
4664 : for archive libraries.  Thank you, Linux.
4665 case "$nm_so_opt" in
4666 '')     case "$myuname" in
4667         *linux*)
4668                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4669                         nm_so_opt='--dynamic'
4670                 fi
4671                 ;;
4672         esac
4673         ;;
4674 esac
4675
4676 case "$runnm" in
4677 true)
4678 : get list of predefined functions in a handy place
4679 echo " "
4680 case "$libc" in
4681 '') libc=unknown
4682         case "$libs" in
4683         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4684         esac
4685         ;;
4686 esac
4687 libnames='';
4688 case "$libs" in
4689 '') ;;
4690 *)  for thislib in $libs; do
4691         case "$thislib" in
4692         -lc|-lc_s)
4693                 : Handle C library specially below.
4694                 ;;
4695         -l*)
4696                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4697                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4698                         :
4699                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4700                         :
4701                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4702                         :
4703                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4704                         :
4705                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4706                         :
4707                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4708                         :
4709                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4710                         :
4711                 else
4712                         try=''
4713                 fi
4714                 libnames="$libnames $try"
4715                 ;;
4716         *) libnames="$libnames $thislib" ;;
4717         esac
4718         done
4719         ;;
4720 esac
4721 xxx=normal
4722 case "$libc" in
4723 unknown)
4724         set /lib/libc.$so
4725         for xxx in $libpth; do
4726                 $test -r $1 || set $xxx/libc.$so
4727                 : The messy sed command sorts on library version numbers.
4728                 $test -r $1 || \
4729                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4730                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4731                                 h
4732                                 s/[0-9][0-9]*/0000&/g
4733                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4734                                 G
4735                                 s/\n/ /' | \
4736                          sort | $sed -e 's/^.* //'`
4737                 eval set \$$#
4738         done
4739         $test -r $1 || set /usr/ccs/lib/libc.$so
4740         $test -r $1 || set /lib/libsys_s$_a
4741         ;;
4742 *)
4743         set blurfl
4744         ;;
4745 esac
4746 if $test -r "$1"; then
4747         echo "Your (shared) C library seems to be in $1."
4748         libc="$1"
4749 elif $test -r /lib/libc && $test -r /lib/clib; then
4750         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4751         xxx=apollo
4752         libc='/lib/clib /lib/libc'
4753         if $test -r /lib/syslib; then
4754                 echo "(Your math library is in /lib/syslib.)"
4755                 libc="$libc /lib/syslib"
4756         fi
4757 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4758         echo "Your C library seems to be in $libc, as you said before."
4759 elif $test -r $incpath/usr/lib/libc$_a; then
4760         libc=$incpath/usr/lib/libc$_a;
4761         echo "Your C library seems to be in $libc.  That's fine."
4762 elif $test -r /lib/libc$_a; then
4763         libc=/lib/libc$_a;
4764         echo "Your C library seems to be in $libc.  You're normal."
4765 else
4766         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4767                 :
4768         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4769                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4770         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4771                 :
4772         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4773                 :
4774         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4775                 :
4776         else
4777                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4778         fi
4779         if $test -r "$tans"; then
4780                 echo "Your C library seems to be in $tans, of all places."
4781                 libc=$tans
4782         else
4783                 libc='blurfl'
4784         fi
4785 fi
4786 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4787         dflt="$libc"
4788         cat <<EOM
4789
4790 If the guess above is wrong (which it might be if you're using a strange
4791 compiler, or your machine supports multiple models), you can override it here.
4792
4793 EOM
4794 else
4795         dflt=''
4796         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4797         cat >&4 <<EOM
4798 I can't seem to find your C library.  I've looked in the following places:
4799
4800 EOM
4801         $sed 's/^/      /' libpath
4802         cat <<EOM
4803
4804 None of these seems to contain your C library. I need to get its name...
4805
4806 EOM
4807 fi
4808 fn=f
4809 rp='Where is your C library?'
4810 . ./getfile
4811 libc="$ans"
4812
4813 echo " "
4814 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4815 set X `cat libnames`
4816 shift
4817 xxx=files
4818 case $# in 1) xxx=file; esac
4819 echo "Extracting names from the following $xxx for later perusal:" >&4
4820 echo " "
4821 $sed 's/^/      /' libnames >&4
4822 echo " "
4823 $echo $n "This may take a while...$c" >&4
4824
4825 for file in $*; do
4826         case $file in
4827         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4828         *) $nm $nm_opt $file 2>/dev/null;;
4829         esac
4830 done >libc.tmp
4831
4832 $echo $n ".$c"
4833 $grep fprintf libc.tmp > libc.ptf
4834 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4835 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4836 xxx='[ADTSIW]'
4837 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4838         eval $xscan;\
4839         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4840                 eval $xrun
4841 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4842         eval $xscan;\
4843         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4844                 eval $xrun
4845 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4846         eval $xscan;\
4847         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4848                 eval $xrun
4849 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4850         eval $xscan;\
4851         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4852                 eval $xrun
4853 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4854         eval $xscan;\
4855         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4856                 eval $xrun
4857 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4858         eval $xscan;\
4859         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4860                 eval $xrun
4861 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4862                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4863         eval $xscan;\
4864         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4865                 eval $xrun
4866 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4867         eval $xscan;\
4868         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4869                 eval $xrun
4870 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4871         eval $xscan;\
4872         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4873                 eval $xrun
4874 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4875         eval $xscan;\
4876         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4877                 eval $xrun
4878 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4879         eval $xscan;\
4880         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4881                 eval $xrun
4882 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4883         eval $xscan;\
4884         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4885                 eval $xrun
4886 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4887         eval $xscan;\
4888         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4889                 eval $xrun
4890 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4891         eval $xscan;\
4892         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4893                 eval $xrun
4894 else
4895         $nm -p $* 2>/dev/null >libc.tmp
4896         $grep fprintf libc.tmp > libc.ptf
4897         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4898                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4899         then
4900                 nm_opt='-p'
4901                 eval $xrun
4902         else
4903                 echo " "
4904                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4905                 com=''
4906                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4907                         for thisname in $libnames $libc; do
4908                                 $ar t $thisname >>libc.tmp
4909                         done
4910                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4911                         echo "Ok." >&4
4912                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4913                         # Repeat libc to extract forwarders to DLL entries too
4914                         for thisname in $libnames $libc; do
4915                                 $ar tv $thisname >>libc.tmp
4916                                 # Revision 50 of EMX has bug in $ar.
4917                                 # it will not extract forwarders to DLL entries
4918                                 # Use emximp which will extract exactly them.
4919                                 emximp -o tmp.imp $thisname \
4920                                     2>/dev/null && \
4921                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4922                                     < tmp.imp >>libc.tmp
4923                                 $rm tmp.imp
4924                         done
4925                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4926                         echo "Ok." >&4
4927                 else
4928                         echo "$ar didn't seem to work right." >&4
4929                         echo "Maybe this is a Cray...trying bld instead..." >&4
4930                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4931                         then
4932                                 for thisname in $libnames; do
4933                                         bld t $libnames | \
4934                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4935                                         $ar t $thisname >>libc.tmp
4936                                 done
4937                                 echo "Ok." >&4
4938                         else
4939                                 echo "That didn't work either.  Giving up." >&4
4940                                 exit 1
4941                         fi
4942                 fi
4943         fi
4944 fi
4945 nm_extract="$com"
4946 if $test -f /lib/syscalls.exp; then
4947         echo " "
4948         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4949         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4950 fi
4951 ;;
4952 esac
4953 $rm -f libnames libpath
4954
4955 : see if dld is available
4956 set dld.h i_dld
4957 eval $inhdr
4958
4959 : is a C symbol defined?
4960 csym='tlook=$1;
4961 case "$3" in
4962 -v) tf=libc.tmp; tc=""; tdc="";;
4963 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4964 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4965 esac;
4966 tx=yes;
4967 case "$reuseval-$4" in
4968 true-) ;;
4969 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4970 esac;
4971 case "$tx" in
4972 yes)
4973         case "$runnm" in
4974         true)
4975                 if $contains $tlook $tf >/dev/null 2>&1;
4976                 then tval=true;
4977                 else tval=false;
4978                 fi;;
4979         *)
4980                 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4981                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4982                 then tval=true;
4983                 else tval=false;
4984                 fi;
4985                 $rm -f t t.c;;
4986         esac;;
4987 *)
4988         case "$tval" in
4989         $define) tval=true;;
4990         *) tval=false;;
4991         esac;;
4992 esac;
4993 eval "$2=$tval"'
4994
4995 : define an is-in-libc? function
4996 inlibc='echo " "; td=$define; tu=$undef;
4997 sym=$1; var=$2; eval "was=\$$2";
4998 tx=yes;
4999 case "$reuseval$was" in
5000 true) ;;
5001 true*) tx=no;;
5002 esac;
5003 case "$tx" in
5004 yes)
5005         set $sym tres -f;
5006         eval $csym;
5007         case "$tres" in
5008         true)
5009                 echo "$sym() found." >&4;
5010                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5011         *)
5012                 echo "$sym() NOT found." >&4;
5013                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5014         esac;;
5015 *)
5016         case "$was" in
5017         $define) echo "$sym() found." >&4;;
5018         *) echo "$sym() NOT found." >&4;;
5019         esac;;
5020 esac'
5021
5022 : see if dlopen exists
5023 xxx_runnm="$runnm"
5024 runnm=false
5025 set dlopen d_dlopen
5026 eval $inlibc
5027 runnm="$xxx_runnm"
5028
5029 : determine which dynamic loading, if any, to compile in
5030 echo " "
5031 dldir="ext/DynaLoader"
5032 case "$usedl" in
5033 $define|y|true)
5034         dflt='y'
5035         usedl="$define"
5036         ;;
5037 $undef|n|false)
5038         dflt='n'
5039         usedl="$undef"
5040         ;;
5041 *) 
5042         dflt='n'
5043         case "$d_dlopen" in
5044             $define) dflt='y' ;;
5045         esac
5046         case "$i_dld" in
5047             $define) dflt='y' ;;
5048         esac
5049         : Does a dl_xxx.xs file exist for this operating system
5050         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5051         ;;
5052 esac
5053 rp="Do you wish to use dynamic loading?"
5054 . ./myread
5055 usedl="$ans"
5056 case "$ans" in
5057 y*) usedl="$define"
5058         case "$dlsrc" in
5059         '')
5060                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5061                         dflt="$dldir/dl_${osname}.xs"
5062                 elif $test "$d_dlopen" = "$define" ; then
5063                         dflt="$dldir/dl_dlopen.xs"
5064                 elif $test "$i_dld" = "$define" ; then
5065                         dflt="$dldir/dl_dld.xs"
5066                 else
5067                         dflt=''
5068                 fi
5069                 ;;
5070         *)      dflt="$dldir/$dlsrc"
5071                 ;;
5072         esac
5073     echo "The following dynamic loading files are available:"
5074         : Can not go over to $dldir because getfile has path hard-coded in.
5075         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5076         rp="Source file to use for dynamic loading"
5077         fn="fne"
5078         # XXX This getfile call will fail the existence check if you try 
5079         # building away from $src (this is not supported yet).
5080         . ./getfile
5081         usedl="$define"
5082         : emulate basename
5083         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5084
5085         $cat << EOM
5086
5087 Some systems may require passing special flags to $cc -c to
5088 compile modules that will be used to create a shared library.
5089 To use no flags, say "none".
5090
5091 EOM
5092     case "$cccdlflags" in
5093     '') case "$gccversion" in
5094                 '') case "$osname" in
5095                         hpux)   dflt='+z' ;;
5096                         next)   dflt='none' ;;
5097                         irix*)  dflt='-KPIC' ;;
5098                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5099                         sunos)  dflt='-pic' ;;
5100                         *)      dflt='none' ;;
5101                     esac
5102                         ;;
5103                 *)  case "$osname" in
5104                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5105                         *)      dflt='-fpic' ;;
5106                     esac ;;
5107             esac ;;
5108         ' ') dflt='none' ;;
5109     *)  dflt="$cccdlflags" ;;
5110     esac
5111     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5112     . ./myread
5113     case "$ans" in
5114     none) cccdlflags=' ' ;;
5115     *) cccdlflags="$ans" ;;
5116     esac
5117
5118     cat << EOM
5119
5120 Some systems use ld to create libraries that can be dynamically loaded,
5121 while other systems (such as those using ELF) use $cc.
5122
5123 EOM
5124         case "$ld" in
5125         '')     $cat >try.c <<'EOM'
5126 /* Test for whether ELF binaries are produced */
5127 #include <fcntl.h>
5128 #include <stdlib.h>
5129 int main() {
5130         char b[4];
5131         int i = open("a.out",O_RDONLY);
5132         if(i == -1) 
5133                 exit(1); /* fail */
5134         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5135                 exit(0); /* succeed (yes, it's ELF) */
5136         else
5137                 exit(1); /* fail */
5138 }
5139 EOM
5140                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5141                         cat <<EOM
5142 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5143 EOM
5144                         dflt="$cc"
5145                 else
5146                         echo "I'll use ld to build dynamic libraries."
5147                         dflt='ld'
5148                 fi
5149                 rm -f try.c a.out
5150                 ;;
5151         *)      dflt="$ld"
5152                 ;;
5153         esac
5154
5155     rp="What command should be used to create dynamic libraries?"
5156     . ./myread
5157         ld="$ans"
5158
5159     cat << EOM
5160
5161 Some systems may require passing special flags to $ld to create a
5162 library that can be dynamically loaded.  If your ld flags include
5163 -L/other/path options to locate libraries outside your loader's normal
5164 search path, you may need to specify those -L options here as well.  To
5165 use no flags, say "none".
5166
5167 EOM
5168     case "$lddlflags" in
5169     '') case "$osname" in
5170                         beos) dflt='-nostart' ;;
5171                         hpux)  dflt='-b' ;;
5172                         linux|irix*)    dflt='-shared' ;;
5173                         next)  dflt='none' ;;
5174                         solaris) dflt='-G' ;;
5175                         sunos) dflt='-assert nodefinitions' ;;
5176                         svr4*|esix*) dflt="-G $ldflags" ;;
5177                 *)     dflt='none' ;;
5178                         esac
5179                         ;;
5180     *) dflt="$lddlflags" ;;
5181     esac
5182
5183         : Try to guess additional flags to pick up local libraries.
5184         : Be careful not to append to a plain 'none'
5185         case "$dflt" in
5186         none) dflt='' ;;
5187         esac
5188         for thisflag in $ldflags; do
5189                 case "$thisflag" in
5190                 -L*)
5191                         case " $dflt " in
5192                         *" $thisflag "*) ;;
5193                         *) dflt="$dflt $thisflag" ;;
5194                         esac
5195                         ;;
5196                 esac
5197         done
5198
5199         case "$dflt" in
5200         ''|' ') dflt='none' ;;
5201         esac
5202
5203     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5204     . ./myread
5205     case "$ans" in
5206     none) lddlflags=' ' ;;
5207     *) lddlflags="$ans" ;;
5208     esac
5209
5210         cat <<EOM
5211
5212 Some systems may require passing special flags to $cc to indicate that
5213 the resulting executable will use dynamic linking.  To use no flags,
5214 say "none".
5215
5216 EOM
5217     case "$ccdlflags" in
5218     '') case "$osname" in
5219                 hpux)   dflt='-Wl,-E' ;;
5220                 linux)  dflt='-rdynamic' ;;
5221                 next)   dflt='none' ;;
5222                 sunos)  dflt='none' ;;
5223                 *)      dflt='none' ;;
5224             esac ;;
5225     ' ')  dflt='none' ;;
5226     *)  dflt="$ccdlflags" ;;
5227     esac
5228     rp="Any special flags to pass to $cc to use dynamic loading?"
5229     . ./myread
5230     case "$ans" in
5231     none) ccdlflags=' ' ;;
5232     *) ccdlflags="$ans" ;;
5233     esac
5234     ;;
5235 *)  usedl="$undef"
5236         ld='ld'
5237     dlsrc='dl_none.xs'
5238     lddlflags=''
5239     ccdlflags=''
5240     ;;
5241 esac
5242
5243 also=''
5244 case "$usedl" in
5245 $undef)
5246         # No dynamic loading being used, so don't bother even to prompt.
5247         useshrplib='false'
5248         ;;
5249 *)      case "$useshrplib" in
5250         '')     case "$osname" in
5251                 svr4*|dgux|dynixptx|esix|powerux|beos)
5252                         dflt=y
5253                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5254                         ;;
5255                 next*)
5256                         case "$osvers" in
5257                         4*)     dflt=y
5258                                 also='Building a shared libperl is needed for MAB support.'
5259                                 ;;
5260                         *)      dflt=n
5261                                 ;;
5262                         esac
5263                         ;;
5264                 *)      dflt=n
5265                         ;;
5266                 esac
5267                 ;;
5268         $define|true|[Yy]*)
5269                 dflt=y
5270                 ;;
5271         *)      dflt=n
5272                 ;;
5273         esac
5274         $cat << EOM
5275
5276 The perl executable is normally obtained by linking perlmain.c with
5277 libperl${_a}, any static extensions (usually just DynaLoader), and
5278 any other libraries needed on this system (such as -lm, etc.).  Since
5279 your system supports dynamic loading, it is probably possible to build
5280 a shared libperl.$so.  If you will have more than one executable linked
5281 to libperl.$so, this will significantly reduce the size of each
5282 executable, but it may have a noticeable affect on performance.  The
5283 default is probably sensible for your system.
5284 $also
5285
5286 EOM
5287         rp="Build a shared libperl.$so (y/n)"
5288         . ./myread
5289         case "$ans" in
5290         true|$define|[Yy]*)
5291                 useshrplib='true'
5292                 # Why does next4 have to be so different?
5293                 case "${osname}${osvers}" in
5294                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5295                 os2*)   xxx='' ;; # Nothing special needed.
5296                 beos*)  xxx='' ;;
5297                 *)              xxx='LD_LIBRARY_PATH' ;;
5298                 esac
5299                 if test X"$xxx" != "X"; then
5300                         $cat <<EOM  | $tee -a ../config.msg >&4
5301
5302 To build perl, you must add the current working directory to your
5303 $xxx environment variable before running make.  You can do
5304 this with
5305    $xxx=\`pwd\`:\$$xxx; export $xxx
5306 for Bourne-style shells, or
5307    setenv $xxx \`pwd\`
5308 for Csh-style shells.  You *MUST* do this before running make.
5309
5310 EOM
5311                 fi
5312                 ;;
5313         *)      useshrplib='false' ;;
5314         esac
5315         ;;
5316 esac
5317
5318 case "$useshrplib" in
5319 true)
5320         case "$libperl" in
5321         '')
5322                 # Figure out a good name for libperl.so.  Since it gets stored in
5323                 # a version-specific architecture-dependent library, the version
5324                 # number isn't really that important, except for making cc/ld happy.
5325                 #
5326                 # A name such as libperl.so.3.1
5327                 majmin="libperl.$so.$patchlevel.$subversion"
5328                 # A name such as libperl.so.301
5329                 majonly=`echo $patchlevel $subversion |
5330                         $awk '{printf "%d%02d", $1, $2}'`
5331                 majonly=libperl.$so.$majonly
5332                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5333                 # rely on figuring it out from the naming of libc.
5334                 case "${osname}${osvers}" in
5335                 next4*)
5336                         dflt=libperl.5.$so
5337                         # XXX How handle the --version stuff for MAB?
5338                         ;;
5339                 linux*)  # ld won't link with a bare -lperl otherwise.
5340                         dflt=libperl.$so
5341                         ;;
5342                 *)      # Try to guess based on whether libc has major.minor.
5343                         case "$libc" in
5344                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5345                         *libc.$so.[0-9]*) dflt=$majonly ;;
5346                         *)      dflt=libperl.$so ;;
5347                         esac
5348                         ;;
5349                 esac
5350                 ;;
5351         *)      dflt=$libperl
5352                 ;;
5353         esac
5354         cat << EOM
5355
5356 I need to select a good name for the shared libperl.  If your system uses
5357 library names with major and minor numbers, then you might want something
5358 like $majmin.  Alternatively, if your system uses a single version
5359 number for shared libraries, then you might want to use $majonly.
5360 Or, your system might be quite happy with a simple libperl.$so.
5361
5362 Since the shared libperl will get installed into a version-specific
5363 architecture-dependent directory, the version number of the shared perl
5364 library probably isn't important, so the default should be o.k.
5365
5366 EOM
5367         rp='What name do you want to give to the shared libperl?'
5368         . ./myread
5369         libperl=$ans
5370         echo "Ok, I'll use $libperl"
5371         ;;
5372 *)
5373         libperl="libperl${_a}"
5374         ;;
5375 esac
5376
5377 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5378 case "$shrpdir" in
5379 '') ;;
5380 *)      $cat >&4 <<EOM
5381 WARNING:  Use of the shrpdir variable for the installation location of
5382 the shared $libperl is not supported.  It was never documented and
5383 will not work in this version.  Let me (perlbug@perl.com)
5384 know of any problems this may cause.
5385
5386 EOM
5387         case "$shrpdir" in
5388         "$archlibexp/CORE")
5389                 $cat >&4 <<EOM
5390 But your current setting of $shrpdir is
5391 the default anyway, so it's harmless.
5392 EOM
5393                 ;;
5394         *)
5395                 $cat >&4 <<EOM
5396 Further, your current attempted setting of $shrpdir
5397 conflicts with the value of $archlibexp/CORE
5398 that installperl will use.
5399 EOM
5400                 ;;
5401         esac
5402         ;;
5403 esac
5404
5405 # How will the perl executable find the installed shared $libperl?
5406 # Add $xxx to ccdlflags.
5407 # If we can't figure out a command-line option, use $shrpenv to
5408 # set env LD_RUN_PATH.  The main perl makefile uses this.
5409 shrpdir=$archlibexp/CORE
5410 xxx=''
5411 tmp_shrpenv=''
5412 if "$useshrplib"; then
5413     case "$osname" in 
5414         aix)
5415                 # We'll set it in Makefile.SH...
5416                 ;;
5417         solaris|netbsd)
5418                 xxx="-R $shrpdir"
5419                 ;;
5420         freebsd)
5421                 xxx="-Wl,-R$shrpdir"
5422                 ;;
5423         linux|irix*|dec_osf)
5424                 xxx="-Wl,-rpath,$shrpdir"
5425                 ;;
5426         next)
5427                 # next doesn't like the default...
5428                 ;;
5429         beos)
5430                 # beos doesn't like the default, either.
5431                 ;;
5432         *)
5433                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5434                 ;;
5435         esac
5436         case "$xxx" in
5437         '') ;;
5438         *)      
5439                 # Only add $xxx if it isn't already in ccdlflags.
5440                 case " $ccdlflags " in
5441                 *" $xxx "*)     ;;
5442                 *)      ccdlflags="$ccdlflags $xxx"
5443                         cat <<EOM >&4
5444
5445 Adding $xxx to the flags
5446 passed to $ld so that the perl executable will find the 
5447 installed shared $libperl.
5448
5449 EOM
5450                         ;;
5451                 esac
5452                 ;;
5453         esac
5454 fi
5455 # Respect a hint or command-line value.
5456 case "$shrpenv" in
5457 '') shrpenv="$tmp_shrpenv" ;;
5458 esac
5459
5460 : determine where manual pages go
5461 set man1dir man1dir none
5462 eval $prefixit
5463 $cat <<EOM
5464
5465 $spackage has manual pages available in source form.
5466 EOM
5467 case "$nroff" in
5468 nroff)
5469         echo "However, you don't have nroff, so they're probably useless to you."
5470         case "$man1dir" in
5471         '') man1dir="none";;
5472         esac;;
5473 esac
5474 echo "If you don't want the manual sources installed, answer 'none'."
5475 case "$man1dir" in
5476 ' ') dflt=none
5477         ;;
5478 '')
5479         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5480         lookpath="$lookpath $prefixexp/man/p_man/man1"
5481         lookpath="$lookpath $prefixexp/man/u_man/man1"
5482         lookpath="$lookpath $prefixexp/man/man.1"
5483         case "$sysman" in
5484         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5485         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5486         esac
5487         set dflt
5488         eval $prefixup
5489         ;;
5490 *)  dflt="$man1dir"
5491         ;;
5492 esac
5493 echo " "
5494 fn=dn+~
5495 rp="Where do the main $spackage manual pages (source) go?"
5496 . ./getfile
5497 if $test "X$man1direxp" != "X$ansexp"; then
5498         installman1dir=''
5499 fi
5500 man1dir="$ans"
5501 man1direxp="$ansexp"
5502 case "$man1dir" in
5503 '') man1dir=' '
5504         installman1dir='';;
5505 esac
5506 if $afs; then
5507         $cat <<EOM
5508
5509 Since you are running AFS, I need to distinguish the directory in which
5510 manual pages reside from the directory in which they are installed (and from
5511 which they are presumably copied to the former directory by occult means).
5512
5513 EOM
5514         case "$installman1dir" in
5515         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5516         *) dflt="$installman1dir";;
5517         esac
5518         fn=de~
5519         rp='Where will man pages be installed?'
5520         . ./getfile
5521         installman1dir="$ans"
5522 else
5523         installman1dir="$man1direxp"
5524 fi
5525
5526 : What suffix to use on installed man pages
5527
5528 case "$man1dir" in
5529 ' ')
5530         man1ext='0'
5531         ;;
5532 *)
5533         rp="What suffix should be used for the main $spackage man pages?"
5534         case "$man1ext" in
5535         '')     case "$man1dir" in
5536                 *1)  dflt=1 ;;
5537                 *1p) dflt=1p ;;
5538                 *1pm) dflt=1pm ;;
5539                 *l) dflt=l;;
5540                 *n) dflt=n;;
5541                 *o) dflt=o;;
5542                 *p) dflt=p;;
5543                 *C) dflt=C;;
5544                 *L) dflt=L;;
5545                 *L1) dflt=L1;;
5546                 *) dflt=1;;
5547                 esac
5548                 ;;
5549         *)      dflt="$man1ext";;
5550         esac
5551         . ./myread
5552         man1ext="$ans"
5553         ;;
5554 esac
5555
5556 : see if we can have long filenames
5557 echo " "
5558 rmlist="$rmlist /tmp/cf$$"
5559 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5560 first=123456789abcdef
5561 second=/tmp/cf$$/$first
5562 $rm -f $first $second
5563 if (echo hi >$first) 2>/dev/null; then
5564         if $test -f 123456789abcde; then
5565                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5566                 val="$undef"
5567         else
5568                 if (echo hi >$second) 2>/dev/null; then
5569                         if $test -f /tmp/cf$$/123456789abcde; then
5570                                 $cat <<'EOM'
5571 That's peculiar... You can have filenames longer than 14 characters, but only
5572 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5573 I shall consider your system cannot support long filenames at all.
5574 EOM
5575                                 val="$undef"
5576                         else
5577                                 echo 'You can have filenames longer than 14 characters.' >&4
5578                                 val="$define"
5579                         fi
5580                 else
5581                         $cat <<'EOM'
5582 How confusing! Some of your filesystems are sane enough to allow filenames
5583 longer than 14 characters but some others like /tmp can't even think about them.
5584 So, for now on, I shall assume your kernel does not allow them at all.
5585 EOM
5586                         val="$undef"
5587                 fi
5588         fi
5589 else
5590         $cat <<'EOM'
5591 You can't have filenames longer than 14 chars.  You can't even think about them!
5592 EOM
5593         val="$undef"
5594 fi 
5595 set d_flexfnam
5596 eval $setvar
5597 $rm -rf /tmp/cf$$ 123456789abcde*
5598
5599 : determine where library module manual pages go
5600 set man3dir man3dir none
5601 eval $prefixit
5602 $cat <<EOM
5603
5604 $spackage has manual pages for many of the library modules.
5605 EOM
5606
5607 case "$nroff" in
5608 nroff)
5609         $cat <<'EOM'
5610 However, you don't have nroff, so they're probably useless to you.
5611 EOM
5612         case "$man3dir" in
5613         '') man3dir="none";;
5614         esac;;
5615 esac
5616
5617 case "$d_flexfnam" in
5618 undef)
5619         $cat <<'EOM'
5620 However, your system can't handle the long file names like File::Basename.3. 
5621 EOM
5622         case "$man3dir" in
5623         '') man3dir="none";;
5624         esac;;
5625 esac
5626
5627 echo "If you don't want the manual sources installed, answer 'none'."
5628 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5629 case "$man3dir" in
5630 '')     case "$prefix" in 
5631         *$prog*) dflt=`echo $man1dir | 
5632                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5633         *)      dflt="$privlib/man/man3" ;;
5634         esac
5635         ;;
5636 ' ') dflt=none;;
5637 *)      dflt="$man3dir" ;;
5638 esac
5639 echo " "
5640
5641 fn=dn+~
5642 rp="Where do the $package library man pages (source) go?"
5643 . ./getfile
5644 if test "X$man3direxp" != "X$ansexp"; then
5645         installman3dir=''
5646 fi
5647
5648 man3dir="$ans"
5649 man3direxp="$ansexp"
5650 case "$man3dir" in
5651 '') man3dir=' '
5652         installman3dir='';;
5653 esac
5654 if $afs; then
5655         $cat <<EOM
5656
5657 Since you are running AFS, I need to distinguish the directory in which
5658 manual pages reside from the directory in which they are installed (and from
5659 which they are presumably copied to the former directory by occult means).
5660
5661 EOM
5662         case "$installman3dir" in
5663         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5664         *) dflt="$installman3dir";;
5665         esac
5666         fn=de~
5667         rp='Where will man pages be installed?'
5668         . ./getfile
5669         installman3dir="$ans"
5670 else
5671         installman3dir="$man3direxp"
5672 fi
5673
5674 : What suffix to use on installed man pages
5675
5676 case "$man3dir" in
5677 ' ')
5678         man3ext='0'
5679         ;;
5680 *)
5681         rp="What suffix should be used for the $package library man pages?"
5682         case "$man3ext" in
5683         '')     case "$man3dir" in
5684                 *3)  dflt=3 ;;
5685                 *3p) dflt=3p ;;
5686                 *3pm) dflt=3pm ;;
5687                 *l) dflt=l;;
5688                 *n) dflt=n;;
5689                 *o) dflt=o;;
5690                 *p) dflt=p;;
5691                 *C) dflt=C;;
5692                 *L) dflt=L;;
5693                 *L3) dflt=L3;;
5694                 *) dflt=3;;
5695                 esac
5696                 ;;
5697         *)      dflt="$man3ext";;
5698         esac
5699         . ./myread
5700         man3ext="$ans"
5701         ;;
5702 esac
5703
5704 : see if we have to deal with yellow pages, now NIS.
5705 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5706         if $test -f /usr/etc/nibindd; then
5707                 echo " "
5708                 echo "I'm fairly confident you're on a NeXT."
5709                 echo " "
5710                 rp='Do you get the hosts file via NetInfo?'
5711                 dflt=y
5712                 case "$hostcat" in
5713                 nidump*) ;;
5714                 '') ;;
5715                 *) dflt=n;;
5716                 esac
5717                 . ./myread
5718                 case "$ans" in
5719                 y*) hostcat='nidump hosts .';;
5720                 *)      case "$hostcat" in
5721                         nidump*) hostcat='';;
5722                         esac
5723                         ;;
5724                 esac
5725         fi
5726         case "$hostcat" in
5727         nidump*) ;;
5728         *)
5729                 case "$hostcat" in
5730                 *ypcat*) dflt=y;;
5731                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5732                                 dflt=y
5733                         else
5734                                 dflt=n
5735                         fi;;
5736                 *) dflt=n;;
5737                 esac
5738                 echo " "
5739                 rp='Are you getting the hosts file via yellow pages?'
5740                 . ./myread
5741                 case "$ans" in
5742                 y*) hostcat='ypcat hosts';;
5743                 *) hostcat='cat /etc/hosts';;
5744                 esac
5745                 ;;
5746         esac
5747 fi
5748 case "$hostcat" in
5749 '') hostcat='cat /etc/hosts';;
5750 esac
5751 case "$groupcat" in
5752 '') groupcat='cat /etc/group';;
5753 esac
5754 case "$passcat" in
5755 '') passcat='cat /etc/passwd';;
5756 esac
5757
5758 : now get the host name
5759 echo " "
5760 echo "Figuring out host name..." >&4
5761 case "$myhostname" in
5762 '') cont=true
5763         echo 'Maybe "hostname" will work...'
5764         if tans=`sh -c hostname 2>&1` ; then
5765                 myhostname=$tans
5766                 phostname=hostname
5767                 cont=''
5768         fi
5769         ;;
5770 *) cont='';;
5771 esac
5772 if $test "$cont"; then
5773         if ./xenix; then
5774                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5775                 if tans=`cat /etc/systemid 2>&1` ; then
5776                         myhostname=$tans
5777                         phostname='cat /etc/systemid'
5778                         echo "Whadyaknow.  Xenix always was a bit strange..."
5779                         cont=''
5780                 fi
5781         elif $test -r /etc/systemid; then
5782                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5783         fi
5784 fi
5785 if $test "$cont"; then
5786         echo 'No, maybe "uuname -l" will work...'
5787         if tans=`sh -c 'uuname -l' 2>&1` ; then
5788                 myhostname=$tans
5789                 phostname='uuname -l'
5790         else
5791                 echo 'Strange.  Maybe "uname -n" will work...'
5792                 if tans=`sh -c 'uname -n' 2>&1` ; then
5793                         myhostname=$tans
5794                         phostname='uname -n'
5795                 else
5796                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5797                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5798                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5799                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5800                         else
5801                                 case "$myhostname" in
5802                                 '') echo "Does this machine have an identity crisis or something?"
5803                                         phostname='';;
5804                                 *)
5805                                         echo "Well, you said $myhostname before..."
5806                                         phostname='echo $myhostname';;
5807                                 esac
5808                         fi
5809                 fi
5810         fi
5811 fi
5812 : you do not want to know about this
5813 set $myhostname
5814 myhostname=$1
5815
5816 : verify guess
5817 if $test "$myhostname" ; then
5818         dflt=y
5819         rp='Your host name appears to be "'$myhostname'".'" Right?"
5820         . ./myread
5821         case "$ans" in
5822         y*) ;;
5823         *) myhostname='';;
5824         esac
5825 fi
5826
5827 : bad guess or no guess
5828 while $test "X$myhostname" = X ; do
5829         dflt=''
5830         rp="Please type the (one word) name of your host:"
5831         . ./myread
5832         myhostname="$ans"
5833 done
5834
5835 : translate upper to lower if necessary
5836 case "$myhostname" in
5837 *[A-Z]*)
5838         echo "(Normalizing case in your host name)"
5839         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5840         ;;
5841 esac
5842
5843 case "$myhostname" in
5844 *.*)
5845         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5846         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5847         echo "(Trimming domain name from host name--host name is now $myhostname)"
5848         ;;
5849 *) case "$mydomain" in
5850         '')
5851                 {
5852                         test "X$hostcat" = "Xypcat hosts" &&
5853                         ypmatch "$myhostname" hosts 2>/dev/null |\
5854                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5855                         $test -s hosts
5856                 } || {
5857                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5858                                         /[       ]$myhostname[  . ]/p" > hosts
5859                 }
5860                 tmp_re="[       . ]"
5861                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5862                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5863                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5864                         hosts | $sort | $uniq | \
5865                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5866                 case `$echo X$dflt` in
5867                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5868                         dflt=.
5869                         ;;
5870                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5871                         ;;
5872                 esac
5873                 case "$dflt" in
5874                 .)
5875                         tans=`./loc resolv.conf X /etc /usr/etc`
5876                         if $test -f "$tans"; then
5877                                 echo "(Attempting domain name extraction from $tans)"
5878                                 dflt=.`$sed -n -e 's/   / /g' \
5879                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5880                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5881                                 case "$dflt" in
5882                                 .) dflt=.`$sed -n -e 's/        / /g' \
5883                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5884                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5885                                         ;;
5886                                 esac
5887                         fi
5888                         ;;
5889                 esac
5890                 case "$dflt" in
5891                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5892                         dflt=.`sh -c domainname 2>/dev/null`
5893                         case "$dflt" in
5894                         '') dflt='.';;
5895                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5896                         esac
5897                         ;;
5898                 esac
5899                 case "$dflt" in
5900                 .) echo "(Lost all hope -- silly guess then)"
5901                         dflt='.uucp'
5902                         ;;
5903                 esac
5904                 $rm -f hosts
5905                 ;;
5906         *) dflt="$mydomain";;
5907         esac;;
5908 esac
5909 echo " "
5910 rp="What is your domain name?"
5911 . ./myread
5912 tans="$ans"
5913 case "$ans" in
5914 '') ;;
5915 .*) ;;
5916 *) tans=".$tans";;
5917 esac
5918 mydomain="$tans"
5919
5920 : translate upper to lower if necessary
5921 case "$mydomain" in
5922 *[A-Z]*)
5923         echo "(Normalizing case in your domain name)"
5924         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5925         ;;
5926 esac
5927
5928 : a little sanity check here
5929 case "$phostname" in
5930 '') ;;
5931 *)
5932         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5933         $myhostname$mydomain|$myhostname) ;;
5934         *)
5935                 case "$phostname" in
5936                 sed*)
5937                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5938                         ;;
5939                 *)
5940                         echo "(That doesn't agree with your $phostname command, by the way.)"
5941                         ;;
5942                 esac
5943         ;;
5944         esac
5945         ;;
5946 esac
5947
5948 $cat <<EOM
5949
5950 I need to get your e-mail address in Internet format if possible, i.e.
5951 something like user@host.domain. Please answer accurately since I have
5952 no easy means to double check it. The default value provided below
5953 is most probably close to the reality but may not be valid from outside
5954 your organization...
5955
5956 EOM
5957 cont=x
5958 while test "$cont"; do
5959         case "$cf_email" in
5960         '') dflt="$cf_by@$myhostname$mydomain";;
5961         *) dflt="$cf_email";;
5962         esac
5963         rp='What is your e-mail address?'
5964         . ./myread
5965         cf_email="$ans"
5966         case "$cf_email" in
5967         *@*.*) cont='' ;;
5968         *)
5969                 rp='Address does not look like an Internet one.  Use it anyway?'
5970                 case "$fastread" in
5971                 yes) dflt=y ;;
5972                 *) dflt=n ;;
5973                 esac
5974                 . ./myread
5975                 case "$ans" in
5976                 y*) cont='' ;;
5977                 *) echo " " ;;
5978                 esac
5979                 ;;
5980         esac
5981 done
5982
5983 $cat <<EOM
5984
5985 If you or somebody else will be maintaining perl at your site, please
5986 fill in the correct e-mail address here so that they may be contacted
5987 if necessary. Currently, the "perlbug" program included with perl
5988 will send mail to this address in addition to perlbug@perl.com. You may
5989 enter "none" for no administrator.
5990
5991 EOM
5992 case "$perladmin" in
5993 '') dflt="$cf_email";;
5994 *) dflt="$perladmin";;
5995 esac
5996 rp='Perl administrator e-mail address'
5997 . ./myread
5998 perladmin="$ans"
5999
6000 : figure out how to guarantee perl startup
6001 case "$startperl" in
6002 '')
6003         case "$sharpbang" in
6004         *!)
6005                 $cat <<EOH
6006
6007 I can use the #! construct to start perl on your system. This will
6008 make startup of perl scripts faster, but may cause problems if you
6009 want to share those scripts and perl is not in a standard place
6010 ($binexp/perl) on all your platforms. The alternative is to force
6011 a shell by starting the script with a single ':' character.
6012
6013 EOH
6014                 dflt="$binexp/perl"
6015                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6016                 . ./myread
6017                 case "$ans" in
6018                 none)   startperl=": # use perl";;
6019                 *)      startperl="#!$ans"
6020                         if $test 30 -lt `echo "$ans" | wc -c`; then
6021                                 $cat >&4 <<EOM
6022
6023 WARNING:  Some systems limit the #! command to 32 characters.
6024 If you experience difficulty running Perl scripts with #!, try
6025 installing Perl in a directory with a shorter pathname.
6026
6027 EOM
6028                         fi ;;
6029                 esac
6030                 ;;
6031         *) startperl=": # use perl"
6032                 ;;
6033         esac
6034         ;;
6035 esac
6036 echo "I'll use $startperl to start perl scripts."
6037
6038 : figure best path for perl in scripts
6039 case "$perlpath" in
6040 '')
6041         perlpath="$binexp/perl"
6042         case "$startperl" in
6043         *!*) ;;
6044         *)
6045                 $cat <<EOH
6046
6047 I will use the "eval 'exec'" idiom to start Perl on your system.
6048 I can use the full path of your Perl binary for this purpose, but
6049 doing so may cause problems if you want to share those scripts and
6050 Perl is not always in a standard place ($binexp/perl).
6051
6052 EOH
6053                 dflt="$binexp/perl"
6054                 rp="What path shall I use in \"eval 'exec'\"?"
6055                 . ./myread
6056                 perlpath="$ans"
6057                 ;;
6058         esac
6059         ;;
6060 esac
6061 case "$startperl" in
6062 *!*)    ;;
6063 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6064 esac
6065
6066 : determine where public executable scripts go
6067 set scriptdir scriptdir
6068 eval $prefixit
6069 case "$scriptdir" in
6070 '')
6071         dflt="$bin"
6072         : guess some guesses
6073         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6074         $test -d /usr/share/bin && dflt=/usr/share/bin
6075         $test -d /usr/local/script && dflt=/usr/local/script
6076         $test -d $prefixexp/script && dflt=$prefixexp/script
6077         set dflt
6078         eval $prefixup
6079         ;;
6080 *)  dflt="$scriptdir"
6081         ;;
6082 esac
6083 $cat <<EOM
6084  
6085 Some installations have a separate directory just for executable scripts so
6086 that they can mount it across multiple architectures but keep the scripts in
6087 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6088 Or you might just lump your scripts in with all your other executables.
6089  
6090 EOM
6091 fn=d~
6092 rp='Where do you keep publicly executable scripts?'
6093 . ./getfile
6094 if $test "X$ansexp" != "X$scriptdirexp"; then
6095         installscript=''
6096 fi
6097 scriptdir="$ans"
6098 scriptdirexp="$ansexp"
6099 if $afs; then
6100         $cat <<EOM
6101
6102 Since you are running AFS, I need to distinguish the directory in which
6103 scripts reside from the directory in which they are installed (and from
6104 which they are presumably copied to the former directory by occult means).
6105
6106 EOM
6107         case "$installscript" in
6108         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6109         *) dflt="$installscript";;
6110         esac
6111         fn=de~
6112         rp='Where will public scripts be installed?'
6113         . ./getfile
6114         installscript="$ans"
6115 else
6116         installscript="$scriptdirexp"
6117 fi
6118
6119 : determine where site specific libraries go.
6120 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6121 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6122 case "$prefix" in
6123 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6124 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6125 esac
6126 eval $prefixit
6127 $cat <<EOM
6128
6129 The installation process will also create a directory for
6130 site-specific extensions and modules.  Some users find it convenient
6131 to place all local files in this directory rather than in the main
6132 distribution directory.
6133
6134 EOM
6135 fn=d~+
6136 rp='Pathname for the site-specific library files?'
6137 . ./getfile
6138 if $test "X$sitelibexp" != "X$ansexp"; then
6139         installsitelib=''
6140 fi
6141 sitelib="$ans"
6142 sitelibexp="$ansexp"
6143 if $afs; then
6144         $cat <<EOM
6145
6146 Since you are running AFS, I need to distinguish the directory in
6147 which site-specific files reside from the directory in which they are
6148 installed (and from which they are presumably copied to the former
6149 directory by occult means).
6150
6151 EOM
6152         case "$installsitelib" in
6153         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6154         *) dflt="$installsitelib";;
6155         esac
6156         fn=de~
6157         rp='Where will site-specific files be installed?'
6158         . ./getfile
6159         installsitelib="$ans"
6160 else
6161         installsitelib="$sitelibexp"
6162 fi
6163
6164 : determine where site specific architecture-dependent libraries go.
6165 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6166 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6167 : sitelib may have an optional trailing /share.
6168 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6169 tdflt="$tdflt/$archname"
6170 set sitearch sitearch none
6171 eval $prefixit
6172 case "$sitearch" in
6173 '')     dflt="$tdflt" ;;
6174 *)      dflt="$sitearch" ;;
6175 esac
6176 $cat <<EOM
6177
6178 The installation process will also create a directory for
6179 architecture-dependent site-specific extensions and modules.
6180
6181 EOM
6182 fn=nd~+
6183 rp='Pathname for the site-specific architecture-dependent library files?'
6184 . ./getfile
6185 if $test "X$sitearchexp" != "X$ansexp"; then
6186         installsitearch=''
6187 fi
6188 sitearch="$ans"
6189 sitearchexp="$ansexp"
6190 if $afs; then
6191         $cat <<EOM
6192
6193 Since you are running AFS, I need to distinguish the directory in
6194 which site-specific architecture-dependent library files reside from
6195 the directory in which they are installed (and from which they are
6196 presumably copied to the former directory by occult means).
6197
6198 EOM
6199         case "$installsitearch" in
6200         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6201         *) dflt="$installsitearch";;
6202         esac
6203         fn=de~
6204         rp='Where will site-specific architecture-dependent files be installed?'
6205         . ./getfile
6206         installsitearch="$ans"
6207 else
6208         installsitearch="$sitearchexp"
6209 fi
6210
6211 cat <<EOM
6212
6213 Previous version of $package used the standard IO mechanisms as defined
6214 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6215 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6216 the default.  This abstraction layer can use AT&T's sfio (if you already
6217 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6218 problems with some extension modules.  Using PerlIO with stdio is safe,
6219 but it is slower than plain stdio and therefore is not the default.
6220
6221 If this doesn't make any sense to you, just accept the default 'n'.
6222 EOM
6223 case "$useperlio" in
6224 $define|true|[yY]*)     dflt='y';;
6225 *) dflt='n';;
6226 esac
6227 rp='Use the experimental PerlIO abstraction layer?'
6228 . ./myread
6229 case "$ans" in
6230 y|Y) 
6231         val="$define"
6232         ;;     
6233 *)      
6234         echo "Ok, doing things the stdio way"
6235         val="$undef"
6236         ;;
6237 esac
6238 set useperlio
6239 eval $setvar 
6240
6241 : Check how to convert floats to strings.
6242 if test "X$d_Gconvert" = X; then
6243         echo " "
6244         echo "Checking for an efficient way to convert floats to strings."
6245         $cat >try.c <<'EOP'
6246 #ifdef TRY_gconvert
6247 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6248 char *myname = "gconvert";
6249 #endif
6250 #ifdef TRY_gcvt
6251 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6252 char *myname = "gcvt";
6253 #endif
6254 #ifdef TRY_sprintf
6255 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6256 char *myname = "sprintf";
6257 #endif
6258
6259 #include <stdio.h>
6260
6261 int
6262 checkit(expect, got)
6263 char *expect;
6264 char *got;
6265 {
6266     if (strcmp(expect, got)) {
6267                 printf("%s oddity:  Expected %s, got %s\n",
6268                         myname, expect, got);
6269                 exit(1);
6270         }
6271 }
6272
6273 int main()
6274
6275         char buf[64]; 
6276         buf[63] = '\0';
6277
6278         /* This must be 1st test on (which?) platform */
6279         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6280         Gconvert(0.1, 8, 0, buf);
6281         checkit("0.1", buf);
6282
6283         Gconvert(1.0, 8, 0, buf); 
6284         checkit("1", buf);
6285
6286         Gconvert(0.0, 8, 0, buf); 
6287         checkit("0", buf);
6288
6289         Gconvert(-1.0, 8, 0, buf); 
6290         checkit("-1", buf);
6291
6292         /* Some Linux gcvt's give 1.e+5 here. */
6293         Gconvert(100000.0, 8, 0, buf); 
6294         checkit("100000", buf);
6295         
6296         /* Some Linux gcvt's give -1.e+5 here. */
6297         Gconvert(-100000.0, 8, 0, buf); 
6298         checkit("-100000", buf);
6299
6300         exit(0);
6301 }
6302 EOP
6303         case "$d_Gconvert" in
6304         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6305         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6306         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6307         *) xxx_list='gconvert gcvt sprintf' ;;
6308         esac
6309
6310         for xxx_convert in $xxx_list; do
6311                 echo "Trying $xxx_convert"
6312                 $rm -f try try$_o
6313                 set try -DTRY_$xxx_convert
6314                 if eval $compile; then
6315                         echo "$xxx_convert" found. >&4
6316                         if ./try; then
6317                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6318                                 break;
6319                         else
6320                                 echo "...But $xxx_convert didn't work as I expected."
6321                         fi
6322                 else
6323                         echo "$xxx_convert NOT found." >&4
6324                 fi
6325         done
6326                 
6327         case "$xxx_convert" in
6328         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6329         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6330         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6331         esac
6332 fi
6333
6334 : Initialize h_fcntl
6335 h_fcntl=false
6336
6337 : Initialize h_sysfile
6338 h_sysfile=false
6339
6340 : access call always available on UNIX
6341 set access d_access
6342 eval $inlibc
6343
6344 : locate the flags for 'access()'
6345 case "$d_access" in
6346 "$define")
6347         echo " "
6348         $cat >access.c <<'EOCP'
6349 #include <sys/types.h>
6350 #ifdef I_FCNTL
6351 #include <fcntl.h>
6352 #endif
6353 #ifdef I_SYS_FILE
6354 #include <sys/file.h>
6355 #endif
6356 #ifdef I_UNISTD
6357 #include <unistd.h>
6358 #endif
6359 main() {
6360         exit(R_OK);
6361 }
6362 EOCP
6363         : check sys/file.h first, no particular reason here
6364         if $test `./findhdr sys/file.h` && \
6365                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6366                 h_sysfile=true;
6367                 echo "<sys/file.h> defines the *_OK access constants." >&4
6368         elif $test `./findhdr fcntl.h` && \
6369                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6370                 h_fcntl=true;
6371                 echo "<fcntl.h> defines the *_OK access constants." >&4
6372         elif $test `./findhdr unistd.h` && \
6373                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6374                 echo "<unistd.h> defines the *_OK access constants." >&4
6375         else
6376                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6377         fi
6378         ;;
6379 esac
6380 $rm -f access*
6381
6382 : see if accessx exists
6383 set accessx d_accessx
6384 eval $inlibc
6385
6386 : see if alarm exists
6387 set alarm d_alarm
6388 eval $inlibc
6389
6390 : Look for GNU-cc style attribute checking
6391 echo " "
6392 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6393 $cat >attrib.c <<'EOCP'
6394 #include <stdio.h>
6395 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6396 EOCP
6397 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6398         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6399                 echo "Your C compiler doesn't fully support __attribute__."
6400                 val="$undef"
6401         else
6402                 echo "Your C compiler supports __attribute__."
6403                 val="$define"
6404         fi
6405 else
6406         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6407         val="$undef"
6408 fi
6409 set d_attribut
6410 eval $setvar
6411 $rm -f attrib*
6412
6413 : see if bcmp exists
6414 set bcmp d_bcmp
6415 eval $inlibc
6416
6417 : see if bcopy exists
6418 set bcopy d_bcopy
6419 eval $inlibc
6420
6421 : see if this is a unistd.h system
6422 set unistd.h i_unistd
6423 eval $inhdr
6424
6425 : see if getpgrp exists
6426 set getpgrp d_getpgrp
6427 eval $inlibc
6428
6429 case "$d_getpgrp" in
6430 "$define")
6431         echo " "
6432         echo "Checking to see which flavor of getpgrp is in use..."
6433         $cat >set.c <<EOP
6434 #$i_unistd I_UNISTD
6435 #include <sys/types.h>
6436 #ifdef I_UNISTD
6437 #  include <unistd.h>
6438 #endif
6439 int main()
6440 {
6441         if (getuid() == 0) {
6442                 printf("(I see you are running Configure as super-user...)\n");
6443                 setuid(1);
6444         }
6445 #ifdef TRY_BSD_PGRP
6446         if (getpgrp(1) == 0)
6447                 exit(0);
6448 #else
6449         if (getpgrp() > 0)
6450                 exit(0);
6451 #endif
6452         exit(1);
6453 }
6454 EOP
6455         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6456                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6457                 val="$define"
6458         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6459                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6460                 val="$undef"
6461         else
6462                 echo "I can't seem to compile and run the test program."
6463                 if ./usg; then
6464                         xxx="a USG one, i.e. you use getpgrp()."
6465                 else
6466                         # SVR4 systems can appear rather BSD-ish.
6467                         case "$i_unistd" in
6468                         $undef)
6469                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6470                                 val="$define"
6471                                 ;;
6472                         $define)
6473                                 xxx="probably a USG one, i.e. you use getpgrp()."
6474                                 val="$undef"
6475                                 ;;
6476                         esac
6477                 fi
6478                 echo "Assuming your getpgrp is $xxx" >&4
6479         fi
6480         ;;
6481 *) val="$undef";;
6482 esac
6483 set d_bsdgetpgrp
6484 eval $setvar
6485 $rm -f set set.c
6486
6487 : see if setpgrp exists
6488 set setpgrp d_setpgrp
6489 eval $inlibc
6490
6491 case "$d_setpgrp" in
6492 "$define")
6493         echo " "
6494         echo "Checking to see which flavor of setpgrp is in use..."
6495         $cat >set.c <<EOP
6496 #$i_unistd I_UNISTD
6497 #include <sys/types.h>
6498 #ifdef I_UNISTD
6499 #  include <unistd.h>
6500 #endif
6501 int main()
6502 {
6503         if (getuid() == 0) {
6504                 printf("(I see you are running Configure as super-user...)\n");
6505                 setuid(1);
6506         }
6507 #ifdef TRY_BSD_PGRP
6508         if (-1 == setpgrp(1, 1))
6509                 exit(0);
6510 #else
6511         if (setpgrp() != -1)
6512                 exit(0);
6513 #endif
6514         exit(1);
6515 }
6516 EOP
6517         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6518                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6519                 val="$define"
6520         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6521                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6522                 val="$undef"
6523         else
6524                 echo "(I can't seem to compile and run the test program.)"
6525                 if ./usg; then
6526                         xxx="a USG one, i.e. you use setpgrp()."
6527                 else
6528                         # SVR4 systems can appear rather BSD-ish.
6529                         case "$i_unistd" in
6530                         $undef)
6531                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6532                                 val="$define"
6533                                 ;;
6534                         $define)
6535                                 xxx="probably a USG one, i.e. you use setpgrp()."
6536                                 val="$undef"
6537                                 ;;
6538                         esac
6539                 fi
6540                 echo "Assuming your setpgrp is $xxx" >&4
6541         fi
6542         ;;
6543 *) val="$undef";;
6544 esac
6545 set d_bsdsetpgrp
6546 eval $setvar
6547 $rm -f set set.c
6548 : see if bzero exists
6549 set bzero d_bzero
6550 eval $inlibc
6551
6552 : check for lengths of integral types
6553 echo " "
6554 case "$intsize" in
6555 '')
6556         echo "Checking to see how big your integers are..." >&4
6557         $cat >intsize.c <<'EOCP'
6558 #include <stdio.h>
6559 main()
6560 {
6561         printf("intsize=%d;\n", sizeof(int));
6562         printf("longsize=%d;\n", sizeof(long));
6563         printf("shortsize=%d;\n", sizeof(short));
6564         exit(0);
6565 }
6566 EOCP
6567         set intsize
6568         if eval $compile_ok && ./intsize > /dev/null; then
6569                 eval `./intsize`
6570                 echo "Your integers are $intsize bytes long."
6571                 echo "Your long integers are $longsize bytes long."
6572                 echo "Your short integers are $shortsize bytes long."
6573         else
6574                 $cat >&4 <<EOM
6575 !
6576 Help! I can't compile and run the intsize test program: please enlighten me!
6577 (This is probably a misconfiguration in your system or libraries, and
6578 you really ought to fix it.  Still, I'll try anyway.)
6579 !
6580 EOM
6581                 dflt=4
6582                 rp="What is the size of an integer (in bytes)?"
6583                 . ./myread
6584                 intsize="$ans"
6585                 dflt=$intsize
6586                 rp="What is the size of a long integer (in bytes)?"
6587                 . ./myread
6588                 longsize="$ans"
6589                 dflt=2
6590                 rp="What is the size of a short integer (in bytes)?"
6591                 . ./myread
6592                 shortsize="$ans"
6593         fi
6594         ;;
6595 esac
6596 $rm -f intsize intsize.*
6597
6598 : see if signal is declared as pointer to function returning int or void
6599 echo " "
6600 xxx=`./findhdr signal.h`
6601 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6602 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6603         echo "You have int (*signal())() instead of void." >&4
6604         val="$undef"
6605 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6606         echo "You have void (*signal())()." >&4
6607         val="$define"
6608 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6609         echo "You have int (*signal())() instead of void." >&4
6610         val="$undef"
6611 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6612         echo "You have void (*signal())()." >&4
6613         val="$define"
6614 else
6615         case "$d_voidsig" in
6616         '')
6617         echo "I can't determine whether signal handler returns void or int..." >&4
6618                 dflt=void
6619                 rp="What type does your signal handler return?"
6620                 . ./myread
6621                 case "$ans" in
6622                 v*) val="$define";;
6623                 *) val="$undef";;
6624                 esac;;
6625         "$define")
6626                 echo "As you already told me, signal handler returns void." >&4
6627                 val="$define"
6628                 ;;
6629         *)      echo "As you already told me, signal handler returns int." >&4
6630                 val="$undef"
6631                 ;;
6632         esac
6633 fi
6634 set d_voidsig
6635 eval $setvar
6636 case "$d_voidsig" in
6637 "$define") signal_t="void";;
6638 *) signal_t="int";;
6639 esac
6640 $rm -f $$.tmp
6641
6642 : check for ability to cast large floats to 32-bit ints.
6643 echo " "
6644 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6645 if $test "$intsize" -ge 4; then
6646         xxx=int
6647 else
6648         xxx=long
6649 fi
6650 $cat >try.c <<EOCP
6651 #include <stdio.h>
6652 #include <sys/types.h>
6653 #include <signal.h>
6654 $signal_t blech(s) int s; { exit(3); }
6655 main()
6656 {
6657         $xxx i32;
6658         double f, g;
6659         int result = 0;
6660         char str[16];
6661         signal(SIGFPE, blech);
6662
6663         /* Don't let compiler optimize the test away.  Store the number 
6664            in a writable string for gcc to pass to sscanf under HP/UX.
6665         */
6666         sprintf(str, "2147483647");
6667         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6668         g = 10 * f;
6669         i32  = ($xxx) g;
6670
6671         /* x86 processors will probably give 0x8000 0000, which is a
6672        sign change.  We don't want that.  We want to mimic SPARC
6673            behavior here, which is to preserve the sign and give
6674            back 0x7fff ffff.
6675         */
6676         if (i32 != ($xxx) f)
6677                 result |= 1;
6678         exit(result);
6679 }
6680 EOCP
6681 set try
6682 if eval $compile_ok; then
6683         ./try
6684         yyy=$?
6685 else
6686         echo "(I can't seem to compile the test program--assuming it can't)"
6687         yyy=1
6688 fi
6689 case "$yyy" in
6690 0)      val="$define"
6691         echo "Yup, it can."
6692         ;;
6693 *)      val="$undef"
6694         echo "Nope, it can't."
6695         ;;
6696 esac
6697 set d_casti32
6698 eval $setvar
6699 $rm -f try try.*
6700
6701 : check for ability to cast negative floats to unsigned
6702 echo " "
6703 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6704 $cat >try.c <<EOCP
6705 #include <stdio.h>
6706 #include <sys/types.h>
6707 #include <signal.h>
6708 $signal_t blech(s) int s; { exit(7); }
6709 $signal_t blech_in_list(s) int s; { exit(4); }
6710 unsigned long dummy_long(p) unsigned long p; { return p; }
6711 unsigned int dummy_int(p) unsigned int p; { return p; }
6712 unsigned short dummy_short(p) unsigned short p; { return p; }
6713 main()
6714 {
6715         double f;
6716         unsigned long along;
6717         unsigned int aint;
6718         unsigned short ashort;
6719         int result = 0;
6720         char str[16];
6721         
6722         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6723            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6724            optimized the whole file away
6725         */
6726         /* Store the number in a writable string for gcc to pass to 
6727            sscanf under HP/UX.
6728         */
6729         sprintf(str, "-123");
6730         sscanf(str, "%lf", &f);  /* f = -123.; */
6731
6732         signal(SIGFPE, blech);
6733         along = (unsigned long)f;
6734         aint = (unsigned int)f;
6735         ashort = (unsigned short)f;
6736         if (along != (unsigned long)-123)
6737                 result |= 1;
6738         if (aint != (unsigned int)-123)
6739                 result |= 1;
6740         if (ashort != (unsigned short)-123)
6741                 result |= 1;
6742         sprintf(str, "1073741824.");
6743         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6744         f = f + f;
6745         along = 0;
6746         along = (unsigned long)f;
6747         if (along != 0x80000000)
6748                 result |= 2;
6749         f -= 1.;
6750         along = 0;
6751         along = (unsigned long)f;
6752         if (along != 0x7fffffff)
6753                 result |= 1;
6754         f += 2.;
6755         along = 0;
6756         along = (unsigned long)f;
6757         if (along != 0x80000001)
6758                 result |= 2;
6759         if (result)
6760                 exit(result);
6761         signal(SIGFPE, blech_in_list);
6762         sprintf(str, "123.");
6763         sscanf(str, "%lf", &f);  /* f = 123.; */
6764         along = dummy_long((unsigned long)f);
6765         aint = dummy_int((unsigned int)f);
6766         ashort = dummy_short((unsigned short)f);
6767         if (along != (unsigned long)123)
6768                 result |= 4;
6769         if (aint != (unsigned int)123)
6770                 result |= 4;
6771         if (ashort != (unsigned short)123)
6772                 result |= 4;
6773         exit(result);
6774
6775 }
6776 EOCP
6777 set try
6778 if eval $compile_ok; then
6779         ./try
6780         castflags=$?
6781 else
6782         echo "(I can't seem to compile the test program--assuming it can't)"
6783         castflags=7
6784 fi
6785 case "$castflags" in
6786 0)      val="$define"
6787         echo "Yup, it can."
6788         ;;
6789 *)      val="$undef"
6790         echo "Nope, it can't."
6791         ;;
6792 esac
6793 set d_castneg
6794 eval $setvar
6795 $rm -f try.*
6796
6797 : see if vprintf exists
6798 echo " "
6799 if set vprintf val -f d_vprintf; eval $csym; $val; then
6800         echo 'vprintf() found.' >&4
6801         val="$define"
6802         $cat >vprintf.c <<'EOF'
6803 #include <varargs.h>
6804
6805 main() { xxx("foo"); }
6806
6807 xxx(va_alist)
6808 va_dcl
6809 {
6810         va_list args;
6811         char buf[10];
6812
6813         va_start(args);
6814         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6815 }
6816 EOF
6817         set vprintf
6818         if eval $compile && ./vprintf; then
6819                 echo "Your vsprintf() returns (int)." >&4
6820                 val2="$undef"
6821         else
6822                 echo "Your vsprintf() returns (char*)." >&4
6823                 val2="$define"
6824         fi
6825 else
6826         echo 'vprintf() NOT found.' >&4
6827                 val="$undef"
6828                 val2="$undef"
6829 fi
6830 set d_vprintf
6831 eval $setvar
6832 val=$val2
6833 set d_charvspr
6834 eval $setvar
6835
6836 : see if chown exists
6837 set chown d_chown
6838 eval $inlibc
6839
6840 : see if chroot exists
6841 set chroot d_chroot
6842 eval $inlibc
6843
6844 : see if chsize exists
6845 set chsize d_chsize
6846 eval $inlibc
6847
6848 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6849 while $test $# -ge 2; do
6850         case "$1" in
6851         $define) echo "#include <$2>";;
6852         esac ;
6853     shift 2;
6854 done > try.c;
6855 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6856 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6857         val="$define";
6858 else
6859         val="$undef";
6860 fi;
6861 set $varname;
6862 eval $setvar;
6863 $rm -f try.c try.o'
6864
6865 : see if this is a sys/uio.h system
6866 set sys/uio.h i_sysuio
6867 eval $inhdr
6868
6869 echo "Checking to see if your system supports struct iovec..." >&4
6870 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6871 eval $hasfield
6872 case "$d_iovec_s" in
6873 "$define")      echo "Yup, it does." >&4
6874                 ;;
6875 *)              echo "Nope, it doesn't." >&4
6876                 ;;
6877 esac
6878
6879 socketlib=''
6880 sockethdr=''
6881 : see whether socket exists
6882 echo " "
6883 $echo $n "Hmm... $c" >&4
6884 if set socket val -f d_socket; eval $csym; $val; then
6885         echo "Looks like you have Berkeley networking support." >&4
6886         d_socket="$define"
6887         if set setsockopt val -f; eval $csym; $val; then
6888                 d_oldsock="$undef"
6889         else
6890                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6891                 d_oldsock="$define"
6892         fi
6893 else
6894         if $contains socklib libc.list >/dev/null 2>&1; then
6895                 echo "Looks like you have Berkeley networking support." >&4
6896                 d_socket="$define"
6897                 : we will have to assume that it supports the 4.2 BSD interface
6898                 d_oldsock="$undef"
6899         else
6900                 echo "You don't have Berkeley networking in libc$_a..." >&4
6901                 if test "X$d_socket" = "X$define"; then
6902                    echo "...but you seem to believe that you have sockets." >&4
6903                 else
6904                         for net in net socket
6905                         do
6906                                 if test -f /usr/lib/lib$net$_a; then
6907                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6908                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6909                                         if $contains socket libc.list >/dev/null 2>&1; then
6910                                                 d_socket="$define"
6911                                                 socketlib="-l$net"
6912                                                 case "$net" in
6913                                                 net)
6914                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6915                                                         sockethdr="-I/usr/netinclude"
6916                                                         ;;
6917                                                 esac
6918                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6919                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6920                                                         d_oldsock="$undef"
6921                                                 else
6922                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6923                                                         d_oldsock="$define"
6924                                                 fi
6925                                                 break
6926                                         fi
6927                                 fi
6928                         done
6929                         if test "X$d_socket" != "X$define"; then
6930                            echo "or anywhere else I see." >&4
6931                            d_socket="$undef"
6932                            d_oldsock="$undef"
6933                         fi
6934                 fi
6935         fi
6936 fi
6937
6938 : see if socketpair exists
6939 set socketpair d_sockpair
6940 eval $inlibc
6941
6942
6943 echo " "
6944 echo "Checking the availability of certain socket constants..." >& 4
6945 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6946         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6947         $cat >try.c <<EOF
6948 #include <sys/types.h>
6949 #include <sys/socket.h>
6950 int main() {
6951     int i = $ENUM;
6952 }
6953 EOF
6954         val="$undef"
6955         set try; if eval $compile; then
6956                 val="$define"
6957         fi
6958         set d_${enum}; eval $setvar
6959         $rm -f try.c try
6960 done
6961
6962 set sendmsg d_sendmsg
6963 eval $inlibc
6964
6965 set recvmsg d_recvmsg
6966 eval $inlibc
6967
6968 echo " "
6969 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6970 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6971 eval $hasfield
6972 case "$d_msghdr_s" in
6973 "$define")      echo "Yup, it does." >&4
6974                 ;;
6975 *)              echo "Nope, it doesn't." >&4
6976                 ;;
6977 esac
6978
6979 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6980 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6981 eval $hasfield
6982 case "$d_cmsghdr_s" in
6983 "$define")      echo "Yup, it does." >&4
6984                 ;;
6985 *)              echo "Nope, it doesn't." >&4
6986                 ;;
6987 esac
6988
6989 : check for const keyword
6990 echo " "
6991 echo 'Checking to see if your C compiler knows about "const"...' >&4
6992 $cat >const.c <<'EOCP'
6993 typedef struct spug { int drokk; } spug;
6994 int main()
6995 {
6996         const char *foo;
6997         const spug y;
6998 }
6999 EOCP
7000 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7001         val="$define"
7002         echo "Yup, it does."
7003 else
7004         val="$undef"
7005         echo "Nope, it doesn't."
7006 fi
7007 set d_const
7008 eval $setvar
7009
7010 : see if crypt exists
7011 echo " "
7012 if set crypt val -f d_crypt; eval $csym; $val; then
7013         echo 'crypt() found.' >&4
7014         val="$define"
7015         cryptlib=''
7016 else
7017         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7018         if $test -z "$cryptlib"; then
7019                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7020         else
7021                 cryptlib=-lcrypt
7022         fi
7023         if $test -z "$cryptlib"; then
7024                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7025         else
7026                 cryptlib=-lcrypt
7027         fi
7028         if $test -z "$cryptlib"; then
7029                 cryptlib=`./loc libcrypt$_a "" $libpth`
7030         else
7031                 cryptlib=-lcrypt
7032         fi
7033         if $test -z "$cryptlib"; then
7034                 echo 'crypt() NOT found.' >&4
7035                 val="$undef"
7036         else
7037                 val="$define"
7038         fi
7039 fi
7040 set d_crypt
7041 eval $setvar
7042
7043 : get csh whereabouts
7044 case "$csh" in
7045 'csh') val="$undef" ;;
7046 *) val="$define" ;;
7047 esac
7048 set d_csh
7049 eval $setvar
7050 : Respect a hint or command line value for full_csh.
7051 case "$full_csh" in
7052 '') full_csh=$csh ;;
7053 esac
7054
7055 : see if cuserid exists
7056 set cuserid d_cuserid
7057 eval $inlibc
7058
7059 : see if this is a limits.h system
7060 set limits.h i_limits
7061 eval $inhdr
7062
7063 : see if this is a float.h system
7064 set float.h i_float
7065 eval $inhdr
7066
7067 : See if number of significant digits in a double precision number is known
7068 echo " "
7069 $cat >dbl_dig.c <<EOM
7070 #$i_limits I_LIMITS
7071 #$i_float I_FLOAT
7072 #ifdef I_LIMITS
7073 #include <limits.h>
7074 #endif
7075 #ifdef I_FLOAT
7076 #include <float.h>
7077 #endif
7078 #ifdef DBL_DIG
7079 printf("Contains DBL_DIG");
7080 #endif
7081 EOM
7082 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7083 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7084         echo "DBL_DIG found." >&4
7085         val="$define"
7086 else
7087         echo "DBL_DIG NOT found." >&4
7088         val="$undef"
7089 fi
7090 $rm -f dbl_dig.?
7091 set d_dbl_dig
7092 eval $setvar
7093
7094
7095 if $test X"$use64bits" = X"$define"; then
7096         : see if dbminit64 exists
7097         set dbminit64 d_dbminit64
7098         eval $inlibc
7099
7100         : see if dbmclose64 exists
7101         set dbmclose64 d_dbmclose64
7102         eval $inlibc
7103
7104         : see if fetch64 exists
7105         set fetch64 d_fetch64
7106         eval $inlibc
7107
7108         : see if store64 exists
7109         set store64 d_store64
7110         eval $inlibc
7111
7112         : see if delete64 exists
7113         set delete64 d_delete64
7114         eval $inlibc
7115
7116         : see if firstkey64 exists
7117         set firstkey64 d_firstkey64
7118         eval $inlibc
7119
7120         : see if nextkey64 exists
7121         set nextkey64 d_nextkey64
7122         eval $inlibc
7123 else
7124         val="$undef"
7125         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7126         do
7127                 set $xxx
7128                 eval $setvar
7129         done
7130 fi
7131
7132 : see if difftime exists
7133 set difftime d_difftime
7134 eval $inlibc
7135
7136 : see if sys/stat.h is available
7137 set sys/stat.h i_sysstat
7138 eval $inhdr
7139
7140 : see if this is a dirent system
7141 echo " "
7142 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7143         val="$define"
7144         echo "<dirent.h> found." >&4
7145 else
7146         val="$undef"
7147         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7148                 echo "<sys/dir.h> found." >&4
7149                 echo " "
7150         else
7151                 xinc=`./findhdr sys/ndir.h`
7152         fi
7153         echo "<dirent.h> NOT found." >&4
7154 fi
7155 set i_dirent
7156 eval $setvar
7157
7158 : Look for type of directory structure.
7159 echo " "
7160 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7161
7162 case "$direntrytype" in
7163 ''|' ')
7164         case "$i_dirent" in
7165         $define) guess1='struct dirent' ;;
7166         *) guess1='struct direct'  ;;
7167         esac
7168         ;;
7169 *)      guess1="$direntrytype"
7170         ;;
7171 esac
7172
7173 case "$guess1" in
7174 'struct dirent') guess2='struct direct' ;;
7175 *) guess2='struct dirent' ;;
7176 esac
7177                 
7178 if $contains "$guess1" try.c >/dev/null 2>&1; then
7179         direntrytype="$guess1"
7180         echo "Your directory entries are $direntrytype." >&4
7181 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7182         direntrytype="$guess2"
7183         echo "Your directory entries seem to be $direntrytype." >&4
7184 else
7185         echo "I don't recognize your system's directory entries." >&4
7186         rp="What type is used for directory entries on this system?"
7187         dflt="$guess1"
7188         . ./myread
7189         direntrytype="$ans"
7190 fi
7191 $rm -f try.c
7192
7193
7194 : see if the directory entry stores field length
7195 echo " "
7196 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7197 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7198         echo "Good, your directory entry keeps length information in d_namlen." >&4
7199         val="$define"
7200 else
7201         echo "Your directory entry does not know about the d_namlen field." >&4
7202         val="$undef"
7203 fi
7204 set d_dirnamlen
7205 eval $setvar
7206 $rm -f try.c
7207
7208
7209 if $test X"$use64bits" = X"$define"; then
7210         : see if fstat64 exists
7211         set fstat64 d_fstat64
7212         eval $inlibc
7213
7214         : see if ftruncate64 exists
7215         set ftruncate64 d_ftruncate64
7216         eval $inlibc
7217
7218         : see if lockf64 exists
7219         set lockf64 d_lockf64
7220         eval $inlibc
7221
7222         : see if lseek64 exists
7223         set lseek64 d_lseek64
7224         eval $inlibc
7225
7226         : see if lstat64 exists
7227         set lstat64 d_lstat64
7228         eval $inlibc
7229
7230         : see if open64 exists
7231         set open64 d_open64
7232         eval $inlibc
7233
7234         : see if opendir64 exists
7235         set opendir64 d_opendir64
7236         eval $inlibc
7237
7238         : see if readdir64 exists
7239         set readdir64 d_readdir64
7240         eval $inlibc
7241
7242         : see if seekdir64 exists
7243         set seekdir64 d_seekdir64
7244         eval $inlibc
7245
7246         : see if stat64 exists
7247         set stat64 d_stat64
7248         eval $inlibc
7249
7250         : see if telldir64 exists
7251         set telldir64 d_telldir64
7252         eval $inlibc
7253
7254         : see if truncate64 exists
7255         set truncate64 d_truncate64
7256         eval $inlibc
7257
7258         : check for off64_t
7259         echo " "
7260         echo $n "Checking to see if your system supports off64_t...$c" >&4
7261         $cat >try.c <<EOCP
7262 #include <sys/types.h>
7263 off64_t foo() { off64_t x; x = 7; return x; }'
7264 EOCP
7265         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7266                 val="$define"
7267                 echo " Yup, it does." >&4
7268         else
7269                 val="$undef"
7270                 echo " Nope, it doesn't." >&4
7271         fi
7272         $rm -f try.*
7273         set d_off64t
7274         eval $setvar
7275
7276         : check for ino64_t
7277         echo " "
7278         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7279         val="$undef"
7280         case "$i_sysstat" in
7281         "$define" )
7282                 $cat >try.c <<EOCP
7283 #include <sys/types.h>
7284 #include <sys/stat.h>
7285 ino64_t foo() { ino64_t x; x = 7; return x; }'
7286 EOCP
7287                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7288                         val="$define"
7289                 fi
7290                 $rm -f try.*
7291                 ;;
7292         esac
7293         if $test "X$val" = X"$define"; then
7294                 echo " Yup, it does." >&4
7295         else
7296                 echo " Nope, it doesn't." >&4
7297         fi
7298         set d_ino64t
7299         eval $setvar
7300
7301         : check for struct flock64
7302         echo " "
7303         echo "Checking to see if your system supports struct flock64..." >&4
7304         if $h_fcntl; then
7305                 set d_flock64_s flock64 l_len define fcntl.h
7306                 eval $hasfield
7307         else
7308                 val="$undef"
7309                 set d_flock64_s
7310                 eval $setvar
7311         fi
7312         case "$d_flock64_s" in
7313         "$define")      echo "Yup, it does." >&4
7314                         ;;
7315         *)              echo "Nope, it doesn't." >&4
7316                         ;;
7317         esac
7318
7319         : check for struct dirent64
7320         echo " "
7321         echo "Checking to see if your system supports struct dirent64..." >&4
7322         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7323         eval $hasfield
7324         case "$d_dirent64_s" in
7325         "$define")      echo "Yup, it does." >&4
7326                         ;;
7327         *)              echo "Nope, it doesn't." >&4
7328                         ;;
7329         esac
7330
7331 else
7332         val="$undef"
7333         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
7334         do
7335                 set $xxx
7336                 eval $setvar
7337         done
7338 fi
7339
7340 : see if dlerror exists
7341 xxx_runnm="$runnm"
7342 runnm=false
7343 set dlerror d_dlerror
7344 eval $inlibc
7345 runnm="$xxx_runnm"
7346
7347 : see if dlfcn is available
7348 set dlfcn.h i_dlfcn
7349 eval $inhdr
7350
7351 case "$usedl" in
7352 $define|y|true)
7353         $cat << EOM
7354
7355 On a few systems, the dynamically loaded modules that perl generates and uses
7356 will need a different extension than shared libs. The default will probably
7357 be appropriate.
7358
7359 EOM
7360         case "$dlext" in
7361         '')     dflt="$so" ;;
7362         *)      dflt="$dlext" ;;
7363         esac
7364         rp='What is the extension of dynamically loaded modules'
7365         . ./myread
7366         dlext="$ans"
7367         ;;
7368 *)
7369         dlext="none"
7370         ;;
7371 esac
7372
7373 : Check if dlsym need a leading underscore
7374 echo " "
7375 val="$undef"
7376
7377 case "$dlsrc" in
7378 dl_dlopen.xs)
7379         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7380         $cat >dyna.c <<'EOM'
7381 fred () { }
7382 EOM
7383
7384 $cat >fred.c<<EOM
7385
7386 #include <stdio.h>
7387 #$i_dlfcn I_DLFCN
7388 #ifdef I_DLFCN
7389 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7390 #else
7391 #include <sys/types.h>
7392 #include <nlist.h>
7393 #include <link.h>
7394 #endif
7395
7396 extern int fred() ;
7397
7398 int main()
7399 {
7400     void * handle ;
7401     void * symbol ;
7402 #ifndef RTLD_LAZY
7403     int mode = 1 ;
7404 #else
7405     int mode = RTLD_LAZY ;
7406 #endif
7407     handle = dlopen("./dyna.$dlext", mode) ;
7408     if (handle == NULL) {
7409         printf ("1\n") ;
7410         fflush (stdout) ;
7411         exit(0);
7412     }
7413     symbol = dlsym(handle, "fred") ;
7414     if (symbol == NULL) {
7415         /* try putting a leading underscore */
7416         symbol = dlsym(handle, "_fred") ;
7417         if (symbol == NULL) {
7418             printf ("2\n") ;
7419             fflush (stdout) ;
7420             exit(0);
7421         }
7422         printf ("3\n") ;
7423     }
7424     else
7425         printf ("4\n") ;
7426     fflush (stdout) ;
7427     exit(0);
7428 }
7429 EOM
7430         : Call the object file tmp-dyna.o in case dlext=o.
7431         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7432                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7433                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7434                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7435                 xxx=`./fred`
7436                 case $xxx in
7437                 1)      echo "Test program failed using dlopen." >&4
7438                         echo "Perhaps you should not use dynamic loading." >&4;;
7439                 2)      echo "Test program failed using dlsym." >&4
7440                         echo "Perhaps you should not use dynamic loading." >&4;;
7441                 3)      echo "dlsym needs a leading underscore" >&4
7442                         val="$define" ;;
7443                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7444                 esac
7445         else
7446                 echo "I can't compile and run the test program." >&4
7447         fi
7448         ;;
7449 esac
7450                 
7451 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7452
7453 set d_dlsymun
7454 eval $setvar
7455
7456 hasproto='varname=$1; func=$2; shift; shift;
7457 while $test $# -ge 2; do
7458         case "$1" in
7459         $define) echo "#include <$2>";;
7460         esac ;
7461     shift 2;
7462 done > try.c;
7463 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7464 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7465         echo "$func() prototype found.";
7466         val="$define";
7467 else
7468         echo "$func() prototype NOT found.";
7469         val="$undef";
7470 fi;
7471 set $varname;
7472 eval $setvar;
7473 $rm -f try.c tryout.c'
7474
7475 : see if prototype for drand48 is available
7476 echo " "
7477 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7478 eval $hasproto
7479
7480 : see if dup2 exists
7481 set dup2 d_dup2
7482 eval $inlibc
7483
7484 : see if eaccess exists
7485 set eaccess d_eaccess
7486 eval $inlibc
7487
7488 : see if endgrent exists
7489 set endgrent d_endgrent
7490 eval $inlibc
7491
7492 : see if endhostent exists
7493 set endhostent d_endhent
7494 eval $inlibc
7495
7496 : see if endnetent exists
7497 set endnetent d_endnent
7498 eval $inlibc
7499
7500 : see if endprotoent exists
7501 set endprotoent d_endpent
7502 eval $inlibc
7503
7504 : see if endpwent exists
7505 set endpwent d_endpwent
7506 eval $inlibc
7507
7508 : see if endservent exists
7509 set endservent d_endsent
7510 eval $inlibc
7511
7512 : Locate the flags for 'open()'
7513 echo " "
7514 $cat >open3.c <<'EOCP'
7515 #include <sys/types.h>
7516 #ifdef I_FCNTL
7517 #include <fcntl.h>
7518 #endif
7519 #ifdef I_SYS_FILE
7520 #include <sys/file.h>
7521 #endif
7522 main() {
7523         if(O_RDONLY);
7524 #ifdef O_TRUNC
7525         exit(0);
7526 #else
7527         exit(1);
7528 #endif
7529 }
7530 EOCP
7531 : check sys/file.h first to get FREAD on Sun
7532 if $test `./findhdr sys/file.h` && \
7533                 set open3 -DI_SYS_FILE && eval $compile; then
7534         h_sysfile=true;
7535         echo "<sys/file.h> defines the O_* constants..." >&4
7536         if ./open3; then
7537                 echo "and you have the 3 argument form of open()." >&4
7538                 val="$define"
7539         else
7540                 echo "but not the 3 argument form of open().  Oh, well." >&4
7541                 val="$undef"
7542         fi
7543 elif $test `./findhdr fcntl.h` && \
7544                 set open3 -DI_FCNTL && eval $compile; then
7545         h_fcntl=true;
7546         echo "<fcntl.h> defines the O_* constants..." >&4
7547         if ./open3; then
7548                 echo "and you have the 3 argument form of open()." >&4
7549                 val="$define"
7550         else
7551                 echo "but not the 3 argument form of open().  Oh, well." >&4
7552                 val="$undef"
7553         fi
7554 else
7555         val="$undef"
7556         echo "I can't find the O_* constant definitions!  You got problems." >&4
7557 fi
7558 set d_open3
7559 eval $setvar
7560 $rm -f open3*
7561
7562 : check for non-blocking I/O stuff
7563 case "$h_sysfile" in
7564 true) echo "#include <sys/file.h>" > head.c;;
7565 *)
7566         case "$h_fcntl" in
7567         true) echo "#include <fcntl.h>" > head.c;;
7568         *) echo "#include <sys/fcntl.h>" > head.c;;
7569         esac
7570         ;;
7571 esac
7572 echo " "
7573 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7574 case "$o_nonblock" in
7575 '')
7576         $cat head.c > try.c
7577         $cat >>try.c <<'EOCP'
7578 main() {
7579 #ifdef O_NONBLOCK
7580         printf("O_NONBLOCK\n");
7581         exit(0);
7582 #endif
7583 #ifdef O_NDELAY
7584         printf("O_NDELAY\n");
7585         exit(0);
7586 #endif
7587 #ifdef FNDELAY
7588         printf("FNDELAY\n");
7589         exit(0);
7590 #endif
7591         exit(0);
7592 }
7593 EOCP
7594         set try
7595         if eval $compile_ok; then
7596                 o_nonblock=`./try`
7597                 case "$o_nonblock" in
7598                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7599                 *) echo "Seems like we can use $o_nonblock.";;
7600                 esac
7601         else
7602                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7603         fi
7604         ;;
7605 *) echo "Using $hint value $o_nonblock.";;
7606 esac
7607 $rm -f try try.* .out core
7608
7609 echo " "
7610 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7611 case "$eagain" in
7612 '')
7613         $cat head.c > try.c
7614         $cat >>try.c <<EOCP
7615 #include <errno.h>
7616 #include <sys/types.h>
7617 #include <signal.h>
7618 #define MY_O_NONBLOCK $o_nonblock
7619 #ifndef errno  /* XXX need better Configure test */
7620 extern int errno;
7621 #endif
7622 $signal_t blech(x) int x; { exit(3); }
7623 EOCP
7624         $cat >> try.c <<'EOCP'
7625 main()
7626 {
7627         int pd[2];
7628         int pu[2];
7629         char buf[1];
7630         char string[100];
7631
7632         pipe(pd);       /* Down: child -> parent */
7633         pipe(pu);       /* Up: parent -> child */
7634         if (0 != fork()) {
7635                 int ret;
7636                 close(pd[1]);   /* Parent reads from pd[0] */
7637                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7638                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7639                         exit(1);
7640                 signal(SIGALRM, blech);
7641                 alarm(5);
7642                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7643                         exit(2);
7644                 sprintf(string, "%d\n", ret);
7645                 write(2, string, strlen(string));
7646                 alarm(0);
7647 #ifdef EAGAIN
7648                 if (errno == EAGAIN) {
7649                         printf("EAGAIN\n");
7650                         goto ok;
7651                 }
7652 #endif
7653 #ifdef EWOULDBLOCK
7654                 if (errno == EWOULDBLOCK)
7655                         printf("EWOULDBLOCK\n");
7656 #endif
7657         ok:
7658                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7659                 sleep(2);                               /* Give it time to close our pipe */
7660                 alarm(5);
7661                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7662                 alarm(0);
7663                 sprintf(string, "%d\n", ret);
7664                 write(3, string, strlen(string));
7665                 exit(0);
7666         }
7667
7668         close(pd[0]);                   /* We write to pd[1] */
7669         close(pu[1]);                   /* We read from pu[0] */
7670         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7671         close(pd[1]);                   /* Pipe pd is now fully closed! */
7672         exit(0);                                /* Bye bye, thank you for playing! */
7673 }
7674 EOCP
7675         set try
7676         if eval $compile_ok; then
7677                 echo "$startsh" >mtry
7678                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7679                 chmod +x mtry
7680                 ./mtry >/dev/null 2>&1
7681                 case $? in
7682                 0) eagain=`$cat try.out`;;
7683                 1) echo "Could not perform non-blocking setting!";;
7684                 2) echo "I did a successful read() for something that was not there!";;
7685                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7686                 *) echo "Something terribly wrong happened during testing.";;
7687                 esac
7688                 rd_nodata=`$cat try.ret`
7689                 echo "A read() system call with no data present returns $rd_nodata."
7690                 case "$rd_nodata" in
7691                 0|-1) ;;
7692                 *)
7693                         echo "(That's peculiar, fixing that to be -1.)"
7694                         rd_nodata=-1
7695                         ;;
7696                 esac
7697                 case "$eagain" in
7698                 '')
7699                         echo "Forcing errno EAGAIN on read() with no data available."
7700                         eagain=EAGAIN
7701                         ;;
7702                 *)
7703                         echo "Your read() sets errno to $eagain when no data is available."
7704                         ;;
7705                 esac
7706                 status=`$cat try.err`
7707                 case "$status" in
7708                 0) echo "And it correctly returns 0 to signal EOF.";;
7709                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7710                 *) echo "However, your read() returns '$status' on EOF??";;
7711                 esac
7712                 val="$define"
7713                 if test "$status" = "$rd_nodata"; then
7714                         echo "WARNING: you can't distinguish between EOF and no data!"
7715                         val="$undef"
7716                 fi
7717         else
7718                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7719                 eagain=EAGAIN
7720         fi
7721         set d_eofnblk
7722         eval $setvar
7723         ;;
7724 *)
7725         echo "Using $hint value $eagain."
7726         echo "Your read() returns $rd_nodata when no data is present."
7727         case "$d_eofnblk" in
7728         "$define") echo "And you can see EOF because read() returns 0.";;
7729         "$undef") echo "But you can't see EOF status from read() returned value.";;
7730         *)
7731                 echo "(Assuming you can't see EOF status from read anyway.)"
7732                 d_eofnblk=$undef
7733                 ;;
7734         esac
7735         ;;
7736 esac
7737 $rm -f try try.* .out core head.c mtry
7738
7739 : see if fchmod exists
7740 set fchmod d_fchmod
7741 eval $inlibc
7742
7743 : see if fchown exists
7744 set fchown d_fchown
7745 eval $inlibc
7746
7747 : see if this is an fcntl system
7748 set fcntl d_fcntl
7749 eval $inlibc
7750
7751 : see if sys/select.h has to be included
7752 set sys/select.h i_sysselct
7753 eval $inhdr
7754
7755 : see if we should include time.h, sys/time.h, or both
7756 echo " "
7757 if test "X$timeincl" = X; then
7758         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7759         $echo $n "I'm now running the test program...$c"
7760         $cat >try.c <<'EOCP'
7761 #include <sys/types.h>
7762 #ifdef I_TIME
7763 #include <time.h>
7764 #endif
7765 #ifdef I_SYSTIME
7766 #ifdef SYSTIMEKERNEL
7767 #define KERNEL
7768 #endif
7769 #include <sys/time.h>
7770 #endif
7771 #ifdef I_SYSSELECT
7772 #include <sys/select.h>
7773 #endif
7774 main()
7775 {
7776         struct tm foo;
7777 #ifdef S_TIMEVAL
7778         struct timeval bar;
7779 #endif
7780 #ifdef S_TIMEZONE
7781         struct timezone tzp;
7782 #endif
7783         if (foo.tm_sec == foo.tm_sec)
7784                 exit(0);
7785 #ifdef S_TIMEVAL
7786         if (bar.tv_sec == bar.tv_sec)
7787                 exit(0);
7788 #endif
7789         exit(1);
7790 }
7791 EOCP
7792         flags=''
7793         for s_timezone in '-DS_TIMEZONE' ''; do
7794         sysselect=''
7795         for s_timeval in '-DS_TIMEVAL' ''; do
7796         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7797         for i_time in '' '-DI_TIME'; do
7798         for i_systime in '-DI_SYSTIME' ''; do
7799                 case "$flags" in
7800                 '') $echo $n ".$c"
7801                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7802                         if eval $compile; then
7803                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7804                                 shift
7805                                 flags="$*"
7806                                 echo " "
7807                                 $echo $n "Succeeded with $flags$c"
7808                         fi
7809                         ;;
7810                 esac
7811         done
7812         done
7813         done
7814         done
7815         done
7816         timeincl=''
7817         echo " "
7818         case "$flags" in
7819         *SYSTIMEKERNEL*) i_systimek="$define"
7820                 timeincl=`./findhdr sys/time.h`
7821                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7822         *) i_systimek="$undef";;
7823         esac
7824         case "$flags" in
7825         *I_TIME*) i_time="$define"
7826                 timeincl=`./findhdr time.h`" $timeincl"
7827                 echo "We'll include <time.h>." >&4;;
7828         *) i_time="$undef";;
7829         esac
7830         case "$flags" in
7831         *I_SYSTIME*) i_systime="$define"
7832                 timeincl=`./findhdr sys/time.h`" $timeincl"
7833                 echo "We'll include <sys/time.h>." >&4;;
7834         *) i_systime="$undef";;
7835         esac
7836         $rm -f try.c try
7837 fi
7838
7839 : check for fd_set items
7840 $cat <<EOM
7841
7842 Checking to see how well your C compiler handles fd_set and friends ...
7843 EOM
7844 $cat >fd_set.c <<EOCP
7845 #$i_systime I_SYS_TIME
7846 #$i_sysselct I_SYS_SELECT
7847 #$d_socket HAS_SOCKET
7848 #include <sys/types.h>
7849 #ifdef HAS_SOCKET
7850 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7851 #endif
7852 #ifdef I_SYS_TIME
7853 #include <sys/time.h>
7854 #endif
7855 #ifdef I_SYS_SELECT
7856 #include <sys/select.h>
7857 #endif
7858 main() {
7859         fd_set fds;
7860
7861 #ifdef TRYBITS
7862         if(fds.fds_bits);
7863 #endif
7864
7865 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7866         exit(0);
7867 #else
7868         exit(1);
7869 #endif
7870 }
7871 EOCP
7872 set fd_set -DTRYBITS
7873 if eval $compile; then
7874         d_fds_bits="$define"
7875         d_fd_set="$define"
7876         echo "Well, your system knows about the normal fd_set typedef..." >&4
7877         if ./fd_set; then
7878                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7879                 d_fd_macros="$define"
7880         else
7881                 $cat >&4 <<'EOM'
7882 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7883 EOM
7884                 d_fd_macros="$undef"
7885         fi
7886 else
7887         $cat <<'EOM'
7888 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7889 EOM
7890         set fd_set
7891         if eval $compile; then
7892                 d_fds_bits="$undef"
7893                 d_fd_set="$define"
7894                 echo "Well, your system has some sort of fd_set available..." >&4
7895                 if ./fd_set; then
7896                         echo "and you have the normal fd_set macros." >&4
7897                         d_fd_macros="$define"
7898                 else
7899                         $cat <<'EOM'
7900 but not the normal fd_set macros!  Gross!  More work for me...
7901 EOM
7902                         d_fd_macros="$undef"
7903                 fi
7904         else
7905         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7906                 d_fd_set="$undef"
7907                 d_fds_bits="$undef"
7908                 d_fd_macros="$undef"
7909         fi
7910 fi
7911 $rm -f fd_set*
7912
7913 : see if fgetpos exists
7914 set fgetpos d_fgetpos
7915 eval $inlibc
7916
7917
7918 if $test X"$use64bits" = X"$define"; then
7919         : see if fgetpos64 exists
7920         set fgetpos64 d_fgetpos64
7921         eval $inlibc
7922
7923         : see if fopen64 exists
7924         set freopen64 d_fopen64
7925         eval $inlibc
7926
7927         : see if freopen64 exists
7928         set freopen64 d_freopen64
7929         eval $inlibc
7930
7931         : see if fseek64 exists
7932         set fseek64 d_fseek64
7933         eval $inlibc
7934
7935         : see if fseeko64 exists
7936         set fseeko64 d_fseeko64
7937         eval $inlibc
7938
7939         : see if fsetpos64 exists
7940         set fsetpos64 d_fsetpos64
7941         eval $inlibc
7942
7943         : see if ftell64 exists
7944         set ftell64 d_ftell64
7945         eval $inlibc
7946
7947         : see if ftello64 exists
7948         set ftello64 d_ftello64
7949         eval $inlibc
7950
7951         : see if tmpfile64 exists
7952         set tmpfile64 d_tmpfile64
7953         eval $inlibc
7954 else
7955         val="$undef"
7956         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7957         do
7958                 set $xxx
7959                 eval $setvar
7960         done
7961 fi
7962
7963 : see if flock exists
7964 set flock d_flock
7965 eval $inlibc
7966
7967 : see if fork exists
7968 set fork d_fork
7969 eval $inlibc
7970
7971 : see if pathconf exists
7972 set pathconf d_pathconf
7973 eval $inlibc
7974
7975 : see if fpathconf exists
7976 set fpathconf d_fpathconf
7977 eval $inlibc
7978
7979 : see if fseeko exists
7980 set fseeko d_fseeko
7981 eval $inlibc
7982
7983 : see if fsetpos exists
7984 set fsetpos d_fsetpos
7985 eval $inlibc
7986
7987 : see if this is a sys/param system
7988 set sys/param.h i_sysparam
7989 eval $inhdr
7990
7991 : see if this is a sys/mount.h system
7992 set sys/mount.h i_sysmount
7993 eval $inhdr
7994
7995
7996 : see if statfs exists
7997 set statfs d_statfs
7998 eval $inlibc
7999
8000 : see if fstatfs exists
8001 set fstatfs d_fstatfs
8002 eval $inlibc
8003
8004 : see if statfs knows about mount flags
8005 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8006 eval $hasfield
8007
8008
8009 : see if statvfs exists
8010 set statvfs d_statvfs
8011 eval $inlibc
8012
8013 : see if fstatvfs exists
8014 set fstatvfs d_fstatvfs
8015 eval $inlibc
8016
8017
8018 : see if ftello exists
8019 set ftello d_ftello
8020 eval $inlibc
8021
8022 : see if getgrent exists
8023 set getgrent d_getgrent
8024 eval $inlibc
8025
8026 : see if gethostbyaddr exists
8027 set gethostbyaddr d_gethbyaddr
8028 eval $inlibc
8029
8030 : see if gethostbyname exists
8031 set gethostbyname d_gethbyname
8032 eval $inlibc
8033
8034 : see if gethostent exists
8035 set gethostent d_gethent
8036 eval $inlibc
8037
8038 : see how we will look up host name
8039 echo " "
8040 if false; then
8041         : dummy stub to allow use of elif
8042 elif set gethostname val -f d_gethname; eval $csym; $val; then
8043         echo 'gethostname() found.' >&4
8044         d_gethname="$define"
8045         call=gethostname
8046 elif set uname val -f d_uname; eval $csym; $val; then
8047         if ./xenix; then
8048                 $cat <<'EOM'
8049 uname() was found, but you're running xenix, and older versions of xenix
8050 have a broken uname(). If you don't really know whether your xenix is old
8051 enough to have a broken system call, use the default answer.
8052
8053 EOM
8054                 dflt=y
8055                 case "$d_uname" in
8056                 "$define") dflt=n;;
8057                 esac
8058                 rp='Is your uname() broken?'
8059                 . ./myread
8060                 case "$ans" in
8061                 n*) d_uname="$define"; call=uname;;
8062                 esac
8063         else
8064                 echo 'uname() found.' >&4
8065                 d_uname="$define"
8066                 call=uname
8067         fi
8068 fi
8069 case "$d_gethname" in
8070 '') d_gethname="$undef";;
8071 esac
8072 case "$d_uname" in
8073 '') d_uname="$undef";;
8074 esac
8075 case "$d_uname$d_gethname" in
8076 *define*)
8077         dflt=n
8078         cat <<EOM
8079  
8080 Every now and then someone has a $call() that lies about the hostname
8081 but can't be fixed for political or economic reasons.  If you wish, I can
8082 pretend $call() isn't there and maybe compute hostname at run-time
8083 thanks to the '$phostname' command.
8084
8085 EOM
8086         rp="Shall I ignore $call() from now on?"
8087         . ./myread
8088         case "$ans" in
8089         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8090         esac;;
8091 esac
8092 case "$phostname" in
8093 '') aphostname='';;
8094 *) case "$aphostname" in
8095         /*) ;;
8096         *) set X $phostname
8097                 shift
8098                 file=$1
8099                 shift
8100                 file=`./loc $file $file $pth`
8101                 aphostname=`echo $file $*`
8102                 ;;
8103         esac
8104         ;;
8105 esac
8106 case "$d_uname$d_gethname" in
8107 *define*) ;;
8108 *)
8109         case "$phostname" in
8110         '')
8111                 echo "There will be no way for $package to get your hostname." >&4;;
8112         *)
8113         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8114                 ;;
8115         esac;;
8116 esac
8117 case "$d_phostname" in
8118 '') d_phostname="$undef";;
8119 esac
8120
8121 : see if this is a netdb.h system
8122 set netdb.h i_netdb
8123 eval $inhdr
8124
8125 : see if prototypes for various gethostxxx netdb.h functions are available
8126 echo " "
8127 set d_gethostprotos gethostent $i_netdb netdb.h
8128 eval $hasproto
8129
8130 : see if getlogin exists
8131 set getlogin d_getlogin
8132 eval $inlibc
8133
8134 : see if getnetbyaddr exists
8135 set getnetbyaddr d_getnbyaddr
8136 eval $inlibc
8137
8138 : see if getnetbyname exists
8139 set getnetbyname d_getnbyname
8140 eval $inlibc
8141
8142 : see if getnetent exists
8143 set getnetent d_getnent
8144 eval $inlibc
8145
8146 : see if prototypes for various getnetxxx netdb.h functions are available
8147 echo " "
8148 set d_getnetprotos getnetent $i_netdb netdb.h
8149 eval $hasproto
8150
8151
8152 : see if getprotobyname exists
8153 set getprotobyname d_getpbyname
8154 eval $inlibc
8155
8156 : see if getprotobynumber exists
8157 set getprotobynumber d_getpbynumber
8158 eval $inlibc
8159
8160 : see if getprotoent exists
8161 set getprotoent d_getpent
8162 eval $inlibc
8163
8164 : see if getpgid exists
8165 set getpgid d_getpgid
8166 eval $inlibc
8167
8168 : see if getpgrp2 exists
8169 set getpgrp2 d_getpgrp2
8170 eval $inlibc
8171
8172 : see if getppid exists
8173 set getppid d_getppid
8174 eval $inlibc
8175
8176 : see if getpriority exists
8177 set getpriority d_getprior
8178 eval $inlibc
8179
8180 : see if prototypes for various getprotoxxx netdb.h functions are available
8181 echo " "
8182 set d_getprotoprotos getprotoent $i_netdb netdb.h
8183 eval $hasproto
8184
8185 : see if getpwent exists
8186 set getpwent d_getpwent
8187 eval $inlibc
8188
8189
8190 : see if getservbyname exists
8191 set getservbyname d_getsbyname
8192 eval $inlibc
8193
8194 : see if getservbyport exists
8195 set getservbyport d_getsbyport
8196 eval $inlibc
8197
8198 : see if getservent exists
8199 set getservent d_getsent
8200 eval $inlibc
8201
8202 : see if prototypes for various getservxxx netdb.h functions are available
8203 echo " "
8204 set d_getservprotos getservent $i_netdb netdb.h
8205 eval $hasproto
8206
8207 : see if gettimeofday or ftime exists
8208 set gettimeofday d_gettimeod
8209 eval $inlibc
8210 case "$d_gettimeod" in
8211 "$undef")
8212         set ftime d_ftime 
8213         eval $inlibc
8214         ;;
8215 *)
8216         val="$undef"; set d_ftime; eval $setvar
8217         ;;
8218 esac
8219 case "$d_gettimeod$d_ftime" in
8220 "$undef$undef")
8221         echo " "
8222         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8223         ;;
8224 esac
8225
8226 : see if this is an grp system
8227 set grp.h i_grp
8228 eval $inhdr
8229
8230 case "$i_grp" in
8231 $define)
8232         xxx=`./findhdr grp.h`
8233         $cppstdin $cppflags $cppminus < $xxx >$$.h
8234
8235         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8236                 val="$define"
8237         else
8238                 val="$undef"
8239         fi
8240         set d_grpasswd
8241         eval $setvar
8242
8243         $rm -f $$.h
8244         ;;
8245 *)
8246         val="$undef";
8247         set d_grpasswd; eval $setvar
8248         ;;
8249 esac
8250
8251 : see if this is a netinet/in.h or sys/in.h system
8252 set netinet/in.h i_niin sys/in.h i_sysin
8253 eval $inhdr
8254
8255 : see if arpa/inet.h has to be included
8256 set arpa/inet.h i_arpainet
8257 eval $inhdr
8258
8259 : see if htonl --and friends-- exists
8260 val=''
8261 set htonl val
8262 eval $inlibc
8263
8264 : Maybe they are macros.
8265 case "$val" in
8266 $undef)
8267         $cat >htonl.c <<EOM
8268 #include <stdio.h>
8269 #include <sys/types.h>
8270 #$i_niin I_NETINET_IN
8271 #$i_sysin I_SYS_IN
8272 #$i_arpainet I_ARPA_INET
8273 #ifdef I_NETINET_IN
8274 #include <netinet/in.h>
8275 #endif
8276 #ifdef I_SYS_IN
8277 #include <sys/in.h>
8278 #endif
8279 #ifdef I_ARPA_INET
8280 #include <arpa/inet.h>
8281 #endif
8282 #ifdef htonl
8283 printf("Defined as a macro.");
8284 #endif
8285 EOM
8286         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8287         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8288                 val="$define"
8289                 echo "But it seems to be defined as a macro." >&4
8290         fi
8291         $rm -f htonl.?
8292         ;;
8293 esac
8294 set d_htonl
8295 eval $setvar
8296
8297 : see which of string.h or strings.h is needed
8298 echo " "
8299 strings=`./findhdr string.h`
8300 if $test "$strings" && $test -r "$strings"; then
8301         echo "Using <string.h> instead of <strings.h>." >&4
8302         val="$define"
8303 else
8304         val="$undef"
8305         strings=`./findhdr strings.h`
8306         if $test "$strings" && $test -r "$strings"; then
8307                 echo "Using <strings.h> instead of <string.h>." >&4
8308         else
8309                 echo "No string header found -- You'll surely have problems." >&4
8310         fi
8311 fi
8312 set i_string
8313 eval $setvar
8314 case "$i_string" in
8315 "$undef") strings=`./findhdr strings.h`;;
8316 *)        strings=`./findhdr string.h`;;
8317 esac
8318
8319 : index or strchr
8320 echo " "
8321 if set index val -f; eval $csym; $val; then
8322         if set strchr val -f d_strchr; eval $csym; $val; then
8323                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8324                         val="$define"
8325                         vali="$undef"
8326                         echo "strchr() found." >&4
8327                 else
8328                         val="$undef"
8329                         vali="$define"
8330                         echo "index() found." >&4
8331                 fi
8332         else
8333                 val="$undef"
8334                 vali="$define"
8335                 echo "index() found." >&4
8336         fi
8337 else
8338         if set strchr val -f d_strchr; eval $csym; $val; then
8339                 val="$define"
8340                 vali="$undef"
8341                 echo "strchr() found." >&4
8342         else
8343                 echo "No index() or strchr() found!" >&4
8344                 val="$undef"
8345                 vali="$undef"
8346         fi
8347 fi
8348 set d_strchr; eval $setvar
8349 val="$vali"
8350 set d_index; eval $setvar
8351
8352 : check whether inet_aton exists
8353 set inet_aton d_inetaton
8354 eval $inlibc
8355
8356 : see if inttypes.h is available
8357 : we want a real compile instead of Inhdr because some systems
8358 : have an inttypes.h which includes non-existent headers
8359 echo " "
8360 $cat >try.c <<EOCP
8361 #include <inttypes.h>
8362 int main() {
8363         static int32_t foo32 = 0x12345678;
8364 }
8365 EOCP
8366 set try
8367 if eval $compile; then
8368         echo "<inttypes.h> found." >&4
8369         val="$define"
8370 else
8371         echo "<inttypes.h> NOT found." >&4
8372         val="$undef"
8373 fi
8374 $rm -f try.c try
8375 set i_inttypes
8376 eval $setvar
8377
8378 : check for int64_t
8379 case "$use64bits" in
8380 "$define" )
8381         echo " "
8382         echo $n "Checking to see if your system supports int64_t...$c" >&4
8383         $cat >try.c <<EOCP
8384 #include <sys/types.h>
8385 #$i_inttypes I_INTTYPES
8386 #ifdef I_INTTYPES
8387 #include <inttypes.h>
8388 #endif
8389 int64_t foo() { int64_t x; x = 7; return x; }
8390 EOCP
8391         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8392                 val="$define"
8393                 echo " Yup, it does." >&4
8394         else
8395                 val="$undef"
8396                 echo " Nope, it doesn't." >&4
8397         fi
8398         $rm -f try.*
8399         ;;
8400 *)      val="$undef"
8401         ;;
8402 esac
8403 set d_int64t
8404 eval $setvar
8405
8406
8407 : Look for isascii
8408 echo " "
8409 $cat >isascii.c <<'EOCP'
8410 #include <stdio.h>
8411 #include <ctype.h>
8412 main() {
8413         int c = 'A';
8414         if (isascii(c))
8415                 exit(0);
8416         else
8417                 exit(1);
8418 }
8419 EOCP
8420 set isascii
8421 if eval $compile; then
8422         echo "isascii() found." >&4
8423         val="$define"
8424 else
8425         echo "isascii() NOT found." >&4
8426         val="$undef"
8427 fi
8428 set d_isascii
8429 eval $setvar
8430 $rm -f isascii*
8431
8432 : see if killpg exists
8433 set killpg d_killpg
8434 eval $inlibc
8435
8436 : see if lchown exists
8437 echo " "
8438 $cat > try.c <<'EOCP'
8439 /* System header to define __stub macros and hopefully few prototypes,
8440     which can conflict with char lchown(); below.  */
8441 #include <assert.h>
8442 /* Override any gcc2 internal prototype to avoid an error.  */
8443 /* We use char because int might match the return type of a gcc2
8444    builtin and then its argument prototype would still apply.  */
8445 char lchown();
8446 int main() {
8447     /*  The GNU C library defines this for functions which it implements
8448         to always fail with ENOSYS.  Some functions are actually named
8449         something starting with __ and the normal name is an alias.  */
8450 #if defined (__stub_lchown) || defined (__stub___lchown)
8451 choke me
8452 #else
8453 lchown();
8454 #endif
8455 ; return 0; }
8456 EOCP
8457 set try
8458 if eval $compile; then
8459     $echo "lchown() found." >&4
8460     val="$define"
8461 else
8462     $echo "lchown() NOT found." >&4
8463     val="$undef"
8464 fi
8465 set d_lchown
8466 eval $setvar
8467
8468 : see if link exists
8469 set link d_link
8470 eval $inlibc
8471
8472 : see if localeconv exists
8473 set localeconv d_locconv
8474 eval $inlibc
8475
8476 : see if lockf exists
8477 set lockf d_lockf
8478 eval $inlibc
8479
8480 : check for length of double
8481 echo " "
8482 case "$doublesize" in
8483 '')
8484         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8485         $cat >try.c <<'EOCP'
8486 #include <stdio.h>
8487 main()
8488 {
8489         printf("%d\n", sizeof(double));
8490 }
8491 EOCP
8492         set try
8493         if eval $compile_ok; then
8494                 doublesize=`./try`
8495                 $echo " $doublesize bytes." >&4
8496         else
8497                 dflt='8'
8498                 echo "(I can't seem to compile the test program.  Guessing...)"
8499                 rp="What is the size of a double precision number (in bytes)?"
8500                 . ./myread
8501                 doublesize="$ans"
8502         fi
8503         ;;
8504 esac
8505 $rm -f try.c try
8506
8507 : check for long doubles
8508 echo " "
8509 echo $n "Checking to see if your system supports long doubles...$c" >&4
8510 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8511 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8512         val="$define"
8513         echo " Yup, it does." >&4
8514 else
8515         val="$undef"
8516         echo " Nope, it doesn't." >&4
8517 fi
8518 $rm try.*
8519 set d_longdbl
8520 eval $setvar
8521
8522 : check for length of long double
8523 case "${d_longdbl}${longdblsize}" in
8524 $define)
8525         echo " "
8526         $echo $n "Checking to see how big your long doubles are...$c" >&4
8527         $cat >try.c <<'EOCP'
8528 #include <stdio.h>
8529 int main()
8530 {
8531         printf("%d\n", sizeof(long double));
8532 }
8533 EOCP
8534         set try
8535         if eval $compile; then
8536                 longdblsize=`./try`
8537                 $echo " $longdblsize bytes." >&4
8538         else
8539                 dflt='8'
8540                 echo " "
8541                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8542                 rp="What is the size of a long double (in bytes)?"
8543                 . ./myread
8544                 longdblsize="$ans"
8545         fi
8546         if $test "X$doublesize" = "X$longdblsize"; then
8547                 echo "(That isn't any different from an ordinary double.)"
8548         fi      
8549         ;;
8550 esac
8551 $rm -f try.c try
8552
8553 : check for long long
8554 echo " "
8555 echo $n "Checking to see if your system supports long long...$c" >&4
8556 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8557 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8558         val="$define"
8559         echo " Yup, it does." >&4
8560 else
8561         val="$undef"
8562         echo " Nope, it doesn't." >&4
8563 fi
8564 $rm try.*
8565 set d_longlong
8566 eval $setvar
8567
8568 : check for length of long long
8569 case "${d_longlong}${longlongsize}" in
8570 $define)
8571         echo " "
8572         $echo $n "Checking to see how big your long longs are...$c" >&4
8573         $cat >try.c <<'EOCP'
8574 #include <stdio.h>
8575 int main()
8576 {
8577         printf("%d\n", sizeof(long long));
8578 }
8579 EOCP
8580         set try
8581         if eval $compile_ok; then
8582                 longlongsize=`./try`
8583                 $echo " $longlongsize bytes." >&4
8584         else
8585                 dflt='8'
8586                 echo " "
8587                 echo "(I can't seem to compile the test program.  Guessing...)"
8588                 rp="What is the size of a long long (in bytes)?"
8589                 . ./myread
8590                 longlongsize="$ans"
8591         fi
8592         if $test "X$longsize" = "X$longlongsize"; then
8593                 echo "(That isn't any different from an ordinary long.)"
8594         fi      
8595         ;;
8596 esac
8597 $rm -f try.c try
8598
8599 : see if lstat exists
8600 set lstat d_lstat
8601 eval $inlibc
8602
8603 : see if mblen exists
8604 set mblen d_mblen
8605 eval $inlibc
8606
8607 : see if mbstowcs exists
8608 set mbstowcs d_mbstowcs
8609 eval $inlibc
8610
8611 : see if mbtowc exists
8612 set mbtowc d_mbtowc
8613 eval $inlibc
8614
8615 : see if memcmp exists
8616 set memcmp d_memcmp
8617 eval $inlibc
8618
8619 : see if memcpy exists
8620 set memcpy d_memcpy
8621 eval $inlibc
8622
8623 : see if memmove exists
8624 set memmove d_memmove
8625 eval $inlibc
8626
8627 : see if memset exists
8628 set memset d_memset
8629 eval $inlibc
8630
8631 : see if mkdir exists
8632 set mkdir d_mkdir
8633 eval $inlibc
8634
8635 : see if mkfifo exists
8636 set mkfifo d_mkfifo
8637 eval $inlibc
8638
8639 : see if mktime exists
8640 set mktime d_mktime
8641 eval $inlibc
8642
8643 : see if msgctl exists
8644 set msgctl d_msgctl
8645 eval $inlibc
8646
8647 : see if msgget exists
8648 set msgget d_msgget
8649 eval $inlibc
8650
8651 : see if msgsnd exists
8652 set msgsnd d_msgsnd
8653 eval $inlibc
8654
8655 : see if msgrcv exists
8656 set msgrcv d_msgrcv
8657 eval $inlibc
8658
8659 : see how much of the 'msg*(2)' library is present.
8660 h_msg=true
8661 echo " "
8662 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8663 *"$undef"*) h_msg=false;;
8664 esac
8665 case "$osname" in
8666 freebsd)
8667     case "`ipcs 2>&1`" in
8668     "SVID messages"*"not configured"*)
8669         echo "Your $osname does not have the msg*(2) configured." >&4
8670         h_msg=false
8671         val="$undef"
8672         set msgctl d_msgctl
8673         eval $setvar
8674         set msgget d_msgget
8675         eval $setvar
8676         set msgsnd d_msgsnd
8677         eval $setvar
8678         set msgrcv d_msgrcv
8679         eval $setvar
8680         ;;
8681     esac
8682     ;;
8683 esac
8684 : we could also check for sys/ipc.h ...
8685 if $h_msg && $test `./findhdr sys/msg.h`; then
8686         echo "You have the full msg*(2) library." >&4
8687         val="$define"
8688 else
8689         echo "You don't have the full msg*(2) library." >&4
8690         val="$undef"
8691 fi
8692 set d_msg
8693 eval $setvar
8694
8695 : see if nice exists
8696 set nice d_nice
8697 eval $inlibc
8698
8699 : how to create joinable pthreads
8700 if test "X$usethreads" = "X$define"; then
8701         echo " "
8702         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8703         $cat >try.c <<'EOCP'
8704 #include <pthread.h>
8705 int main() {
8706     int detachstate = JOINABLE;
8707 }
8708 EOCP
8709         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8710         if eval $compile; then
8711                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8712                 val="$undef" # Yes, undef.
8713                 set d_old_pthread_create_joinable
8714                 eval $setvar
8715                 val=""
8716                 set old_pthread_create_joinable
8717                 eval $setvar
8718         else
8719                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8720                 if eval $compile; then
8721                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8722                         val="$define"
8723                         set d_old_pthread_create_joinable
8724                         eval $setvar
8725                         val=PTHREAD_CREATE_UNDETACHED
8726                         set old_pthread_create_joinable
8727                         eval $setvar
8728                 else            
8729                         set try -DJOINABLE=__UNDETACHED
8730                         if eval $compile; then
8731                                 echo "You seem to use __UNDETACHED." >&2
8732                                 val="$define"
8733                                 set d_old_pthread_create_joinable
8734                                 eval $setvar
8735                                 val=__UNDETACHED
8736                                 set old_pthread_create_joinable
8737                                 eval $setvar
8738                         else
8739                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
8740                                 val="$define"
8741                                 set d_old_pthread_create_joinable
8742                                 eval $setvar
8743                                 val=0
8744                                 set old_pthread_create_joinable
8745                                 eval $setvar
8746                         fi
8747                 fi
8748         fi
8749         $rm -f try try.*
8750 else
8751     d_old_pthread_create_joinable="$undef"
8752     old_pthread_create_joinable=""
8753 fi
8754
8755 : see if pause exists
8756 set pause d_pause
8757 eval $inlibc
8758
8759 : see if pipe exists
8760 set pipe d_pipe
8761 eval $inlibc
8762
8763 : see if poll exists
8764 set poll d_poll
8765 eval $inlibc
8766
8767
8768 : see whether the various POSIXish _yields exist
8769 $cat >try.c <<EOP
8770 #include <pthread.h>
8771 #include <stdio.h>
8772 int main() {
8773 #ifdef SCHED_YIELD
8774         sched_yield();
8775 #else
8776 #ifdef PTHREAD_YIELD
8777         pthread_yield();
8778 #else
8779 #ifdef PTHREAD_YIELD_NULL
8780         pthread_yield(NULL);
8781 #endif
8782 #endif
8783 #endif
8784 }
8785 EOP
8786 : see if sched_yield exists
8787 set try -DSCHED_YIELD
8788 if eval $compile; then
8789     val="$define"
8790     sched_yield='sched_yield()'
8791 else
8792     val="$undef"
8793 fi
8794 case "$usethreads" in
8795 $define)
8796         case "$val" in
8797         $define) echo 'sched_yield() found.' >&4        ;;
8798         *)       echo 'sched_yield() NOT found.' >&4    ;;
8799         esac
8800 esac
8801 set d_sched_yield
8802 eval $setvar
8803
8804 : see if pthread_yield exists
8805 set try -DPTHREAD_YIELD
8806 if eval $compile; then
8807     val="$define"
8808     case "$sched_yield" in
8809     '') sched_yield='pthread_yield()' ;;
8810     esac
8811 else
8812     set try -DPTHREAD_YIELD_NULL
8813     if eval $compile; then
8814         val="$define"
8815         case "$sched_yield" in
8816         '') sched_yield='pthread_yield(NULL)' ;;
8817         esac
8818     else
8819         val="$undef"
8820     fi
8821 fi
8822 case "$usethreads" in
8823 $define)
8824         case "$val" in
8825         $define) echo 'pthread_yield() found.' >&4      ;;
8826         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8827         esac
8828         ;;
8829 esac
8830 set d_pthread_yield
8831 eval $setvar
8832
8833 case "$sched_yield" in
8834 '') sched_yield=undef ;;
8835 esac
8836
8837 $rm -f try try.*
8838
8839 : see if this is a pwd.h system
8840 set pwd.h i_pwd
8841 eval $inhdr
8842
8843 case "$i_pwd" in
8844 $define)
8845         xxx=`./findhdr pwd.h`
8846         $cppstdin $cppflags $cppminus < $xxx >$$.h
8847
8848         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8849                 val="$define"
8850         else
8851                 val="$undef"
8852         fi
8853         set d_pwquota
8854         eval $setvar
8855
8856         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8857                 val="$define"
8858         else
8859                 val="$undef"
8860         fi
8861         set d_pwage
8862         eval $setvar
8863
8864         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8865                 val="$define"
8866         else
8867                 val="$undef"
8868         fi
8869         set d_pwchange
8870         eval $setvar
8871
8872         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8873                 val="$define"
8874         else
8875                 val="$undef"
8876         fi
8877         set d_pwclass
8878         eval $setvar
8879
8880         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8881                 val="$define"
8882         else
8883                 val="$undef"
8884         fi
8885         set d_pwexpire
8886         eval $setvar
8887
8888         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8889                 val="$define"
8890         else
8891                 val="$undef"
8892         fi
8893         set d_pwcomment
8894         eval $setvar
8895
8896         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8897                 val="$define"
8898         else
8899                 val="$undef"
8900         fi
8901         set d_pwgecos
8902         eval $setvar
8903
8904         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8905                 val="$define"
8906         else
8907                 val="$undef"
8908         fi
8909         set d_pwpasswd
8910         eval $setvar
8911
8912         $rm -f $$.h
8913         ;;
8914 *)
8915         val="$undef"; 
8916         set d_pwquota; eval $setvar
8917         set d_pwage; eval $setvar
8918         set d_pwchange; eval $setvar
8919         set d_pwclass; eval $setvar
8920         set d_pwexpire; eval $setvar
8921         set d_pwcomment; eval $setvar
8922         set d_pwgecos; eval $setvar
8923         set d_pwpasswd; eval $setvar
8924         ;;
8925 esac
8926
8927 : see if readdir and friends exist
8928 set readdir d_readdir
8929 eval $inlibc
8930 set seekdir d_seekdir
8931 eval $inlibc
8932 set telldir d_telldir
8933 eval $inlibc
8934 set rewinddir d_rewinddir
8935 eval $inlibc
8936
8937 : see if readlink exists
8938 set readlink d_readlink
8939 eval $inlibc
8940
8941 : see if readv exists
8942 set readv d_readv
8943 eval $inlibc
8944
8945 : see if rename exists
8946 set rename d_rename
8947 eval $inlibc
8948
8949 : see if rmdir exists
8950 set rmdir d_rmdir
8951 eval $inlibc
8952
8953 : see if memory.h is available.
8954 val=''
8955 set memory.h val
8956 eval $inhdr
8957
8958 : See if it conflicts with string.h
8959 case "$val" in
8960 $define)
8961         case "$strings" in
8962         '') ;;
8963         *)
8964                 $cppstdin $cppflags $cppminus < $strings > mem.h
8965                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8966                         echo " "
8967                         echo "We won't be including <memory.h>."
8968                         val="$undef"
8969                 fi
8970                 $rm -f mem.h
8971                 ;;
8972         esac
8973 esac
8974 set i_memory
8975 eval $setvar
8976
8977 : can bcopy handle overlapping blocks?
8978 val="$undef"
8979 case "$d_bcopy" in
8980 "$define")
8981         echo " "
8982         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8983         $cat >try.c <<EOCP
8984 #$i_memory I_MEMORY
8985 #$i_stdlib I_STDLIB
8986 #$i_string I_STRING
8987 #$i_unistd I_UNISTD
8988 EOCP
8989         $cat >>try.c <<'EOCP'
8990 #include <stdio.h>
8991 #ifdef I_MEMORY
8992 #  include <memory.h>
8993 #endif
8994 #ifdef I_STDLIB
8995 #  include <stdlib.h>
8996 #endif
8997 #ifdef I_STRING
8998 #  include <string.h>
8999 #else
9000 #  include <strings.h>
9001 #endif
9002 #ifdef I_UNISTD
9003 #  include <unistd.h>  /* Needed for NetBSD */
9004 #endif
9005 main()
9006 {
9007 char buf[128], abc[128];
9008 char *b;
9009 int len;
9010 int off;
9011 int align;
9012
9013 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9014
9015 for (align = 7; align >= 0; align--) {
9016         for (len = 36; len; len--) {
9017                 b = buf+align;
9018                 bcopy(abc, b, len);
9019                 for (off = 1; off <= len; off++) {
9020                         bcopy(b, b+off, len);
9021                         bcopy(b+off, b, len);
9022                         if (bcmp(b, abc, len))
9023                                 exit(1);
9024                 }
9025         }
9026 }
9027 exit(0);
9028 }
9029 EOCP
9030         set try
9031         if eval $compile_ok; then
9032                 if ./try 2>/dev/null; then
9033                         echo "Yes, it can."
9034                         val="$define"
9035                 else
9036                         echo "It can't, sorry."
9037                         case "$d_memmove" in
9038                         "$define") echo "But that's Ok since you have memmove()." ;;
9039                         esac
9040                 fi
9041         else
9042                 echo "(I can't compile the test program, so we'll assume not...)"
9043                 case "$d_memmove" in
9044                 "$define") echo "But that's Ok since you have memmove()." ;;
9045                 esac
9046         fi
9047         ;;
9048 esac
9049 $rm -f try.* try core
9050 set d_safebcpy
9051 eval $setvar
9052
9053 : can memcpy handle overlapping blocks?
9054 val="$undef"
9055 case "$d_memcpy" in
9056 "$define")
9057         echo " "
9058         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9059         $cat >try.c <<EOCP
9060 #$i_memory I_MEMORY
9061 #$i_stdlib I_STDLIB
9062 #$i_string I_STRING
9063 #$i_unistd I_UNISTD
9064 EOCP
9065         $cat >>try.c <<'EOCP'
9066 #include <stdio.h>
9067 #ifdef I_MEMORY
9068 #  include <memory.h>
9069 #endif
9070 #ifdef I_STDLIB
9071 #  include <stdlib.h>
9072 #endif
9073 #ifdef I_STRING
9074 #  include <string.h>
9075 #else
9076 #  include <strings.h>
9077 #endif
9078 #ifdef I_UNISTD
9079 #  include <unistd.h>  /* Needed for NetBSD */
9080 #endif
9081 main()
9082 {
9083 char buf[128], abc[128];
9084 char *b;
9085 int len;
9086 int off;
9087 int align;
9088
9089 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9090    try to store the string in read-only memory. */
9091 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9092
9093 for (align = 7; align >= 0; align--) {
9094         for (len = 36; len; len--) {
9095                 b = buf+align;
9096                 memcpy(b, abc, len);
9097                 for (off = 1; off <= len; off++) {
9098                         memcpy(b+off, b, len);
9099                         memcpy(b, b+off, len);
9100                         if (memcmp(b, abc, len))
9101                                 exit(1);
9102                 }
9103         }
9104 }
9105 exit(0);
9106 }
9107 EOCP
9108         set try
9109         if eval $compile_ok; then
9110                 if ./try 2>/dev/null; then
9111                         echo "Yes, it can."
9112                         val="$define"
9113                 else
9114                         echo "It can't, sorry."
9115                         case "$d_memmove" in
9116                         "$define") echo "But that's Ok since you have memmove()." ;;
9117                         esac
9118                 fi
9119         else
9120                 echo "(I can't compile the test program, so we'll assume not...)"
9121                 case "$d_memmove" in
9122                 "$define") echo "But that's Ok since you have memmove()." ;;
9123                 esac
9124         fi
9125         ;;
9126 esac
9127 $rm -f try.* try core
9128 set d_safemcpy
9129 eval $setvar
9130
9131 : can memcmp be trusted to compare relative magnitude?
9132 val="$undef"
9133 case "$d_memcmp" in
9134 "$define")
9135         echo " "
9136         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9137         $cat >try.c <<EOCP
9138 #$i_memory I_MEMORY
9139 #$i_stdlib I_STDLIB
9140 #$i_string I_STRING
9141 #$i_unistd I_UNISTD
9142 EOCP
9143         $cat >>try.c <<'EOCP'
9144 #include <stdio.h>
9145 #ifdef I_MEMORY
9146 #  include <memory.h>
9147 #endif
9148 #ifdef I_STDLIB
9149 #  include <stdlib.h>
9150 #endif
9151 #ifdef I_STRING
9152 #  include <string.h>
9153 #else
9154 #  include <strings.h>
9155 #endif
9156 #ifdef I_UNISTD
9157 #  include <unistd.h>  /* Needed for NetBSD */
9158 #endif
9159 main()
9160 {
9161 char a = -1;
9162 char b = 0;
9163 if ((a < b) && memcmp(&a, &b, 1) < 0)
9164         exit(1);
9165 exit(0);
9166 }
9167 EOCP
9168         set try
9169         if eval $compile_ok; then
9170                 if ./try 2>/dev/null; then
9171                         echo "Yes, it can."
9172                         val="$define"
9173                 else
9174                         echo "No, it can't (it uses signed chars)."
9175                 fi
9176         else
9177                 echo "(I can't compile the test program, so we'll assume not...)"
9178         fi
9179         ;;
9180 esac
9181 $rm -f try.* try core
9182 set d_sanemcmp
9183 eval $setvar
9184
9185 : see if select exists
9186 set select d_select
9187 eval $inlibc
9188
9189 : see if semctl exists
9190 set semctl d_semctl
9191 eval $inlibc
9192
9193 : see if semget exists
9194 set semget d_semget
9195 eval $inlibc
9196
9197 : see if semop exists
9198 set semop d_semop
9199 eval $inlibc
9200
9201 : see how much of the 'sem*(2)' library is present.
9202 h_sem=true
9203 echo " "
9204 case "$d_semctl$d_semget$d_semop" in
9205 *"$undef"*) h_sem=false;;
9206 esac
9207 case "$osname" in
9208 freebsd)
9209     case "`ipcs 2>&1`" in
9210     "SVID messages"*"not configured"*)
9211         echo "Your $osname does not have the sem*(2) configured." >&4
9212         h_sem=false
9213         val="$undef"
9214         set semctl d_semctl
9215         eval $setvar
9216         set semget d_semget
9217         eval $setvar
9218         set semop d_semop
9219         eval $setvar
9220         ;;
9221     esac
9222     ;;
9223 esac
9224 : we could also check for sys/ipc.h ...
9225 if $h_sem && $test `./findhdr sys/sem.h`; then
9226         echo "You have the full sem*(2) library." >&4
9227         val="$define"
9228 else
9229         echo "You don't have the full sem*(2) library." >&4
9230         val="$undef"
9231 fi
9232 set d_sem
9233 eval $setvar
9234
9235 : see whether sys/sem.h defines union semun
9236 echo " "
9237 $cat > try.c <<'END'
9238 #include <sys/types.h>
9239 #include <sys/ipc.h>
9240 #include <sys/sem.h>
9241 int main () { union semun semun; semun.buf = 0; }
9242 END
9243 set try
9244 if eval $compile; then
9245     echo "You have union semun in <sys/sem.h>." >&4
9246     val="$define"
9247 else
9248     echo "You do not have union semun in <sys/sem.h>." >&4
9249     val="$undef"
9250 fi
9251 $rm -f try try.c try.h
9252 set d_union_semun
9253 eval $setvar
9254
9255 : see how to do semctl IPC_STAT
9256 case "$d_sem" in
9257 $define)
9258     : see whether semctl IPC_STAT can use union semun
9259     echo " "
9260     $cat > try.h <<END
9261 #ifndef S_IRUSR
9262 #   ifdef S_IREAD
9263 #       define S_IRUSR S_IREAD
9264 #       define S_IWUSR S_IWRITE
9265 #       define S_IXUSR S_IEXEC
9266 #   else
9267 #       define S_IRUSR 0400
9268 #       define S_IWUSR 0200
9269 #       define S_IXUSR 0100
9270 #   endif
9271 #   define S_IRGRP (S_IRUSR>>3)
9272 #   define S_IWGRP (S_IWUSR>>3)
9273 #   define S_IXGRP (S_IXUSR>>3)
9274 #   define S_IROTH (S_IRUSR>>6)
9275 #   define S_IWOTH (S_IWUSR>>6)
9276 #   define S_IXOTH (S_IXUSR>>6)
9277 #endif
9278 #ifndef S_IRWXU
9279 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9280 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9281 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9282 #endif
9283 END
9284
9285     $cat > try.c <<END
9286 #include <sys/types.h>
9287 #include <sys/ipc.h>
9288 #include <sys/sem.h>
9289 #include <sys/stat.h>
9290 #include <stdio.h>
9291 #include <errno.h>
9292 #include "try.h"
9293 #ifndef errno
9294 extern int errno;
9295 #endif
9296 #$d_union_semun HAS_UNION_SEMUN
9297 int main() {
9298     union semun
9299 #ifndef HAS_UNION_SEMUN
9300     {
9301         int val;
9302         struct semid_ds *buf;
9303         unsigned short *array;
9304     }
9305 #endif
9306     arg;
9307     int sem, st;
9308
9309 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9310     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9311     if (sem > -1) {
9312         struct semid_ds argbuf;
9313         arg.buf = &argbuf;
9314 #       ifdef IPC_STAT
9315         st = semctl(sem, 0, IPC_STAT, arg);
9316         if (st == 0)
9317             printf("semun\n");
9318         else
9319 #       endif /* IPC_STAT */
9320             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9321 #       ifdef IPC_RMID
9322         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9323 #       endif /* IPC_RMID */
9324             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9325     } else
9326 #endif /* IPC_PRIVATE && ... */
9327         printf("semget failed: errno = %d\n", errno);
9328   return 0;
9329 }
9330 END
9331     val="$undef"
9332     set try
9333     if eval $compile; then
9334         xxx=`./try`
9335         case "$xxx" in
9336         semun) val="$define" ;;
9337         esac
9338     fi
9339     $rm -f try try.c
9340     set d_semctl_semun
9341     eval $setvar
9342     case "$d_semctl_semun" in
9343     $define)
9344         echo "You can use union semun for semctl IPC_STAT." >&4
9345         also='also'
9346         ;;
9347     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9348         also=''
9349         ;;
9350     esac
9351
9352     : see whether semctl IPC_STAT can use struct semid_ds pointer
9353     $cat > try.c <<'END'
9354 #include <sys/types.h>
9355 #include <sys/ipc.h>
9356 #include <sys/sem.h>
9357 #include <sys/stat.h>
9358 #include "try.h"
9359 #include <stdio.h>
9360 #include <errno.h>
9361 #ifndef errno
9362 extern int errno;
9363 #endif
9364 int main() {
9365     struct semid_ds arg;
9366     int sem, st;
9367
9368 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9369     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9370     if (sem > -1) {
9371 #       ifdef IPC_STAT
9372         st = semctl(sem, 0, IPC_STAT, &arg);
9373         if (st == 0)
9374             printf("semid_ds\n");
9375         else
9376 #       endif /* IPC_STAT */
9377             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9378 #       ifdef IPC_RMID
9379         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9380 #       endif /* IPC_RMID */
9381             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9382     } else
9383 #endif /* IPC_PRIVATE && ... */
9384         printf("semget failed: errno = %d\n", errno);
9385
9386     return 0;
9387 }
9388 END
9389     val="$undef"
9390     set try
9391     if eval $compile; then
9392         xxx=`./try`
9393         case "$xxx" in
9394         semid_ds) val="$define" ;;
9395         esac
9396     fi
9397     $rm -f try try.c
9398     set d_semctl_semid_ds
9399     eval $setvar
9400     case "$d_semctl_semid_ds" in
9401     $define)
9402         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9403         ;;
9404     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9405         ;;
9406     esac
9407     $rm -f try.h
9408     ;;
9409 *)  val="$undef"
9410
9411     # We do not have the full sem*(2) library, so assume we can not
9412     # use either.
9413
9414     set d_semctl_semun
9415     eval $setvar
9416
9417     set d_semctl_semid_ds
9418     eval $setvar
9419     ;;
9420 esac
9421
9422 : see if setegid exists
9423 set setegid d_setegid
9424 eval $inlibc
9425
9426 : see if seteuid exists
9427 set seteuid d_seteuid
9428 eval $inlibc
9429
9430 : see if setgrent exists
9431 set setgrent d_setgrent
9432 eval $inlibc
9433
9434 : see if sethostent exists
9435 set sethostent d_sethent
9436 eval $inlibc
9437
9438 : see if setlinebuf exists
9439 set setlinebuf d_setlinebuf
9440 eval $inlibc
9441
9442 : see if setlocale exists
9443 set setlocale d_setlocale
9444 eval $inlibc
9445
9446 : see if setnetent exists
9447 set setnetent d_setnent
9448 eval $inlibc
9449
9450 : see if setprotoent exists
9451 set setprotoent d_setpent
9452 eval $inlibc
9453
9454 : see if setpgid exists
9455 set setpgid d_setpgid
9456 eval $inlibc
9457
9458 : see if setpgrp2 exists
9459 set setpgrp2 d_setpgrp2
9460 eval $inlibc
9461
9462 : see if setpriority exists
9463 set setpriority d_setprior
9464 eval $inlibc
9465
9466 : see if setpwent exists
9467 set setpwent d_setpwent
9468 eval $inlibc
9469
9470 : see if setregid exists
9471 set setregid d_setregid
9472 eval $inlibc
9473 set setresgid d_setresgid
9474 eval $inlibc
9475
9476 : see if setreuid exists
9477 set setreuid d_setreuid
9478 eval $inlibc
9479 set setresuid d_setresuid
9480 eval $inlibc
9481
9482 : see if setrgid exists
9483 set setrgid d_setrgid
9484 eval $inlibc
9485
9486 : see if setruid exists
9487 set setruid d_setruid
9488 eval $inlibc
9489
9490 : see if setservent exists
9491 set setservent d_setsent
9492 eval $inlibc
9493
9494 : see if setsid exists
9495 set setsid d_setsid
9496 eval $inlibc
9497
9498 : see if setvbuf exists
9499 set setvbuf d_setvbuf
9500 eval $inlibc
9501
9502 : see if sfio.h is available
9503 set sfio.h i_sfio
9504 eval $inhdr
9505
9506
9507 : see if sfio library is available
9508 case "$i_sfio" in
9509 $define)
9510         val=''
9511         set sfreserve val
9512         eval $inlibc
9513         ;;
9514 *)
9515         val="$undef"
9516         ;;
9517 esac
9518 : Ok, but do we want to use it.
9519 case "$val" in
9520 $define)
9521         case "$usesfio" in
9522         true|$define|[yY]*) dflt='y';;
9523         *) dflt='n';;
9524         esac
9525         echo "$package can use the sfio library, but it is experimental."
9526         rp="You seem to have sfio available, do you want to try using it?"
9527         . ./myread
9528         case "$ans" in
9529         y|Y) ;;
9530         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9531                 val="$undef"
9532                 : Remove sfio from list of libraries to use
9533                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9534                 shift
9535                 libs="$*"
9536                 echo "libs = $libs" >&4
9537                 ;;
9538         esac
9539         ;;
9540 *)      case "$usesfio" in
9541         true|$define|[yY]*)
9542                 echo "Sorry, cannot find sfio on this machine" >&4
9543                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9544                 ;;
9545         esac
9546         ;;
9547 esac
9548 set d_sfio
9549 eval $setvar
9550 case "$d_sfio" in
9551 $define) usesfio='true';;
9552 *) usesfio='false';;
9553 esac
9554
9555 : see if shmctl exists
9556 set shmctl d_shmctl
9557 eval $inlibc
9558
9559 : see if shmget exists
9560 set shmget d_shmget
9561 eval $inlibc
9562
9563 : see if shmat exists
9564 set shmat d_shmat
9565 eval $inlibc
9566 : see what shmat returns
9567 case "$d_shmat" in
9568 "$define")
9569         $cat >shmat.c <<'END'
9570 #include <sys/shm.h>
9571 void *shmat();
9572 END
9573         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9574                 shmattype='void *'
9575         else
9576                 shmattype='char *'
9577         fi
9578         echo "and it returns ($shmattype)." >&4
9579         : see if a prototype for shmat is available
9580         xxx=`./findhdr sys/shm.h`
9581         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9582         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9583                 val="$define"
9584         else
9585                 val="$undef"
9586         fi
9587         $rm -f shmat.[co]
9588         ;;
9589 *)
9590         val="$undef"
9591         ;;
9592 esac
9593 set d_shmatprototype
9594 eval $setvar
9595
9596 : see if shmdt exists
9597 set shmdt d_shmdt
9598 eval $inlibc
9599
9600 : see how much of the 'shm*(2)' library is present.
9601 h_shm=true
9602 echo " "
9603 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9604 *"$undef"*) h_shm=false;;
9605 esac
9606 case "$osname" in
9607 freebsd)
9608     case "`ipcs 2>&1`" in
9609     "SVID shared memory"*"not configured"*)
9610         echo "Your $osname does not have the shm*(2) configured." >&4
9611         h_shm=false
9612         val="$undef"
9613         set shmctl d_shmctl
9614         evat $setvar
9615         set shmget d_shmget
9616         evat $setvar
9617         set shmat d_shmat
9618         evat $setvar
9619         set shmdt d_shmdt
9620         evat $setvar
9621         ;;
9622     esac
9623     ;;
9624 esac
9625 : we could also check for sys/ipc.h ...
9626 if $h_shm && $test `./findhdr sys/shm.h`; then
9627         echo "You have the full shm*(2) library." >&4
9628         val="$define"
9629 else
9630         echo "You don't have the full shm*(2) library." >&4
9631         val="$undef"
9632 fi
9633 set d_shm
9634 eval $setvar
9635
9636 echo " "
9637 : see if we have sigaction
9638 if set sigaction val -f d_sigaction; eval $csym; $val; then
9639         echo 'sigaction() found.' >&4
9640         $cat > try.c <<'EOP'
9641 #include <stdio.h>
9642 #include <sys/types.h>
9643 #include <signal.h>
9644 main()
9645 {
9646     struct sigaction act, oact;
9647 }
9648 EOP
9649         set try
9650         if eval $compile_ok; then
9651                 val="$define"
9652         else
9653                 echo "But you don't seem to have a useable struct sigaction." >&4
9654                 val="$undef"
9655         fi
9656 else
9657         echo 'sigaction NOT found.' >&4
9658         val="$undef"
9659 fi
9660 set d_sigaction; eval $setvar
9661 $rm -f try try$_o try.c
9662
9663 : see if sigsetjmp exists
9664 echo " "
9665 case "$d_sigsetjmp" in
9666 '')
9667         $cat >try.c <<'EOP'
9668 #include <setjmp.h>
9669 sigjmp_buf env;
9670 int set = 1;
9671 main()
9672 {
9673         if (sigsetjmp(env,1))
9674                 exit(set);
9675         set = 0;
9676         siglongjmp(env, 1);
9677         exit(1);
9678 }
9679 EOP
9680         set try
9681         if eval $compile; then
9682                 if ./try >/dev/null 2>&1; then
9683                         echo "POSIX sigsetjmp found." >&4
9684                         val="$define"
9685                 else
9686                         $cat >&4 <<EOM
9687 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9688 I'll ignore them.
9689 EOM
9690                         val="$undef"
9691                 fi
9692         else
9693                 echo "sigsetjmp not found." >&4
9694                 val="$undef"
9695         fi
9696         ;;
9697 *) val="$d_sigsetjmp"
9698         case "$d_sigsetjmp" in
9699         $define) echo "POSIX sigsetjmp found." >&4;;
9700         $undef) echo "sigsetjmp not found." >&4;;
9701         esac
9702         ;;
9703 esac
9704 set d_sigsetjmp
9705 eval $setvar
9706 $rm -f try.c try
9707
9708 : see if stat knows about block sizes
9709 echo " "
9710 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9711 eval $hasfield
9712
9713 : see if _ptr and _cnt from stdio act std
9714 echo " "
9715 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9716         echo "(Looks like you have stdio.h from Linux.)"
9717         case "$stdio_ptr" in
9718         '') stdio_ptr='((fp)->_IO_read_ptr)'
9719                 ptr_lval=$define
9720                 ;;
9721         *)      ptr_lval=$d_stdio_ptr_lval;;
9722         esac
9723         case "$stdio_cnt" in
9724         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9725                 cnt_lval=$undef
9726                 ;;
9727         *)      cnt_lval=$d_stdio_cnt_lval;;
9728         esac
9729         case "$stdio_base" in
9730         '') stdio_base='((fp)->_IO_read_base)';;
9731         esac
9732         case "$stdio_bufsiz" in
9733         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9734         esac
9735 else
9736         case "$stdio_ptr" in
9737         '') stdio_ptr='((fp)->_ptr)'
9738                 ptr_lval=$define
9739                 ;;
9740         *)      ptr_lval=$d_stdio_ptr_lval;;
9741         esac
9742         case "$stdio_cnt" in
9743         '') stdio_cnt='((fp)->_cnt)'
9744                 cnt_lval=$define
9745                 ;;
9746         *)      cnt_lval=$d_stdio_cnt_lval;;
9747         esac
9748         case "$stdio_base" in
9749         '') stdio_base='((fp)->_base)';;
9750         esac
9751         case "$stdio_bufsiz" in
9752         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9753         esac
9754 fi
9755 : test whether _ptr and _cnt really work
9756 echo "Checking how std your stdio is..." >&4
9757 $cat >try.c <<EOP
9758 #include <stdio.h>
9759 #define FILE_ptr(fp)    $stdio_ptr
9760 #define FILE_cnt(fp)    $stdio_cnt
9761 main() {
9762         FILE *fp = fopen("try.c", "r");
9763         char c = getc(fp);
9764         if (
9765                 18 <= FILE_cnt(fp) &&
9766                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9767         )
9768                 exit(0);
9769         exit(1);
9770 }
9771 EOP
9772 val="$undef"
9773 set try
9774 if eval $compile; then
9775         if ./try; then
9776                 echo "Your stdio acts pretty std."
9777                 val="$define"
9778         else
9779                 echo "Your stdio isn't very std."
9780         fi
9781 else
9782         echo "Your stdio doesn't appear very std."
9783 fi
9784 $rm -f try.c try
9785 set d_stdstdio
9786 eval $setvar
9787
9788 : Can _ptr be used as an lvalue?
9789 case "$d_stdstdio$ptr_lval" in
9790 $define$define) val=$define ;;
9791 *) val=$undef ;;
9792 esac
9793 set d_stdio_ptr_lval
9794 eval $setvar
9795
9796 : Can _cnt be used as an lvalue?
9797 case "$d_stdstdio$cnt_lval" in
9798 $define$define) val=$define ;;
9799 *) val=$undef ;;
9800 esac
9801 set d_stdio_cnt_lval
9802 eval $setvar
9803
9804 : see if _base is also standard
9805 val="$undef"
9806 case "$d_stdstdio" in
9807 $define)
9808         $cat >try.c <<EOP
9809 #include <stdio.h>
9810 #define FILE_base(fp)   $stdio_base
9811 #define FILE_bufsiz(fp) $stdio_bufsiz
9812 main() {
9813         FILE *fp = fopen("try.c", "r");
9814         char c = getc(fp);
9815         if (
9816                 19 <= FILE_bufsiz(fp) &&
9817                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9818         )
9819                 exit(0);
9820         exit(1);
9821 }
9822 EOP
9823         set try
9824         if eval $compile; then
9825                 if ./try; then
9826                         echo "And its _base field acts std."
9827                         val="$define"
9828                 else
9829                         echo "But its _base field isn't std."
9830                 fi
9831         else
9832                 echo "However, it seems to be lacking the _base field."
9833         fi
9834         $rm -f try.c try
9835         ;;
9836 esac
9837 set d_stdiobase
9838 eval $setvar
9839
9840 : see if strcoll exists
9841 set strcoll d_strcoll
9842 eval $inlibc
9843
9844 : check for structure copying
9845 echo " "
9846 echo "Checking to see if your C compiler can copy structs..." >&4
9847 $cat >try.c <<'EOCP'
9848 int main()
9849 {
9850         struct blurfl {
9851                 int dyick;
9852         } foo, bar;
9853
9854         foo = bar;
9855 }
9856 EOCP
9857 if $cc -c try.c >/dev/null 2>&1 ; then
9858         val="$define"
9859         echo "Yup, it can."
9860 else
9861         val="$undef"
9862         echo "Nope, it can't."
9863 fi
9864 set d_strctcpy
9865 eval $setvar
9866 $rm -f try.*
9867
9868 : see if strerror and/or sys_errlist[] exist
9869 echo " "
9870 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9871     if set strerror val -f d_strerror; eval $csym; $val; then
9872                 echo 'strerror() found.' >&4
9873                 d_strerror="$define"
9874                 d_strerrm='strerror(e)'
9875                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9876                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9877                         d_syserrlst="$define"
9878                 else
9879                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9880                         d_syserrlst="$undef"
9881                 fi
9882     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9883                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9884                 echo 'strerror() found in string header.' >&4
9885                 d_strerror="$define"
9886                 d_strerrm='strerror(e)'
9887                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9888                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9889                                 d_syserrlst="$define"
9890                 else
9891                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9892                         d_syserrlst="$undef"
9893                 fi
9894     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9895                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9896                 d_strerror="$undef"
9897                 d_syserrlst="$define"
9898                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9899     else
9900                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9901                 d_strerror="$undef"
9902                 d_syserrlst="$undef"
9903                 d_strerrm='"unknown"'
9904     fi
9905 fi
9906
9907 : see if strtod exists
9908 set strtod d_strtod
9909 eval $inlibc
9910
9911 : see if strtol exists
9912 set strtol d_strtol
9913 eval $inlibc
9914
9915 : see if strtoul exists
9916 set strtoul d_strtoul
9917 eval $inlibc
9918
9919 : see if strxfrm exists
9920 set strxfrm d_strxfrm
9921 eval $inlibc
9922
9923 : see if symlink exists
9924 set symlink d_symlink
9925 eval $inlibc
9926
9927 : see if syscall exists
9928 set syscall d_syscall
9929 eval $inlibc
9930
9931 : see if sysconf exists
9932 set sysconf d_sysconf
9933 eval $inlibc
9934
9935 : see if system exists
9936 set system d_system
9937 eval $inlibc
9938
9939 : see if tcgetpgrp exists
9940 set tcgetpgrp d_tcgetpgrp
9941 eval $inlibc
9942
9943 : see if tcsetpgrp exists
9944 set tcsetpgrp d_tcsetpgrp
9945 eval $inlibc
9946
9947 : define an is-a-typedef? function
9948 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9949 case "$inclist" in
9950 "") inclist="sys/types.h";;
9951 esac;
9952 eval "varval=\$$var";
9953 case "$varval" in
9954 "")
9955         $rm -f temp.c;
9956         for inc in $inclist; do
9957                 echo "#include <$inc>" >>temp.c;
9958         done;
9959         echo "#ifdef $type" >> temp.c;
9960         echo "printf(\"We have $type\");" >> temp.c;
9961         echo "#endif" >> temp.c;
9962         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9963         if $contains $type temp.E >/dev/null 2>&1; then
9964                 eval "$var=\$type";
9965         else
9966                 eval "$var=\$def";
9967         fi;
9968         $rm -f temp.?;;
9969 *) eval "$var=\$varval";;
9970 esac'
9971
9972 : define an is-a-typedef? function that prompts if the type is not available.
9973 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9974 case "$inclist" in
9975 "") inclist="sys/types.h";;
9976 esac;
9977 eval "varval=\$$var";
9978 case "$varval" in
9979 "")
9980         $rm -f temp.c;
9981         for inc in $inclist; do
9982                 echo "#include <$inc>" >>temp.c;
9983         done;
9984         echo "#ifdef $type" >> temp.c;
9985         echo "printf(\"We have $type\");" >> temp.c;
9986         echo "#endif" >> temp.c;
9987         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9988         echo " " ;
9989         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9990         if $contains $type temp.E >/dev/null 2>&1; then
9991                 echo "$type found." >&4;
9992                 eval "$var=\$type";
9993         else
9994                 echo "$type NOT found." >&4;
9995                 dflt="$def";
9996                 . ./myread ;
9997                 eval "$var=\$ans";
9998         fi;
9999         $rm -f temp.?;;
10000 *) eval "$var=\$varval";;
10001 esac'
10002
10003 : see if this is a sys/times.h system
10004 set sys/times.h i_systimes
10005 eval $inhdr
10006
10007 : see if times exists
10008 echo " "
10009 if set times val -f d_times; eval $csym; $val; then
10010         echo 'times() found.' >&4
10011         d_times="$define"
10012         inc=''
10013         case "$i_systimes" in
10014         "$define") inc='sys/times.h';;
10015         esac
10016         rp="What is the type returned by times() on this system?"
10017         set clock_t clocktype long stdio.h sys/types.h $inc
10018         eval $typedef_ask
10019 else
10020         echo 'times() NOT found, hope that will do.' >&4
10021         d_times="$undef"
10022         clocktype='int'
10023 fi
10024
10025 : see if truncate exists
10026 set truncate d_truncate
10027 eval $inlibc
10028
10029 : see if tzname[] exists
10030 echo " "
10031 if set tzname val -a d_tzname; eval $csym; $val; then
10032         val="$define"
10033         echo 'tzname[] found.' >&4
10034 else
10035         val="$undef"
10036         echo 'tzname[] NOT found.' >&4
10037 fi
10038 set d_tzname
10039 eval $setvar
10040
10041 : see if umask exists
10042 set umask d_umask
10043 eval $inlibc
10044
10045 : backward compatibility for d_hvfork
10046 if test X$d_hvfork != X; then
10047         d_vfork="$d_hvfork"
10048         d_hvfork=''
10049 fi
10050 : see if there is a vfork
10051 val=''
10052 set vfork val
10053 eval $inlibc
10054
10055 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10056 : perl on Solaris 2.x, and probably elsewhere.
10057 case "$val" in
10058 $define)
10059         echo " "
10060         case "$usevfork" in
10061         false) dflt='n';;
10062         *) dflt='y';;
10063         esac
10064         rp="Some systems have problems with vfork().  Do you want to use it?"
10065         . ./myread
10066         case "$ans" in
10067         y|Y) ;;
10068         *)
10069                 echo "Ok, we won't use vfork()."
10070                 val="$undef"
10071                 ;;
10072         esac
10073         ;;
10074 esac
10075 set d_vfork
10076 eval $setvar
10077 case "$d_vfork" in
10078 $define) usevfork='true';;
10079 *) usevfork='false';;
10080 esac
10081
10082 : see if this is an sysdir system
10083 set sys/dir.h i_sysdir
10084 eval $inhdr
10085
10086 : see if this is an sysndir system
10087 set sys/ndir.h i_sysndir
10088 eval $inhdr
10089
10090 : see if sys/types.h has to be included
10091 set sys/types.h i_systypes
10092 eval $inhdr
10093
10094 : see if closedir exists
10095 set closedir d_closedir
10096 eval $inlibc
10097
10098 case "$d_closedir" in
10099 "$define")
10100         echo " "
10101         echo "Checking whether closedir() returns a status..." >&4
10102         cat > closedir.c <<EOM
10103 #$i_dirent I_DIRENT             /**/
10104 #$i_sysdir I_SYS_DIR            /**/
10105 #$i_sysndir I_SYS_NDIR          /**/
10106 #$i_systypes I_SYS_TYPES        /**/
10107
10108 #if defined(I_SYS_TYPES)
10109 #include <sys/types.h>
10110 #endif
10111 #if defined(I_DIRENT)
10112 #include <dirent.h>
10113 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10114 #include <sys/dir.h>
10115 #endif
10116 #else
10117 #ifdef I_SYS_NDIR
10118 #include <sys/ndir.h>
10119 #else
10120 #ifdef I_SYS_DIR
10121 #ifdef hp9000s500
10122 #include <ndir.h>       /* may be wrong in the future */
10123 #else
10124 #include <sys/dir.h>
10125 #endif
10126 #endif
10127 #endif
10128 #endif 
10129 int main() { return closedir(opendir(".")); }
10130 EOM
10131         set closedir
10132         if eval $compile_ok; then
10133                 if ./closedir > /dev/null 2>&1 ; then
10134                         echo "Yes, it does."
10135                         val="$undef"
10136                 else
10137                         echo "No, it doesn't."
10138                         val="$define"
10139                 fi
10140         else
10141                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10142                 val="$define"
10143         fi
10144         ;;
10145 *)
10146         val="$undef";
10147         ;;
10148 esac
10149 set d_void_closedir
10150 eval $setvar
10151 $rm -f closedir*
10152 : check for volatile keyword
10153 echo " "
10154 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10155 $cat >try.c <<'EOCP'
10156 int main()
10157 {
10158         typedef struct _goo_struct goo_struct;
10159         goo_struct * volatile goo = ((goo_struct *)0);
10160         struct _goo_struct {
10161                 long long_int;
10162                 int reg_int;
10163                 char char_var;
10164         };
10165         typedef unsigned short foo_t;
10166         char *volatile foo;
10167         volatile int bar;
10168         volatile foo_t blech;
10169         foo = foo;
10170 }
10171 EOCP
10172 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10173         val="$define"
10174         echo "Yup, it does."
10175 else
10176         val="$undef"
10177         echo "Nope, it doesn't."
10178 fi
10179 set d_volatile
10180 eval $setvar
10181 $rm -f try.*
10182
10183 : see if there is a wait4
10184 set wait4 d_wait4
10185 eval $inlibc
10186
10187 : see if waitpid exists
10188 set waitpid d_waitpid
10189 eval $inlibc
10190
10191 : see if wcstombs exists
10192 set wcstombs d_wcstombs
10193 eval $inlibc
10194
10195 : see if wctomb exists
10196 set wctomb d_wctomb
10197 eval $inlibc
10198
10199 : see if writev exists
10200 set writev d_writev
10201 eval $inlibc
10202
10203 : preserve RCS keywords in files with variable substitution, grrr
10204 Date='$Date'
10205 Id='$Id'
10206 Log='$Log'
10207 RCSfile='$RCSfile'
10208 Revision='$Revision'
10209
10210 : check for alignment requirements
10211 echo " "
10212 case "$alignbytes" in
10213 '') echo "Checking alignment constraints..." >&4
10214         $cat >try.c <<'EOCP'
10215 struct foobar {
10216         char foo;
10217         double bar;
10218 } try;
10219 main()
10220 {
10221         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10222 }
10223 EOCP
10224         set try
10225         if eval $compile_ok; then
10226                 dflt=`./try`
10227         else
10228                 dflt='8'
10229                 echo "(I can't seem to compile the test program...)"
10230         fi
10231         ;;
10232 *) dflt="$alignbytes"
10233         ;;
10234 esac
10235 rp="Doubles must be aligned on a how-many-byte boundary?"
10236 . ./myread
10237 alignbytes="$ans"
10238 $rm -f try.c try
10239
10240 : check for ordering of bytes in a long
10241 case "$byteorder" in
10242 '')
10243         $cat <<'EOM'
10244   
10245 In the following, larger digits indicate more significance.  A big-endian
10246 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10247 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10248 machines may have weird orders like 3412.  A Cray will report 87654321. If
10249 the test program works the default is probably right.
10250 I'm now running the test program...
10251 EOM
10252         $cat >try.c <<'EOCP'
10253 #include <stdio.h>
10254 main()
10255 {
10256         int i;
10257         union {
10258                 unsigned long l;
10259                 char c[sizeof(long)];
10260         } u;
10261
10262         if (sizeof(long) > 4)
10263                 u.l = (0x08070605L << 32) | 0x04030201L;
10264         else
10265                 u.l = 0x04030201L;
10266         for (i = 0; i < sizeof(long); i++)
10267                 printf("%c", u.c[i]+'0');
10268         printf("\n");
10269         exit(0);
10270 }
10271 EOCP
10272         xxx_prompt=y
10273         set try
10274         if eval $compile && ./try > /dev/null; then
10275                 dflt=`./try`
10276                 case "$dflt" in
10277                 [1-4][1-4][1-4][1-4]|12345678|87654321)
10278                         echo "(The test program ran ok.)"
10279                         echo "byteorder=$dflt"
10280                         xxx_prompt=n
10281                         ;;
10282                 ????|????????) echo "(The test program ran ok.)" ;;
10283                 *) echo "(The test program didn't run right for some reason.)" ;;
10284                 esac
10285         else
10286                 dflt='4321'
10287                 cat <<'EOM'
10288 (I can't seem to compile the test program.  Guessing big-endian...)
10289 EOM
10290         fi
10291         case "$xxx_prompt" in
10292         y)
10293                 rp="What is the order of bytes in a long?"
10294                 . ./myread
10295                 byteorder="$ans"
10296                 ;;
10297         *)      byteorder=$dflt
10298                 ;;
10299         esac
10300         ;;
10301 esac
10302 $rm -f try.c try
10303
10304 : how do we catenate cpp tokens here?
10305 echo " "
10306 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10307 $cat >cpp_stuff.c <<'EOCP'
10308 #define RCAT(a,b)a/**/b
10309 #define ACAT(a,b)a ## b
10310 RCAT(Rei,ser)
10311 ACAT(Cir,cus)
10312 EOCP
10313 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10314 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10315         echo "Oh!  Smells like ANSI's been here." >&4
10316         echo "We can catify or stringify, separately or together!"
10317         cpp_stuff=42
10318 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10319         echo "Ah, yes!  The good old days!" >&4
10320         echo "However, in the good old days we don't know how to stringify and"
10321         echo "catify at the same time."
10322         cpp_stuff=1
10323 else
10324         $cat >&4 <<EOM
10325 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10326 to have to edit the values of CAT[2-5] in config.h...
10327 EOM
10328         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10329 fi
10330 $rm -f cpp_stuff.*
10331
10332 : see if this is a db.h system
10333 set db.h i_db
10334 eval $inhdr
10335
10336 case "$i_db" in
10337 $define)
10338         : Check db version.
10339         echo " "
10340         echo "Checking Berkeley DB version ..." >&4
10341         $cat >try.c <<EOCP
10342 #$d_const HASCONST
10343 #ifndef HASCONST
10344 #define const
10345 #endif
10346 #include <sys/types.h>
10347 #include <stdio.h>
10348 #include <db.h>
10349 main()
10350 {
10351 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10352     int Major, Minor, Patch ;
10353     unsigned long Version ;
10354     (void)db_version(&Major, &Minor, &Patch) ;
10355     printf("You have Berkeley DB Version 2 or greater\n");
10356
10357     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10358                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10359     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10360                 Major, Minor, Patch) ;
10361
10362     /* check that db.h & libdb are compatible */
10363     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10364         printf("db.h and libdb are incompatible\n") ;
10365         exit(3);        
10366     }
10367
10368     printf("db.h and libdb are compatible\n") ;
10369
10370     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10371                 + DB_VERSION_PATCH ;
10372
10373     /* needs to be >= 2.3.4 */
10374     if (Version < 2003004) {
10375     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10376         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10377         exit(2);        
10378     }
10379
10380     exit(0);
10381 #else
10382 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10383     printf("You have Berkeley DB Version 1\n");
10384     exit(0);    /* DB version < 2: the coast is clear. */
10385 #else
10386     exit(1);    /* <db.h> not Berkeley DB? */
10387 #endif
10388 #endif
10389 }
10390 EOCP
10391         set try
10392         if eval $compile && ./try; then
10393                 echo 'Looks OK.' >&4
10394         else
10395                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10396                 i_db=$undef
10397                 case " $libs " in
10398                 *"-ldb "*)
10399                         : Remove db from list of libraries to use
10400                         echo "Removing unusable -ldb from library list" >&4
10401                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10402                         shift
10403                         libs="$*"
10404                         echo "libs = $libs" >&4
10405                         ;;
10406                 esac
10407         fi
10408         $rm -f try.*
10409         ;;
10410 esac
10411
10412 case "$i_db" in
10413 define)
10414         : Check the return type needed for hash 
10415         echo " "
10416         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10417         $cat >try.c <<EOCP
10418 #$d_const HASCONST
10419 #ifndef HASCONST
10420 #define const
10421 #endif
10422 #include <sys/types.h>
10423 #include <db.h>
10424
10425 #ifndef DB_VERSION_MAJOR
10426 u_int32_t hash_cb (ptr, size)
10427 const void *ptr;
10428 size_t size;
10429 {
10430 }
10431 HASHINFO info;
10432 main()
10433 {
10434         info.hash = hash_cb;
10435 }
10436 #endif
10437 EOCP
10438         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10439                 if $contains warning try.out >>/dev/null 2>&1 ; then
10440                         db_hashtype='int'
10441                 else
10442                         db_hashtype='u_int32_t'
10443                 fi
10444         else
10445                 : XXX Maybe we should just give up here.
10446                 db_hashtype=u_int32_t
10447                 $cat try.out >&4
10448                 echo "Help:  I can't seem to compile the db test program." >&4
10449                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10450         fi
10451         $rm -f try.*
10452         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10453         ;;
10454 *)      db_hashtype=u_int32_t
10455         ;;
10456 esac
10457 case "$i_db" in
10458 define)
10459         : Check the return type needed for prefix 
10460         echo " "
10461         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10462         cat >try.c <<EOCP
10463 #$d_const HASCONST
10464 #ifndef HASCONST
10465 #define const
10466 #endif
10467 #include <sys/types.h>
10468 #include <db.h>
10469
10470 #ifndef DB_VERSION_MAJOR
10471 size_t prefix_cb (key1, key2)
10472 const DBT *key1;
10473 const DBT *key2;
10474 {
10475 }
10476 BTREEINFO info;
10477 main()
10478 {
10479         info.prefix = prefix_cb;
10480 }
10481 #endif
10482 EOCP
10483         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10484                 if $contains warning try.out >>/dev/null 2>&1 ; then
10485                         db_prefixtype='int'
10486                 else
10487                         db_prefixtype='size_t'
10488                 fi
10489         else
10490                 db_prefixtype='size_t'
10491                 : XXX Maybe we should just give up here.
10492                 $cat try.out >&4
10493                 echo "Help:  I can't seem to compile the db test program." >&4
10494                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10495         fi
10496         $rm -f try.*
10497         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10498         ;;
10499 *)      db_prefixtype='size_t'
10500         ;;
10501 esac
10502
10503 : check for void type
10504 echo " "
10505 echo "Checking to see how well your C compiler groks the void type..." >&4
10506 case "$voidflags" in
10507 '')
10508         $cat >try.c <<'EOCP'
10509 #if TRY & 1
10510 void sub() {
10511 #else
10512 sub() {
10513 #endif
10514         extern void moo();      /* function returning void */
10515         void (*goo)();          /* ptr to func returning void */
10516 #if TRY & 8
10517         void *hue;              /* generic ptr */
10518 #endif
10519 #if TRY & 2
10520         void (*foo[10])();
10521 #endif
10522
10523 #if TRY & 4
10524         if(goo == moo) {
10525                 exit(0);
10526         }
10527 #endif
10528         exit(0);
10529 }
10530 main() { sub(); }
10531 EOCP
10532         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10533                 voidflags=$defvoidused
10534         echo "Good.  It appears to support void to the level $package wants.">&4
10535                 if $contains warning .out >/dev/null 2>&1; then
10536                         echo "However, you might get some warnings that look like this:"
10537                         $cat .out
10538                 fi
10539         else
10540 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10541                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10542                         echo "It supports 1..."
10543                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10544                                 echo "It also supports 2..."
10545                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10546                                         voidflags=7
10547                                         echo "And it supports 4 but not 8 definitely."
10548                                 else
10549                                         echo "It doesn't support 4..."
10550                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10551                                                 voidflags=11
10552                                                 echo "But it supports 8."
10553                                         else
10554                                                 voidflags=3
10555                                                 echo "Neither does it support 8."
10556                                         fi
10557                                 fi
10558                         else
10559                                 echo "It does not support 2..."
10560                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10561                                         voidflags=13
10562                                         echo "But it supports 4 and 8."
10563                                 else
10564                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10565                                                 voidflags=5
10566                                                 echo "And it supports 4 but has not heard about 8."
10567                                         else
10568                                                 echo "However it supports 8 but not 4."
10569                                         fi
10570                                 fi
10571                         fi
10572                 else
10573                         echo "There is no support at all for void."
10574                         voidflags=0
10575                 fi
10576         fi
10577 esac
10578 case "$voidflags" in
10579 "$defvoidused") ;;
10580 *)      $cat >&4 <<'EOM'
10581   Support flag bits are:
10582     1: basic void declarations.
10583     2: arrays of pointers to functions returning void.
10584     4: operations between pointers to and addresses of void functions.
10585     8: generic void pointers.
10586 EOM
10587         dflt="$voidflags";
10588         rp="Your void support flags add up to what?"
10589         . ./myread
10590         voidflags="$ans"
10591         ;;
10592 esac
10593 $rm -f try.* .out
10594
10595
10596 : How can we generate normalized random numbers ?
10597 echo " "
10598 echo "Looking for a random number function..." >&4
10599 case "$randfunc" in
10600 '')
10601         if set drand48 val -f; eval $csym; $val; then
10602                 dflt="drand48"
10603                 echo "Good, found drand48()." >&4
10604         elif set random val -f; eval $csym; $val; then
10605                 dflt="random"
10606                 echo "OK, found random()." >&4
10607         else
10608                 dflt="rand"
10609                 echo "Yick, looks like I have to use rand()." >&4
10610         fi
10611         echo " "
10612         ;;
10613 *)
10614         dflt="$randfunc"
10615         ;;
10616 esac
10617 cont=true
10618
10619 case "$ccflags" in
10620 *-Dmy_rand=*|*-Dmy_srand=*)
10621         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10622         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10623         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10624         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10625         ;;
10626 esac
10627
10628 while $test "$cont"; do
10629         rp="Use which function to generate random numbers?"
10630         . ./myread
10631         if $test "$ans" = "$dflt"; then
10632                 : null
10633         else
10634                 randbits=''
10635         fi
10636         randfunc="$ans"
10637         if set $ans val -f; eval $csym; $val; then
10638                 cont=''
10639         else
10640                 dflt=y
10641                 rp="I cannot find function $ans. Use that name anyway?"
10642                 . ./myread
10643                 dflt=rand
10644                 case "$ans" in
10645                         [yY]*) cont='';;
10646                 esac
10647         fi
10648         case "$cont" in
10649         '')
10650                 case "$randfunc" in
10651                 drand48)
10652                         drand01="drand48()"
10653                         seedfunc="srand48"
10654                         randbits=48
10655                         randseedtype=long
10656                         ;;
10657                 rand|random)
10658                         case "$randbits" in
10659                         '')
10660 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10661                                 $cat >try.c <<EOCP
10662 #$i_unistd I_UNISTD
10663 #$i_stdlib I_STDLIB
10664 #include <stdio.h>
10665 #ifdef I_UNISTD
10666 #  include <unistd.h>
10667 #endif
10668 #ifdef I_STDLIB
10669 #  include <stdlib.h>
10670 #endif
10671 main()
10672 {
10673         register int i;
10674         register unsigned long tmp;
10675         register unsigned long max = 0L;
10676
10677         for (i = 1000; i; i--) {
10678                 tmp = (unsigned long) $randfunc();
10679                 if (tmp > max) max = tmp;
10680         }
10681         for (i = 0; max; i++)
10682                 max /= 2;
10683         printf("%d\n",i);
10684 }
10685 EOCP
10686                                 set try
10687                                 if eval $compile_ok; then
10688                                         dflt=`try`
10689                                 else
10690                                         dflt='?'
10691                                         echo "(I can't seem to compile the test program...)"
10692                                 fi
10693                                 ;;
10694                         *)
10695                                 dflt="$randbits"
10696                                 ;;
10697                         esac
10698                         rp="How many bits does your $randfunc() function produce?"
10699                         . ./myread
10700                         randbits="$ans"
10701                         $rm -f try.c try
10702                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10703                         seedfunc="s$randfunc"
10704                         randseedtype=unsigned
10705                         ;;
10706                 *)
10707                         dflt="31"
10708                         rp="How many bits does your $randfunc() function produce?"
10709                         . ./myread
10710                         randbits="$ans"
10711                         seedfunc="s$randfunc"
10712                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10713                         if set $seedfunc val -f; eval $csym; $val; then
10714                                 echo "(Using $seedfunc() to seed random generator)"
10715                         else
10716                                 echo "(Warning: no $seedfunc() to seed random generator)"
10717                                 seedfunc=rand
10718                         fi
10719                         randseedtype=unsigned
10720                         ;;
10721                 esac
10722                 ;;
10723         esac
10724 done
10725
10726 echo " "
10727 echo "Determining whether or not we are on an EBCDIC system..." >&4
10728 $cat >tebcdic.c <<'EOM'
10729 int main()
10730 {
10731   if ('M'==0xd4) return 0;
10732   return 1;
10733 }
10734 EOM
10735
10736 val=$undef
10737 set tebcdic
10738 if eval $compile_ok; then
10739         if ./tebcdic; then
10740                 echo "You have EBCDIC." >&4
10741                 val="$define"
10742         else
10743                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10744         fi
10745 else
10746         echo "I'm unable to compile the test program." >&4
10747         echo "I'll assume ASCII or some ISO Latin." >&4
10748 fi
10749 $rm -f tebcdic.c tebcdic
10750 set ebcdic
10751 eval $setvar
10752
10753 : see what type file positions are declared as in the library
10754 rp="What is the type for file position used by fsetpos()?"
10755 set fpos_t fpostype long stdio.h sys/types.h
10756 eval $typedef_ask
10757
10758 : Store the full pathname to the sed program for use in the C program
10759 full_sed=$sed
10760
10761 : see what type gids are declared as in the kernel
10762 echo " "
10763 echo "Looking for the type for group ids returned by getgid()."
10764 set gid_t gidtype xxx stdio.h sys/types.h
10765 eval $typedef
10766 case "$gidtype" in
10767 xxx)
10768         xxx=`./findhdr sys/user.h`
10769         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10770         case $1 in
10771         unsigned) dflt="$1 $2" ;;
10772         *) dflt="$1" ;;
10773         esac
10774         ;;
10775 *) dflt="$gidtype";;
10776 esac
10777 case "$gidtype" in
10778 gid_t) echo "gid_t found." ;;
10779 *)      rp="What is the type for group ids returned by getgid()?"
10780         . ./myread
10781         gidtype="$ans"
10782         ;;
10783 esac
10784
10785 : see if getgroups exists
10786 set getgroups d_getgrps
10787 eval $inlibc
10788
10789 : see if setgroups exists
10790 set setgroups d_setgrps
10791 eval $inlibc
10792
10793
10794 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10795 echo " "
10796 case "$d_getgrps$d_setgrps" in
10797 *define*)
10798         case "$groupstype" in
10799         '') dflt="$gidtype" ;;
10800         *)  dflt="$groupstype" ;;
10801         esac
10802         $cat <<EOM
10803 What type of pointer is the second argument to getgroups() and setgroups()?
10804 Usually this is the same as group ids, $gidtype, but not always.
10805
10806 EOM
10807         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10808         . ./myread
10809         groupstype="$ans"
10810         ;;
10811 *)  groupstype="$gidtype";;
10812 esac
10813
10814 : see what type lseek is declared as in the kernel
10815 rp="What is the type used for lseek's offset on this system?"
10816 set off_t lseektype long stdio.h sys/types.h
10817 eval $typedef_ask
10818
10819 echo " "
10820 $echo $n "Checking to see how big your file offsets are...$c" >&4
10821 $cat >try.c <<EOCP
10822 #include <sys/types.h>
10823 #include <stdio.h>
10824 int main()
10825 {
10826         printf("%d\n", sizeof($lseektype));
10827 }
10828 EOCP
10829 set try
10830 if eval $compile_ok; then
10831         lseeksize=`./try`
10832         $echo " $lseeksize bytes." >&4
10833 else
10834         dflt='4'
10835         echo " "
10836         echo "(I can't seem to compile the test program.  Guessing...)"
10837         rp="What is the size of your file offsets (in bytes)?"
10838         . ./myread
10839         lseeksize="$ans"
10840 fi
10841 $rm -f try.c try
10842
10843 echo " "
10844 echo "Checking if your $make program sets \$(MAKE)..." >&4
10845 case "$make_set_make" in
10846 '')
10847         $sed 's/^X //' > testmake.mak << 'EOF'
10848 Xall:
10849 X       @echo 'maketemp="$(MAKE)"'
10850 EOF
10851         case "`$make -f testmake.mak 2>/dev/null`" in
10852         *maketemp=*) make_set_make='#' ;;
10853         *)      make_set_make="MAKE=$make" ;;
10854         esac
10855         $rm -f testmake.mak
10856         ;;
10857 esac
10858 case "$make_set_make" in
10859 '#') echo "Yup, it does.";;
10860 *) echo "Nope, it doesn't.";;
10861 esac
10862
10863 : see what type is used for mode_t
10864 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10865 set mode_t modetype int stdio.h sys/types.h
10866 eval $typedef_ask
10867
10868 : define a fucntion to check prototypes
10869 $cat > protochk <<EOSH
10870 $startsh
10871 cc="$cc"
10872 optimize="$optimize"
10873 ccflags="$ccflags"
10874 prototype="$prototype"
10875 define="$define"
10876 rm=$rm
10877 EOSH
10878
10879 $cat >> protochk <<'EOSH'
10880
10881 $rm -f try.c
10882 foo="$1"
10883 shift
10884 while test $# -ge 2; do
10885         case "$1" in
10886                 $define) echo "#include <$2>" >> try.c ;;
10887                 literal) echo "$2" >> try.c ;;
10888         esac
10889     shift 2
10890 done
10891 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
10892 cat >> try.c <<'EOCP'
10893 #ifdef CAN_PROTOTYPE
10894 #define _(args) args
10895 #else
10896 #define _(args) ()
10897 #endif
10898 EOCP
10899 echo "$foo" >> try.c
10900 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10901 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10902 status=$?
10903 $rm -f try.[co]
10904 exit $status
10905 EOSH
10906 chmod +x protochk
10907 $eunicefix protochk
10908
10909 : see what type is used for size_t
10910 rp="What is the type used for the length parameter for string functions?"
10911 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10912 eval $typedef_ask
10913
10914 : check for type of arguments to gethostbyaddr. 
10915 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10916         case "$d_gethbyaddr" in
10917         $define)
10918                 $cat <<EOM
10919
10920 Checking to see what type of arguments are accepted by gethostbyaddr().
10921 EOM
10922                 hdrs="$define sys/types.h
10923                         $d_socket sys/socket.h 
10924                         $i_niin netinet/in.h 
10925                         $i_netdb netdb.h
10926                         $i_unistd unistd.h"
10927                 : The first arg can 'char *' or 'void *'
10928                 : The second arg is some of integral type
10929                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10930                         for yyy in size_t long int; do
10931                                 case "$netdb_host_type" in
10932                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10933                                         if ./protochk "$try" $hdrs; then
10934                                                 echo "Your system accepts $xxx for the first arg."
10935                                                 echo "...and $yyy for the second arg."
10936                                                 netdb_host_type="$xxx"
10937                                                 netdb_hlen_type="$yyy"
10938                                         fi
10939                                         ;;
10940                                 esac
10941                         done
10942                 done
10943                 : In case none of those worked, prompt the user.
10944                 case "$netdb_host_type" in
10945                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
10946                         dflt='char *'
10947                         . ./myread
10948                         netdb_host_type=$ans
10949                         rp='What is the type for the 2nd argument to gethostbyaddr?'
10950                         dflt="$sizetype"
10951                         . ./myread
10952                         netdb_hlen_type=$ans
10953                         ;;
10954                 esac
10955                 ;;
10956         *)      : no gethostbyaddr, so pick harmless defaults
10957                 netdb_host_type='char *'
10958                 netdb_hlen_type="$sizetype"
10959                 ;;
10960         esac
10961         # Remove the "const" if needed. -- but then we'll have a 
10962         # prototype clash!
10963         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10964 fi
10965
10966 : check for type of argument to gethostbyname. 
10967 if test "X$netdb_name_type" = X ; then
10968         case "$d_gethbyname" in
10969         $define)
10970                 $cat <<EOM
10971
10972 Checking to see what type of argument is accepted by gethostbyname().
10973 EOM
10974                 hdrs="$define sys/types.h
10975                         $d_socket sys/socket.h 
10976                         $i_niin netinet/in.h 
10977                         $i_netdb netdb.h
10978                         $i_unistd unistd.h"
10979                 for xxx in "const char *" "char *"; do
10980                         case "$netdb_name_type" in
10981                         '')     try="extern struct hostent *gethostbyname($xxx);"
10982                                 if ./protochk "$try" $hdrs; then
10983                                         echo "Your system accepts $xxx."
10984                                         netdb_name_type="$xxx"
10985                                 fi
10986                                 ;;
10987                         esac
10988                 done
10989                 : In case none of those worked, prompt the user.
10990                 case "$netdb_name_type" in
10991                 '')     rp='What is the type for the 1st argument to gethostbyname?'
10992                         dflt='char *'
10993                         . ./myread
10994                         netdb_name_type=$ans
10995                         ;;
10996                 esac
10997                 ;;
10998         *)      : no gethostbyname, so pick harmless default
10999                 netdb_name_type='char *'
11000                 ;;
11001         esac
11002 fi
11003
11004 : check for type of 1st argument to getnetbyaddr. 
11005 if test "X$netdb_net_type" = X ; then
11006         case "$d_getnbyaddr" in
11007         $define)
11008                 $cat <<EOM
11009
11010 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11011 EOM
11012                 hdrs="$define sys/types.h
11013                         $d_socket sys/socket.h 
11014                         $i_niin netinet/in.h 
11015                         $i_netdb netdb.h
11016                         $i_unistd unistd.h"
11017                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11018                         case "$netdb_net_type" in
11019                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11020                                 if ./protochk "$try" $hdrs; then
11021                                         echo "Your system accepts $xxx."
11022                                         netdb_net_type="$xxx"
11023                                 fi
11024                                 ;;
11025                         esac
11026                 done
11027                 : In case none of those worked, prompt the user.
11028                 case "$netdb_net_type" in
11029                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11030                         dflt='long'
11031                         . ./myread
11032                         netdb_net_type=$ans
11033                         ;;
11034                 esac
11035                 ;;
11036         *)      : no getnetbyaddr, so pick harmless default
11037                 netdb_net_type='long'
11038                 ;;
11039         esac
11040 fi
11041 : locate the preferred pager for this system
11042 case "$pager" in
11043 '')
11044         dflt=''
11045         case "$pg" in
11046         /*) dflt=$pg;;
11047         esac
11048         case "$more" in
11049         /*) dflt=$more;;
11050         esac
11051         case "$less" in
11052         /*) dflt=$less;;
11053         esac
11054         case "$dflt" in
11055         '') dflt=/usr/ucb/more;;
11056         esac
11057         ;;
11058 *) dflt="$pager";;
11059 esac
11060 echo " "
11061 fn=f/
11062 rp='What pager is used on your system?'
11063 . ./getfile
11064 pager="$ans"
11065
11066 : see what type pids are declared as in the kernel
11067 rp="What is the type of process ids on this system?"
11068 set pid_t pidtype int stdio.h sys/types.h
11069 eval $typedef_ask
11070
11071 : check for length of pointer
11072 echo " "
11073 case "$ptrsize" in
11074 '')
11075         $echo $n "Checking to see how big your pointers are...$c" >&4
11076         if test "$voidflags" -gt 7; then
11077                 echo '#define VOID_PTR char *' > try.c
11078         else
11079                 echo '#define VOID_PTR void *' > try.c
11080         fi
11081         $cat >>try.c <<'EOCP'
11082 #include <stdio.h>
11083 main()
11084 {
11085         printf("%d\n", sizeof(VOID_PTR));
11086         exit(0);
11087 }
11088 EOCP
11089         set try
11090         if eval $compile_ok; then
11091                 ptrsize=`./try`
11092                 $echo " $ptrsize bytes." >&4
11093         else
11094                 dflt='4'
11095                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11096                 rp="What is the size of a pointer (in bytes)?"
11097                 . ./myread
11098                 ptrsize="$ans"
11099         fi
11100         ;;
11101 esac
11102 $rm -f try.c try
11103
11104 : see if ar generates random libraries by itself
11105 echo " "
11106 echo "Checking how to generate random libraries on your machine..." >&4
11107 echo 'int bar1() { return bar2(); }' > bar1.c
11108 echo 'int bar2() { return 2; }' > bar2.c
11109 $cat > foo.c <<'EOP'
11110 main() { printf("%d\n", bar1()); exit(0); }
11111 EOP
11112 $cc $ccflags -c bar1.c >/dev/null 2>&1
11113 $cc $ccflags -c bar2.c >/dev/null 2>&1
11114 $cc $ccflags -c foo.c >/dev/null 2>&1
11115 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11116 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11117         ./foobar >/dev/null 2>&1; then
11118         echo "$ar appears to generate random libraries itself."
11119         orderlib=false
11120         ranlib=":"
11121 elif $ar ts bar$_a >/dev/null 2>&1 &&
11122         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11123         ./foobar >/dev/null 2>&1; then
11124                 echo "a table of contents needs to be added with '$ar ts'."
11125                 orderlib=false
11126                 ranlib="$ar ts"
11127 else
11128         case "$ranlib" in
11129         :) ranlib='';;
11130         '')
11131                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11132                 $test -f $ranlib || ranlib=''
11133                 ;;
11134         esac
11135         if $test -n "$ranlib"; then
11136                 echo "your system has '$ranlib'; we'll use that."
11137                 orderlib=false
11138         else
11139                 echo "your system doesn't seem to support random libraries"
11140                 echo "so we'll use lorder and tsort to order the libraries."
11141                 orderlib=true
11142                 ranlib=":"
11143         fi
11144 fi
11145 $rm -f foo* bar* 
11146
11147 : check for type of arguments to select. 
11148 case "$selecttype" in
11149 '') case "$d_select" in
11150         $define)
11151                 $cat <<EOM
11152 Checking to see what type of arguments are accepted by select().
11153 EOM
11154                 hdrs="$define sys/types.h
11155                         $i_systime sys/time.h 
11156                         $i_sysselct sys/select.h
11157                         $d_socket sys/socket.h"
11158                 : The first arg can be int, unsigned, or size_t
11159                 : The last arg may or may not be 'const'
11160                 val=''
11161                 : void pointer has been seen but using that
11162                 : breaks the selectminbits test
11163                 for xxx in 'fd_set *' 'int *'; do
11164                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11165                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11166                                         case "$val" in
11167                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11168                                                 if ./protochk "$try" $hdrs; then
11169                                                         echo "Your system accepts $xxx."
11170                                                         val="$xxx"
11171                                                 fi
11172                                                 ;;
11173                                         esac
11174                                 done
11175                         done
11176                 done
11177                 case "$val" in
11178                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11179                         case "$d_fd_set" in
11180                                 $define) dflt="fd_set *" ;;
11181                                 *)              dflt="int *" ;;
11182                         esac
11183                         . ./myread
11184                         val=$ans
11185                         ;;
11186                 esac
11187                 selecttype="$val"
11188                 ;;
11189         *)      : no select, so pick a harmless default
11190                 selecttype='int *'
11191                 ;;
11192         esac
11193         ;;
11194 esac
11195
11196 : check for the select 'width'
11197 case "$selectminbits" in
11198 '') case "$d_select" in
11199         $define)
11200                 $cat <<EOM
11201
11202 Checking to see on how many bits at a time your select() operates...
11203 EOM
11204                 $cat >try.c <<EOCP
11205 #include <sys/types.h>
11206 #$i_time I_TIME
11207 #$i_systime I_SYS_TIME
11208 #$i_systimek I_SYS_TIME_KERNEL
11209 #ifdef I_TIME
11210 #   include <time.h>
11211 #endif
11212 #ifdef I_SYS_TIME
11213 #   ifdef I_SYS_TIME_KERNEL
11214 #       define KERNEL
11215 #   endif
11216 #   include <sys/time.h>
11217 #   ifdef I_SYS_TIME_KERNEL
11218 #       undef KERNEL
11219 #   endif
11220 #endif
11221 #$i_sysselct I_SYS_SELECT
11222 #ifdef I_SYS_SELECT
11223 #include <sys/select.h>
11224 #endif
11225 #include <stdio.h>
11226 $selecttype b;
11227 #define S sizeof(*(b))
11228 #define MINBITS 64
11229 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11230 #define NBITS  (NBYTES * 8)
11231 int main() {
11232     char s[NBYTES];
11233     struct timeval t;
11234     int i;
11235     FILE* fp;
11236     int fd;
11237
11238     fclose(stdin);
11239     fp = fopen("try.c", "r");
11240     if (fp == 0)
11241       exit(1);
11242     fd = fileno(fp);
11243     if (fd < 0)
11244       exit(2);
11245     b = ($selecttype)s;
11246     for (i = 0; i < NBITS; i++)
11247         FD_SET(i, b);
11248     t.tv_sec  = 0;
11249     t.tv_usec = 0;
11250     select(fd + 1, b, 0, 0, &t);
11251     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11252     printf("%d\n", i + 1);
11253     return 0;
11254 }
11255 EOCP
11256                 set try
11257                 if eval $compile_ok; then
11258                         selectminbits=`./try`
11259                         case "$selectminbits" in
11260                         '')     cat >&4 <<EOM
11261 Cannot figure out on how many bits at a time your select() operates.
11262 I'll play safe and guess it is 32 bits.
11263 EOM
11264                                 selectminbits=32
11265                                 bits="32 bits"
11266                                 ;;
11267                         1)      bits="1 bit" ;;
11268                         *)      bits="$selectminbits bits" ;;
11269                         esac
11270                         echo "Your select() operates on $bits at a time." >&4
11271                 else
11272                         rp='What is the minimum number of bits your select() operates on?'
11273                         case "$byteorder" in
11274                         1234|12345678)  dflt=32 ;;
11275                         *)              dflt=1  ;;
11276                         esac
11277                         . ./myread
11278                         val=$ans
11279                         selectminbits="$val"
11280                 fi
11281                 $rm -f try.* try
11282                 ;;
11283         *)      : no select, so pick a harmless default
11284                 selectminbits='32'
11285                 ;;
11286         esac
11287         ;;
11288 esac
11289
11290 : Trace out the files included by signal.h, then look for SIGxxx names.
11291 : Remove SIGARRAYSIZE used by HPUX.
11292 : Remove SIGTYP void lines used by OS2.
11293 xxx=`echo '#include <signal.h>' |
11294         $cppstdin $cppminus $cppflags 2>/dev/null |
11295         $grep '^[       ]*#.*include' | 
11296         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11297 : Check this list of files to be sure we have parsed the cpp output ok.
11298 : This will also avoid potentially non-existent files, such 
11299 : as ../foo/bar.h
11300 xxxfiles=''
11301 for xx in $xxx /dev/null ; do
11302         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11303 done
11304 : If we have found no files, at least try signal.h
11305 case "$xxxfiles" in
11306 '')     xxxfiles=`./findhdr signal.h` ;;
11307 esac
11308 xxx=`awk '
11309 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11310         print substr($2, 4, 20)
11311 }
11312 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11313         print substr($3, 4, 20)
11314 }' $xxxfiles`
11315 : Append some common names just in case the awk scan failed.
11316 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11317 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11318 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11319 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11320 : generate a few handy files for later
11321 $cat > signal.c <<'EOCP'
11322 #include <sys/types.h>
11323 #include <signal.h>
11324 #include <stdio.h>
11325 int main() {
11326
11327 /* Strange style to avoid deeply-nested #if/#else/#endif */
11328 #ifndef NSIG
11329 #  ifdef _NSIG
11330 #    define NSIG (_NSIG)
11331 #  endif
11332 #endif
11333
11334 #ifndef NSIG
11335 #  ifdef SIGMAX
11336 #    define NSIG (SIGMAX+1)
11337 #  endif
11338 #endif
11339
11340 #ifndef NSIG
11341 #  ifdef SIG_MAX
11342 #    define NSIG (SIG_MAX+1)
11343 #  endif
11344 #endif
11345
11346 #ifndef NSIG
11347 #  ifdef MAXSIG
11348 #    define NSIG (MAXSIG+1)
11349 #  endif
11350 #endif
11351
11352 #ifndef NSIG
11353 #  ifdef MAX_SIG
11354 #    define NSIG (MAX_SIG+1)
11355 #  endif
11356 #endif
11357
11358 #ifndef NSIG
11359 #  ifdef SIGARRAYSIZE
11360 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11361 #  endif
11362 #endif
11363
11364 #ifndef NSIG
11365 #  ifdef _sys_nsig
11366 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11367 #  endif
11368 #endif
11369
11370 /* Default to some arbitrary number that's big enough to get most
11371    of the common signals.
11372 */
11373 #ifndef NSIG
11374 #    define NSIG 50
11375 #endif
11376
11377 printf("NSIG %d\n", NSIG);
11378
11379 #ifndef JUST_NSIG
11380
11381 EOCP
11382
11383 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11384 {
11385         printf "#ifdef SIG"; printf $1; printf "\n"
11386         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11387         printf $1; printf ");\n"
11388         printf "#endif\n"
11389 }
11390 END {
11391         printf "#endif /* JUST_NSIG */\n";
11392         printf "}\n";
11393 }
11394 ' >>signal.c
11395 $cat >signal.awk <<'EOP'
11396 BEGIN { ndups = 0 }
11397 $1 ~ /^NSIG$/ { nsig = $2 }
11398 ($1 !~ /^NSIG$/) && (NF == 2) {
11399     if ($2 > maxsig) { maxsig = $2 }
11400     if (sig_name[$2]) {
11401         dup_name[ndups] = $1
11402         dup_num[ndups] = $2
11403         ndups++ 
11404     }
11405     else {
11406         sig_name[$2] = $1
11407         sig_num[$2] = $2
11408     }
11409
11410 }
11411 END { 
11412     if (nsig == 0) { nsig = maxsig + 1 }
11413         for (n = 1; n < nsig; n++) {
11414                 if (sig_name[n]) {
11415                         printf("%s %d\n", sig_name[n], sig_num[n])
11416                 }
11417                 else {
11418                         printf("NUM%d %d\n", n, n) 
11419                 }
11420         }
11421     for (n = 0; n < ndups; n++) {
11422                 printf("%s %d\n", dup_name[n], dup_num[n])
11423     }
11424 }
11425 EOP
11426 $cat >signal_cmd <<EOS
11427 $startsh
11428 if $test -s signal.lst; then
11429     echo "Using your existing signal.lst file"
11430         exit 0
11431 fi
11432 xxx="$xxx"
11433 EOS
11434 $cat >>signal_cmd <<'EOS'
11435
11436 set signal
11437 if eval $compile_ok; then
11438         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11439 else
11440         echo "(I can't seem be able to compile the whole test program)" >&4
11441         echo "(I'll try it in little pieces.)" >&4
11442         set signal -DJUST_NSIG
11443         if eval $compile_ok; then
11444                 ./signal$_exe > signal.nsg
11445                 $cat signal.nsg
11446         else
11447                 echo "I can't seem to figure out how many signals you have." >&4
11448                 echo "Guessing 50." >&4
11449                 echo 'NSIG 50' > signal.nsg
11450         fi
11451         : Now look at all the signal names, one at a time.
11452         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11453                 $cat > signal.c <<EOCP
11454 #include <sys/types.h>
11455 #include <signal.h>
11456 #include <stdio.h>
11457 int main() {
11458 printf("$xx %d\n", SIG${xx});
11459 return 0;
11460 }
11461 EOCP
11462                 set signal
11463                 if eval $compile; then
11464                         echo "SIG${xx} found."
11465                         ./signal$_exe  >> signal.ls1
11466                 else
11467                         echo "SIG${xx} NOT found."
11468                 fi
11469         done
11470         if $test -s signal.ls1; then
11471                 $cat signal.nsg signal.ls1 |
11472                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11473         fi
11474
11475 fi
11476 if $test -s signal.lst; then
11477         :
11478 else
11479         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11480         echo 'kill -l' >signal
11481         set X `csh -f <signal`
11482         $rm -f signal
11483         shift
11484         case $# in
11485         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11486         esac
11487         echo $@ | $tr ' ' $trnl | \
11488                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11489 fi
11490 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11491 EOS
11492 chmod a+x signal_cmd
11493 $eunicefix signal_cmd
11494
11495 : generate list of signal names
11496 echo " "
11497 case "$sig_name_init" in
11498 '') doinit=yes ;;
11499 *)  case "$sig_num_init" in
11500     ''|*,*) doinit=yes ;;
11501     esac ;;
11502 esac
11503 case "$doinit" in
11504 yes)
11505         echo "Generating a list of signal names and numbers..." >&4
11506         . ./signal_cmd
11507         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11508         sig_name="ZERO $sig_name"
11509         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11510                                                 { printf "\"%s\", ", $1 }
11511                                                 END { printf "0\n" }' signal.lst`
11512         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11513         sig_num="0 $sig_num"
11514         sig_num_init=`$awk 'BEGIN { printf "0, " }
11515                                         { printf "%d, ", $2}
11516                                         END { printf "0\n"}' signal.lst`
11517         ;;
11518 esac
11519 echo "The following signals are available:"
11520 echo " "
11521 echo $sig_name | $awk \
11522 'BEGIN { linelen = 0 }
11523 {
11524         for (i = 1; i <= NF; i++) {
11525                 name = "SIG" $i " "
11526                 linelen = linelen + length(name)
11527                 if (linelen > 70) {
11528                         printf "\n"
11529                         linelen = length(name)
11530                 }
11531                 printf "%s", name
11532         }
11533         printf "\n"
11534 }'
11535 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11536
11537 : see what type is used for signed size_t
11538 set ssize_t ssizetype int stdio.h sys/types.h
11539 eval $typedef
11540 dflt="$ssizetype"
11541 $cat > ssize.c <<EOM
11542 #include <stdio.h>
11543 #include <sys/types.h>
11544 #define Size_t $sizetype
11545 #define SSize_t $dflt
11546 main()
11547 {
11548         if (sizeof(Size_t) == sizeof(SSize_t))
11549                 printf("$dflt\n");
11550         else if (sizeof(Size_t) == sizeof(int))
11551                 printf("int\n");
11552         else 
11553                 printf("long\n");
11554         exit(0);
11555 }
11556 EOM
11557 echo " "
11558 set ssize
11559 if eval $compile_ok && ./ssize > /dev/null; then
11560         ssizetype=`./ssize`
11561         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11562 else
11563         $cat >&4 <<EOM
11564 Help! I can't compile and run the ssize_t test program: please enlighten me!
11565 (This is probably a misconfiguration in your system or libraries, and
11566 you really ought to fix it.  Still, I'll try anyway.)
11567
11568 I need a type that is the same size as $sizetype, but is guaranteed to
11569 be signed.  Common values are ssize_t, int and long.
11570
11571 EOM
11572         rp="What signed type is the same size as $sizetype?"
11573         . ./myread
11574         ssizetype="$ans"
11575 fi
11576 $rm -f ssize ssize.*
11577
11578 : see what type of char stdio uses.
11579 echo " "
11580 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11581         echo "Your stdio uses unsigned chars." >&4
11582         stdchar="unsigned char"
11583 else
11584         echo "Your stdio uses signed chars." >&4
11585         stdchar="char"
11586 fi
11587
11588 : see if time exists
11589 echo " "
11590 if test "X$d_time" = X -o X"$timetype" = X; then
11591     if set time val -f d_time; eval $csym; $val; then
11592                 echo 'time() found.' >&4
11593                 val="$define"
11594                 rp="What is the type returned by time() on this system?"
11595                 set time_t timetype long stdio.h sys/types.h
11596                 eval $typedef_ask
11597     else
11598                 echo 'time() not found, hope that will do.' >&4
11599                 val="$undef"
11600                 timetype='int';
11601     fi
11602     set d_time
11603     eval $setvar
11604 fi
11605
11606 : see what type uids are declared as in the kernel
11607 echo " "
11608 echo "Looking for the type for user ids returned by getuid()."
11609 set uid_t uidtype xxx stdio.h sys/types.h
11610 eval $typedef
11611 case "$uidtype" in
11612 xxx)
11613         xxx=`./findhdr sys/user.h`
11614         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11615         case $1 in
11616         unsigned) dflt="$1 $2" ;;
11617         *) dflt="$1" ;;
11618         esac
11619         ;;
11620 *) dflt="$uidtype";;
11621 esac
11622 case "$uidtype" in
11623 uid_t)  echo "uid_t found." ;;
11624 *)      rp="What is the type for user ids returned by getuid()?"
11625         . ./myread
11626         uidtype="$ans"
11627         ;;
11628 esac
11629
11630 : see if dbm.h is available
11631 : see if dbmclose exists
11632 set dbmclose d_dbmclose
11633 eval $inlibc
11634
11635 case "$d_dbmclose" in
11636 $define)
11637         set dbm.h i_dbm
11638         eval $inhdr
11639         case "$i_dbm" in
11640         $define)
11641                 val="$undef"
11642                 set i_rpcsvcdbm
11643                 eval $setvar
11644                 ;;
11645         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11646                 eval $inhdr
11647                 ;;
11648         esac
11649         ;;
11650 *)      echo "We won't be including <dbm.h>"
11651         val="$undef"
11652         set i_dbm
11653         eval $setvar
11654         val="$undef"
11655         set i_rpcsvcdbm
11656         eval $setvar
11657         ;;
11658 esac
11659
11660 : see if this is a sys/file.h system
11661 val=''
11662 set sys/file.h val
11663 eval $inhdr
11664
11665 : do we need to include sys/file.h ?
11666 case "$val" in
11667 "$define")
11668         echo " "
11669         if $h_sysfile; then
11670                 val="$define"
11671                 echo "We'll be including <sys/file.h>." >&4
11672         else
11673                 val="$undef"
11674                 echo "We won't be including <sys/file.h>." >&4
11675         fi
11676         ;;
11677 *)
11678         h_sysfile=false
11679         ;;
11680 esac
11681 set i_sysfile
11682 eval $setvar
11683
11684 : see if fcntl.h is there
11685 val=''
11686 set fcntl.h val
11687 eval $inhdr
11688
11689 : see if we can include fcntl.h
11690 case "$val" in
11691 "$define")
11692         echo " "
11693         if $h_fcntl; then
11694                 val="$define"
11695                 echo "We'll be including <fcntl.h>." >&4
11696         else
11697                 val="$undef"
11698                 if $h_sysfile; then
11699         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11700                 else
11701                         echo "We won't be including <fcntl.h>." >&4
11702                 fi
11703         fi
11704         ;;
11705 *)
11706         h_fcntl=false
11707         val="$undef"
11708         ;;
11709 esac
11710 set i_fcntl
11711 eval $setvar
11712
11713 : see if locale.h is available
11714 set locale.h i_locale
11715 eval $inhdr
11716
11717 : see if mach cthreads are available
11718 if test "X$usethreads" = "X$define"; then
11719         set mach/cthreads.h i_machcthr
11720         eval $inhdr
11721 else
11722         i_machcthr="$undef"
11723 fi
11724
11725
11726
11727 : see if this is a math.h system
11728 set math.h i_math
11729 eval $inhdr
11730
11731 : see if this is a mntent.h system
11732 set mntent.h i_mntent
11733 eval $inhdr
11734
11735 : see if ndbm.h is available
11736 set ndbm.h t_ndbm
11737 eval $inhdr
11738 case "$t_ndbm" in
11739 $define)
11740         : see if dbm_open exists
11741         set dbm_open d_dbm_open
11742         eval $inlibc
11743         case "$d_dbm_open" in
11744         $undef)
11745                 t_ndbm="$undef"
11746                 echo "We won't be including <ndbm.h>"
11747                 ;;
11748         esac
11749         ;;
11750 esac
11751 val="$t_ndbm"
11752 set i_ndbm
11753 eval $setvar
11754
11755 : see if net/errno.h is available
11756 val=''
11757 set net/errno.h val
11758 eval $inhdr
11759
11760 : Unfortunately, it causes problems on some systems.  Arrgh.
11761 case "$val" in
11762 $define)
11763         cat > try.c <<'EOM'
11764 #include <stdio.h>
11765 #include <errno.h>
11766 #include <net/errno.h>
11767 int func()
11768 {
11769         return ENOTSOCK;
11770 }
11771 EOM
11772         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11773                 echo "We'll be including <net/errno.h>." >&4
11774         else
11775                 echo "We won't be including <net/errno.h>." >&4
11776                 val="$undef"
11777         fi
11778         $rm -f try.* try
11779         ;;
11780 esac
11781 set i_neterrno
11782 eval $setvar
11783
11784 : see if this is a poll.h system
11785 set poll.h i_poll
11786 eval $inhdr
11787
11788 : get C preprocessor symbols handy
11789 echo " "
11790 $echo $n "Hmm... $c"
11791 echo $al | $tr ' ' $trnl >Cppsym.know
11792 $cat <<EOSS >Cppsym
11793 $startsh
11794 case "\$1" in
11795 -l) list=true
11796         shift
11797         ;;
11798 esac
11799 unknown=''
11800 case "\$list\$#" in
11801 1|2)
11802         for sym do
11803                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11804                         exit 0
11805                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11806                         :
11807                 else
11808                         unknown="\$unknown \$sym"
11809                 fi
11810         done
11811         set X \$unknown
11812         shift
11813         ;;
11814 esac
11815 case \$# in
11816 0) exit 1;;
11817 esac
11818 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11819 #ifdef \1\\
11820 exit 0; _ _ _ _\1\\      \1\\
11821 #endif\\
11822 /' >Cppsym\$\$
11823 echo "exit 1; _ _ _" >>Cppsym\$\$
11824 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11825 case "\$list" in
11826 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11827 *)
11828         sh Cppsym2\$\$
11829         status=\$?
11830         ;;
11831 esac
11832 $rm -f Cppsym\$\$ Cppsym2\$\$
11833 exit \$status
11834 EOSS
11835 chmod +x Cppsym
11836 $eunicefix Cppsym
11837 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11838
11839 : now check the C compiler for additional symbols
11840 $cat >ccsym <<EOS
11841 $startsh
11842 $cat >tmp.c <<EOF
11843 extern int foo;
11844 EOF
11845 for i in \`$cc -v -c tmp.c 2>&1\`
11846 do
11847         case "\$i" in
11848         -D*) echo "\$i" | $sed 's/^-D//';;
11849         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11850         esac
11851 done
11852 $rm -f try.c
11853 EOS
11854 chmod +x ccsym
11855 $eunicefix ccsym
11856 ./ccsym > ccsym1.raw
11857 if $test -s ccsym1.raw; then
11858        $sort ccsym1.raw | $uniq >ccsym.raw
11859 else
11860        mv ccsym1.raw ccsym.raw
11861 fi
11862
11863 $awk '/\=/ { print $0; next }
11864         { print $0"=1" }' ccsym.raw >ccsym.list
11865 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11866 $comm -13 ccsym.true ccsym.list >ccsym.own
11867 $comm -12 ccsym.true ccsym.list >ccsym.com
11868 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11869 also=''
11870 symbols='symbols'
11871 if $test -z ccsym.raw; then
11872         echo "Your C compiler doesn't seem to define any symbol!" >&4
11873         echo " "
11874         echo "However, your C preprocessor defines the following ones:"
11875         $cat Cppsym.true
11876 else
11877         if $test -s ccsym.com; then
11878                 echo "Your C compiler and pre-processor define these symbols:"
11879                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11880                 also='also '
11881                 symbols='ones'
11882                 $test "$silent" || sleep 1
11883         fi
11884         if $test -s ccsym.cpp; then
11885                 $test "$also" && echo " "
11886                 echo "Your C pre-processor ${also}defines the following $symbols:"
11887                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11888                 also='further '
11889                 $test "$silent" || sleep 1
11890         fi
11891         if $test -s ccsym.own; then
11892                 $test "$also" && echo " "
11893                 echo "Your C compiler ${also}defines the following cpp variables:"
11894                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11895                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11896                 $test "$silent" || sleep 1
11897         fi
11898 fi
11899 $rm -f ccsym*
11900
11901 : see if this is a termio system
11902 val="$undef"
11903 val2="$undef"
11904 val3="$undef"
11905 if $test `./findhdr termios.h`; then
11906         set tcsetattr i_termios
11907         eval $inlibc
11908         val3="$i_termios"
11909 fi
11910 echo " "
11911 case "$val3" in
11912 "$define") echo "You have POSIX termios.h... good!" >&4;;
11913 *) if ./Cppsym pyr; then
11914                 case "`/bin/universe`" in
11915                 ucb) if $test `./findhdr sgtty.h`; then
11916                                 val2="$define"
11917                                 echo "<sgtty.h> found." >&4
11918                         else
11919                                 echo "System is pyramid with BSD universe."
11920                                 echo "<sgtty.h> not found--you could have problems." >&4
11921                         fi;;
11922                 *) if $test `./findhdr termio.h`; then
11923                                 val="$define"
11924                                 echo "<termio.h> found." >&4
11925                         else
11926                                 echo "System is pyramid with USG universe."
11927                                 echo "<termio.h> not found--you could have problems." >&4
11928                         fi;;
11929                 esac
11930         elif ./usg; then
11931                 if $test `./findhdr termio.h`; then
11932                         echo "<termio.h> found." >&4
11933                         val="$define"
11934                 elif $test `./findhdr sgtty.h`; then
11935                         echo "<sgtty.h> found." >&4
11936                         val2="$define"
11937                 else
11938 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11939                 fi
11940         else
11941                 if $test `./findhdr sgtty.h`; then
11942                         echo "<sgtty.h> found." >&4
11943                         val2="$define"
11944                 elif $test `./findhdr termio.h`; then
11945                         echo "<termio.h> found." >&4
11946                         val="$define"
11947                 else
11948 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11949                 fi
11950         fi;;
11951 esac
11952 set i_termio; eval $setvar
11953 val=$val2; set i_sgtty; eval $setvar
11954 val=$val3; set i_termios; eval $setvar
11955
11956 : see if stdarg is available
11957 echo " "
11958 if $test `./findhdr stdarg.h`; then
11959         echo "<stdarg.h> found." >&4
11960         valstd="$define"
11961 else
11962         echo "<stdarg.h> NOT found." >&4
11963         valstd="$undef"
11964 fi
11965
11966 : see if varags is available
11967 echo " "
11968 if $test `./findhdr varargs.h`; then
11969         echo "<varargs.h> found." >&4
11970 else
11971         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11972 fi
11973
11974 : set up the varargs testing programs
11975 $cat > varargs.c <<EOP
11976 #ifdef I_STDARG
11977 #include <stdarg.h>
11978 #endif
11979 #ifdef I_VARARGS
11980 #include <varargs.h>
11981 #endif
11982
11983 #ifdef I_STDARG
11984 int f(char *p, ...)
11985 #else
11986 int f(va_alist)
11987 va_dcl
11988 #endif
11989 {
11990         va_list ap;
11991 #ifndef I_STDARG
11992         char *p;
11993 #endif
11994 #ifdef I_STDARG
11995         va_start(ap,p);
11996 #else
11997         va_start(ap);
11998         p = va_arg(ap, char *);
11999 #endif
12000         va_end(ap);
12001 }
12002 EOP
12003 $cat > varargs <<EOP
12004 $startsh
12005 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12006         echo "true"
12007 else
12008         echo "false"
12009 fi
12010 $rm -f varargs$_o
12011 EOP
12012 chmod +x varargs
12013
12014 : now check which varargs header should be included
12015 echo " "
12016 i_varhdr=''
12017 case "$valstd" in
12018 "$define")
12019         if `./varargs I_STDARG`; then
12020                 val='stdarg.h'
12021         elif `./varargs I_VARARGS`; then
12022                 val='varargs.h'
12023         fi
12024         ;;
12025 *)
12026         if `./varargs I_VARARGS`; then
12027                 val='varargs.h'
12028         fi
12029         ;;
12030 esac
12031 case "$val" in
12032 '')
12033 echo "I could not find the definition for va_dcl... You have problems..." >&4
12034         val="$undef"; set i_stdarg; eval $setvar
12035         val="$undef"; set i_varargs; eval $setvar
12036         ;;
12037 *) 
12038         set i_varhdr
12039         eval $setvar
12040         case "$i_varhdr" in
12041         stdarg.h)
12042                 val="$define"; set i_stdarg; eval $setvar
12043                 val="$undef"; set i_varargs; eval $setvar
12044                 ;;
12045         varargs.h)
12046                 val="$undef"; set i_stdarg; eval $setvar
12047                 val="$define"; set i_varargs; eval $setvar
12048                 ;;
12049         esac
12050         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12051 esac
12052 $rm -f varargs*
12053
12054 : see if stddef is available
12055 set stddef.h i_stddef
12056 eval $inhdr
12057
12058 : see if sys/access.h is available
12059 set sys/access.h i_sysaccess
12060 eval $inhdr
12061
12062 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12063 set sys/filio.h i_sysfilio
12064 eval $inhdr
12065 echo " "
12066 if $test `./findhdr sys/ioctl.h`; then
12067         val="$define"
12068         echo '<sys/ioctl.h> found.' >&4
12069 else
12070         val="$undef"
12071         if $test $i_sysfilio = "$define"; then
12072             echo '<sys/ioctl.h> NOT found.' >&4
12073         else
12074                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12075                 $test $i_termio = "$define" && xxx="termio.h"
12076                 $test $i_termios = "$define" && xxx="termios.h"
12077 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12078         fi
12079 fi
12080 set i_sysioctl
12081 eval $setvar
12082
12083 : see if sys/resource.h has to be included
12084 set sys/resource.h i_sysresrc
12085 eval $inhdr
12086
12087 : see if sys/security.h is available
12088 set sys/security.h i_syssecrt
12089 eval $inhdr
12090
12091 : see if this is a sys/statvfs.h system
12092 set sys/statvfs.h i_sysstatvfs
12093 eval $inhdr
12094
12095 : see if this is a sys/un.h system
12096 set sys/un.h i_sysun
12097 eval $inhdr
12098
12099 : see if this is a syswait system
12100 set sys/wait.h i_syswait
12101 eval $inhdr
12102
12103 : see if this is an utime system
12104 set utime.h i_utime
12105 eval $inhdr
12106
12107 : see if this is a values.h system
12108 set values.h i_values
12109 eval $inhdr
12110
12111 : see if this is a vfork system
12112 case "$d_vfork" in
12113 "$define")
12114         set vfork.h i_vfork
12115         eval $inhdr
12116         ;;
12117 *)
12118         i_vfork="$undef"
12119         ;;
12120 esac
12121
12122 : see if gdbm.h is available
12123 set gdbm.h t_gdbm
12124 eval $inhdr
12125 case "$t_gdbm" in
12126 $define)
12127         : see if gdbm_open exists
12128         set gdbm_open d_gdbm_open
12129         eval $inlibc
12130         case "$d_gdbm_open" in
12131         $undef)
12132                 t_gdbm="$undef"
12133                 echo "We won't be including <gdbm.h>"
12134                 ;;
12135         esac
12136         ;;
12137 esac
12138 val="$t_gdbm"
12139 set i_gdbm
12140 eval $setvar
12141
12142 echo " "
12143 echo "Looking for extensions..." >&4
12144 tdir=`pwd`
12145 cd $rsrc/ext
12146 : If we are using the old config.sh, known_extensions may contain
12147 : old or inaccurate or duplicate values.
12148 known_extensions=''
12149 nonxs_extensions=''
12150 : We do not use find because it might not be available.
12151 : We do not just use MANIFEST because the user may have dropped
12152 : some additional extensions into the source tree and expect them
12153 : to be built.
12154 for xxx in * ; do
12155         case "$xxx" in
12156         DynaLoader|dynaload) ;;
12157         *)      if $test -f $xxx/$xxx.xs; then
12158                         known_extensions="$known_extensions $xxx"
12159                 elif $test -f $xxx/Makefile.PL; then
12160                         nonxs_extensions="$nonxs_extensions $xxx"
12161                 else
12162                         if $test -d $xxx; then
12163                                 # Look for nested extensions, eg. Devel/Dprof.
12164                                 cd $xxx
12165                                 for yyy in * ; do
12166                                 if $test -f $yyy/$yyy.xs; then
12167                                         known_extensions="$known_extensions $xxx/$yyy"
12168                                 elif $test -f $yyy/Makefile.PL; then
12169                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12170                                 fi
12171                                 done
12172                                 cd ..
12173                         fi
12174                 fi 
12175                 ;;
12176         esac
12177 done
12178 set X $nonxs_extensions
12179 shift
12180 nonxs_extensions="$*"
12181 set X $known_extensions
12182 shift
12183 known_extensions="$*"
12184 cd $tdir
12185
12186 : Now see which are supported on this system.
12187 avail_ext=''
12188 for xxx in $known_extensions ; do
12189         case "$xxx" in
12190         DB_File|db_file)
12191                 case "$i_db" in
12192                 $define) avail_ext="$avail_ext $xxx" ;;
12193                 esac
12194                 ;;
12195         GDBM_File|gdbm_fil)
12196                 case "$i_gdbm" in 
12197                 $define) avail_ext="$avail_ext $xxx" ;;
12198                 esac
12199                 ;;
12200         NDBM_File|ndbm_fil)
12201                 case "$i_ndbm" in
12202                 $define) avail_ext="$avail_ext $xxx" ;;
12203                 esac
12204                 ;;
12205         ODBM_File|odbm_fil) 
12206                 case "${i_dbm}${i_rpcsvcdbm}" in
12207                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12208                 esac
12209                 ;;
12210         POSIX|posix)
12211                 case "$useposix" in
12212                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12213                 esac
12214                 ;;
12215         Opcode|opcode)
12216                 case "$useopcode" in
12217                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12218                 esac
12219                 ;;
12220         Socket|socket)
12221                 case "$d_socket" in 
12222                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12223                 esac
12224                 ;;
12225         Thread|thread)
12226                 case "$usethreads" in 
12227                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12228                 esac
12229                 ;;
12230         IPC/SysV|ipc/sysv)
12231                 : XXX Do we need a useipcsysv variable here
12232                 case "${d_msg}${d_sem}${d_shm}" in 
12233                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12234                 esac
12235                 ;;
12236         *)      avail_ext="$avail_ext $xxx"
12237                 ;;
12238         esac
12239 done
12240
12241 set X $avail_ext
12242 shift
12243 avail_ext="$*"
12244
12245 : Now see which nonxs extensions are supported on this system.
12246 : For now assume all are.
12247 nonxs_ext=''
12248 for xxx in $nonxs_extensions ; do
12249         case "$xxx" in
12250         *)      nonxs_ext="$nonxs_ext $xxx"
12251                 ;;
12252         esac
12253 done
12254
12255 set X $nonxs_ext
12256 shift
12257 nonxs_ext="$*"
12258
12259 case $usedl in
12260 $define)
12261         $cat <<EOM
12262 A number of extensions are supplied with $package.  You may choose to
12263 compile these extensions for dynamic loading (the default), compile
12264 them into the $package executable (static loading), or not include
12265 them at all.  Answer "none" to include no extensions.
12266 Note that DynaLoader is always built and need not be mentioned here.
12267
12268 EOM
12269         case "$dynamic_ext" in
12270         '') dflt="$avail_ext" ;;
12271         *)      dflt="$dynamic_ext"
12272                 # Perhaps we are reusing an old out-of-date config.sh.
12273                 case "$hint" in
12274                 previous)
12275                         if test X"$dynamic_ext" != X"$avail_ext"; then
12276                                 $cat <<EOM
12277 NOTICE:  Your previous config.sh list may be incorrect. 
12278 The extensions now available to you are 
12279         ${avail_ext}
12280 but the default list from your previous config.sh is
12281         ${dynamic_ext} 
12282
12283 EOM
12284                         fi
12285                         ;;
12286                 esac
12287                 ;;
12288         esac
12289         case "$dflt" in
12290         '')     dflt=none;;
12291         esac
12292         rp="What extensions do you wish to load dynamically?"
12293         . ./myread
12294         case "$ans" in
12295         none) dynamic_ext=' ' ;;
12296         *) dynamic_ext="$ans" ;;
12297         esac
12298
12299         case "$static_ext" in
12300         '')
12301                 : Exclude those already listed in dynamic linking
12302                 dflt=''
12303                 for xxx in $avail_ext; do
12304                         case " $dynamic_ext " in
12305                         *" $xxx "*) ;;
12306                         *) dflt="$dflt $xxx" ;;
12307                         esac
12308                 done
12309                 set X $dflt
12310                 shift
12311                 dflt="$*"
12312                 ;;
12313         *)  dflt="$static_ext" 
12314                 ;;
12315         esac
12316
12317         case "$dflt" in
12318         '')     dflt=none;;
12319         esac
12320         rp="What extensions do you wish to load statically?"
12321         . ./myread
12322         case "$ans" in
12323         none) static_ext=' ' ;;
12324         *) static_ext="$ans" ;;
12325         esac
12326         ;;
12327 *)
12328         $cat <<EOM
12329 A number of extensions are supplied with $package.  Answer "none" 
12330 to include no extensions. 
12331 Note that DynaLoader is always built and need not be mentioned here.
12332
12333 EOM
12334         case "$static_ext" in
12335         '') dflt="$avail_ext" ;;
12336         *)      dflt="$static_ext"
12337                 # Perhaps we are reusing an old out-of-date config.sh.
12338                 case "$hint" in
12339                 previous)
12340                         if test X"$static_ext" != X"$avail_ext"; then
12341                                 $cat <<EOM
12342 NOTICE:  Your previous config.sh list may be incorrect. 
12343 The extensions now available to you are 
12344         ${avail_ext}
12345 but the default list from your previous config.sh is
12346         ${static_ext} 
12347
12348 EOM
12349                         fi
12350                         ;;
12351                 esac
12352                 ;;
12353         esac
12354         : Exclude those that are not xs extensions
12355         case "$dflt" in
12356         '')     dflt=none;;
12357         esac
12358         rp="What extensions do you wish to include?"
12359         . ./myread
12360         case "$ans" in
12361         none) static_ext=' ' ;;
12362         *) static_ext="$ans" ;;
12363         esac
12364         ;;
12365 esac
12366
12367 set X $dynamic_ext $static_ext $nonxs_ext
12368 shift
12369 extensions="$*"
12370
12371 : Remove build directory name from cppstdin so it can be used from
12372 : either the present location or the final installed location.
12373 echo " "
12374 : Get out of the UU directory to get correct path name.
12375 cd ..
12376 case "$cppstdin" in
12377 `pwd`/cppstdin)
12378         echo "Stripping down cppstdin path name"
12379         cppstdin=cppstdin
12380         ;;
12381 esac
12382 cd UU
12383
12384 : end of configuration questions
12385 echo " "
12386 echo "End of configuration questions."
12387 echo " "
12388
12389 : back to where it started
12390 if test -d ../UU; then
12391         cd ..
12392 fi
12393
12394 : configuration may be patched via a 'config.over' file
12395 if $test -f config.over; then
12396         echo " "
12397         dflt=y
12398         rp='I see a config.over file.  Do you wish to load it?'
12399         . UU/myread
12400         case "$ans" in
12401         n*) echo "OK, I'll ignore it.";;
12402         *)      . ./config.over
12403                 echo "Configuration override changes have been loaded."
12404                 ;;
12405         esac
12406 fi
12407
12408 : in case they want portability, strip down executable paths
12409 case "$d_portable" in
12410 "$define")
12411         echo " "
12412         echo "Stripping down executable paths..." >&4
12413         for file in $loclist $trylist; do
12414                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12415                         eval $file="\$file"
12416                 fi
12417         done
12418         ;;
12419 esac
12420
12421 : create config.sh file
12422 echo " "
12423 echo "Creating config.sh..." >&4
12424 $spitshell <<EOT >config.sh
12425 $startsh
12426 #
12427 # This file was produced by running the Configure script. It holds all the
12428 # definitions figured out by Configure. Should you modify one of these values,
12429 # do not forget to propagate your changes by running "Configure -der". You may
12430 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12431 #
12432
12433 # Package name      : $package
12434 # Source directory  : $src
12435 # Configuration time: $cf_time
12436 # Configured by     : $cf_by
12437 # Target system     : $myuname
12438
12439 Author='$Author'
12440 Date='$Date'
12441 Header='$Header'
12442 Id='$Id'
12443 Locker='$Locker'
12444 Log='$Log'
12445 Mcc='$Mcc'
12446 RCSfile='$RCSfile'
12447 Revision='$Revision'
12448 Source='$Source'
12449 State='$State'
12450 _a='$_a'
12451 _exe='$_exe'
12452 _o='$_o'
12453 afs='$afs'
12454 alignbytes='$alignbytes'
12455 ansi2knr='$ansi2knr'
12456 aphostname='$aphostname'
12457 apiversion='$apiversion'
12458 ar='$ar'
12459 archlib='$archlib'
12460 archlibexp='$archlibexp'
12461 archname64='$archname64'
12462 archname='$archname'
12463 archobjs='$archobjs'
12464 awk='$awk'
12465 baserev='$baserev'
12466 bash='$bash'
12467 bin='$bin'
12468 binexp='$binexp'
12469 bison='$bison'
12470 byacc='$byacc'
12471 byteorder='$byteorder'
12472 c='$c'
12473 castflags='$castflags'
12474 cat='$cat'
12475 cc='$cc'
12476 cccdlflags='$cccdlflags'
12477 ccdlflags='$ccdlflags'
12478 ccflags='$ccflags'
12479 cf_by='$cf_by'
12480 cf_email='$cf_email'
12481 cf_time='$cf_time'
12482 chgrp='$chgrp'
12483 chmod='$chmod'
12484 chown='$chown'
12485 clocktype='$clocktype'
12486 comm='$comm'
12487 compress='$compress'
12488 contains='$contains'
12489 cp='$cp'
12490 cpio='$cpio'
12491 cpp='$cpp'
12492 cpp_stuff='$cpp_stuff'
12493 cppflags='$cppflags'
12494 cpplast='$cpplast'
12495 cppminus='$cppminus'
12496 cpprun='$cpprun'
12497 cppstdin='$cppstdin'
12498 cryptlib='$cryptlib'
12499 csh='$csh'
12500 d_Gconvert='$d_Gconvert'
12501 d_access='$d_access'
12502 d_accessx='$d_accessx'
12503 d_alarm='$d_alarm'
12504 d_archlib='$d_archlib'
12505 d_attribut='$d_attribut'
12506 d_bcmp='$d_bcmp'
12507 d_bcopy='$d_bcopy'
12508 d_bsd='$d_bsd'
12509 d_bsdgetpgrp='$d_bsdgetpgrp'
12510 d_bsdsetpgrp='$d_bsdsetpgrp'
12511 d_bzero='$d_bzero'
12512 d_casti32='$d_casti32'
12513 d_castneg='$d_castneg'
12514 d_charvspr='$d_charvspr'
12515 d_chown='$d_chown'
12516 d_chroot='$d_chroot'
12517 d_chsize='$d_chsize'
12518 d_closedir='$d_closedir'
12519 d_cmsghdr_s='$d_cmsghdr_s'
12520 d_const='$d_const'
12521 d_crypt='$d_crypt'
12522 d_csh='$d_csh'
12523 d_cuserid='$d_cuserid'
12524 d_dbl_dig='$d_dbl_dig'
12525 d_dbmclose64='$d_dbmclose64'
12526 d_dbminit64='$d_dbminit64'
12527 d_delete64='$d_delete64'
12528 d_difftime='$d_difftime'
12529 d_dirent64_s='$d_dirent64_s'
12530 d_dirnamlen='$d_dirnamlen'
12531 d_dlerror='$d_dlerror'
12532 d_dlopen='$d_dlopen'
12533 d_dlsymun='$d_dlsymun'
12534 d_dosuid='$d_dosuid'
12535 d_drand48proto='$d_drand48proto'
12536 d_dup2='$d_dup2'
12537 d_eaccess='$d_eaccess'
12538 d_endgrent='$d_endgrent'
12539 d_endhent='$d_endhent'
12540 d_endnent='$d_endnent'
12541 d_endpent='$d_endpent'
12542 d_endpwent='$d_endpwent'
12543 d_endsent='$d_endsent'
12544 d_eofnblk='$d_eofnblk'
12545 d_eunice='$d_eunice'
12546 d_fchmod='$d_fchmod'
12547 d_fchown='$d_fchown'
12548 d_fcntl='$d_fcntl'
12549 d_fd_macros='$d_fd_macros'
12550 d_fd_set='$d_fd_set'
12551 d_fds_bits='$d_fds_bits'
12552 d_fetch64='$d_fetch64'
12553 d_fgetpos64='$d_fgetpos64'
12554 d_fgetpos='$d_fgetpos'
12555 d_firstkey64='$d_firstkey64'
12556 d_flexfnam='$d_flexfnam'
12557 d_flock64_s='$d_flock64_s'
12558 d_flock='$d_flock'
12559 d_fopen64='$d_fopen64'
12560 d_fork='$d_fork'
12561 d_fpathconf='$d_fpathconf'
12562 d_freopen64='$d_freopen64'
12563 d_fseek64='$d_fseek64'
12564 d_fseeko64='$d_fseeko64'
12565 d_fseeko='$d_fseeko'
12566 d_fsetpos64='$d_fsetpos64'
12567 d_fsetpos='$d_fsetpos'
12568 d_fstat64='$d_fstat64'
12569 d_fstatfs='$d_fstatfs'
12570 d_fstatvfs='$d_fstatvfs'
12571 d_ftell64='$d_ftell64'
12572 d_ftello64='$d_ftello64'
12573 d_ftello='$d_ftello'
12574 d_ftime='$d_ftime'
12575 d_ftruncate64='$d_ftruncate64'
12576 d_getgrent='$d_getgrent'
12577 d_getgrps='$d_getgrps'
12578 d_gethbyaddr='$d_gethbyaddr'
12579 d_gethbyname='$d_gethbyname'
12580 d_gethent='$d_gethent'
12581 d_gethname='$d_gethname'
12582 d_gethostprotos='$d_gethostprotos'
12583 d_getlogin='$d_getlogin'
12584 d_getnbyaddr='$d_getnbyaddr'
12585 d_getnbyname='$d_getnbyname'
12586 d_getnent='$d_getnent'
12587 d_getnetprotos='$d_getnetprotos'
12588 d_getpbyname='$d_getpbyname'
12589 d_getpbynumber='$d_getpbynumber'
12590 d_getpent='$d_getpent'
12591 d_getpgid='$d_getpgid'
12592 d_getpgrp2='$d_getpgrp2'
12593 d_getpgrp='$d_getpgrp'
12594 d_getppid='$d_getppid'
12595 d_getprior='$d_getprior'
12596 d_getprotoprotos='$d_getprotoprotos'
12597 d_getpwent='$d_getpwent'
12598 d_getsbyname='$d_getsbyname'
12599 d_getsbyport='$d_getsbyport'
12600 d_getsent='$d_getsent'
12601 d_getservprotos='$d_getservprotos'
12602 d_gettimeod='$d_gettimeod'
12603 d_gnulibc='$d_gnulibc'
12604 d_grpasswd='$d_grpasswd'
12605 d_htonl='$d_htonl'
12606 d_index='$d_index'
12607 d_inetaton='$d_inetaton'
12608 d_ino64t='$d_ino64t'
12609 d_int64t='$d_int64t'
12610 d_iovec_s='$d_iovec_s'
12611 d_isascii='$d_isascii'
12612 d_killpg='$d_killpg'
12613 d_lchown='$d_lchown'
12614 d_link='$d_link'
12615 d_locconv='$d_locconv'
12616 d_lockf64='$d_lockf64'
12617 d_lockf='$d_lockf'
12618 d_longdbl='$d_longdbl'
12619 d_longlong='$d_longlong'
12620 d_lseek64='$d_lseek64'
12621 d_lstat64='$d_lstat64'
12622 d_lstat='$d_lstat'
12623 d_mblen='$d_mblen'
12624 d_mbstowcs='$d_mbstowcs'
12625 d_mbtowc='$d_mbtowc'
12626 d_memcmp='$d_memcmp'
12627 d_memcpy='$d_memcpy'
12628 d_memmove='$d_memmove'
12629 d_memset='$d_memset'
12630 d_mkdir='$d_mkdir'
12631 d_mkfifo='$d_mkfifo'
12632 d_mktime='$d_mktime'
12633 d_msg='$d_msg'
12634 d_msg_ctrunc='$d_msg_ctrunc'
12635 d_msg_dontroute='$d_msg_dontroute'
12636 d_msg_oob='$d_msg_oob'
12637 d_msg_peek='$d_msg_peek'
12638 d_msg_proxy='$d_msg_proxy'
12639 d_msgctl='$d_msgctl'
12640 d_msgget='$d_msgget'
12641 d_msghdr_s='$d_msghdr_s'
12642 d_msgrcv='$d_msgrcv'
12643 d_msgsnd='$d_msgsnd'
12644 d_mymalloc='$d_mymalloc'
12645 d_nextkey64='$d_nextkey64'
12646 d_nice='$d_nice'
12647 d_off64t='$d_off64t'
12648 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12649 d_oldpthreads='$d_oldpthreads'
12650 d_oldsock='$d_oldsock'
12651 d_open3='$d_open3'
12652 d_open64='$d_open64'
12653 d_opendir64='$d_opendir64'
12654 d_pathconf='$d_pathconf'
12655 d_pause='$d_pause'
12656 d_phostname='$d_phostname'
12657 d_pipe='$d_pipe'
12658 d_poll='$d_poll'
12659 d_portable='$d_portable'
12660 d_pthread_yield='$d_pthread_yield'
12661 d_pwage='$d_pwage'
12662 d_pwchange='$d_pwchange'
12663 d_pwclass='$d_pwclass'
12664 d_pwcomment='$d_pwcomment'
12665 d_pwexpire='$d_pwexpire'
12666 d_pwgecos='$d_pwgecos'
12667 d_pwpasswd='$d_pwpasswd'
12668 d_pwquota='$d_pwquota'
12669 d_readdir64='$d_readdir64'
12670 d_readdir='$d_readdir'
12671 d_readlink='$d_readlink'
12672 d_readv='$d_readv'
12673 d_recvmsg='$d_recvmsg'
12674 d_rename='$d_rename'
12675 d_rewinddir='$d_rewinddir'
12676 d_rmdir='$d_rmdir'
12677 d_safebcpy='$d_safebcpy'
12678 d_safemcpy='$d_safemcpy'
12679 d_sanemcmp='$d_sanemcmp'
12680 d_sched_yield='$d_sched_yield'
12681 d_scm_rights='$d_scm_rights'
12682 d_seekdir64='$d_seekdir64'
12683 d_seekdir='$d_seekdir'
12684 d_select='$d_select'
12685 d_sem='$d_sem'
12686 d_semctl='$d_semctl'
12687 d_semctl_semid_ds='$d_semctl_semid_ds'
12688 d_semctl_semun='$d_semctl_semun'
12689 d_semget='$d_semget'
12690 d_semop='$d_semop'
12691 d_sendmsg='$d_sendmsg'
12692 d_setegid='$d_setegid'
12693 d_seteuid='$d_seteuid'
12694 d_setgrent='$d_setgrent'
12695 d_setgrps='$d_setgrps'
12696 d_sethent='$d_sethent'
12697 d_setlinebuf='$d_setlinebuf'
12698 d_setlocale='$d_setlocale'
12699 d_setnent='$d_setnent'
12700 d_setpent='$d_setpent'
12701 d_setpgid='$d_setpgid'
12702 d_setpgrp2='$d_setpgrp2'
12703 d_setpgrp='$d_setpgrp'
12704 d_setprior='$d_setprior'
12705 d_setpwent='$d_setpwent'
12706 d_setregid='$d_setregid'
12707 d_setresgid='$d_setresgid'
12708 d_setresuid='$d_setresuid'
12709 d_setreuid='$d_setreuid'
12710 d_setrgid='$d_setrgid'
12711 d_setruid='$d_setruid'
12712 d_setsent='$d_setsent'
12713 d_setsid='$d_setsid'
12714 d_setvbuf='$d_setvbuf'
12715 d_sfio='$d_sfio'
12716 d_shm='$d_shm'
12717 d_shmat='$d_shmat'
12718 d_shmatprototype='$d_shmatprototype'
12719 d_shmctl='$d_shmctl'
12720 d_shmdt='$d_shmdt'
12721 d_shmget='$d_shmget'
12722 d_sigaction='$d_sigaction'
12723 d_sigsetjmp='$d_sigsetjmp'
12724 d_socket='$d_socket'
12725 d_sockpair='$d_sockpair'
12726 d_stat64='$d_stat64'
12727 d_statblks='$d_statblks'
12728 d_statfs='$d_statfs'
12729 d_statfsflags='$d_statfsflags'
12730 d_statvfs='$d_statvfs'
12731 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12732 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12733 d_stdiobase='$d_stdiobase'
12734 d_stdstdio='$d_stdstdio'
12735 d_store64='$d_store64'
12736 d_strchr='$d_strchr'
12737 d_strcoll='$d_strcoll'
12738 d_strctcpy='$d_strctcpy'
12739 d_strerrm='$d_strerrm'
12740 d_strerror='$d_strerror'
12741 d_strtod='$d_strtod'
12742 d_strtol='$d_strtol'
12743 d_strtoul='$d_strtoul'
12744 d_strxfrm='$d_strxfrm'
12745 d_suidsafe='$d_suidsafe'
12746 d_symlink='$d_symlink'
12747 d_syscall='$d_syscall'
12748 d_sysconf='$d_sysconf'
12749 d_sysernlst='$d_sysernlst'
12750 d_syserrlst='$d_syserrlst'
12751 d_system='$d_system'
12752 d_tcgetpgrp='$d_tcgetpgrp'
12753 d_tcsetpgrp='$d_tcsetpgrp'
12754 d_telldir64='$d_telldir64'
12755 d_telldir='$d_telldir'
12756 d_time='$d_time'
12757 d_times='$d_times'
12758 d_tmpfile64='$d_tmpfile64'
12759 d_truncate64='$d_truncate64'
12760 d_truncate='$d_truncate'
12761 d_tzname='$d_tzname'
12762 d_umask='$d_umask'
12763 d_uname='$d_uname'
12764 d_union_semun='$d_union_semun'
12765 d_vfork='$d_vfork'
12766 d_void_closedir='$d_void_closedir'
12767 d_voidsig='$d_voidsig'
12768 d_voidtty='$d_voidtty'
12769 d_volatile='$d_volatile'
12770 d_vprintf='$d_vprintf'
12771 d_wait4='$d_wait4'
12772 d_waitpid='$d_waitpid'
12773 d_wcstombs='$d_wcstombs'
12774 d_wctomb='$d_wctomb'
12775 d_writev='$d_writev'
12776 d_xenix='$d_xenix'
12777 date='$date'
12778 db_hashtype='$db_hashtype'
12779 db_prefixtype='$db_prefixtype'
12780 defvoidused='$defvoidused'
12781 direntrytype='$direntrytype'
12782 dlext='$dlext'
12783 dlsrc='$dlsrc'
12784 doublesize='$doublesize'
12785 drand01='$drand01'
12786 dynamic_ext='$dynamic_ext'
12787 eagain='$eagain'
12788 ebcdic='$ebcdic'
12789 echo='$echo'
12790 egrep='$egrep'
12791 emacs='$emacs'
12792 eunicefix='$eunicefix'
12793 exe_ext='$exe_ext'
12794 expr='$expr'
12795 extensions='$extensions'
12796 find='$find'
12797 firstmakefile='$firstmakefile'
12798 flex='$flex'
12799 fpostype='$fpostype'
12800 freetype='$freetype'
12801 full_csh='$full_csh'
12802 full_sed='$full_sed'
12803 gccversion='$gccversion'
12804 gidtype='$gidtype'
12805 glibpth='$glibpth'
12806 grep='$grep'
12807 groupcat='$groupcat'
12808 groupstype='$groupstype'
12809 gzip='$gzip'
12810 h_fcntl='$h_fcntl'
12811 h_sysfile='$h_sysfile'
12812 hint='$hint'
12813 hostcat='$hostcat'
12814 huge='$huge'
12815 i_arpainet='$i_arpainet'
12816 i_bsdioctl='$i_bsdioctl'
12817 i_db='$i_db'
12818 i_dbm='$i_dbm'
12819 i_dirent='$i_dirent'
12820 i_dld='$i_dld'
12821 i_dlfcn='$i_dlfcn'
12822 i_fcntl='$i_fcntl'
12823 i_float='$i_float'
12824 i_gdbm='$i_gdbm'
12825 i_grp='$i_grp'
12826 i_inttypes='$i_inttypes'
12827 i_limits='$i_limits'
12828 i_locale='$i_locale'
12829 i_machcthr='$i_machcthr'
12830 i_malloc='$i_malloc'
12831 i_math='$i_math'
12832 i_memory='$i_memory'
12833 i_mntent='$i_mntent'
12834 i_ndbm='$i_ndbm'
12835 i_netdb='$i_netdb'
12836 i_neterrno='$i_neterrno'
12837 i_niin='$i_niin'
12838 i_poll='$i_poll'
12839 i_pwd='$i_pwd'
12840 i_rpcsvcdbm='$i_rpcsvcdbm'
12841 i_sfio='$i_sfio'
12842 i_sgtty='$i_sgtty'
12843 i_stdarg='$i_stdarg'
12844 i_stddef='$i_stddef'
12845 i_stdlib='$i_stdlib'
12846 i_string='$i_string'
12847 i_sysaccess='$i_sysaccess'
12848 i_sysdir='$i_sysdir'
12849 i_sysfile='$i_sysfile'
12850 i_sysfilio='$i_sysfilio'
12851 i_sysin='$i_sysin'
12852 i_sysioctl='$i_sysioctl'
12853 i_sysmount='$i_sysmount'
12854 i_sysndir='$i_sysndir'
12855 i_sysparam='$i_sysparam'
12856 i_sysresrc='$i_sysresrc'
12857 i_syssecrt='$i_syssecrt'
12858 i_sysselct='$i_sysselct'
12859 i_syssockio='$i_syssockio'
12860 i_sysstat='$i_sysstat'
12861 i_sysstatvfs='$i_sysstatvfs'
12862 i_systime='$i_systime'
12863 i_systimek='$i_systimek'
12864 i_systimes='$i_systimes'
12865 i_systypes='$i_systypes'
12866 i_sysuio='$i_sysuio'
12867 i_sysun='$i_sysun'
12868 i_syswait='$i_syswait'
12869 i_termio='$i_termio'
12870 i_termios='$i_termios'
12871 i_time='$i_time'
12872 i_unistd='$i_unistd'
12873 i_utime='$i_utime'
12874 i_values='$i_values'
12875 i_varargs='$i_varargs'
12876 i_varhdr='$i_varhdr'
12877 i_vfork='$i_vfork'
12878 ignore_versioned_solibs='$ignore_versioned_solibs'
12879 incpath='$incpath'
12880 inews='$inews'
12881 installarchlib='$installarchlib'
12882 installbin='$installbin'
12883 installman1dir='$installman1dir'
12884 installman3dir='$installman3dir'
12885 installprivlib='$installprivlib'
12886 installscript='$installscript'
12887 installsitearch='$installsitearch'
12888 installsitelib='$installsitelib'
12889 installusrbinperl='$installusrbinperl'
12890 intsize='$intsize'
12891 known_extensions='$known_extensions'
12892 ksh='$ksh'
12893 large='$large'
12894 ld='$ld'
12895 lddlflags='$lddlflags'
12896 ldflags='$ldflags'
12897 less='$less'
12898 lib_ext='$lib_ext'
12899 libc='$libc'
12900 libperl='$libperl'
12901 libpth='$libpth'
12902 libs='$libs'
12903 libswanted='$libswanted'
12904 line='$line'
12905 lint='$lint'
12906 lkflags='$lkflags'
12907 ln='$ln'
12908 lns='$lns'
12909 locincpth='$locincpth'
12910 loclibpth='$loclibpth'
12911 longdblsize='$longdblsize'
12912 longlongsize='$longlongsize'
12913 longsize='$longsize'
12914 lp='$lp'
12915 lpr='$lpr'
12916 ls='$ls'
12917 lseeksize='$lseeksize'
12918 lseektype='$lseektype'
12919 mail='$mail'
12920 mailx='$mailx'
12921 make='$make'
12922 make_set_make='$make_set_make'
12923 mallocobj='$mallocobj'
12924 mallocsrc='$mallocsrc'
12925 malloctype='$malloctype'
12926 man1dir='$man1dir'
12927 man1direxp='$man1direxp'
12928 man1ext='$man1ext'
12929 man3dir='$man3dir'
12930 man3direxp='$man3direxp'
12931 man3ext='$man3ext'
12932 medium='$medium'
12933 mips='$mips'
12934 mips_type='$mips_type'
12935 mkdir='$mkdir'
12936 models='$models'
12937 modetype='$modetype'
12938 more='$more'
12939 mv='$mv'
12940 myarchname='$myarchname'
12941 mydomain='$mydomain'
12942 myhostname='$myhostname'
12943 myuname='$myuname'
12944 n='$n'
12945 netdb_hlen_type='$netdb_hlen_type'
12946 netdb_host_type='$netdb_host_type'
12947 netdb_name_type='$netdb_name_type'
12948 netdb_net_type='$netdb_net_type'
12949 nm='$nm'
12950 nm_opt='$nm_opt'
12951 nm_so_opt='$nm_so_opt'
12952 nonxs_ext='$nonxs_ext'
12953 nroff='$nroff'
12954 o_nonblock='$o_nonblock'
12955 obj_ext='$obj_ext'
12956 old_pthread_create_joinable='$old_pthread_create_joinable'
12957 optimize='$optimize'
12958 orderlib='$orderlib'
12959 osname='$osname'
12960 osvers='$osvers'
12961 package='$package'
12962 pager='$pager'
12963 passcat='$passcat'
12964 patchlevel='$patchlevel'
12965 path_sep='$path_sep'
12966 perl='$perl'
12967 perladmin='$perladmin'
12968 perlpath='$perlpath'
12969 pg='$pg'
12970 phostname='$phostname'
12971 pidtype='$pidtype'
12972 plibpth='$plibpth'
12973 pmake='$pmake'
12974 pr='$pr'
12975 prefix='$prefix'
12976 prefixexp='$prefixexp'
12977 privlib='$privlib'
12978 privlibexp='$privlibexp'
12979 prototype='$prototype'
12980 ptrsize='$ptrsize'
12981 randbits='$randbits'
12982 randfunc='$randfunc'
12983 randseedtype='$randseedtype'
12984 ranlib='$ranlib'
12985 rd_nodata='$rd_nodata'
12986 rm='$rm'
12987 rmail='$rmail'
12988 runnm='$runnm'
12989 sched_yield='$sched_yield'
12990 scriptdir='$scriptdir'
12991 scriptdirexp='$scriptdirexp'
12992 sed='$sed'
12993 seedfunc='$seedfunc'
12994 selectminbits='$selectminbits'
12995 selecttype='$selecttype'
12996 sendmail='$sendmail'
12997 sh='$sh'
12998 shar='$shar'
12999 sharpbang='$sharpbang'
13000 shmattype='$shmattype'
13001 shortsize='$shortsize'
13002 shrpenv='$shrpenv'
13003 shsharp='$shsharp'
13004 sig_name='$sig_name'
13005 sig_name_init='$sig_name_init'
13006 sig_num='$sig_num'
13007 sig_num_init='$sig_num_init'
13008 signal_t='$signal_t'
13009 sitearch='$sitearch'
13010 sitearchexp='$sitearchexp'
13011 sitelib='$sitelib'
13012 sitelibexp='$sitelibexp'
13013 sizetype='$sizetype'
13014 sleep='$sleep'
13015 smail='$smail'
13016 small='$small'
13017 so='$so'
13018 sockethdr='$sockethdr'
13019 socketlib='$socketlib'
13020 sort='$sort'
13021 spackage='$spackage'
13022 spitshell='$spitshell'
13023 split='$split'
13024 src='$src'
13025 ssizetype='$ssizetype'
13026 startperl='$startperl'
13027 startsh='$startsh'
13028 static_ext='$static_ext'
13029 stdchar='$stdchar'
13030 stdio_base='$stdio_base'
13031 stdio_bufsiz='$stdio_bufsiz'
13032 stdio_cnt='$stdio_cnt'
13033 stdio_filbuf='$stdio_filbuf'
13034 stdio_ptr='$stdio_ptr'
13035 strings='$strings'
13036 submit='$submit'
13037 subversion='$subversion'
13038 sysman='$sysman'
13039 tail='$tail'
13040 tar='$tar'
13041 tbl='$tbl'
13042 tee='$tee'
13043 test='$test'
13044 timeincl='$timeincl'
13045 timetype='$timetype'
13046 touch='$touch'
13047 tr='$tr'
13048 trnl='$trnl'
13049 troff='$troff'
13050 uidtype='$uidtype'
13051 uname='$uname'
13052 uniq='$uniq'
13053 use64bits='$use64bits'
13054 usedl='$usedl'
13055 usemultiplicity='$usemultiplicity'
13056 usemymalloc='$usemymalloc'
13057 usenm='$usenm'
13058 useopcode='$useopcode'
13059 useperlio='$useperlio'
13060 useposix='$useposix'
13061 usesfio='$usesfio'
13062 useshrplib='$useshrplib'
13063 usethreads='$usethreads'
13064 usevfork='$usevfork'
13065 usrinc='$usrinc'
13066 uuname='$uuname'
13067 version='$version'
13068 vi='$vi'
13069 voidflags='$voidflags'
13070 xlibpth='$xlibpth'
13071 zcat='$zcat'
13072 zip='$zip'
13073 EOT
13074
13075 : Add in command line options if available
13076 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13077
13078 : add special variables
13079 $test -f $src/patchlevel.h && \
13080 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13081 echo "CONFIG=true" >>config.sh
13082
13083 : propagate old symbols
13084 if $test -f UU/config.sh; then
13085         <UU/config.sh sort | uniq >UU/oldconfig.sh
13086         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13087         sort | uniq -u >UU/oldsyms
13088         set X `cat UU/oldsyms`
13089         shift
13090         case $# in
13091         0) ;;
13092         *)
13093                 cat <<EOM
13094 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13095 EOM
13096                 echo "# Variables propagated from previous config.sh file." >>config.sh
13097                 for sym in `cat UU/oldsyms`; do
13098                         echo "    Propagating $hint variable "'$'"$sym..."
13099                         eval 'tmp="$'"${sym}"'"'
13100                         echo "$tmp" | \
13101                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13102                 done
13103                 ;;
13104         esac
13105 fi
13106
13107 : Finish up by extracting the .SH files
13108 case "$alldone" in
13109 exit)
13110         $rm -rf UU
13111         echo "Done."
13112         exit 0
13113         ;;
13114 cont)
13115         ;;
13116 '')
13117         dflt=''
13118         nostick=true
13119         $cat <<EOM
13120
13121 If you'd like to make any changes to the config.sh file before I begin
13122 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13123
13124 EOM
13125         rp="Press return or use a shell escape to edit config.sh:"
13126         . UU/myread
13127         nostick=''
13128         case "$ans" in
13129         '') ;;
13130         *) : in case they cannot read
13131                 sh 1>&4 -c "$ans";;
13132         esac
13133         ;;
13134 esac
13135
13136 : if this fails, just run all the .SH files by hand
13137 . ./config.sh
13138
13139 echo " "
13140 exec 1>&4
13141 . ./UU/extract
13142
13143 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13144         dflt=y
13145         case "$silent" in
13146         true) ;;
13147         *)
13148                 $cat <<EOM
13149
13150 Now you need to generate make dependencies by running "$make depend".
13151 You might prefer to run it in background: "$make depend > makedepend.out &"
13152 It can take a while, so you might not want to run it right now.
13153
13154 EOM
13155                 ;;
13156         esac
13157         rp="Run $make depend now?"
13158         . UU/myread
13159         case "$ans" in
13160         y*)
13161                 $make depend && echo "Now you must run a $make."
13162                 ;;
13163         *)
13164                 echo "You must run '$make depend' then '$make'."
13165                 ;;
13166         esac
13167 elif test -f [Mm]akefile; then
13168         echo " "
13169         echo "Now you must run a $make."
13170 else
13171         echo "Done."
13172 fi
13173
13174 if $test -f Policy.sh; then
13175     $cat <<EOM
13176
13177 If you compile $package on a different machine or from a different object
13178 directory, copy the Policy.sh file from this object directory to the
13179 new one before you run Configure -- this will help you with most of
13180 the policy defaults.
13181
13182 EOM
13183 fi
13184 if $test -f config.msg; then
13185     echo "Hmm.  I also noted the following information while running:"
13186     echo " "
13187     $cat config.msg >&4
13188     $rm -f config.msg
13189 fi
13190 $rm -f kit*isdone ark*isdone
13191 $rm -rf UU
13192
13193 : End of Configure
13194