Re: [tests for Pod::Html]
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu Mar 21 17:43:57 EET 2002 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >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 >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 c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ 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                 case "X${MACHTYPE:-nonesuchmach}" in
69                 *cygwin) ;;
70                 *) p_=\; ;;
71                 esac
72         fi
73 fi
74
75 : Proper PATH setting
76 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
77 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
78 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
79 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
80 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
81 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
82 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
83 paths="$paths /sbin /usr/sbin /usr/libexec"
84 paths="$paths /system/gnu_library/bin"
85
86 for p in $paths
87 do
88         case "$p_$PATH$p_" in
89         *$p_$p$p_*) ;;
90         *) test -d $p && PATH=$PATH$p_$p ;;
91         esac
92 done
93
94 PATH=.$p_$PATH
95 export PATH
96
97 : shall we be using ksh?
98 inksh=''
99 needksh=''
100 avoidksh=''
101 newsh=/bin/ksh
102 changesh=''
103 if (PATH=.; alias -x) >/dev/null 2>&1; then
104                 inksh=true
105 fi
106 if test -f /hp-ux -a -f /bin/ksh; then
107         needksh='to avoid sh bug in "here document" expansion'
108 fi
109 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
110         if test X`/usr/bin/uname -v` = X4; then
111                 avoidksh="to avoid AIX 4's /bin/sh"
112                 newsh=/usr/bin/bsh
113         fi
114 fi
115 if test -f /osf_boot -a -f /usr/sbin/setld; then
116         if test X`/usr/bin/uname -s` = XOSF1; then
117                 avoidksh="to avoid Digital UNIX' ksh"
118                 newsh=/bin/sh
119                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
120         fi
121 fi
122 case "$inksh/$needksh" in
123 /[a-z]*)
124                 ENV=''
125                 changesh=true
126                 reason="$needksh"
127         ;;
128 esac
129 case "$inksh/$avoidksh" in
130 true/[a-z]*)
131         changesh=true
132         reason="$avoidksh"
133         ;;
134 esac
135 case "$inksh/$needksh-$avoidksh-" in
136 true/--)
137                 cat <<EOM
138 (I see you are using the Korn shell.  Some ksh's blow up on $me,
139 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
140 EOM
141         ;;
142 esac
143 case "$changesh" in
144 true)
145         export newsh
146         echo "(Feeding myself to $newsh $reason.)"
147         case "$0" in
148         Configure|*/Configure) exec $newsh $0 "$@";;
149         *) exec $newsh Configure "$@";;
150         esac
151         ;;
152 esac
153
154 : if needed set CDPATH to a harmless value that is not chatty
155 : avoid bash 2.02 problems with empty CDPATH.
156 case "$CDPATH" in
157 '')     ;;
158 *)      case "$SHELL" in
159         *bash*) CDPATH='.' ;;
160         *)              CDPATH='' ;;
161         esac
162         ;;
163 esac
164 : Configure runs within the UU subdirectory
165 test -d UU || mkdir UU
166 cd UU && rm -f ./*
167
168
169 ccname=''
170 ccversion=''
171 ccsymbols=''
172 cppccsymbols=''
173 cppsymbols=''
174 from=''
175 run=''
176 targetarch=''
177 to=''
178 usecrosscompile=''
179 perllibs=''
180 dynamic_ext=''
181 extensions=''
182 known_extensions=''
183 nonxs_ext=''
184 static_ext=''
185 useopcode=''
186 useposix=''
187 extras=''
188 d_bsd=''
189 d_eunice=''
190 d_xenix=''
191 eunicefix=''
192 Mcc=''
193 ar=''
194 awk=''
195 bash=''
196 bison=''
197 byacc=''
198 cat=''
199 chgrp=''
200 chmod=''
201 chown=''
202 comm=''
203 compress=''
204 cp=''
205 cpio=''
206 cpp=''
207 csh=''
208 date=''
209 echo=''
210 egrep=''
211 emacs=''
212 expr=''
213 find=''
214 flex=''
215 gmake=''
216 grep=''
217 gzip=''
218 inews=''
219 ksh=''
220 less=''
221 line=''
222 lint=''
223 ln=''
224 lp=''
225 lpr=''
226 ls=''
227 mail=''
228 mailx=''
229 make=''
230 mkdir=''
231 more=''
232 mv=''
233 nm=''
234 nroff=''
235 perl=''
236 pg=''
237 pmake=''
238 pr=''
239 rm=''
240 rmail=''
241 sed=''
242 sendmail=''
243 shar=''
244 sleep=''
245 smail=''
246 sort=''
247 submit=''
248 tail=''
249 tar=''
250 tbl=''
251 tee=''
252 test=''
253 touch=''
254 tr=''
255 troff=''
256 uname=''
257 uniq=''
258 uuname=''
259 vi=''
260 zcat=''
261 zip=''
262 full_ar=''
263 full_sed=''
264 libswanted=''
265 hint=''
266 myuname=''
267 osname=''
268 osvers=''
269 Author=''
270 Date=''
271 Header=''
272 Id=''
273 Locker=''
274 Log=''
275 RCSfile=''
276 Revision=''
277 Source=''
278 State=''
279 _a=''
280 _exe=''
281 _o=''
282 archobjs=''
283 exe_ext=''
284 firstmakefile=''
285 lib_ext=''
286 obj_ext=''
287 path_sep=''
288 afs=''
289 afsroot=''
290 alignbytes=''
291 ansi2knr=''
292 archlib=''
293 archlibexp=''
294 d_archlib=''
295 installarchlib=''
296 archname=''
297 myarchname=''
298 d_atolf=''
299 d_atoll=''
300 baserev=''
301 bin=''
302 binexp=''
303 installbin=''
304 bincompat5005=''
305 d_bincompat5005=''
306 byteorder=''
307 cc=''
308 ccflags=''
309 cppflags=''
310 ldflags=''
311 lkflags=''
312 locincpth=''
313 optimize=''
314 cf_email=''
315 cf_by=''
316 cf_time=''
317 charsize=''
318 contains=''
319 cpp_stuff=''
320 cpplast=''
321 cppminus=''
322 cpprun=''
323 cppstdin=''
324 d__fwalk=''
325 d_access=''
326 d_accessx=''
327 d_alarm=''
328 asctime_r_proto=''
329 d_asctime_r=''
330 d_attribut=''
331 d_bcmp=''
332 d_bcopy=''
333 d_bzero=''
334 d_casti32=''
335 castflags=''
336 d_castneg=''
337 d_chown=''
338 d_chroot=''
339 d_chsize=''
340 d_class=''
341 d_closedir=''
342 d_void_closedir=''
343 d_cmsghdr_s=''
344 d_const=''
345 cryptlib=''
346 d_crypt=''
347 crypt_r_proto=''
348 d_crypt_r=''
349 d_csh=''
350 full_csh=''
351 ctermid_r_proto=''
352 d_ctermid_r=''
353 ctime_r_proto=''
354 d_ctime_r=''
355 d_cuserid=''
356 d_dbl_dig=''
357 d_dbminitproto=''
358 d_difftime=''
359 d_dirfd=''
360 d_dlerror=''
361 d_dlopen=''
362 d_dlsymun=''
363 d_dosuid=''
364 d_suidsafe=''
365 d_drand48_r=''
366 drand48_r_proto=''
367 d_drand48proto=''
368 d_dup2=''
369 d_eaccess=''
370 d_endgrent=''
371 d_endgrent_r=''
372 endgrent_r_proto=''
373 d_endhent=''
374 d_endhostent_r=''
375 endhostent_r_proto=''
376 d_endnent=''
377 d_endnetent_r=''
378 endnetent_r_proto=''
379 d_endpent=''
380 d_endprotoent_r=''
381 endprotoent_r_proto=''
382 d_endpwent=''
383 d_endpwent_r=''
384 endpwent_r_proto=''
385 d_endsent=''
386 d_endservent_r=''
387 endservent_r_proto=''
388 d_fchdir=''
389 d_fchmod=''
390 d_fchown=''
391 d_fcntl=''
392 d_fcntl_can_lock=''
393 d_fd_macros=''
394 d_fd_set=''
395 d_fds_bits=''
396 d_fgetpos=''
397 d_finite=''
398 d_finitel=''
399 d_flexfnam=''
400 d_flock=''
401 d_flockproto=''
402 d_fork=''
403 d_fp_class=''
404 d_fpclass=''
405 d_fpclassify=''
406 d_fpclassl=''
407 d_fpos64_t=''
408 d_frexpl=''
409 d_fs_data_s=''
410 d_fseeko=''
411 d_fsetpos=''
412 d_fstatfs=''
413 d_fsync=''
414 d_ftello=''
415 d_ftime=''
416 d_gettimeod=''
417 d_Gconvert=''
418 d_getcwd=''
419 d_getespwnam=''
420 d_getfsstat=''
421 d_getgrent=''
422 d_getgrent_r=''
423 getgrent_r_proto=''
424 d_getgrgid_r=''
425 getgrgid_r_proto=''
426 d_getgrnam_r=''
427 getgrnam_r_proto=''
428 d_getgrps=''
429 d_gethbyaddr=''
430 d_gethbyname=''
431 d_gethent=''
432 aphostname=''
433 d_gethname=''
434 d_phostname=''
435 d_uname=''
436 d_gethostbyaddr_r=''
437 gethostbyaddr_r_proto=''
438 d_gethostbyname_r=''
439 gethostbyname_r_proto=''
440 d_gethostent_r=''
441 gethostent_r_proto=''
442 d_gethostprotos=''
443 d_getitimer=''
444 d_getlogin=''
445 d_getlogin_r=''
446 getlogin_r_proto=''
447 d_getmnt=''
448 d_getmntent=''
449 d_getnbyaddr=''
450 d_getnbyname=''
451 d_getnent=''
452 d_getnetbyaddr_r=''
453 getnetbyaddr_r_proto=''
454 d_getnetbyname_r=''
455 getnetbyname_r_proto=''
456 d_getnetent_r=''
457 getnetent_r_proto=''
458 d_getnetprotos=''
459 d_getpagsz=''
460 d_getpent=''
461 d_getpgid=''
462 d_getpgrp2=''
463 d_bsdgetpgrp=''
464 d_getpgrp=''
465 d_getppid=''
466 d_getprior=''
467 d_getpbyname=''
468 d_getpbynumber=''
469 d_getprotobyname_r=''
470 getprotobyname_r_proto=''
471 d_getprotobynumber_r=''
472 getprotobynumber_r_proto=''
473 d_getprotoent_r=''
474 getprotoent_r_proto=''
475 d_getprotoprotos=''
476 d_getprpwnam=''
477 d_getpwent=''
478 d_getpwent_r=''
479 getpwent_r_proto=''
480 d_getpwnam_r=''
481 getpwnam_r_proto=''
482 d_getpwuid_r=''
483 getpwuid_r_proto=''
484 d_getsent=''
485 d_getservbyname_r=''
486 getservbyname_r_proto=''
487 d_getservbyport_r=''
488 getservbyport_r_proto=''
489 d_getservent_r=''
490 getservent_r_proto=''
491 d_getservprotos=''
492 d_getspnam=''
493 d_getspnam_r=''
494 getspnam_r_proto=''
495 d_getsbyname=''
496 d_getsbyport=''
497 d_gmtime_r=''
498 gmtime_r_proto=''
499 d_gnulibc=''
500 d_hasmntopt=''
501 d_htonl=''
502 d_inetaton=''
503 d_int64_t=''
504 d_isascii=''
505 d_isfinite=''
506 d_isinf=''
507 d_isnan=''
508 d_isnanl=''
509 d_killpg=''
510 d_lchown=''
511 d_ldbl_dig=''
512 d_link=''
513 d_localtime_r=''
514 localtime_r_proto=''
515 d_locconv=''
516 d_lockf=''
517 d_longdbl=''
518 longdblsize=''
519 d_longlong=''
520 longlongsize=''
521 d_lseekproto=''
522 d_lstat=''
523 d_madvise=''
524 d_mblen=''
525 d_mbstowcs=''
526 d_mbtowc=''
527 d_memchr=''
528 d_memcmp=''
529 d_memcpy=''
530 d_memmove=''
531 d_memset=''
532 d_mkdir=''
533 d_mkdtemp=''
534 d_mkfifo=''
535 d_mkstemp=''
536 d_mkstemps=''
537 d_mktime=''
538 d_mmap=''
539 mmaptype=''
540 d_modfl=''
541 d_modfl_pow32_bug=''
542 d_mprotect=''
543 d_msg=''
544 d_msgctl=''
545 d_msgget=''
546 d_msghdr_s=''
547 d_msgrcv=''
548 d_msgsnd=''
549 d_msync=''
550 d_munmap=''
551 d_nice=''
552 d_nl_langinfo=''
553 d_off64_t=''
554 d_open3=''
555 d_fpathconf=''
556 d_pathconf=''
557 d_pause=''
558 d_pipe=''
559 d_poll=''
560 d_portable=''
561 d_procselfexe=''
562 procselfexe=''
563 d_old_pthread_create_joinable=''
564 old_pthread_create_joinable=''
565 d_pthread_atfork=''
566 d_pthread_yield=''
567 d_sched_yield=''
568 sched_yield=''
569 d_qgcvt=''
570 d_random_r=''
571 random_r_proto=''
572 d_readdir64_r=''
573 readdir64_r_proto=''
574 d_readdir=''
575 d_rewinddir=''
576 d_seekdir=''
577 d_telldir=''
578 d_readdir_r=''
579 readdir_r_proto=''
580 d_readlink=''
581 d_readv=''
582 d_recvmsg=''
583 d_rename=''
584 d_rmdir=''
585 d_safebcpy=''
586 d_safemcpy=''
587 d_sanemcmp=''
588 d_sbrkproto=''
589 d_select=''
590 d_sem=''
591 d_semctl=''
592 d_semget=''
593 d_semop=''
594 d_sendmsg=''
595 d_setegid=''
596 d_seteuid=''
597 d_setgrent=''
598 d_setgrent_r=''
599 setgrent_r_proto=''
600 d_setgrps=''
601 d_sethent=''
602 d_sethostent_r=''
603 sethostent_r_proto=''
604 d_setitimer=''
605 d_setlinebuf=''
606 d_setlocale=''
607 d_setlocale_r=''
608 setlocale_r_proto=''
609 d_setnent=''
610 d_setnetent_r=''
611 setnetent_r_proto=''
612 d_setpent=''
613 d_setpgid=''
614 d_setpgrp2=''
615 d_bsdsetpgrp=''
616 d_setpgrp=''
617 d_setprior=''
618 d_setproctitle=''
619 d_setprotoent_r=''
620 setprotoent_r_proto=''
621 d_setpwent=''
622 d_setpwent_r=''
623 setpwent_r_proto=''
624 d_setregid=''
625 d_setresgid=''
626 d_setresuid=''
627 d_setreuid=''
628 d_setrgid=''
629 d_setruid=''
630 d_setsent=''
631 d_setservent_r=''
632 setservent_r_proto=''
633 d_setsid=''
634 d_setvbuf=''
635 d_sfio=''
636 usesfio=''
637 d_shm=''
638 d_shmat=''
639 d_shmatprototype=''
640 shmattype=''
641 d_shmctl=''
642 d_shmdt=''
643 d_shmget=''
644 d_sigaction=''
645 d_sigprocmask=''
646 d_sigsetjmp=''
647 d_sockatmark=''
648 d_sockatmarkproto=''
649 d_msg_ctrunc=''
650 d_msg_dontroute=''
651 d_msg_oob=''
652 d_msg_peek=''
653 d_msg_proxy=''
654 d_oldsock=''
655 d_scm_rights=''
656 d_socket=''
657 d_sockpair=''
658 sockethdr=''
659 socketlib=''
660 d_socklen_t=''
661 d_socks5_init=''
662 d_sqrtl=''
663 d_srand48_r=''
664 srand48_r_proto=''
665 d_srandom_r=''
666 srandom_r_proto=''
667 d_sresgproto=''
668 d_sresuproto=''
669 d_statblks=''
670 d_statfs_f_flags=''
671 d_statfs_s=''
672 d_fstatvfs=''
673 d_statvfs=''
674 d_stdio_cnt_lval=''
675 d_stdio_ptr_lval=''
676 d_stdio_ptr_lval_nochange_cnt=''
677 d_stdio_ptr_lval_sets_cnt=''
678 d_stdiobase=''
679 d_stdstdio=''
680 stdio_base=''
681 stdio_bufsiz=''
682 stdio_cnt=''
683 stdio_filbuf=''
684 stdio_ptr=''
685 d_index=''
686 d_strchr=''
687 d_strcoll=''
688 d_strctcpy=''
689 d_strerrm=''
690 d_strerror=''
691 d_sysernlst=''
692 d_syserrlst=''
693 d_strerror_r=''
694 strerror_r_proto=''
695 d_strftime=''
696 d_strtod=''
697 d_strtol=''
698 d_strtold=''
699 d_strtoll=''
700 d_strtoq=''
701 d_strtoul=''
702 d_strtoull=''
703 d_strtouq=''
704 d_strxfrm=''
705 d_symlink=''
706 d_syscall=''
707 d_syscallproto=''
708 d_sysconf=''
709 d_system=''
710 d_tcgetpgrp=''
711 d_tcsetpgrp=''
712 d_telldirproto=''
713 d_time=''
714 timetype=''
715 clocktype=''
716 d_times=''
717 d_tmpnam_r=''
718 tmpnam_r_proto=''
719 d_truncate=''
720 d_ttyname_r=''
721 ttyname_r_proto=''
722 d_tzname=''
723 d_u32align=''
724 d_ualarm=''
725 d_umask=''
726 d_semctl_semid_ds=''
727 d_semctl_semun=''
728 d_union_semun=''
729 d_unordered=''
730 d_usleep=''
731 d_usleepproto=''
732 d_ustat=''
733 d_vfork=''
734 usevfork=''
735 d_voidsig=''
736 signal_t=''
737 d_volatile=''
738 d_charvspr=''
739 d_vprintf=''
740 d_wait4=''
741 d_waitpid=''
742 d_wcstombs=''
743 d_wctomb=''
744 d_writev=''
745 dlext=''
746 cccdlflags=''
747 ccdlflags=''
748 dlsrc=''
749 ld=''
750 lddlflags=''
751 usedl=''
752 doublesize=''
753 ebcdic=''
754 fflushNULL=''
755 fflushall=''
756 fpossize=''
757 fpostype=''
758 gccosandvers=''
759 gccversion=''
760 gidformat=''
761 gidsign=''
762 gidsize=''
763 gidtype=''
764 groupstype=''
765 h_fcntl=''
766 h_sysfile=''
767 i_arpainet=''
768 i_crypt=''
769 db_hashtype=''
770 db_prefixtype=''
771 db_version_major=''
772 db_version_minor=''
773 db_version_patch=''
774 i_db=''
775 i_dbm=''
776 i_rpcsvcdbm=''
777 d_dirnamlen=''
778 direntrytype=''
779 i_dirent=''
780 i_dld=''
781 i_dlfcn=''
782 i_fcntl=''
783 i_float=''
784 i_fp=''
785 i_fp_class=''
786 i_gdbm=''
787 d_grpasswd=''
788 i_grp=''
789 i_ieeefp=''
790 i_inttypes=''
791 i_langinfo=''
792 i_libutil=''
793 i_limits=''
794 i_locale=''
795 i_machcthr=''
796 i_malloc=''
797 i_math=''
798 i_memory=''
799 i_mntent=''
800 i_ndbm=''
801 i_netdb=''
802 i_neterrno=''
803 i_netinettcp=''
804 i_niin=''
805 i_sysin=''
806 i_poll=''
807 i_prot=''
808 i_pthread=''
809 d_pwage=''
810 d_pwchange=''
811 d_pwclass=''
812 d_pwcomment=''
813 d_pwexpire=''
814 d_pwgecos=''
815 d_pwpasswd=''
816 d_pwquota=''
817 i_pwd=''
818 i_sfio=''
819 i_shadow=''
820 i_socks=''
821 i_stddef=''
822 i_stdlib=''
823 i_string=''
824 strings=''
825 i_sunmath=''
826 i_sysaccess=''
827 i_sysdir=''
828 i_sysfile=''
829 d_voidtty=''
830 i_bsdioctl=''
831 i_sysfilio=''
832 i_sysioctl=''
833 i_syssockio=''
834 i_syslog=''
835 i_sysmman=''
836 i_sysmode=''
837 i_sysmount=''
838 i_sysndir=''
839 i_sysparam=''
840 i_sysresrc=''
841 i_syssecrt=''
842 i_sysselct=''
843 i_sysstat=''
844 i_sysstatfs=''
845 i_sysstatvfs=''
846 i_systimes=''
847 i_systypes=''
848 i_sysuio=''
849 i_sysun=''
850 i_sysutsname=''
851 i_sysvfs=''
852 i_syswait=''
853 i_sgtty=''
854 i_termio=''
855 i_termios=''
856 d_tm_tm_gmtoff=''
857 d_tm_tm_zone=''
858 i_systime=''
859 i_systimek=''
860 i_time=''
861 timeincl=''
862 i_unistd=''
863 i_ustat=''
864 i_utime=''
865 i_values=''
866 i_stdarg=''
867 i_varargs=''
868 i_varhdr=''
869 i_vfork=''
870 inc_version_list=''
871 inc_version_list_init=''
872 installprefix=''
873 installprefixexp=''
874 installstyle=''
875 installusrbinperl=''
876 intsize=''
877 longsize=''
878 shortsize=''
879 issymlink=''
880 libc=''
881 ldlibpthname=''
882 libperl=''
883 shrpenv=''
884 useshrplib=''
885 glibpth=''
886 libpth=''
887 loclibpth=''
888 plibpth=''
889 xlibpth=''
890 ignore_versioned_solibs=''
891 libs=''
892 libsdirs=''
893 libsfiles=''
894 libsfound=''
895 libspath=''
896 lns=''
897 d_PRIEUldbl=''
898 d_PRIFUldbl=''
899 d_PRIGUldbl=''
900 d_PRIeldbl=''
901 d_PRIfldbl=''
902 d_PRIgldbl=''
903 d_SCNfldbl=''
904 sPRIEUldbl=''
905 sPRIFUldbl=''
906 sPRIGUldbl=''
907 sPRIeldbl=''
908 sPRIfldbl=''
909 sPRIgldbl=''
910 sSCNfldbl=''
911 lseeksize=''
912 lseektype=''
913 make_set_make=''
914 d_mymalloc=''
915 freetype=''
916 mallocobj=''
917 mallocsrc=''
918 malloctype=''
919 usemymalloc=''
920 installman1dir=''
921 man1dir=''
922 man1direxp=''
923 man1ext=''
924 installman3dir=''
925 man3dir=''
926 man3direxp=''
927 man3ext=''
928 modetype=''
929 multiarch=''
930 mydomain=''
931 myhostname=''
932 phostname=''
933 c=''
934 n=''
935 d_eofnblk=''
936 eagain=''
937 o_nonblock=''
938 rd_nodata=''
939 need_va_copy=''
940 netdb_hlen_type=''
941 netdb_host_type=''
942 netdb_name_type=''
943 netdb_net_type=''
944 groupcat=''
945 hostcat=''
946 passcat=''
947 orderlib=''
948 ranlib=''
949 d_perl_otherlibdirs=''
950 otherlibdirs=''
951 package=''
952 spackage=''
953 pager=''
954 api_revision=''
955 api_subversion=''
956 api_version=''
957 api_versionstring=''
958 patchlevel=''
959 perl_patchlevel=''
960 revision=''
961 subversion=''
962 version=''
963 version_patchlevel_string=''
964 perl5=''
965 perladmin=''
966 perlpath=''
967 d_nv_preserves_uv=''
968 i16size=''
969 i16type=''
970 i32size=''
971 i32type=''
972 i64size=''
973 i64type=''
974 i8size=''
975 i8type=''
976 ivsize=''
977 ivtype=''
978 nv_preserves_uv_bits=''
979 nvsize=''
980 nvtype=''
981 u16size=''
982 u16type=''
983 u32size=''
984 u32type=''
985 u64size=''
986 u64type=''
987 u8size=''
988 u8type=''
989 uvsize=''
990 uvtype=''
991 ivdformat=''
992 nvEUformat=''
993 nvFUformat=''
994 nvGUformat=''
995 nveformat=''
996 nvfformat=''
997 nvgformat=''
998 uvXUformat=''
999 uvoformat=''
1000 uvuformat=''
1001 uvxformat=''
1002 pidtype=''
1003 prefix=''
1004 prefixexp=''
1005 installprivlib=''
1006 privlib=''
1007 privlibexp=''
1008 prototype=''
1009 ptrsize=''
1010 d_PRIXU64=''
1011 d_PRId64=''
1012 d_PRIi64=''
1013 d_PRIo64=''
1014 d_PRIu64=''
1015 d_PRIx64=''
1016 sPRIXU64=''
1017 sPRId64=''
1018 sPRIi64=''
1019 sPRIo64=''
1020 sPRIu64=''
1021 sPRIx64=''
1022 d_quad=''
1023 quadkind=''
1024 quadtype=''
1025 uquadtype=''
1026 drand01=''
1027 randbits=''
1028 randfunc=''
1029 randseedtype=''
1030 seedfunc=''
1031 installscript=''
1032 scriptdir=''
1033 scriptdirexp=''
1034 selectminbits=''
1035 selecttype=''
1036 sh=''
1037 sig_count=''
1038 sig_name=''
1039 sig_name_init=''
1040 sig_num=''
1041 sig_num_init=''
1042 sig_size=''
1043 installsitearch=''
1044 sitearch=''
1045 sitearchexp=''
1046 installsitebin=''
1047 sitebin=''
1048 sitebinexp=''
1049 installsitelib=''
1050 sitelib=''
1051 sitelib_stem=''
1052 sitelibexp=''
1053 siteprefix=''
1054 siteprefixexp=''
1055 sizesize=''
1056 sizetype=''
1057 so=''
1058 socksizetype=''
1059 sharpbang=''
1060 shsharp=''
1061 spitshell=''
1062 src=''
1063 ssizetype=''
1064 startperl=''
1065 startsh=''
1066 stdchar=''
1067 d_stdio_stream_array=''
1068 stdio_stream_array=''
1069 sysman=''
1070 trnl=''
1071 uidformat=''
1072 uidsign=''
1073 uidsize=''
1074 uidtype=''
1075 archname64=''
1076 use64bitall=''
1077 use64bitint=''
1078 ccflags_uselargefiles=''
1079 ldflags_uselargefiles=''
1080 libswanted_uselargefiles=''
1081 uselargefiles=''
1082 uselongdouble=''
1083 usemorebits=''
1084 usemultiplicity=''
1085 nm_opt=''
1086 nm_so_opt=''
1087 runnm=''
1088 usenm=''
1089 useperlio=''
1090 usesocks=''
1091 d_oldpthreads=''
1092 use5005threads=''
1093 useithreads=''
1094 usereentrant=''
1095 usethreads=''
1096 incpath=''
1097 mips_type=''
1098 usrinc=''
1099 d_vendorarch=''
1100 installvendorarch=''
1101 vendorarch=''
1102 vendorarchexp=''
1103 d_vendorbin=''
1104 installvendorbin=''
1105 vendorbin=''
1106 vendorbinexp=''
1107 d_vendorlib=''
1108 installvendorlib=''
1109 vendorlib=''
1110 vendorlib_stem=''
1111 vendorlibexp=''
1112 usevendorprefix=''
1113 vendorprefix=''
1114 vendorprefixexp=''
1115 versiononly=''
1116 defvoidused=''
1117 voidflags=''
1118 pm_apiversion=''
1119 xs_apiversion=''
1120 yacc=''
1121 yaccflags=''
1122 CONFIG=''
1123
1124 define='define'
1125 undef='undef'
1126 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1127 rmlist=''
1128
1129 : We must find out about Eunice early
1130 eunicefix=':'
1131 if test -f /etc/unixtovms; then
1132         eunicefix=/etc/unixtovms
1133 fi
1134 if test -f /etc/unixtovms.exe; then
1135         eunicefix=/etc/unixtovms.exe
1136 fi
1137
1138 : Set executable suffix now -- needed before hints available
1139 if test -f "/libs/version.library"; then
1140 : Amiga OS
1141     _exe=""
1142 elif test -f "/system/gnu_library/bin/ar.pm"; then
1143 : Stratus VOS
1144     _exe=".pm"
1145 elif test -n "$DJGPP"; then
1146 : DOS DJGPP
1147     _exe=".exe"
1148 elif test -d c:/. ; then
1149 : OS/2 or cygwin
1150     _exe=".exe"
1151 fi
1152
1153 i_whoami=''
1154 ccname=''
1155 ccversion=''
1156 perllibs=''
1157 : set useposix=false in your hint file to disable the POSIX extension.
1158 useposix=true
1159 : set useopcode=false in your hint file to disable the Opcode extension.
1160 useopcode=true
1161 : Trailing extension.  Override this in a hint file, if needed.
1162 : Extra object files, if any, needed on this platform.
1163 archobjs=''
1164 archname=''
1165 : Possible local include directories to search.
1166 : Set locincpth to "" in a hint file to defeat local include searches.
1167 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1168 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1169 :
1170 : no include file wanted by default
1171 inclwanted=''
1172
1173 groupstype=''
1174 libnames=''
1175 : change the next line if compiling for Xenix/286 on Xenix/386
1176 xlibpth='/usr/lib/386 /lib/386'
1177 : Possible local library directories to search.
1178 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1179 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1180
1181 : general looking path for locating libraries
1182 glibpth="/lib /usr/lib $xlibpth"
1183 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1184 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1185 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1186
1187 : Private path used by Configure to find libraries.  Its value
1188 : is prepended to libpth. This variable takes care of special
1189 : machines, like the mips.  Usually, it should be empty.
1190 plibpth=''
1191
1192 : default library list
1193 libswanted=''
1194 : some systems want to use only the non-versioned libso:s
1195 ignore_versioned_solibs=''
1196 archname64=''
1197 ccflags_uselargefiles=''
1198 ldflags_uselargefiles=''
1199 libswanted_uselargefiles=''
1200 : set usemultiplicity on the Configure command line to enable multiplicity.
1201 : set usesocks on the Configure command line to enable socks.
1202 : set usethreads on the Configure command line to enable threads.
1203 usereentrant='undef'
1204 : full support for void wanted by default
1205 defvoidused=15
1206
1207 : List of libraries we want.
1208 : If anyone needs -lnet, put it in a hint file.
1209 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1210 libswanted="$libswanted dld ld sun m c cposix posix"
1211 libswanted="$libswanted ndir dir crypt sec"
1212 libswanted="$libswanted ucb bsd BSD PW x util"
1213 : We probably want to search /usr/shlib before most other libraries.
1214 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1215 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1216 glibpth="/usr/shlib $glibpth"
1217 : Do not use vfork unless overridden by a hint file.
1218 usevfork=false
1219
1220 : Find the basic shell for Bourne shell scripts
1221 case "$sh" in
1222 '')
1223         case "$SYSTYPE" in
1224         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1225         *) xxx='/bin/sh';;
1226         esac
1227         if test -f "$xxx"; then
1228                 sh="$xxx"
1229         else
1230                 : Build up a list and do a single loop so we can 'break' out.
1231                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1232                 for xxx in sh bash ksh pdksh ash; do
1233                         for p in $pth; do
1234                                 try="$try ${p}/${xxx}"
1235                         done
1236                 done
1237                 for xxx in $try; do
1238                         if test -f "$xxx"; then
1239                                 sh="$xxx";
1240                                 break
1241                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1242                                 sh="$xxx";
1243                                 break
1244                         elif test -f "$xxx.exe"; then
1245                                 sh="$xxx";
1246                                 break
1247                         fi
1248                 done
1249         fi
1250         ;;
1251 esac
1252
1253 case "$sh" in
1254 '')     cat >&2 <<EOM
1255 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1256
1257 Usually it's in /bin/sh.  How did you even get this far?
1258 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1259 we'll try to straighten this all out.
1260 EOM
1261         exit 1
1262         ;;
1263 esac
1264
1265 : see if sh knows # comments
1266 if `$sh -c '#' >/dev/null 2>&1`; then
1267         shsharp=true
1268         spitshell=cat
1269         xcat=/bin/cat
1270         test -f $xcat$_exe || xcat=/usr/bin/cat
1271         if test ! -f $xcat$_exe; then
1272                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1273                         if test -f $p/cat$_exe; then
1274                                 xcat=$p/cat
1275                                 break
1276                         fi
1277                 done
1278                 if test ! -f $xcat$_exe; then
1279                         echo "Can't find cat anywhere!"
1280                         exit 1
1281                 fi
1282         fi
1283         echo "#!$xcat" >sharp
1284         $eunicefix sharp
1285         chmod +x sharp
1286         ./sharp > today
1287         if test -s today; then
1288                 sharpbang='#!'
1289         else
1290                 echo "#! $xcat" > sharp
1291                 $eunicefix sharp
1292                 chmod +x sharp
1293                 ./sharp > today
1294                 if test -s today; then
1295                         sharpbang='#! '
1296                 else
1297                         sharpbang=': use '
1298                 fi
1299         fi
1300 else
1301         echo " "
1302         echo "Your $sh doesn't grok # comments--I will strip them later on."
1303         shsharp=false
1304         cd ..
1305         echo "exec grep -v '^[  ]*#'" >spitshell
1306         chmod +x spitshell
1307         $eunicefix spitshell
1308         spitshell=`pwd`/spitshell
1309         cd UU
1310         echo "I presume that if # doesn't work, #! won't work either!"
1311         sharpbang=': use '
1312 fi
1313 rm -f sharp today
1314
1315 : figure out how to guarantee sh startup
1316 case "$startsh" in
1317 '') startsh=${sharpbang}${sh} ;;
1318 *)
1319 esac
1320 cat >sharp <<EOSS
1321 $startsh
1322 set abc
1323 test "$?abc" != 1
1324 EOSS
1325
1326 chmod +x sharp
1327 $eunicefix sharp
1328 if ./sharp; then
1329         : echo "Yup, it does."
1330 else
1331         echo "Hmm... '$startsh' does not guarantee sh startup..."
1332         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1333 fi
1334 rm -f sharp
1335
1336
1337 : Save command line options in file UU/cmdline.opt for later use in
1338 : generating config.sh.
1339 cat > cmdline.opt <<EOSH
1340 # Configure command line arguments.
1341 config_arg0='$0'
1342 config_args='$*'
1343 config_argc=$#
1344 EOSH
1345 argn=1
1346 args_exp=''
1347 args_sep=''
1348 for arg in "$@"; do
1349         cat >>cmdline.opt <<EOSH
1350 config_arg$argn='$arg'
1351 EOSH
1352         # Extreme backslashitis: replace each ' by '"'"'
1353         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1354 $arg
1355 EOC
1356         arg_exp=`cat cmdl.opt`
1357         args_exp="$args_exp$args_sep'$arg_exp'"
1358         argn=`expr $argn + 1`
1359         args_sep=' '
1360 done
1361 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1362 # used by ./hints/os2.sh
1363 rm -f cmdl.opt
1364
1365 : produce awk script to parse command line options
1366 cat >options.awk <<'EOF'
1367 BEGIN {
1368         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1369
1370         len = length(optstr);
1371         for (i = 1; i <= len; i++) {
1372                 c = substr(optstr, i, 1);
1373                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1374                 if (a == ":") {
1375                         arg[c] = 1;
1376                         i++;
1377                 }
1378                 opt[c] = 1;
1379         }
1380 }
1381 {
1382         expect = 0;
1383         str = $0;
1384         if (substr(str, 1, 1) != "-") {
1385                 printf("'%s'\n", str);
1386                 next;
1387         }
1388         len = length($0);
1389         for (i = 2; i <= len; i++) {
1390                 c = substr(str, i, 1);
1391                 if (!opt[c]) {
1392                         printf("-%s\n", substr(str, i));
1393                         next;
1394                 }
1395                 printf("-%s\n", c);
1396                 if (arg[c]) {
1397                         if (i < len)
1398                                 printf("'%s'\n", substr(str, i + 1));
1399                         else
1400                                 expect = 1;
1401                         next;
1402                 }
1403         }
1404 }
1405 END {
1406         if (expect)
1407                 print "?";
1408 }
1409 EOF
1410
1411 : process the command line options
1412 set X `for arg in "$@"; do echo "X$arg"; done |
1413         sed -e s/X// | awk -f options.awk`
1414 eval "set $*"
1415 shift
1416 rm -f options.awk
1417
1418 : set up default values
1419 fastread=''
1420 reuseval=false
1421 config_sh=''
1422 alldone=''
1423 error=''
1424 silent=''
1425 extractsh=''
1426 override=''
1427 knowitall=''
1428 rm -f optdef.sh posthint.sh
1429 cat >optdef.sh <<EOS
1430 $startsh
1431 EOS
1432
1433
1434 : option parsing
1435 while test $# -gt 0; do
1436         case "$1" in
1437         -d) shift; fastread=yes;;
1438         -e) shift; alldone=cont;;
1439         -f)
1440                 shift
1441                 cd ..
1442                 if test -r "$1"; then
1443                         config_sh="$1"
1444                 else
1445                         echo "$me: cannot read config file $1." >&2
1446                         error=true
1447                 fi
1448                 cd UU
1449                 shift;;
1450         -h) shift; error=true;;
1451         -r) shift; reuseval=true;;
1452         -s) shift; silent=true; realsilent=true;;
1453         -E) shift; alldone=exit;;
1454         -K) shift; knowitall=true;;
1455         -O) shift; override=true;;
1456         -S) shift; silent=true; extractsh=true;;
1457         -D)
1458                 shift
1459                 case "$1" in
1460                 *=)
1461                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1462                         echo "$me: ignoring -D $1" >&2
1463                         ;;
1464                 *=*) echo "$1" | \
1465                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1466                 *) echo "$1='define'" >> optdef.sh;;
1467                 esac
1468                 shift
1469                 ;;
1470         -U)
1471                 shift
1472                 case "$1" in
1473                 *=) echo "$1" >> optdef.sh;;
1474                 *=*)
1475                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1476                         echo "$me: ignoring -U $1" >&2
1477                         ;;
1478                 *) echo "$1='undef'" >> optdef.sh;;
1479                 esac
1480                 shift
1481                 ;;
1482         -A)
1483             shift
1484             xxx=''
1485             yyy="$1"
1486             zzz=''
1487             uuu=undef
1488             case "$yyy" in
1489             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1490                  case "$zzz" in
1491                  *:*) zzz='' ;;
1492                  *)   xxx=append
1493                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1494                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1495                  esac
1496                  ;;
1497             esac
1498             case "$xxx" in
1499             '')  case "$yyy" in
1500                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1501                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1502                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1503                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1504                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1505                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1506                  esac
1507                  ;;       
1508             esac
1509             case "$xxx" in
1510             append)
1511                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1512             clear)
1513                 echo "$yyy=''"                  >> posthint.sh ;;
1514             define)
1515                 case "$zzz" in
1516                 '') zzz=define ;;
1517                 esac
1518                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1519             eval)
1520                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1521             prepend)
1522                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1523             undef)
1524                 case "$zzz" in
1525                 '') zzz="$uuu" ;;
1526                 esac
1527                 echo "$yyy=$zzz"                >> posthint.sh ;;
1528             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1529             esac
1530             shift
1531             ;;
1532         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1533             exit 0;;
1534         --) break;;
1535         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1536         *) break;;
1537         esac
1538 done
1539
1540 case "$error" in
1541 true)
1542         cat >&2 <<EOM
1543 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1544                  [-U symbol] [-U symbol=] [-A command:symbol...]
1545   -d : use defaults for all answers.
1546   -e : go on without questioning past the production of config.sh.
1547   -f : specify an alternate default configuration file.
1548   -h : print this help message and exit (with an error status).
1549   -r : reuse C symbols value if possible (skips costly nm extraction).
1550   -s : silent mode, only echoes questions and essential information.
1551   -D : define symbol to have some value:
1552          -D symbol         symbol gets the value 'define'
1553          -D symbol=value   symbol gets the value 'value'
1554   -E : stop at the end of questions, after having produced config.sh.
1555   -K : do not use unless you know what you are doing.
1556   -O : let -D and -U override definitions from loaded configuration file.
1557   -S : perform variable substitutions on all .SH files (can mix with -f)
1558   -U : undefine symbol:
1559          -U symbol    symbol gets the value 'undef'
1560          -U symbol=   symbol gets completely empty
1561   -A : manipulate symbol after the platform specific hints have been applied:
1562          -A symbol=value                append " "value to symbol
1563          -A append:symbol=value         append value to symbol
1564          -A define:symbol=value         define symbol to have value
1565          -A clear:symbol                define symbol to be ''
1566          -A define:symbol               define symbol to be 'define'
1567          -A eval:symbol=value           define symbol to be eval of value
1568          -A prepend:symbol=value        prepend value to symbol
1569          -A undef:symbol                define symbol to be 'undef'
1570          -A undef:symbol=               define symbol to be ''
1571   -V : print version number and exit (with a zero status).
1572 EOM
1573         exit 1
1574         ;;
1575 esac
1576
1577 : Sanity checks
1578 case "$fastread$alldone" in
1579 yescont|yesexit) ;;
1580 *)
1581         case "$extractsh" in
1582         true) ;;
1583         *)
1584                 if test ! -t 0; then
1585                         echo "Say 'sh Configure', not 'sh <Configure'"
1586                         exit 1
1587                 fi
1588                 ;;
1589         esac
1590         ;;
1591 esac
1592
1593 exec 4>&1
1594 case "$silent" in
1595 true) exec 1>/dev/null;;
1596 esac
1597
1598 : run the defines and the undefines, if any, but leave the file out there...
1599 touch optdef.sh
1600 . ./optdef.sh
1601 : create the posthint manipulation script and leave the file out there...
1602 touch posthint.sh
1603
1604 : set package name
1605 package=perl5
1606 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1607 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1608 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1609 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1610 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1611 esac
1612
1613 : Some greps do not return status, grrr.
1614 echo "grimblepritz" >grimble
1615 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1616         contains=contains
1617 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1618         contains=grep
1619 else
1620         contains=contains
1621 fi
1622 rm -f grimble
1623 : the following should work in any shell
1624 case "$contains" in
1625 contains*)
1626         echo " "
1627         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1628         cat >contains <<'EOSS'
1629 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1630 EOSS
1631 chmod +x contains
1632 esac
1633
1634 : Find the path to the source tree
1635 case "$src" in
1636 '') case "$0" in
1637     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1638          case "$src" in
1639          /*)    ;;
1640          .)     ;;
1641          *)     src=`cd ../$src && pwd` ;;
1642          esac
1643          ;;
1644     *)   src='.';;
1645     esac;;
1646 esac
1647 case "$src" in
1648 '')     src=/
1649         rsrc=/
1650         ;;
1651 /*) rsrc="$src";;
1652 *) rsrc="../$src";;
1653 esac
1654 if test -f $rsrc/Configure && \
1655         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1656 then
1657    : found it, so we are ok.
1658 else
1659         rsrc=''
1660         for src in . .. ../.. ../../.. ../../../..; do
1661                 if test -f ../$src/Configure && \
1662                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1663                 then
1664                         rsrc=../$src
1665                         break
1666                 fi
1667         done
1668 fi
1669 case "$rsrc" in
1670 '')
1671         cat <<EOM >&4
1672
1673 Sorry, I can't seem to locate the source dir for $package.  Please start
1674 Configure with an explicit path -- i.e. /some/path/Configure.
1675
1676 EOM
1677         exit 1
1678         ;;
1679 ../.)   rsrc='..';;
1680 *)
1681         echo " "
1682         echo "Sources for $package found in \"$src\"." >&4
1683         ;;
1684 esac
1685
1686 : script used to extract .SH files with variable substitutions
1687 cat >extract <<'EOS'
1688 PERL_CONFIG_SH=true
1689 echo "Doing variable substitutions on .SH files..."
1690 if test -f MANIFEST; then
1691         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1692 else
1693         echo "(Looking for .SH files under the source directory.)"
1694         set x `(cd "$src"; find . -name "*.SH" -print)`
1695 fi
1696 shift
1697 case $# in
1698 0) set x `(cd "$src"; echo *.SH)`; shift;;
1699 esac
1700 if test ! -f "$src/$1"; then
1701         shift
1702 fi
1703 mkdir_p='
1704 name=$1;
1705 create="";
1706 while test $name; do
1707         if test ! -d "$name"; then
1708                 create="$name $create";
1709                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1710                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1711         else
1712                 name="";
1713         fi;
1714 done;
1715 for file in $create; do
1716         mkdir $file;
1717 done
1718 '
1719 for file in $*; do
1720         case "$src" in
1721         ".")
1722                 case "$file" in
1723                 */*)
1724                         dir=`expr X$file : 'X\(.*\)/'`
1725                         file=`expr X$file : 'X.*/\(.*\)'`
1726                         (cd "$dir" && . ./$file)
1727                         ;;
1728                 *)
1729                         . ./$file
1730                         ;;
1731                 esac
1732                 ;;
1733         *)
1734                 case "$file" in
1735                 */*)
1736                         dir=`expr X$file : 'X\(.*\)/'`
1737                         file=`expr X$file : 'X.*/\(.*\)'`
1738                         (set x $dir; shift; eval $mkdir_p)
1739                         sh <"$src/$dir/$file"
1740                         ;;
1741                 *)
1742                         sh <"$src/$file"
1743                         ;;
1744                 esac
1745                 ;;
1746         esac
1747 done
1748 if test -f "$src/config_h.SH"; then
1749         if test ! -f config.h; then
1750         : oops, they left it out of MANIFEST, probably, so do it anyway.
1751         . "$src/config_h.SH"
1752         fi
1753 fi
1754 EOS
1755
1756 : extract files and exit if asked to do so
1757 case "$extractsh" in
1758 true)
1759         case "$realsilent" in
1760         true) ;;
1761         *) exec 1>&4;;
1762         esac
1763         case "$config_sh" in
1764         '') config_sh='config.sh';;
1765         esac
1766         echo " "
1767         echo "Fetching answers from $config_sh..."
1768         cd ..
1769         . $config_sh
1770         test "$override" && . ./optdef.sh
1771         echo " "
1772         . UU/extract
1773         rm -rf UU
1774         echo "Extraction done."
1775         exit 0
1776         ;;
1777 esac
1778
1779 : Eunice requires " " instead of "", can you believe it
1780 echo " "
1781 : Here we go...
1782 echo "Beginning of configuration questions for $package."
1783
1784 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1785
1786 : first determine how to suppress newline on echo command
1787 echo " "
1788 echo "Checking echo to see how to suppress newlines..."
1789 (echo "hi there\c" ; echo " ") >.echotmp
1790 if $contains c .echotmp >/dev/null 2>&1 ; then
1791         echo "...using -n."
1792         n='-n'
1793         c=''
1794 else
1795         cat <<'EOM'
1796 ...using \c
1797 EOM
1798         n=''
1799         c='\c'
1800 fi
1801 echo $n "The star should be here-->$c"
1802 echo '*'
1803 rm -f .echotmp
1804
1805 : Now test for existence of everything in MANIFEST
1806 echo " "
1807 if test -f "$rsrc/MANIFEST"; then
1808         echo "First let's make sure your kit is complete.  Checking..." >&4
1809         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1810         rm -f missing
1811         tmppwd=`pwd`
1812         for filelist in x??; do
1813                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1814         done
1815         if test -s missing; then
1816                 cat missing >&4
1817                 cat >&4 <<'EOM'
1818
1819 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1820
1821 You have the option of continuing the configuration process, despite the
1822 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1823 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1824 and contact the author (perlbug@perl.org).
1825
1826 EOM
1827                 echo $n "Continue? [n] $c" >&4
1828                 read ans
1829                 case "$ans" in
1830                 y*)
1831                         echo "Continuing..." >&4
1832                         rm -f missing
1833                         ;;
1834                 *)
1835                         echo "ABORTING..." >&4
1836                         kill $$
1837                         ;;
1838                 esac
1839         else
1840                 echo "Looks good..."
1841         fi
1842 else
1843         echo "There is no MANIFEST file.  I hope your kit is complete !"
1844 fi
1845 rm -f missing x??
1846
1847 echo " "
1848 : Find the appropriate value for a newline for tr
1849 if test -n "$DJGPP"; then
1850        trnl='\012'
1851 fi
1852 if test X"$trnl" = X; then
1853         case "`echo foo|tr '\n' x 2>/dev/null`" in
1854         foox) trnl='\n' ;;
1855         esac
1856 fi
1857 if test X"$trnl" = X; then
1858         case "`echo foo|tr '\012' x 2>/dev/null`" in
1859         foox) trnl='\012' ;;
1860         esac
1861 fi
1862 if test X"$trnl" = X; then
1863         cat <<EOM >&2
1864
1865 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1866
1867 EOM
1868         exit 1
1869 fi
1870
1871 : compute the number of columns on the terminal for proper question formatting
1872 case "$COLUMNS" in
1873 '') COLUMNS='80';;
1874 esac
1875
1876 : set up the echo used in my read
1877 myecho="case \"\$xxxm\" in
1878 '') echo $n \"\$rp $c\" >&4;;
1879 *) case \"\$rp\" in
1880         '') echo $n \"[\$xxxm] $c\";;
1881         *)
1882                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1883                         echo \"\$rp\" >&4
1884                         echo $n \"[\$xxxm] $c\" >&4
1885                 else
1886                         echo $n \"\$rp [\$xxxm] $c\" >&4
1887                 fi
1888                 ;;
1889         esac;;
1890 esac"
1891
1892 : now set up to do reads with possible shell escape and default assignment
1893 cat <<EOSC >myread
1894 $startsh
1895 xxxm=\$dflt
1896 $myecho
1897 ans='!'
1898 case "\$fastread" in
1899 yes) case "\$dflt" in
1900         '') ;;
1901         *) ans='';
1902                 case "\$silent-\$rp" in
1903                 true-) ;;
1904                 *) echo " " >&4;;
1905                 esac;;
1906         esac;;
1907 *) case "\$silent" in
1908         true) case "\$rp" in
1909                 '') ans='';;
1910                 esac;;
1911         esac;;
1912 esac
1913 while expr "X\$ans" : "X!" >/dev/null; do
1914         read answ
1915         set x \$xxxm
1916         shift
1917         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1918         case  "\$answ" in
1919         "!")
1920                 sh 1>&4
1921                 echo " "
1922                 $myecho
1923                 ;;
1924         !*)
1925                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1926                 shift
1927                 sh 1>&4 -c "\$*"
1928                 echo " "
1929                 $myecho
1930                 ;;
1931         "\$ans")
1932                 case "\$ans" in
1933                 \\&*)
1934                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1935                         shift
1936                         case "\$1" in
1937                         -d)
1938                                 fastread=yes
1939                                 echo "(OK, I'll run with -d after this question.)" >&4
1940                                 ;;
1941                         -*)
1942                                 echo "*** Sorry, \$1 not supported yet." >&4
1943                                 ;;
1944                         esac
1945                         $myecho
1946                         ans=!
1947                         ;;
1948                 esac;;
1949         *)
1950                 case "\$aok" in
1951                 y)
1952                         echo "*** Substitution done -- please confirm."
1953                         xxxm="\$ans"
1954                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1955                         xxxm="\$ans"
1956                         ans=!
1957                         ;;
1958                 *)
1959                         echo "*** Error -- try again."
1960                         ans=!
1961                         ;;
1962                 esac
1963                 $myecho
1964                 ;;
1965         esac
1966         case "\$ans\$xxxm\$nostick" in
1967         '')
1968                 ans=!
1969                 $myecho
1970                 ;;
1971         esac
1972 done
1973 case "\$ans" in
1974 '') ans="\$xxxm";;
1975 esac
1976 EOSC
1977
1978 : create .config dir to save info across Configure sessions
1979 test -d ../.config || mkdir ../.config
1980 cat >../.config/README <<EOF
1981 This directory created by Configure to save information that should
1982 persist across sessions for $package.
1983
1984 You may safely delete it if you wish.
1985 EOF
1986
1987 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1988 case "$usedevel" in
1989 $define|true|[yY]*) ;;
1990 *) case "$xversion" in
1991    *[13579])
1992         cat >&4 <<EOH
1993 *** WHOA THERE!!! ***
1994
1995     This is an UNSTABLE DEVELOPMENT release.
1996     The version of this $package distribution is $xversion, that is, odd,
1997     (as opposed to even) and that signifies a development release.
1998     If you want a maintenance release, you want an even-numbered version.
1999
2000     Do ***NOT*** install this into production use.
2001     Data corruption and crashes are possible.
2002
2003     It is most seriously suggested that you do not continue any further
2004     unless you want to help in developing and debugging Perl.
2005
2006     If you *still* want to build perl, you can answer 'y' now,
2007     or pass -Dusedevel to Configure.
2008
2009 EOH
2010         rp='Do you really want to continue?'
2011         dflt='n'
2012         . ./myread
2013         case "$ans" in
2014         [yY]) echo >&4 "Okay, continuing."
2015               usedevel="$define" ;;
2016         *) echo >&4 "Okay, bye."
2017            exit 1
2018            ;;
2019         esac
2020         ;;
2021     esac
2022     ;;
2023 esac
2024 case "$usedevel" in
2025 $define|true|[yY]*)
2026         case "$versiononly" in
2027         '') versiononly="$define" ;;
2028         esac
2029         case "$installusrbinperl" in
2030         '') installusrbinperl="$undef" ;;
2031         esac
2032         ;;
2033 esac
2034
2035 : general instructions
2036 needman=true
2037 firsttime=true
2038 user=`(logname) 2>/dev/null`
2039 case "$user" in
2040 '') user=`whoami 2>&1`;;
2041 esac
2042 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2043         firsttime=false
2044         echo " "
2045         rp='Would you like to see the instructions?'
2046         dflt=n
2047         . ./myread
2048         case "$ans" in
2049         [yY]*) ;;
2050         *) needman=false;;
2051         esac
2052 fi
2053 if $needman; then
2054         cat <<EOH
2055
2056 This installation shell script will examine your system and ask you questions
2057 to determine how the perl5 package should be installed. If you get
2058 stuck on a question, you may use a ! shell escape to start a subshell or
2059 execute a command.  Many of the questions will have default answers in square
2060 brackets; typing carriage return will give you the default.
2061
2062 On some of the questions which ask for file or directory names you are allowed
2063 to use the ~name construct to specify the login directory belonging to "name",
2064 even if you don't have a shell which knows about that.  Questions where this is
2065 allowed will be marked "(~name ok)".
2066
2067 EOH
2068         rp=''
2069         dflt='Type carriage return to continue'
2070         . ./myread
2071         cat <<'EOH'
2072
2073 The prompter used in this script allows you to use shell variables and
2074 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2075 in the default answer, as if the default line was a set of arguments given to a
2076 script shell.  This means you may also use $* to repeat the whole default line,
2077 so you do not have to re-type everything to add something to the default.
2078
2079 Everytime there is a substitution, you will have to confirm.  If there is an
2080 error (e.g. an unmatched backtick), the default answer will remain unchanged
2081 and you will be prompted again.
2082
2083 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2084 the questions and use the computed defaults (or the previous answers if there
2085 was already a config.sh file). Type 'Configure -h' for a list of options.
2086 You may also start interactively and then answer '& -d' at any prompt to turn
2087 on the non-interactive behaviour for the remainder of the execution.
2088
2089 EOH
2090         . ./myread
2091         cat <<EOH
2092
2093 Much effort has been expended to ensure that this shell script will run on any
2094 Unix system.  If despite that it blows up on yours, your best bet is to edit
2095 Configure and run it again.  If you can't run Configure for some reason,
2096 you'll have to generate a config.sh file by hand.  Whatever problems you
2097 have, let me (perlbug@perl.org) know how I blew it.
2098
2099 This installation script affects things in two ways:
2100
2101 1) it may do direct variable substitutions on some of the files included
2102    in this kit.
2103 2) it builds a config.h file for inclusion in C programs.  You may edit
2104    any of these files as the need arises after running this script.
2105
2106 If you make a mistake on a question, there is no easy way to back up to it
2107 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2108 files.  Configure will offer to let you do this before it runs the SH files.
2109
2110 EOH
2111         dflt='Type carriage return to continue'
2112         . ./myread
2113         case "$firsttime" in
2114         true) echo $user >>../.config/instruct;;
2115         esac
2116 fi
2117
2118 : find out where common programs are
2119 echo " "
2120 echo "Locating common programs..." >&4
2121 cat <<EOSC >loc
2122 $startsh
2123 case \$# in
2124 0) exit 1;;
2125 esac
2126 thing=\$1
2127 shift
2128 dflt=\$1
2129 shift
2130 for dir in \$*; do
2131         case "\$thing" in
2132         .)
2133         if test -d \$dir/\$thing; then
2134                 echo \$dir
2135                 exit 0
2136         fi
2137         ;;
2138         *)
2139         for thisthing in \$dir/\$thing; do
2140                 : just loop through to pick last item
2141         done
2142         if test -f \$thisthing; then
2143                 echo \$thisthing
2144                 exit 0
2145         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2146                 echo \$thisthing
2147                 exit 0
2148         elif test -f \$dir/\$thing.exe; then
2149                 if test -n "$DJGPP"; then
2150                         echo \$dir/\$thing.exe
2151                 else
2152                         : on Eunice apparently
2153                         echo \$dir/\$thing
2154                 fi
2155                 exit 0
2156         fi
2157         ;;
2158         esac
2159 done
2160 echo \$dflt
2161 exit 1
2162 EOSC
2163 chmod +x loc
2164 $eunicefix loc
2165 loclist="
2166 awk
2167 cat
2168 chmod
2169 comm
2170 cp
2171 echo
2172 expr
2173 grep
2174 ls
2175 mkdir
2176 rm
2177 sed
2178 sort
2179 touch
2180 tr
2181 uniq
2182 "
2183 trylist="
2184 Mcc
2185 ar
2186 bison
2187 byacc
2188 cpp
2189 csh
2190 date
2191 egrep
2192 gmake
2193 gzip
2194 less
2195 ln
2196 make
2197 more
2198 nm
2199 nroff
2200 pg
2201 test
2202 uname
2203 zip
2204 "
2205 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2206 pth="$pth /lib /usr/lib"
2207 for file in $loclist; do
2208         eval xxx=\$$file
2209         case "$xxx" in
2210         /*|?:[\\/]*)
2211                 if test -f "$xxx"; then
2212                         : ok
2213                 else
2214                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2215                         xxx=`./loc $file $file $pth`
2216                 fi
2217                 ;;
2218         '') xxx=`./loc $file $file $pth`;;
2219         *) xxx=`./loc $xxx $xxx $pth`;;
2220         esac
2221         eval $file=$xxx$_exe
2222         eval _$file=$xxx
2223         case "$xxx" in
2224         /*)
2225                 echo $file is in $xxx.
2226                 ;;
2227         ?:[\\/]*)
2228                 echo $file is in $xxx.
2229                 ;;
2230         *)
2231                 echo "I don't know where '$file' is, and my life depends on it." >&4
2232                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2233                 exit 1
2234                 ;;
2235         esac
2236 done
2237 echo " "
2238 echo "Don't worry if any of the following aren't found..."
2239 say=offhand
2240 for file in $trylist; do
2241         eval xxx=\$$file
2242         case "$xxx" in
2243         /*|?:[\\/]*)
2244                 if test -f "$xxx"; then
2245                         : ok
2246                 else
2247                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2248                         xxx=`./loc $file $file $pth`
2249                 fi
2250                 ;;
2251         '') xxx=`./loc $file $file $pth`;;
2252         *) xxx=`./loc $xxx $xxx $pth`;;
2253         esac
2254         eval $file=$xxx$_exe
2255         eval _$file=$xxx
2256         case "$xxx" in
2257         /*)
2258                 echo $file is in $xxx.
2259                 ;;
2260         ?:[\\/]*)
2261                 echo $file is in $xxx.
2262                 ;;
2263         *)
2264                 echo "I don't see $file out there, $say."
2265                 say=either
2266                 ;;
2267         esac
2268 done
2269 case "$egrep" in
2270 egrep)
2271         echo "Substituting grep for egrep."
2272         egrep=$grep
2273         _egrep=$grep
2274         ;;
2275 esac
2276 case "$ln" in
2277 ln)
2278         echo "Substituting cp for ln."
2279         ln=$cp
2280         _ln=$cp
2281         ;;
2282 esac
2283 case "$make" in
2284 make)   
2285         case "$gmake" in
2286         gmake)
2287         echo "I can't find make or gmake, and my life depends on it." >&4
2288         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2289         exit 1
2290         ;;
2291         esac
2292         ;;
2293 esac    
2294 case "$gmake" in
2295 gmake)  ;;
2296 *)      # We can't have osname yet.
2297         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2298                 # Assume that gmake, if found, is definitely GNU make
2299                 # and prefer it over the system make.
2300                 echo "Substituting gmake for make."
2301                 make=$gmake
2302                 _make=$gmake
2303         fi
2304         ;;
2305 esac
2306 case "$test" in
2307 test)
2308         echo "Hopefully test is built into your sh."
2309         ;;
2310 *)
2311         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2312                 echo "Using the test built into your sh."
2313                 test=test
2314                 _test=test
2315         fi
2316         ;;
2317 esac
2318 case "$echo" in
2319 echo)
2320         echo "Hopefully echo is built into your sh."
2321         ;;
2322 '') ;;
2323 *)
2324         echo " "
2325 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2326         $echo $n "hi there$c" >foo1
2327         echo $n "hi there$c" >foo2
2328         if cmp foo1 foo2 >/dev/null 2>&1; then
2329                 echo "They are compatible.  In fact, they may be identical."
2330         else
2331                 case "$n" in
2332                 '-n') n='' c='\c';;
2333                 *) n='-n' c='';;
2334                 esac
2335                 cat <<FOO
2336 They are not compatible!  You are probably running ksh on a non-USG system.
2337 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2338 have echo built in and we may have to run some Bourne shell scripts.  That
2339 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2340
2341 FOO
2342                 $echo $n "The star should be here-->$c"
2343                 $echo "*"
2344         fi
2345         $rm -f foo1 foo2
2346         ;;
2347 esac
2348
2349 cat <<EOS >trygcc
2350 $startsh
2351 EOS
2352 cat <<'EOSC' >>trygcc
2353 case "$cc" in
2354 '') ;;
2355 *)  $rm -f try try.*
2356     $cat >try.c <<EOM
2357 int main(int argc, char *argv[]) {
2358   return 0;
2359 }
2360 EOM
2361     if $cc -o try $ccflags $ldflags try.c; then
2362        :
2363     else
2364         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2365         despair=yes
2366         trygcc=yes
2367         case "$cc" in
2368         *gcc*) trygcc=no ;;
2369         esac
2370         case "`$cc -v -c try.c 2>&1`" in
2371         *gcc*) trygcc=no ;;
2372         esac
2373         if $test X"$trygcc" = Xyes; then
2374             if gcc -o try -c try.c; then
2375                 echo " "
2376                 echo "You seem to have a working gcc, though." >&4
2377                 rp="Would you like to use it?"
2378                 dflt=y
2379                 if $test -f myread; then
2380                     . ./myread
2381                 else
2382                     if $test -f UU/myread; then
2383                         . ./UU/myread
2384                     else
2385                         echo "Cannot find myread, sorry.  Aborting." >&2
2386                         exit 1
2387                     fi
2388                 fi  
2389                 case "$ans" in
2390                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2391                 esac
2392             fi
2393         fi
2394     fi
2395     $rm -f try try.*
2396     ;;
2397 esac
2398 EOSC
2399
2400 cat <<EOS >checkcc
2401 $startsh
2402 EOS
2403 cat <<'EOSC' >>checkcc
2404 case "$cc" in        
2405 '') ;;
2406 *)  $rm -f try try.*              
2407     $cat >try.c <<EOM
2408 int main(int argc, char *argv[]) {
2409   return 0;
2410 }
2411 EOM
2412     if $cc -o try $ccflags $ldflags try.c; then
2413        :
2414     else
2415         if $test X"$despair" = Xyes; then
2416            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2417         fi
2418         $cat >&4 <<EOM         
2419 You need to find a working C compiler.
2420 Either (purchase and) install the C compiler supplied by your OS vendor,
2421 or for a free C compiler try http://gcc.gnu.org/
2422 I cannot continue any further, aborting.
2423 EOM
2424         exit 1
2425     fi
2426     $rm -f try try.*
2427     ;;
2428 esac
2429 EOSC
2430
2431 : determine whether symbolic links are supported
2432 echo " "
2433 $touch blurfl
2434 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2435         echo "Symbolic links are supported." >&4
2436         lns="$ln -s"
2437 else
2438         echo "Symbolic links are NOT supported." >&4
2439         lns="$ln"
2440 fi
2441 $rm -f blurfl sym
2442
2443 : determine whether symbolic links are supported
2444 echo " "
2445 case "$lns" in
2446 *"ln"*" -s")
2447         echo "Checking how to test for symbolic links..." >&4
2448         $lns blurfl sym
2449         if $test "X$issymlink" = X; then
2450                 case "$newsh" in
2451                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2452                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2453                 esac
2454                 if test $? = 0; then
2455                         issymlink="test -h"
2456                 else
2457                         echo "Your builtin 'test -h' may be broken." >&4
2458                         case "$test" in
2459                         /*)     ;;
2460                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2461                                 for p in $pth
2462                                 do
2463                                         if test -f "$p/$test"; then
2464                                                 test="$p/$test"
2465                                                 break
2466                                         fi
2467                                 done
2468                                 ;;
2469                         esac
2470                         case "$test" in
2471                         /*)
2472                                 echo "Trying external '$test -h'." >&4
2473                                 issymlink="$test -h"
2474                                 if $test ! -h sym >/dev/null 2>&1; then
2475                                         echo "External '$test -h' is broken, too." >&4
2476                                         issymlink=''
2477                                 fi
2478                                 ;;
2479                         *)      issymlink='' ;;
2480                         esac
2481                 fi              
2482         fi
2483         if $test "X$issymlink" = X; then
2484                 if $test -L sym 2>/dev/null; then
2485                         issymlink="$test -L"
2486                         echo "The builtin '$test -L' worked." >&4
2487                 fi
2488         fi
2489         if $test "X$issymlink" != X; then
2490                 echo "You can test for symbolic links with '$issymlink'." >&4
2491         else
2492                 echo "I do not know how you can test for symbolic links." >&4
2493         fi
2494         $rm -f blurfl sym
2495         ;;
2496 *)      echo "No symbolic links, so not testing for their testing..." >&4
2497         ;;
2498 esac
2499 echo " "
2500
2501
2502 case "$mksymlinks" in
2503 $define|true|[yY]*)
2504         case "$src" in
2505         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2506                 exit 1
2507                 ;;
2508         *)      case "$lns:$issymlink" in
2509                 *"ln"*" -s:"*"test -"?)
2510                         echo "Creating the symbolic links..." >&4
2511                         echo "(First creating the subdirectories...)" >&4
2512                         cd ..
2513                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2514                                 read directory
2515                                 test -z "$directory" && break
2516                                 mkdir -p $directory
2517                         done
2518                         # Sanity check 1.
2519                         if test ! -d t/base; then
2520                                 echo "Failed to create the subdirectories.  Aborting." >&4
2521                                 exit 1
2522                         fi
2523                         echo "(Then creating the symlinks...)" >&4
2524                         awk '{print $1}' $src/MANIFEST | while true; do
2525                                 read filename
2526                                 test -z "$filename" && break
2527                                 if test -f $filename; then
2528                                         if $issymlink $filename; then
2529                                                 rm -f $filename
2530                                         fi
2531                                 fi
2532                                 if test -f $filename; then
2533                                         echo "$filename already exists, not symlinking."
2534                                 else
2535                                         ln -s $src/$filename $filename
2536                                 fi
2537                         done
2538                         # Sanity check 2.
2539                         if test ! -f t/base/lex.t; then
2540                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2541                                 exit 1
2542                         fi
2543                         cd UU
2544                         ;;
2545                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2546                         ;;
2547                 esac
2548                 ;;
2549         esac
2550         ;;
2551 esac
2552
2553
2554 case "$usecrosscompile" in
2555 $define|true|[yY]*)
2556         $echo "Cross-compiling..."
2557         croak=''
2558         case "$cc" in
2559         *-*-gcc) # A cross-compiling gcc, probably.
2560             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2561             ar=$targetarch-ar
2562             # leave out ld, choosing it is more complex
2563             nm=$targetarch-nm
2564             ranlib=$targetarch-ranlib
2565             $echo 'extern int foo;' > try.c
2566             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2567             shift
2568             if $test $# -gt 0; then
2569                 incpth="$incpth $*"
2570                 incpth="`$echo $incpth|$sed 's/^ //'`"
2571                 echo "Guessing incpth '$incpth'." >&4
2572                 for i in $*; do
2573                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2574                     if $test -d $j; then
2575                         libpth="$libpth $j"
2576                     fi
2577                 done   
2578                 libpth="`$echo $libpth|$sed 's/^ //'`"
2579                 echo "Guessing libpth '$libpth'." >&4
2580             fi
2581             $rm -f try.c
2582             ;;
2583         esac
2584         case "$targetarch" in
2585         '') echo "Targetarch not defined." >&4; croak=y ;;
2586         *)  echo "Using targetarch $targetarch." >&4 ;;
2587         esac
2588         case "$incpth" in
2589         '') echo "Incpth not defined." >&4; croak=y ;;
2590         *)  echo "Using incpth '$incpth'." >&4 ;;
2591         esac
2592         case "$libpth" in
2593         '') echo "Libpth not defined." >&4; croak=y ;;
2594         *)  echo "Using libpth '$libpth'." >&4 ;;
2595         esac
2596         case "$usrinc" in
2597         '') for i in $incpth; do
2598                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2599                     usrinc=$i
2600                     echo "Guessing usrinc $usrinc." >&4
2601                     break
2602                 fi
2603             done
2604             case "$usrinc" in
2605             '') echo "Usrinc not defined." >&4; croak=y ;;
2606             esac
2607             ;;
2608         *)  echo "Using usrinc $usrinc." >&4 ;;
2609         esac
2610         case "$targethost" in
2611         '') echo "Targethost not defined." >&4; croak=y ;;
2612         *)  echo "Using targethost $targethost." >&4
2613         esac
2614         locincpth=' '
2615         loclibpth=' '
2616         case "$croak" in
2617         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2618         esac
2619         case "$src" in
2620         /*) run=$src/Cross/run
2621             targetmkdir=$src/Cross/mkdir
2622             to=$src/Cross/to
2623             from=$src/Cross/from
2624             ;;
2625         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2626             run=$pwd/Cross/run
2627             targetmkdir=$pwd/Cross/mkdir
2628             to=$pwd/Cross/to
2629             from=$pwd/Cross/from
2630             ;;
2631         esac
2632         case "$targetrun" in
2633         '') targetrun=ssh ;;
2634         esac
2635         case "$targetto" in
2636         '') targetto=scp ;;
2637         esac
2638         case "$targetfrom" in
2639         '') targetfrom=scp ;;
2640         esac
2641         run=$run-$targetrun
2642         to=$to-$targetto
2643         from=$from-$targetfrom
2644         case "$targetdir" in
2645         '')  targetdir=/tmp
2646              echo "Guessing targetdir $targetdir." >&4
2647              ;;
2648         esac
2649         case "$targetuser" in
2650         '')  targetuser=root
2651              echo "Guessing targetuser $targetuser." >&4
2652              ;;
2653         esac
2654         case "$targetfrom" in
2655         scp)    q=-q ;;
2656         *)      q='' ;;
2657         esac
2658         case "$targetrun" in
2659         ssh|rsh)
2660             cat >$run <<EOF
2661 #!/bin/sh
2662 case "\$1" in
2663 -cwd)
2664   shift
2665   cwd=\$1
2666   shift
2667   ;;
2668 esac
2669 case "\$cwd" in
2670 '') cwd=$targetdir ;;
2671 esac
2672 exe=\$1
2673 shift
2674 if $test ! -f \$exe.xok; then
2675   $to \$exe
2676   $touch \$exe.xok
2677 fi
2678 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2679 EOF
2680             ;;
2681         *)  echo "Unknown targetrun '$targetrun'" >&4
2682             exit 1
2683             ;;
2684         esac
2685         case "$targetmkdir" in
2686         */Cross/mkdir)
2687             cat >$targetmkdir <<EOF
2688 #!/bin/sh
2689 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2690 EOF
2691             $chmod a+rx $targetmkdir
2692             ;;
2693         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2694             exit 1
2695             ;;
2696         esac
2697         case "$targetto" in
2698         scp|rcp)
2699             cat >$to <<EOF
2700 #!/bin/sh
2701 for f in \$@
2702 do
2703   case "\$f" in
2704   /*)
2705     $targetmkdir \`dirname \$f\`
2706     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2707     ;;
2708   *)
2709     $targetmkdir $targetdir/\`dirname \$f\`
2710     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2711     ;;
2712   esac
2713 done
2714 exit 0
2715 EOF
2716             ;;
2717         cp) cat >$to <<EOF
2718 #!/bin/sh
2719 for f in \$@
2720 do
2721   case "\$f" in
2722   /*)
2723     $mkdir -p $targetdir/\`dirname \$f\`
2724     $cp \$f $targetdir/\$f || exit 1
2725     ;;
2726   *)
2727     $targetmkdir $targetdir/\`dirname \$f\`
2728     $cp \$f $targetdir/\$f || exit 1
2729     ;;
2730   esac
2731 done
2732 exit 0
2733 EOF
2734             ;;
2735         *)  echo "Unknown targetto '$targetto'" >&4
2736             exit 1
2737             ;;
2738         esac
2739         case "$targetfrom" in
2740         scp|rcp)
2741           cat >$from <<EOF
2742 #!/bin/sh
2743 for f in \$@
2744 do
2745   $rm -f \$f
2746   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2747 done
2748 exit 0
2749 EOF
2750             ;;
2751         cp) cat >$from <<EOF
2752 #!/bin/sh
2753 for f in \$@
2754 do
2755   $rm -f \$f
2756   cp $targetdir/\$f . || exit 1
2757 done
2758 exit 0
2759 EOF
2760             ;;
2761         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2762             exit 1
2763             ;;
2764         esac
2765         if $test ! -f $run; then
2766             echo "Target 'run' script '$run' not found." >&4
2767         else
2768             $chmod a+rx $run
2769         fi
2770         if $test ! -f $to; then
2771             echo "Target 'to' script '$to' not found." >&4
2772         else
2773             $chmod a+rx $to
2774         fi
2775         if $test ! -f $from; then
2776             echo "Target 'from' script '$from' not found." >&4
2777         else
2778             $chmod a+rx $from
2779         fi
2780         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2781             exit 1
2782         fi
2783         cat >&4 <<EOF
2784 Using '$run' for remote execution,
2785 and '$from' and '$to'
2786 for remote file transfer.
2787 EOF
2788         ;;
2789 *)      run=''
2790         to=:
2791         from=:
2792         usecrosscompile='undef'
2793         targetarch=''
2794         ;;
2795 esac
2796
2797 : see whether [:lower:] and [:upper:] are supported character classes
2798 echo " "
2799 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2800 ABYZ)
2801         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2802         up='[:upper:]'
2803         low='[:lower:]'
2804         ;;
2805 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2806         # (0xc9 and 0xd1), therefore that is a nice testing point.
2807         if test "X$up" = X -o "X$low" = X; then
2808             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2809             ij) up='[A-Z]'
2810                 low='[a-z]'
2811                 ;;
2812             esac
2813         fi
2814         if test "X$up" = X -o "X$low" = X; then
2815             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2816             ij) up='A-Z'
2817                 low='a-z'
2818                 ;;
2819             esac
2820         fi
2821         if test "X$up" = X -o "X$low" = X; then
2822             case "`echo IJ | od -x 2>/dev/null`" in
2823             *C9D1*|*c9d1*)
2824                 echo "Hey, this might be EBCDIC." >&4
2825                 if test "X$up" = X -o "X$low" = X; then
2826                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2827                     ij) up='[A-IJ-RS-Z]'
2828                         low='[a-ij-rs-z]'
2829                         ;;
2830                     esac
2831                 fi
2832                 if test "X$up" = X -o "X$low" = X; then
2833                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2834                     ij) up='A-IJ-RS-Z'
2835                         low='a-ij-rs-z'
2836                         ;;
2837                     esac
2838                 fi
2839                 ;;
2840             esac
2841         fi
2842 esac
2843 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2844 ij)
2845     echo "Using $up and $low to convert case." >&4
2846     ;;
2847 *)
2848     echo "I don't know how to translate letters from upper to lower case." >&4
2849     echo "Your tr is not acting any way I know of." >&4
2850     exit 1
2851     ;;
2852 esac
2853 : set up the translation script tr, must be called with ./tr of course
2854 cat >tr <<EOSC
2855 $startsh
2856 case "\$1\$2" in
2857 '[A-Z][a-z]') exec $tr '$up' '$low';;
2858 '[a-z][A-Z]') exec $tr '$low' '$up';;
2859 esac
2860 exec $tr "\$@"
2861 EOSC
2862 chmod +x tr
2863 $eunicefix tr
2864
2865 : Try to determine whether config.sh was made on this system
2866 case "$config_sh" in
2867 '')
2868 myuname=`$uname -a 2>/dev/null`
2869 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2870 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2871 # because the A-Z/a-z are not consecutive.
2872 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2873         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2874 newmyuname="$myuname"
2875 dflt=n
2876 case "$knowitall" in
2877 '')
2878         if test -f ../config.sh; then
2879                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2880                         eval "`grep myuname= ../config.sh`"
2881                 fi
2882                 if test "X$myuname" = "X$newmyuname"; then
2883                         dflt=y
2884                 fi
2885         fi
2886         ;;
2887 *) dflt=y;;
2888 esac
2889
2890 : Get old answers from old config file if Configure was run on the
2891 : same system, otherwise use the hints.
2892 hint=default
2893 cd ..
2894 if test -f config.sh; then
2895         echo " "
2896         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2897         . UU/myread
2898         case "$ans" in
2899         n*|N*) echo "OK, I'll ignore it."
2900                 mv config.sh config.sh.old
2901                 myuname="$newmyuname"
2902                 ;;
2903         *)  echo "Fetching default answers from your old config.sh file..." >&4
2904                 tmp_n="$n"
2905                 tmp_c="$c"
2906                 tmp_sh="$sh"
2907                 . ./config.sh
2908                 cp config.sh UU
2909                 n="$tmp_n"
2910                 c="$tmp_c"
2911                 : Older versions did not always set $sh.  Catch re-use of such
2912                 : an old config.sh.
2913                 case "$sh" in
2914                 '') sh="$tmp_sh" ;;
2915                 esac
2916                 hint=previous
2917                 ;;
2918         esac
2919 fi
2920 . ./UU/checkcc
2921 if test ! -f config.sh; then
2922         $cat <<EOM
2923
2924 First time through, eh?  I have some defaults handy for some systems
2925 that need some extra help getting the Configure answers right:
2926
2927 EOM
2928         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2929         dflt=''
2930         : Half the following guesses are probably wrong... If you have better
2931         : tests or hints, please send them to perlbug@perl.org
2932         : The metaconfig authors would also appreciate a copy...
2933         $test -f /irix && osname=irix
2934         $test -f /xenix && osname=sco_xenix
2935         $test -f /dynix && osname=dynix
2936         $test -f /dnix && osname=dnix
2937         $test -f /lynx.os && osname=lynxos
2938         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2939         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2940         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2941         $test -f /bin/mips && /bin/mips && osname=mips
2942         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2943                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2944         $test -d /usr/apollo/bin && osname=apollo
2945         $test -f /etc/saf/_sactab && osname=svr4
2946         $test -d /usr/include/minix && osname=minix
2947         $test -f /system/gnu_library/bin/ar.pm && osname=vos
2948         if $test -d /MachTen -o -d /MachTen_Folder; then
2949                 osname=machten
2950                 if $test -x /sbin/version; then
2951                         osvers=`/sbin/version | $awk '{print $2}' |
2952                         $sed -e 's/[A-Za-z]$//'`
2953                 elif $test -x /usr/etc/version; then
2954                         osvers=`/usr/etc/version | $awk '{print $2}' |
2955                         $sed -e 's/[A-Za-z]$//'`
2956                 else
2957                         osvers="$2.$3"
2958                 fi
2959         fi
2960
2961         $test -f /sys/posix.dll &&
2962                 $test -f /usr/bin/what &&
2963                 set X `/usr/bin/what /sys/posix.dll` &&
2964                 $test "$3" = UWIN &&
2965                 osname=uwin &&
2966                 osvers="$5"
2967
2968         if $test -f $uname; then
2969                 set X $myuname
2970                 shift
2971
2972                 case "$5" in
2973                 fps*) osname=fps ;;
2974                 mips*)
2975                         case "$4" in
2976                         umips) osname=umips ;;
2977                         *) osname=mips ;;
2978                         esac;;
2979                 [23]100) osname=mips ;;
2980                 next*) osname=next ;;
2981                 i386*)
2982                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2983                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2984                                 osname='sco'
2985                                 osvers=$tmp
2986                         elif $test -f /etc/kconfig; then
2987                                 osname=isc
2988                                 if test "$lns" = "$ln -s"; then
2989                                         osvers=4
2990                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2991                                         osvers=3
2992                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2993                                         osvers=2
2994                                 fi
2995                         fi
2996                         tmp=''
2997                         ;;
2998                 pc*)
2999                         if test -n "$DJGPP"; then
3000                                 osname=dos
3001                                 osvers=djgpp
3002                         fi
3003                         ;;
3004                 esac
3005
3006                 case "$1" in
3007                 aix) osname=aix
3008                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3009                         case "$tmp" in
3010                         'not found') osvers="$4"."$3" ;;
3011                         '<3240'|'<>3240') osvers=3.2.0 ;;
3012                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3013                         '=3250'|'>3250') osvers=3.2.5 ;;
3014                         *) osvers=$tmp;;
3015                         esac
3016                         ;;
3017                 bsd386) osname=bsd386
3018                         osvers=`$uname -r`
3019                         ;;
3020                 cygwin*) osname=cygwin
3021                         osvers="$3"
3022                         ;;
3023                 *dc.osx) osname=dcosx
3024                         osvers="$3"
3025                         ;;
3026                 dnix) osname=dnix
3027                         osvers="$3"
3028                         ;;
3029                 domainos) osname=apollo
3030                         osvers="$3"
3031                         ;;
3032                 dgux) osname=dgux 
3033                         osvers="$3"
3034                         ;;
3035                 dynixptx*) osname=dynixptx
3036                         osvers=`echo "$4"|sed 's/^v//'`
3037                         ;;
3038                 freebsd) osname=freebsd 
3039                         osvers="$3" ;;
3040                 genix) osname=genix ;;
3041                 hp*) osname=hpux 
3042                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3043                         ;;
3044                 irix*) osname=irix
3045                         case "$3" in
3046                         4*) osvers=4 ;;
3047                         5*) osvers=5 ;;
3048                         *)      osvers="$3" ;;
3049                         esac
3050                         ;;
3051                 linux) osname=linux
3052                         case "$3" in
3053                         *)      osvers="$3" ;;
3054                         esac
3055                         ;;
3056                 MiNT) osname=mint
3057                         ;;
3058                 netbsd*) osname=netbsd
3059                         osvers="$3"
3060                         ;;
3061                 news-os) osvers="$3"
3062                         case "$3" in
3063                         4*) osname=newsos4 ;;
3064                         *) osname=newsos ;;
3065                         esac
3066                         ;;
3067                 next*) osname=next ;;
3068                 nonstop-ux) osname=nonstopux ;;
3069                 POSIX-BC | posix-bc ) osname=posix-bc
3070                         osvers="$3"
3071                         ;;
3072                 powerux | power_ux | powermax_os | powermaxos | \
3073                 powerunix | power_unix) osname=powerux
3074                         osvers="$3"
3075                         ;;
3076                 qnx) osname=qnx
3077                         osvers="$4"
3078                         ;;
3079                 solaris) osname=solaris
3080                         case "$3" in
3081                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3082                         *)      osvers="$3" ;;
3083                         esac
3084                         ;;
3085                 sunos) osname=sunos
3086                         case "$3" in
3087                         5*) osname=solaris
3088                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3089                         *)      osvers="$3" ;;
3090                         esac
3091                         ;;
3092                 titanos) osname=titanos
3093                         case "$3" in
3094                         1*) osvers=1 ;;
3095                         2*) osvers=2 ;;
3096                         3*) osvers=3 ;;
3097                         4*) osvers=4 ;;
3098                         *)      osvers="$3" ;;
3099                         esac
3100                         ;;
3101                 ultrix) osname=ultrix
3102                         osvers="$3"
3103                         ;;
3104                 osf1|mls+)      case "$5" in
3105                                 alpha)
3106                                         osname=dec_osf
3107                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3108                                         case "$osvers" in
3109                                         [1-9].[0-9]*) ;;
3110                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3111                                         esac
3112                                         ;;
3113                         hp*)    osname=hp_osf1  ;;
3114                         mips)   osname=mips_osf1 ;;
3115                         esac
3116                         ;;
3117                 unixware) osname=svr5
3118                         osvers="$4"
3119                         ;;
3120                 uts)    osname=uts
3121                         osvers="$3"
3122                         ;;
3123                 vos) osvers="$3"
3124                         ;;
3125                 $2) case "$osname" in
3126                         *isc*) ;;
3127                         *freebsd*) ;;
3128                         svr*)
3129                                 : svr4.x or possibly later
3130                                 case "svr$3" in 
3131                                 ${osname}*)
3132                                         osname=svr$3
3133                                         osvers=$4
3134                                         ;;
3135                                 esac
3136                                 case "$osname" in
3137                                 svr4.0)
3138                                         : Check for ESIX
3139                                         if test -f /stand/boot ; then
3140                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3141                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3142                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3143                                                         if test -n "$isesix"; then
3144                                                                 osname=esix4
3145                                                         fi
3146                                                 fi
3147                                         fi
3148                                         ;;
3149                                 esac
3150                                 ;;
3151                         *)      if test -f /etc/systemid; then
3152                                         osname=sco
3153                                         set `echo $3 | $sed 's/\./ /g'` $4
3154                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3155                                                 osvers=$1.$2.$3
3156                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3157                                                 osvers=$1.$2
3158                                         elif $test -f $src/hints/sco_$1.sh; then
3159                                                 osvers=$1
3160                                         fi
3161                                 else
3162                                         case "$osname" in
3163                                         '') : Still unknown.  Probably a generic Sys V.
3164                                                 osname="sysv"
3165                                                 osvers="$3"
3166                                                 ;;
3167                                         esac
3168                                 fi
3169                                 ;;
3170                         esac
3171                         ;;
3172                 *)      case "$osname" in
3173                         '') : Still unknown.  Probably a generic BSD.
3174                                 osname="$1"
3175                                 osvers="$3"
3176                                 ;;
3177                         esac
3178                         ;;
3179                 esac
3180         else
3181                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3182                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3183                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3184                                 osname=news_os
3185                         fi
3186                         $rm -f UU/kernel.what
3187                 elif test -d c:/.; then
3188                         set X $myuname
3189                         osname=os2
3190                         osvers="$5"
3191                 fi
3192         fi
3193         
3194         case "$targetarch" in
3195         '') ;;
3196         *)  hostarch=$osname
3197             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3198             osvers=''
3199             ;;
3200         esac
3201
3202         : Now look for a hint file osname_osvers, unless one has been
3203         : specified already.
3204         case "$hintfile" in
3205         ''|' ')
3206                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3207                 : Also try without trailing minor version numbers.
3208                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3209                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3210                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3211                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3212                 case "$file" in
3213                 '') dflt=none ;;
3214                 *)  case "$osvers" in
3215                         '') dflt=$file
3216                                 ;;
3217                         *)  if $test -f $src/hints/$file.sh ; then
3218                                         dflt=$file
3219                                 elif $test -f $src/hints/$xfile.sh ; then
3220                                         dflt=$xfile
3221                                 elif $test -f $src/hints/$xxfile.sh ; then
3222                                         dflt=$xxfile
3223                                 elif $test -f $src/hints/$xxxfile.sh ; then
3224                                         dflt=$xxxfile
3225                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3226                                         dflt=$xxxxfile
3227                                 elif $test -f "$src/hints/${osname}.sh" ; then
3228                                         dflt="${osname}"
3229                                 else
3230                                         dflt=none
3231                                 fi
3232                                 ;;
3233                         esac
3234                         ;;
3235                 esac
3236                 if $test -f Policy.sh ; then
3237                         case "$dflt" in
3238                         *Policy*) ;;
3239                         none) dflt="Policy" ;;
3240                         *) dflt="Policy $dflt" ;;
3241                         esac
3242                 fi
3243                 ;;
3244         *)
3245                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3246                 ;;
3247         esac
3248
3249         if $test -f Policy.sh ; then
3250                 $cat <<EOM
3251
3252 There's also a Policy hint file available, which should make the
3253 site-specific (policy) questions easier to answer.
3254 EOM
3255
3256         fi
3257
3258         $cat <<EOM
3259
3260 You may give one or more space-separated answers, or "none" if appropriate.
3261 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3262 is a good thing.  DO NOT give a wrong version or a wrong OS.
3263
3264 EOM
3265
3266         rp="Which of these apply, if any?"
3267         . UU/myread
3268         tans=$ans
3269         for file in $tans; do
3270                 if $test X$file = XPolicy -a -f Policy.sh; then
3271                         . Policy.sh
3272                         $cat Policy.sh >> UU/config.sh
3273                 elif $test -f $src/hints/$file.sh; then
3274                         . $src/hints/$file.sh
3275                         $cat $src/hints/$file.sh >> UU/config.sh
3276                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3277                         : nothing
3278                 else
3279                         : Give one chance to correct a possible typo.
3280                         echo "$file.sh does not exist"
3281                         dflt=$file
3282                         rp="hint to use instead?"
3283                         . UU/myread
3284                         for file in $ans; do
3285                                 if $test -f "$src/hints/$file.sh"; then
3286                                         . $src/hints/$file.sh
3287                                         $cat $src/hints/$file.sh >> UU/config.sh
3288                                 elif $test X$ans = X -o X$ans = Xnone ; then
3289                                         : nothing
3290                                 else
3291                                         echo "$file.sh does not exist -- ignored."
3292                                 fi
3293                         done
3294                 fi
3295         done
3296
3297         hint=recommended
3298         : Remember our hint file for later.
3299         if $test -f "$src/hints/$file.sh" ; then
3300                 hintfile="$file"
3301         else
3302                 hintfile=''
3303         fi
3304 fi
3305 cd UU
3306 ;;
3307 *)
3308         echo " "
3309         echo "Fetching default answers from $config_sh..." >&4
3310         tmp_n="$n"
3311         tmp_c="$c"
3312         cd ..
3313         cp $config_sh config.sh 2>/dev/null
3314         chmod +w config.sh
3315         . ./config.sh
3316         cd UU
3317         cp ../config.sh .
3318         n="$tmp_n"
3319         c="$tmp_c"
3320         hint=previous
3321         ;;
3322 esac
3323 test "$override" && . ./optdef.sh
3324
3325 : Restore computed paths
3326 for file in $loclist $trylist; do
3327         eval $file="\$_$file"
3328 done
3329
3330 cat << EOM
3331
3332 Configure uses the operating system name and version to set some defaults.
3333 The default value is probably right if the name rings a bell. Otherwise,
3334 since spelling matters for me, either accept the default or answer "none"
3335 to leave it blank.
3336
3337 EOM
3338 case "$osname" in
3339         ''|' ')
3340                 case "$hintfile" in
3341                 ''|' '|none) dflt=none ;;
3342                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3343                 esac
3344                 ;;
3345         *) dflt="$osname" ;;
3346 esac
3347 rp="Operating system name?"
3348 . ./myread
3349 case "$ans" in
3350 none)  osname='' ;;
3351 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3352 esac
3353 echo " "
3354 case "$osvers" in
3355         ''|' ')
3356                 case "$hintfile" in
3357                 ''|' '|none) dflt=none ;;
3358                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3359                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3360                         case "$dflt" in
3361                         ''|' ') dflt=none ;;
3362                         esac
3363                         ;;
3364                 esac
3365                 ;;
3366         *) dflt="$osvers" ;;
3367 esac
3368 rp="Operating system version?"
3369 . ./myread
3370 case "$ans" in
3371 none)  osvers='' ;;
3372 *) osvers="$ans" ;;
3373 esac
3374
3375
3376 . ./posthint.sh
3377
3378 : who configured the system
3379 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3380 cf_by=`(logname) 2>/dev/null`
3381 case "$cf_by" in
3382 "")
3383         cf_by=`(whoami) 2>/dev/null`
3384         case "$cf_by" in
3385         "") cf_by=unknown ;;
3386         esac ;;
3387 esac
3388
3389 : set up the script used to warn in case of inconsistency
3390 cat <<EOS >whoa
3391 $startsh
3392 EOS
3393 cat <<'EOSC' >>whoa
3394 dflt=y
3395 echo " "
3396 echo "*** WHOA THERE!!! ***" >&4
3397 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3398 rp="    Keep the $hint value?"
3399 . ./myread
3400 case "$ans" in
3401 y) td=$was; tu=$was;;
3402 esac
3403 EOSC
3404
3405 : function used to set $1 to $val
3406 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3407 case "$val$was" in
3408 $define$undef) . ./whoa; eval "$var=\$td";;
3409 $undef$define) . ./whoa; eval "$var=\$tu";;
3410 *) eval "$var=$val";;
3411 esac'
3412
3413 case "$usethreads" in
3414 $define|true|[yY]*)     dflt='y';;
3415 *) dflt='n';;
3416 esac
3417 cat <<EOM
3418
3419 Perl can be built to take advantage of threads on some systems.
3420 To do so, Configure can be run with -Dusethreads.
3421
3422 Note that threading is a highly experimental feature, and
3423 some known race conditions still remain.  If you choose to try
3424 it, be very sure to not actually deploy it for production
3425 purposes.  README.threads has more details, and is required
3426 reading if you enable threads.
3427
3428 If this doesn't make any sense to you, just accept the default '$dflt'.
3429 EOM
3430 rp='Build a threading Perl?'
3431 . ./myread
3432 case "$ans" in
3433 y|Y)    val="$define" ;;
3434 *)      val="$undef" ;;
3435 esac
3436 set usethreads
3437 eval $setvar
3438
3439 case "$usethreads" in
3440 $define)
3441         $cat <<EOM
3442
3443 As of release 5.6, Perl has two different threading implementations,
3444 an interpreter-based version (ithreads) with one interpreter per
3445 thread, and the 5.005 version (5005threads).  Both implementations
3446 are considered experimental, but since 5.8 ithreads somewhat less so.
3447 The 5005threads is effectively unmaintained.
3448
3449 EOM
3450         : Default to ithreads unless overridden on command line or with
3451         : old config.sh
3452         dflt='y'
3453         case "$use5005threads" in
3454                 $define|true|[yY]*) dflt='n';;
3455         esac
3456         case "$useithreads" in
3457                 $undef|false|[nN]*) dflt='n';;
3458         esac
3459         rp='Use interpreter-based ithreads?'
3460         . ./myread
3461         case "$ans" in
3462         y|Y)    val="$define" ;;
3463         *)      val="$undef" ;;
3464         esac
3465         set useithreads
3466         eval $setvar
3467         : Now set use5005threads to the opposite value.
3468         case "$useithreads" in
3469         $define) val="$undef" ;;
3470         *) val="$define" ;;
3471         esac
3472         set use5005threads
3473         eval $setvar
3474         ;;
3475 *)
3476         useithreads="$undef"
3477         use5005threads="$undef"
3478         ;;
3479 esac
3480
3481 case "$useithreads$use5005threads" in
3482 "$define$define")
3483         $cat >&4 <<EOM
3484
3485 You cannot have both the ithreads and the 5.005 threads enabled
3486 at the same time.  Disabling the 5.005 threads since they are
3487 much less stable than the ithreads.
3488
3489 EOM
3490         use5005threads="$undef"
3491         ;;
3492 esac
3493
3494 case "$d_oldpthreads" in
3495 '')     : Configure tests would be welcome here.  For now, assume undef.
3496         val="$undef" ;;
3497 *)      val="$d_oldpthreads" ;;
3498 esac
3499 set d_oldpthreads
3500 eval $setvar
3501
3502
3503 case "$usethreads" in
3504 "$define"|true|[yY]*)
3505 : Look for a hint-file generated 'call-back-unit'.  If the
3506 : user has specified that a threading perl is to be built,
3507 : we may need to set or change some other defaults.
3508         if $test -f usethreads.cbu; then
3509                 echo "Your platform has some specific hints for threaded builds, using them..."
3510                 . ./usethreads.cbu
3511         else
3512                 $cat <<EOM
3513 (Your platform doesn't have any specific hints for threaded builds.
3514  Assuming POSIX threads, then.)
3515 EOM
3516         fi
3517         ;;
3518 esac
3519
3520 cat <<EOM
3521
3522 Perl can be built so that multiple Perl interpreters can coexist
3523 within the same Perl executable.
3524 EOM
3525
3526 case "$useithreads" in
3527 $define)
3528         cat <<EOM
3529 This multiple interpreter support is required for interpreter-based threads.
3530 EOM
3531         val="$define"
3532         ;;
3533 *)      case "$usemultiplicity" in
3534         $define|true|[yY]*)     dflt='y';;
3535         *) dflt='n';;
3536         esac
3537         echo " "
3538         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3539         rp='Build Perl for multiplicity?'
3540         . ./myread
3541         case "$ans" in
3542         y|Y)    val="$define" ;;
3543         *)      val="$undef" ;;
3544         esac
3545         ;;
3546 esac
3547 set usemultiplicity
3548 eval $setvar
3549
3550
3551 case "$usemorebits" in
3552 "$define"|true|[yY]*)
3553         use64bitint="$define"
3554         uselongdouble="$define"
3555         usemorebits="$define"
3556         ;;
3557 *)      usemorebits="$undef"
3558         ;;
3559 esac
3560
3561 : make some quick guesses about what we are up against
3562 echo " "
3563 $echo $n "Hmm...  $c"
3564 echo exit 1 >bsd
3565 echo exit 1 >usg
3566 echo exit 1 >v7
3567 echo exit 1 >osf1
3568 echo exit 1 >eunice
3569 echo exit 1 >xenix
3570 echo exit 1 >venix
3571 echo exit 1 >os2
3572 d_bsd="$undef"
3573 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3574 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3575 then
3576         echo "Looks kind of like an OSF/1 system, but we'll see..."
3577         echo exit 0 >osf1
3578 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3579         xxx=`./loc addbib blurfl $pth`
3580         if $test -f $xxx; then
3581         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3582                 echo exit 0 >bsd
3583                 echo exit 0 >usg
3584         else
3585                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3586                         echo "Looks kind of like an extended USG system, but we'll see..."
3587                 else
3588                         echo "Looks kind of like a USG system, but we'll see..."
3589                 fi
3590                 echo exit 0 >usg
3591         fi
3592 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3593         echo "Looks kind of like a BSD system, but we'll see..."
3594         d_bsd="$define"
3595         echo exit 0 >bsd
3596 else
3597         echo "Looks kind of like a Version 7 system, but we'll see..."
3598         echo exit 0 >v7
3599 fi
3600 case "$eunicefix" in
3601 *unixtovms*)
3602         $cat <<'EOI'
3603 There is, however, a strange, musty smell in the air that reminds me of
3604 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3605 EOI
3606         echo exit 0 >eunice
3607         d_eunice="$define"
3608 : it so happens the Eunice I know will not run shell scripts in Unix format
3609         ;;
3610 *)
3611         echo " "
3612         echo "Congratulations.  You aren't running Eunice."
3613         d_eunice="$undef"
3614         ;;
3615 esac
3616 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3617 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3618 : semicolon as a patch separator
3619 case "$p_" in
3620 :) ;;
3621 *)
3622         $cat <<'EOI'
3623 I have the feeling something is not exactly right, however...don't tell me...
3624 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3625 (Or you may be running DOS with DJGPP.)
3626 EOI
3627         echo exit 0 >os2
3628         ;;
3629 esac
3630 if test -f /xenix; then
3631         echo "Actually, this looks more like a XENIX system..."
3632         echo exit 0 >xenix
3633         d_xenix="$define"
3634 else
3635         echo " "
3636         echo "It's not Xenix..."
3637         d_xenix="$undef"
3638 fi
3639 chmod +x xenix
3640 $eunicefix xenix
3641 if test -f /venix; then
3642         echo "Actually, this looks more like a VENIX system..."
3643         echo exit 0 >venix
3644 else
3645         echo " "
3646         if ./xenix; then
3647                 : null
3648         else
3649                 echo "Nor is it Venix..."
3650         fi
3651 fi
3652 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3653 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3654 $rm -f foo
3655
3656 case "$cc" in
3657 '') dflt=cc;;
3658 *) dflt="$cc";;
3659 esac
3660 rp="Use which C compiler?"
3661 . ./myread
3662 cc="$ans"
3663
3664 : See if they have not cc but they do have gcc
3665 . ./trygcc
3666 : Look for a hint-file generated 'call-back-unit'.  Now that the
3667 : user has specified the compiler, we may need to set or change some
3668 : other defaults.
3669 if $test -f cc.cbu; then
3670     . ./cc.cbu
3671 fi
3672 . ./checkcc
3673
3674 echo " "
3675 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3676 $cat >try.c <<EOM
3677 #include <stdio.h>
3678 int main() {
3679 #ifdef __GNUC__
3680 #ifdef __VERSION__
3681         printf("%s\n", __VERSION__);
3682 #else
3683         printf("%s\n", "1");
3684 #endif
3685 #endif
3686         exit(0);
3687 }
3688 EOM
3689 if $cc -o try $ccflags $ldflags try.c; then
3690         gccversion=`$run ./try`
3691         case "$gccversion" in
3692         '') echo "You are not using GNU cc." ;;
3693         *)  echo "You are using GNU cc $gccversion."
3694             ccname=gcc  
3695             ;;
3696         esac
3697 else
3698         echo " "
3699         echo "*** WHOA THERE!!! ***" >&4
3700         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3701         case "$knowitall" in
3702         '')
3703         echo "    You'd better start hunting for one and let me know about it." >&4
3704                 exit 1
3705                 ;;
3706         esac
3707 fi
3708 $rm -f try try.*
3709 case "$gccversion" in
3710 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3711 esac
3712 case "$gccversion" in
3713 '') gccosandvers='' ;;
3714 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3715    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3716    gccshortvers=''
3717    case "$gccosandvers" in
3718    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3719    $osname$osvers) ;; # looking good
3720    $osname*) cat <<EOM >&4
3721
3722 *** WHOA THERE!!! ***
3723
3724     Your gcc has not been compiled for the exact release of
3725     your operating system ($gccosandvers versus $osname$osvers).
3726
3727     In general it is a good idea to keep gcc synchronized with
3728     the operating system because otherwise serious problems
3729     may ensue when trying to compile software, like Perl.
3730
3731     I'm trying to be optimistic here, though, and will continue.
3732     If later during the configuration and build icky compilation
3733     problems appear (headerfile conflicts being the most common
3734     manifestation), I suggest reinstalling the gcc to match
3735     your operating system release.
3736
3737 EOM
3738       ;;
3739    *) gccosandvers='' ;; # failed to parse, better be silent
3740    esac
3741    ;;
3742 esac
3743 case "$ccname" in
3744 '') ccname="$cc" ;;
3745 esac
3746
3747
3748 : decide how portable to be.  Allow command line overrides.
3749 case "$d_portable" in
3750 "$undef") ;;
3751 *)      d_portable="$define" ;;
3752 esac
3753
3754 : set up shell script to do ~ expansion
3755 cat >filexp <<EOSS
3756 $startsh
3757 : expand filename
3758 case "\$1" in
3759  ~/*|~)
3760         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3761         ;;
3762  ~*)
3763         if $test -f /bin/csh; then
3764                 /bin/csh -f -c "glob \$1"
3765                 failed=\$?
3766                 echo ""
3767                 exit \$failed
3768         else
3769                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3770                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3771                 if $test ! -d "\$dir"; then
3772                         me=\`basename \$0\`
3773                         echo "\$me: can't locate home directory for: \$name" >&2
3774                         exit 1
3775                 fi
3776                 case "\$1" in
3777                 */*)
3778                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3779                         ;;
3780                 *)
3781                         echo \$dir
3782                         ;;
3783                 esac
3784         fi
3785         ;;
3786 *)
3787         echo \$1
3788         ;;
3789 esac
3790 EOSS
3791 chmod +x filexp
3792 $eunicefix filexp
3793
3794 : now set up to get a file name
3795 cat <<EOS >getfile
3796 $startsh
3797 EOS
3798 cat <<'EOSC' >>getfile
3799 tilde=''
3800 fullpath=''
3801 already=''
3802 skip=''
3803 none_ok=''
3804 exp_file=''
3805 nopath_ok=''
3806 orig_rp="$rp"
3807 orig_dflt="$dflt"
3808 case "$gfpth" in
3809 '') gfpth='.' ;;
3810 esac
3811
3812 case "$fn" in
3813 *\(*)
3814         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3815         fn=`echo $fn | sed 's/(.*)//'`
3816         ;;
3817 esac
3818
3819 case "$fn" in
3820 *:*)
3821         loc_file=`expr $fn : '.*:\(.*\)'`
3822         fn=`expr $fn : '\(.*\):.*'`
3823         ;;
3824 esac
3825
3826 case "$fn" in
3827 *~*) tilde=true;;
3828 esac
3829 case "$fn" in
3830 */*) fullpath=true;;
3831 esac
3832 case "$fn" in
3833 *+*) skip=true;;
3834 esac
3835 case "$fn" in
3836 *n*) none_ok=true;;
3837 esac
3838 case "$fn" in
3839 *e*) exp_file=true;;
3840 esac
3841 case "$fn" in
3842 *p*) nopath_ok=true;;
3843 esac
3844
3845 case "$fn" in
3846 *f*) type='File';;
3847 *d*) type='Directory';;
3848 *l*) type='Locate';;
3849 esac
3850
3851 what="$type"
3852 case "$what" in
3853 Locate) what='File';;
3854 esac
3855
3856 case "$exp_file" in
3857 '')
3858         case "$d_portable" in
3859         "$define") ;;
3860         *) exp_file=true;;
3861         esac
3862         ;;
3863 esac
3864
3865 cd ..
3866 while test "$type"; do
3867         redo=''
3868         rp="$orig_rp"
3869         dflt="$orig_dflt"
3870         case "$tilde" in
3871         true) rp="$rp (~name ok)";;
3872         esac
3873         . UU/myread
3874         if test -f UU/getfile.ok && \
3875                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3876         then
3877                 value="$ans"
3878                 ansexp="$ans"
3879                 break
3880         fi
3881         case "$ans" in
3882         none)
3883                 value=''
3884                 ansexp=''
3885                 case "$none_ok" in
3886                 true) type='';;
3887                 esac
3888                 ;;
3889         *)
3890                 case "$tilde" in
3891                 '') value="$ans"
3892                         ansexp="$ans";;
3893                 *)
3894                         value=`UU/filexp $ans`
3895                         case $? in
3896                         0)
3897                                 if test "$ans" != "$value"; then
3898                                         echo "(That expands to $value on this system.)"
3899                                 fi
3900                                 ;;
3901                         *) value="$ans";;
3902                         esac
3903                         ansexp="$value"
3904                         case "$exp_file" in
3905                         '') value="$ans";;
3906                         esac
3907                         ;;
3908                 esac
3909                 case "$fullpath" in
3910                 true)
3911                         case "$ansexp" in
3912                         /*) value="$ansexp" ;;
3913                         [a-zA-Z]:/*) value="$ansexp" ;;
3914                         *)
3915                                 redo=true
3916                                 case "$already" in
3917                                 true)
3918                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3919                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3920                                         ;;
3921                                 *)
3922                                 echo "Please give a full path name, starting with slash." >&4
3923                                         case "$tilde" in
3924                                         true)
3925                                 echo "Note that using ~name is ok provided it expands well." >&4
3926                                                 already=true
3927                                                 ;;
3928                                         esac
3929                                 esac
3930                                 ;;
3931                         esac
3932                         ;;
3933                 esac
3934                 case "$redo" in
3935                 '')
3936                         case "$type" in
3937                         File)
3938                                 for fp in $gfpth; do
3939                                         if test "X$fp" = X.; then
3940                                             pf="$ansexp"
3941                                         else    
3942                                             pf="$fp/$ansexp"
3943                                         fi
3944                                         if test -f "$pf"; then
3945                                                 type=''
3946                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3947                                         then
3948                                                 echo "($value is not a plain file, but that's ok.)"
3949                                                 type=''
3950                                         fi
3951                                         if test X"$type" = X; then
3952                                             value="$pf"
3953                                             break
3954                                         fi
3955                                 done
3956                                 ;;
3957                         Directory)
3958                                 for fp in $gfpth; do
3959                                         if test "X$fp" = X.; then
3960                                             dir="$ans"
3961                                             direxp="$ansexp"
3962                                         else    
3963                                             dir="$fp/$ansexp"
3964                                             direxp="$fp/$ansexp"
3965                                         fi
3966                                         if test -d "$direxp"; then
3967                                                 type=''
3968                                                 value="$dir"
3969                                                 break
3970                                         fi
3971                                 done
3972                                 ;;
3973                         Locate)
3974                                 if test -d "$ansexp"; then
3975                                         echo "(Looking for $loc_file in directory $value.)"
3976                                         value="$value/$loc_file"
3977                                         ansexp="$ansexp/$loc_file"
3978                                 fi
3979                                 if test -f "$ansexp"; then
3980                                         type=''
3981                                 fi
3982                                 case "$nopath_ok" in
3983                                 true)   case "$value" in
3984                                         */*) ;;
3985                                         *)      echo "Assuming $value will be in people's path."
3986                                                 type=''
3987                                                 ;;
3988                                         esac
3989                                         ;;
3990                                 esac
3991                                 ;;
3992                         esac
3993
3994                         case "$skip" in
3995                         true) type='';
3996                         esac
3997
3998                         case "$type" in
3999                         '') ;;
4000                         *)
4001                                 if test "$fastread" = yes; then
4002                                         dflt=y
4003                                 else
4004                                         dflt=n
4005                                 fi
4006                                 rp="$what $value doesn't exist.  Use that name anyway?"
4007                                 . UU/myread
4008                                 dflt=''
4009                                 case "$ans" in
4010                                 y*) type='';;
4011                                 *) echo " ";;
4012                                 esac
4013                                 ;;
4014                         esac
4015                         ;;
4016                 esac
4017                 ;;
4018         esac
4019 done
4020 cd UU
4021 ans="$value"
4022 rp="$orig_rp"
4023 dflt="$orig_dflt"
4024 rm -f getfile.ok
4025 test "X$gfpthkeep" != Xy && gfpth=""
4026 EOSC
4027
4028 : What should the include directory be ?
4029 echo " "
4030 $echo $n "Hmm...  $c"
4031 dflt='/usr/include'
4032 incpath=''
4033 mips_type=''
4034 if $test -f /bin/mips && /bin/mips; then
4035         echo "Looks like a MIPS system..."
4036         $cat >usr.c <<'EOCP'
4037 #ifdef SYSTYPE_BSD43
4038 /bsd43
4039 #endif
4040 EOCP
4041         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4042                 dflt='/bsd43/usr/include'
4043                 incpath='/bsd43'
4044                 mips_type='BSD 4.3'
4045         else
4046                 mips_type='System V'
4047         fi
4048         $rm -f usr.c usr.out
4049         echo "and you're compiling with the $mips_type compiler and libraries."
4050         xxx_prompt=y
4051         echo "exit 0" >mips
4052 else
4053         echo "Doesn't look like a MIPS system."
4054         xxx_prompt=n
4055         echo "exit 1" >mips
4056 fi
4057 chmod +x mips
4058 $eunicefix mips
4059 case "$usrinc" in
4060 '') ;;
4061 *) dflt="$usrinc";;
4062 esac
4063 case "$xxx_prompt" in
4064 y)      fn=d/
4065         echo " "
4066         rp='Where are the include files you want to use?'
4067         . ./getfile
4068         usrinc="$ans"
4069         ;;
4070 *)      usrinc="$dflt"
4071         ;;
4072 esac
4073
4074 : see how we invoke the C preprocessor
4075 echo " "
4076 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4077 cat <<'EOT' >testcpp.c
4078 #define ABC abc
4079 #define XYZ xyz
4080 ABC.XYZ
4081 EOT
4082 cd ..
4083 if test ! -f cppstdin; then
4084         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4085                 # AIX cc -E doesn't show the absolute headerfile
4086                 # locations but we'll cheat by using the -M flag.
4087                 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
4088         else
4089                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4090         fi
4091 else
4092         echo "Keeping your $hint cppstdin wrapper."
4093 fi
4094 chmod 755 cppstdin
4095 wrapper=`pwd`/cppstdin
4096 ok='false'
4097 cd UU
4098
4099 if $test "X$cppstdin" != "X" && \
4100         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4101         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4102 then
4103         echo "You used to use $cppstdin $cppminus so we'll use that again."
4104         case "$cpprun" in
4105         '') echo "But let's see if we can live without a wrapper..." ;;
4106         *)
4107                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4108                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4109                 then
4110                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4111                         ok='true'
4112                 else
4113                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4114                 fi
4115                 ;;
4116         esac
4117 else
4118         case "$cppstdin" in
4119         '') ;;
4120         *)
4121                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4122                 ;;
4123         esac
4124 fi
4125
4126 if $ok; then
4127         : nothing
4128 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4129         $cc -E <testcpp.c >testcpp.out 2>&1; \
4130         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4131         echo "Yup, it does."
4132         x_cpp="$cc -E"
4133         x_minus='';
4134 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4135         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4136         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4137         echo "Yup, it does."
4138         x_cpp="$cc -E"
4139         x_minus='-';
4140 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4141         $cc -P <testcpp.c >testcpp.out 2>&1; \
4142         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4143         echo "Yipee, that works!"
4144         x_cpp="$cc -P"
4145         x_minus='';
4146 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4147         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4148         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4149         echo "At long last!"
4150         x_cpp="$cc -P"
4151         x_minus='-';
4152 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4153         $cpp <testcpp.c >testcpp.out 2>&1; \
4154         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4155         echo "It works!"
4156         x_cpp="$cpp"
4157         x_minus='';
4158 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4159         $cpp - <testcpp.c >testcpp.out 2>&1; \
4160         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4161         echo "Hooray, it works!  I was beginning to wonder."
4162         x_cpp="$cpp"
4163         x_minus='-';
4164 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4165         $wrapper <testcpp.c >testcpp.out 2>&1; \
4166         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4167         x_cpp="$wrapper"
4168         x_minus=''
4169         echo "Eureka!"
4170 else
4171         dflt=''
4172         rp="No dice.  I can't find a C preprocessor.  Name one:"
4173         . ./myread
4174         x_cpp="$ans"
4175         x_minus=''
4176         $x_cpp <testcpp.c >testcpp.out 2>&1
4177         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4178                 echo "OK, that will do." >&4
4179         else
4180 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4181                 exit 1
4182         fi
4183 fi
4184
4185 case "$ok" in
4186 false)
4187         cppstdin="$x_cpp"
4188         cppminus="$x_minus"
4189         cpprun="$x_cpp"
4190         cpplast="$x_minus"
4191         set X $x_cpp
4192         shift
4193         case "$1" in
4194         "$cpp")
4195                 echo "Perhaps can we force $cc -E using a wrapper..."
4196                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4197                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4198                 then
4199                         echo "Yup, we can."
4200                         cppstdin="$wrapper"
4201                         cppminus='';
4202                 else
4203                         echo "Nope, we'll have to live without it..."
4204                 fi
4205                 ;;
4206         esac
4207         case "$cpprun" in
4208         "$wrapper")
4209                 cpprun=''
4210                 cpplast=''
4211                 ;;
4212         esac
4213         ;;
4214 esac
4215
4216 case "$cppstdin" in
4217 "$wrapper"|'cppstdin') ;;
4218 *) $rm -f $wrapper;;
4219 esac
4220 $rm -f testcpp.c testcpp.out
4221
4222 : Set private lib path
4223 case "$plibpth" in
4224 '') if ./mips; then
4225                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4226         fi;;
4227 esac
4228 case "$libpth" in
4229 ' ') dlist='';;
4230 '') dlist="$loclibpth $plibpth $glibpth";;
4231 *) dlist="$libpth";;
4232 esac
4233
4234 : Now check and see which directories actually exist, avoiding duplicates
4235 libpth=''
4236 for xxx in $dlist
4237 do
4238     if $test -d $xxx; then
4239                 case " $libpth " in
4240                 *" $xxx "*) ;;
4241                 *) libpth="$libpth $xxx";;
4242                 esac
4243     fi
4244 done
4245 $cat <<'EOM'
4246
4247 Some systems have incompatible or broken versions of libraries.  Among
4248 the directories listed in the question below, please remove any you
4249 know not to be holding relevant libraries, and add any that are needed.
4250 Say "none" for none.
4251
4252 EOM
4253 case "$libpth" in
4254 '') dflt='none';;
4255 *)
4256         set X $libpth
4257         shift
4258         dflt=${1+"$@"}
4259         ;;
4260 esac
4261 rp="Directories to use for library searches?"
4262 . ./myread
4263 case "$ans" in
4264 none) libpth=' ';;
4265 *) libpth="$ans";;
4266 esac
4267
4268 : compute shared library extension
4269 case "$so" in
4270 '')
4271         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4272                 dflt='sl'
4273         else
4274                 dflt='so'
4275         fi
4276         ;;
4277 *) dflt="$so";;
4278 esac
4279 $cat <<EOM
4280
4281 On some systems, shared libraries may be available.  Answer 'none' if
4282 you want to suppress searching of shared libraries for the remainder
4283 of this configuration.
4284
4285 EOM
4286 rp='What is the file extension used for shared libraries?'
4287 . ./myread
4288 so="$ans"
4289
4290 : Define several unixisms.
4291 : Hints files or command line option can be used to override them.
4292 : The convoluted testing is in case hints files set either the old
4293 : or the new name.
4294 case "$_exe" in
4295 '')     case "$exe_ext" in
4296         '')     ;;
4297         *)      _exe="$exe_ext" ;;
4298         esac
4299         ;;
4300 esac
4301 case "$_a" in
4302 '')     case "$lib_ext" in
4303     '') _a='.a';;
4304         *)      _a="$lib_ext" ;;
4305         esac
4306         ;;
4307 esac
4308 case "$_o" in
4309 '') case "$obj_ext" in
4310         '')     _o='.o';;
4311         *)      _o="$obj_ext";;
4312         esac
4313         ;;
4314 esac
4315 case "$p_" in
4316 '') case "$path_sep" in
4317         '')     p_=':';;
4318         *)      p_="$path_sep";;
4319         esac
4320         ;;
4321 esac
4322 exe_ext=$_exe
4323 lib_ext=$_a
4324 obj_ext=$_o
4325 path_sep=$p_
4326
4327 : Which makefile gets called first.  This is used by make depend.
4328 case "$firstmakefile" in
4329 '') firstmakefile='makefile';;
4330 esac
4331
4332 case "$usesocks" in
4333 $define|true|[yY]*)     dflt='y';;
4334 *) dflt='n';;
4335 esac
4336 cat <<EOM
4337
4338 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4339 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4340 to use the PerlIO abstraction layer, this will be implicitly selected.
4341
4342 If this doesn't make any sense to you, just accept the default '$dflt'.
4343 EOM
4344 rp='Build Perl for SOCKS?'
4345 . ./myread
4346 case "$ans" in
4347 y|Y)    val="$define" ;;     
4348 *)      val="$undef" ;;
4349 esac
4350 set usesocks
4351 eval $setvar
4352
4353 case "$usesocks" in
4354 $define|true|[yY]*) useperlio="$define";;
4355 esac
4356
4357 : Looking for optional libraries
4358 echo " "
4359 echo "Checking for optional libraries..." >&4
4360 case "$libs" in
4361 ' '|'') dflt='';;
4362 *) dflt="$libs";;
4363 esac
4364 case "$libswanted" in
4365 '') libswanted='c_s';;
4366 esac
4367 case "$usesocks" in
4368 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4369 esac
4370 libsfound=''
4371 libsfiles=''
4372 libsdirs=''
4373 libspath=''
4374 for thisdir in $libpth $xlibpth; do
4375   test -d $thisdir && libspath="$libspath $thisdir"
4376 done
4377 for thislib in $libswanted; do
4378         for thisdir in $libspath; do
4379             xxx=''
4380             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4381                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4382                 $test -f "$xxx" && eval $libscheck
4383                 $test -f "$xxx" && libstyle=shared
4384             fi
4385             if test ! -f "$xxx"; then
4386                 xxx=$thisdir/lib$thislib.$so
4387                 $test -f "$xxx" && eval $libscheck
4388                 $test -f "$xxx" && libstyle=shared
4389             fi  
4390             if test ! -f "$xxx"; then
4391                 xxx=$thisdir/lib$thislib$_a
4392                 $test -f "$xxx" && eval $libscheck
4393                 $test -f "$xxx" && libstyle=static
4394             fi
4395             if test ! -f "$xxx"; then
4396                 xxx=$thisdir/$thislib$_a
4397                 $test -f "$xxx" && eval $libscheck
4398                 $test -f "$xxx" && libstyle=static
4399             fi
4400             if test ! -f "$xxx"; then
4401                 xxx=$thisdir/lib${thislib}_s$_a
4402                 $test -f "$xxx" && eval $libscheck
4403                 $test -f "$xxx" && libstyle=static
4404                 $test -f "$xxx" && thislib=${thislib}_s
4405             fi
4406             if test ! -f "$xxx"; then
4407                 xxx=$thisdir/Slib$thislib$_a
4408                 $test -f "$xxx" && eval $libscheck
4409                 $test -f "$xxx" && libstyle=static
4410             fi
4411             if $test -f "$xxx"; then
4412                 case "$libstyle" in
4413                 shared) echo "Found -l$thislib (shared)." ;;
4414                 static) echo "Found -l$thislib." ;;
4415                 *)      echo "Found -l$thislib ($libstyle)." ;;
4416                 esac
4417                 case " $dflt " in
4418                 *"-l$thislib "*);;
4419                 *) dflt="$dflt -l$thislib"
4420                    libsfound="$libsfound $xxx"
4421                    yyy=`basename $xxx`
4422                    libsfiles="$libsfiles $yyy"
4423                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4424                    case " $libsdirs " in
4425                    *" $yyy "*) ;;
4426                    *) libsdirs="$libsdirs $yyy" ;;
4427                    esac
4428                    ;;
4429                 esac
4430                 break
4431             fi  
4432         done
4433         if $test ! -f "$xxx"; then
4434             echo "No -l$thislib."
4435         fi
4436 done
4437 set X $dflt
4438 shift
4439 dflt="$*"
4440 case "$libs" in
4441 '') dflt="$dflt";;
4442 *) dflt="$libs";;
4443 esac
4444 case "$dflt" in
4445 ' '|'') dflt='none';;
4446 esac
4447
4448 $cat <<EOM
4449
4450 In order to compile $package on your machine, a number of libraries
4451 are usually needed.  Include any other special libraries here as well.
4452 Say "none" for none.  The default list is almost always right.
4453 EOM
4454
4455 echo " "
4456 rp="What libraries to use?"
4457 . ./myread
4458 case "$ans" in
4459 none) libs=' ';;
4460 *) libs="$ans";;
4461 esac
4462
4463 : determine optimization, if desired, or use for debug flag also
4464 case "$optimize" in
4465 ' '|$undef) dflt='none';;
4466 '') dflt='-O';;
4467 *) dflt="$optimize";;
4468 esac
4469 $cat <<EOH
4470
4471 By default, $package compiles with the -O flag to use the optimizer.
4472 Alternately, you might want to use the symbolic debugger, which uses
4473 the -g flag (on traditional Unix systems).  Either flag can be
4474 specified here.  To use neither flag, specify the word "none".
4475
4476 EOH
4477 rp="What optimizer/debugger flag should be used?"
4478 . ./myread
4479 optimize="$ans"
4480 case "$optimize" in
4481 'none') optimize=" ";;
4482 esac
4483
4484 dflt=''
4485 : We will not override a previous value, but we might want to
4486 : augment a hint file
4487 case "$hint" in
4488 default|recommended)
4489         case "$gccversion" in
4490         1*) dflt='-fpcc-struct-return' ;;
4491         esac
4492         case "$optimize" in
4493         *-g*) dflt="$dflt -DDEBUGGING";;
4494         esac
4495         case "$gccversion" in
4496         2*) if test -d /etc/conf/kconfig.d &&
4497                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4498                 then
4499                         dflt="$dflt -posix"
4500                 fi
4501                 ;;
4502         esac
4503         case "$gccversion" in
4504         1*) ;;
4505         2.[0-8]*) ;;
4506         ?*)     echo " "
4507                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4508                 echo 'int main(void) { return 0; }' > gcctest.c
4509                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4510                         echo "Yes, it does." 2>&1
4511                         case "$ccflags" in
4512                         *strict-aliasing*) 
4513                                 echo "Leaving current flags $ccflags alone." 2>&1
4514                                 ;;
4515                         *) dflt="$dflt -fno-strict-aliasing" ;;
4516                         esac
4517                 else
4518                         echo "Nope, it doesn't, but that's ok." 2>&1
4519                 fi
4520                 ;;
4521         esac
4522         ;;
4523 esac
4524
4525 case "$mips_type" in
4526 *BSD*|'') inclwanted="$locincpth $usrinc";;
4527 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4528 esac
4529 for thisincl in $inclwanted; do
4530         if $test -d $thisincl; then
4531                 if $test x$thisincl != x$usrinc; then
4532                         case "$dflt" in
4533                         *" -I$thisincl "*);;
4534                         *) dflt="$dflt -I$thisincl ";;
4535                         esac
4536                 fi
4537         fi
4538 done
4539
4540 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4541         xxx=true;
4542 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4543         xxx=true;
4544 else
4545         xxx=false;
4546 fi;
4547 if $xxx; then
4548         case "$dflt" in
4549         *$2*);;
4550         *) dflt="$dflt -D$2";;
4551         esac;
4552 fi'
4553
4554 set signal.h LANGUAGE_C; eval $inctest
4555
4556 case "$usesocks" in
4557 $define)
4558         ccflags="$ccflags -DSOCKS"
4559         ;;
4560 esac
4561
4562 case "$hint" in
4563 default|recommended) dflt="$ccflags $dflt" ;;
4564 *) dflt="$ccflags";;
4565 esac
4566
4567 case "$dflt" in
4568 ''|' ') dflt=none;;
4569 esac
4570
4571 $cat <<EOH
4572
4573 Your C compiler may want other flags.  For this question you should include
4574 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4575 but you should NOT include libraries or ld flags like -lwhatever.  If you
4576 want $package to honor its debug switch, you should include -DDEBUGGING here.
4577 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4578
4579 To use no flags, specify the word "none".
4580
4581 EOH
4582 set X $dflt
4583 shift
4584 dflt=${1+"$@"}
4585 rp="Any additional cc flags?"
4586 . ./myread
4587 case "$ans" in
4588 none) ccflags='';;
4589 *) ccflags="$ans";;
4590 esac
4591
4592 : the following weeds options from ccflags that are of no interest to cpp
4593 case "$cppflags" in
4594 '') cppflags="$ccflags" ;;
4595 *)  cppflags="$cppflags $ccflags" ;;
4596 esac
4597 case "$gccversion" in
4598 1*) cppflags="$cppflags -D__GNUC__"
4599 esac
4600 case "$mips_type" in
4601 '');;
4602 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4603 esac
4604 case "$cppflags" in
4605 '');;
4606 *)
4607         echo " "
4608         echo "Let me guess what the preprocessor flags are..." >&4
4609         set X $cppflags
4610         shift
4611         cppflags=''
4612         $cat >cpp.c <<'EOM'
4613 #define BLURFL foo
4614
4615 BLURFL xx LFRULB
4616 EOM
4617         previous=''
4618         for flag in $*
4619         do
4620                 case "$flag" in
4621                 -*) ftry="$flag";;
4622                 *) ftry="$previous $flag";;
4623                 esac
4624                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4625                         >cpp1.out 2>/dev/null && \
4626                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4627                         >cpp2.out 2>/dev/null && \
4628                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4629                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4630                 then
4631                         cppflags="$cppflags $ftry"
4632                         previous=''
4633                 else
4634                         previous="$flag"
4635                 fi
4636         done
4637         set X $cppflags
4638         shift
4639         cppflags=${1+"$@"}
4640         case "$cppflags" in
4641         *-*)  echo "They appear to be: $cppflags";;
4642         esac
4643         $rm -f cpp.c cpp?.out
4644         ;;
4645 esac
4646
4647 : flags used in final linking phase
4648 case "$ldflags" in
4649 '') if ./venix; then
4650                 dflt='-i -z'
4651         else
4652                 dflt=''
4653         fi
4654         case "$ccflags" in
4655         *-posix*) dflt="$dflt -posix" ;;
4656         esac
4657         ;;
4658 *) dflt="$ldflags";;
4659 esac
4660
4661 : Try to guess additional flags to pick up local libraries.
4662 for thislibdir in $libpth; do
4663         case " $loclibpth " in
4664         *" $thislibdir "*)
4665                 case "$dflt " in 
4666                 *"-L$thislibdir "*) ;;
4667                 *)  dflt="$dflt -L$thislibdir" ;;
4668                 esac
4669                 ;;
4670         esac
4671 done
4672
4673 case "$dflt" in
4674 '') dflt='none' ;;
4675 esac
4676
4677 $cat <<EOH
4678
4679 Your C linker may need flags.  For this question you should
4680 include -L/whatever and any other flags used by the C linker, but you
4681 should NOT include libraries like -lwhatever.
4682
4683 Make sure you include the appropriate -L/path flags if your C linker
4684 does not normally search all of the directories you specified above,
4685 namely
4686         $libpth
4687 To use no flags, specify the word "none".
4688
4689 EOH
4690
4691 rp="Any additional ld flags (NOT including libraries)?"
4692 . ./myread
4693 case "$ans" in
4694 none) ldflags='';;
4695 *) ldflags="$ans";;
4696 esac
4697 rmlist="$rmlist pdp11"
4698
4699 : coherency check
4700 echo " "
4701 echo "Checking your choice of C compiler and flags for coherency..." >&4
4702 $cat > try.c <<'EOF'
4703 #include <stdio.h>
4704 int main() { printf("Ok\n"); exit(0); }
4705 EOF
4706 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4707 shift
4708 $cat >try.msg <<'EOM'
4709 I've tried to compile and run the following simple program:
4710
4711 EOM
4712 $cat try.c >> try.msg
4713
4714 $cat >> try.msg <<EOM
4715
4716 I used the command:
4717
4718         $*
4719         $run ./try
4720
4721 and I got the following output:
4722
4723 EOM
4724 dflt=y
4725 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4726         if $sh -c "$run ./try" >>try.msg 2>&1; then
4727                 xxx=`$run ./try`
4728                 case "$xxx" in
4729                 "Ok") dflt=n ;;
4730                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4731                         case " $libs " in
4732                         *" -lsfio "*)
4733                                 cat >> try.msg <<'EOQS'
4734 If $libs contains -lsfio, and sfio is mis-configured, then it
4735 sometimes (apparently) runs and exits with a 0 status, but with no
4736 output!  It may have to do with sfio's use of _exit vs. exit.
4737
4738 EOQS
4739                                 rp="You have a big problem.  Shall I abort Configure"
4740                                 dflt=y
4741                                 ;;
4742                         esac
4743                         ;;
4744                 esac
4745         else
4746                 echo "The program compiled OK, but exited with status $?." >>try.msg
4747                 rp="You have a problem.  Shall I abort Configure"
4748                 dflt=y
4749         fi
4750 else
4751         echo "I can't compile the test program." >>try.msg
4752         rp="You have a BIG problem.  Shall I abort Configure"
4753         dflt=y
4754 fi
4755 case "$dflt" in
4756 y)
4757         $cat try.msg >&4
4758         case "$knowitall" in
4759         '')
4760                 echo "(The supplied flags or libraries might be incorrect.)"
4761                 ;;
4762         *) dflt=n;;
4763         esac
4764         echo " "
4765         . ./myread
4766         case "$ans" in
4767         n*|N*) ;;
4768         *)      echo "Ok.  Stopping Configure." >&4
4769                 exit 1
4770                 ;;
4771         esac
4772         ;;
4773 n) echo "OK, that should do.";;
4774 esac
4775 $rm -f try try.* core
4776
4777 : define a shorthand compile call
4778 compile='
4779 mc_file=$1;
4780 shift;
4781 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4782 : define a shorthand compile call for compilations that should be ok.
4783 compile_ok='
4784 mc_file=$1;
4785 shift;
4786 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4787
4788 : check for lengths of integral types
4789 echo " "
4790 case "$intsize" in
4791 '')
4792         echo "Checking to see how big your integers are..." >&4
4793         $cat >try.c <<'EOCP'
4794 #include <stdio.h>
4795 int main()
4796 {
4797         printf("intsize=%d;\n", (int)sizeof(int));
4798         printf("longsize=%d;\n", (int)sizeof(long));
4799         printf("shortsize=%d;\n", (int)sizeof(short));
4800         exit(0);
4801 }
4802 EOCP
4803         set try
4804         if eval $compile_ok && $run ./try > /dev/null; then
4805                 eval `$run ./try`
4806                 echo "Your integers are $intsize bytes long."
4807                 echo "Your long integers are $longsize bytes long."
4808                 echo "Your short integers are $shortsize bytes long."
4809         else
4810                 $cat >&4 <<EOM
4811 !
4812 Help! I can't compile and run the intsize test program: please enlighten me!
4813 (This is probably a misconfiguration in your system or libraries, and
4814 you really ought to fix it.  Still, I'll try anyway.)
4815 !
4816 EOM
4817                 dflt=4
4818                 rp="What is the size of an integer (in bytes)?"
4819                 . ./myread
4820                 intsize="$ans"
4821                 dflt=$intsize
4822                 rp="What is the size of a long integer (in bytes)?"
4823                 . ./myread
4824                 longsize="$ans"
4825                 dflt=2
4826                 rp="What is the size of a short integer (in bytes)?"
4827                 . ./myread
4828                 shortsize="$ans"
4829         fi
4830         ;;
4831 esac
4832 $rm -f try try.*
4833
4834 : check for void type
4835 echo " "
4836 echo "Checking to see how well your C compiler groks the void type..." >&4
4837 case "$voidflags" in
4838 '')
4839         $cat >try.c <<'EOCP'
4840 #if TRY & 1
4841 void sub() {
4842 #else
4843 sub() {
4844 #endif
4845         extern void moo();      /* function returning void */
4846         void (*goo)();          /* ptr to func returning void */
4847 #if TRY & 8
4848         void *hue;              /* generic ptr */
4849 #endif
4850 #if TRY & 2
4851         void (*foo[10])();
4852 #endif
4853
4854 #if TRY & 4
4855         if(goo == moo) {
4856                 exit(0);
4857         }
4858 #endif
4859         exit(0);
4860 }
4861 int main() { sub(); }
4862 EOCP
4863         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4864                 voidflags=$defvoidused
4865         echo "Good.  It appears to support void to the level $package wants.">&4
4866                 if $contains warning .out >/dev/null 2>&1; then
4867                         echo "However, you might get some warnings that look like this:"
4868                         $cat .out
4869                 fi
4870         else
4871 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4872                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4873                         echo "It supports 1..."
4874                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4875                                 echo "It also supports 2..."
4876                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4877                                         voidflags=7
4878                                         echo "And it supports 4 but not 8 definitely."
4879                                 else
4880                                         echo "It doesn't support 4..."
4881                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4882                                                 voidflags=11
4883                                                 echo "But it supports 8."
4884                                         else
4885                                                 voidflags=3
4886                                                 echo "Neither does it support 8."
4887                                         fi
4888                                 fi
4889                         else
4890                                 echo "It does not support 2..."
4891                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4892                                         voidflags=13
4893                                         echo "But it supports 4 and 8."
4894                                 else
4895                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4896                                                 voidflags=5
4897                                                 echo "And it supports 4 but has not heard about 8."
4898                                         else
4899                                                 echo "However it supports 8 but not 4."
4900                                         fi
4901                                 fi
4902                         fi
4903                 else
4904                         echo "There is no support at all for void."
4905                         voidflags=0
4906                 fi
4907         fi
4908 esac
4909 case "$voidflags" in
4910 "$defvoidused") ;;
4911 *)      $cat >&4 <<'EOM'
4912   Support flag bits are:
4913     1: basic void declarations.
4914     2: arrays of pointers to functions returning void.
4915     4: operations between pointers to and addresses of void functions.
4916     8: generic void pointers.
4917 EOM
4918         dflt="$voidflags";
4919         rp="Your void support flags add up to what?"
4920         . ./myread
4921         voidflags="$ans"
4922         ;;
4923 esac
4924 $rm -f try.* .out
4925
4926 : check for length of pointer
4927 echo " "
4928 case "$ptrsize" in
4929 '')
4930         echo "Checking to see how big your pointers are..." >&4
4931         if test "$voidflags" -gt 7; then
4932                 echo '#define VOID_PTR char *' > try.c
4933         else
4934                 echo '#define VOID_PTR void *' > try.c
4935         fi
4936         $cat >>try.c <<'EOCP'
4937 #include <stdio.h>
4938 int main()
4939 {
4940     printf("%d\n", (int)sizeof(VOID_PTR));
4941     exit(0);
4942 }
4943 EOCP
4944         set try
4945         if eval $compile_ok; then
4946                 ptrsize=`$run ./try`
4947                 echo "Your pointers are $ptrsize bytes long."
4948         else
4949                 dflt='4'
4950                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4951                 rp="What is the size of a pointer (in bytes)?"
4952                 . ./myread
4953                 ptrsize="$ans"
4954         fi
4955         ;;
4956 esac
4957 $rm -f try.c try
4958
4959 : check for long long
4960 echo " "
4961 echo "Checking to see if you have long long..." >&4
4962 echo 'int main() { long long x = 7; return 0; }' > try.c
4963 set try
4964 if eval $compile; then
4965         val="$define"
4966         echo "You have long long."
4967 else
4968         val="$undef"
4969         echo "You do not have long long."
4970 fi
4971 $rm try.*
4972 set d_longlong
4973 eval $setvar
4974
4975 : check for length of long long
4976 case "${d_longlong}${longlongsize}" in
4977 $define)
4978         echo " "
4979         echo "Checking to see how big your long longs are..." >&4
4980         $cat >try.c <<'EOCP'
4981 #include <stdio.h>
4982 int main()
4983 {
4984     printf("%d\n", (int)sizeof(long long));
4985     return(0);
4986 }
4987 EOCP
4988         set try
4989         if eval $compile_ok; then
4990                 longlongsize=`$run ./try`
4991                 echo "Your long longs are $longlongsize bytes long."
4992         else
4993                 dflt='8'
4994                 echo " "
4995                 echo "(I can't seem to compile the test program.  Guessing...)"
4996                 rp="What is the size of a long long (in bytes)?"
4997                 . ./myread
4998                 longlongsize="$ans"
4999         fi
5000         if $test "X$longsize" = "X$longlongsize"; then
5001                 echo "(That isn't any different from an ordinary long.)"
5002         fi      
5003         ;;
5004 esac
5005 $rm -f try.* try
5006
5007 : determine filename position in cpp output
5008 echo " "
5009 echo "Computing filename position in cpp output for #include directives..." >&4
5010 case "$osname" in
5011 vos) testaccess=-e ;;
5012 *)   testaccess=-r ;;
5013 esac
5014 echo '#include <stdio.h>' > foo.c
5015 $cat >fieldn <<EOF
5016 $startsh
5017 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5018 $grep '^[       ]*#.*stdio\.h' | \
5019 while read cline; do
5020         pos=1
5021         set \$cline
5022         while $test \$# -gt 0; do
5023                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5024                         echo "\$pos"
5025                         exit 0
5026                 fi
5027                 shift
5028                 pos=\`expr \$pos + 1\`
5029         done
5030 done
5031 EOF
5032 chmod +x fieldn
5033 fieldn=`./fieldn`
5034 $rm -f foo.c fieldn
5035 case $fieldn in
5036 '') pos='???';;
5037 1) pos=first;;
5038 2) pos=second;;
5039 3) pos=third;;
5040 *) pos="${fieldn}th";;
5041 esac
5042 echo "Your cpp writes the filename in the $pos field of the line."
5043
5044 case "$osname" in
5045 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5046 *)   cppfilter='' ;;
5047 esac
5048 : locate header file
5049 $cat >findhdr <<EOF
5050 $startsh
5051 wanted=\$1
5052 name=''
5053 for usrincdir in $usrinc
5054 do
5055         if test -f \$usrincdir/\$wanted; then
5056                 echo "\$usrincdir/\$wanted"
5057                 exit 0
5058         fi
5059 done
5060 awkprg='{ print \$$fieldn }'
5061 echo "#include <\$wanted>" > foo\$\$.c
5062 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5063 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5064 while read cline; do
5065         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5066         case "\$name" in
5067         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5068         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5069         *) exit 2;;
5070         esac;
5071 done;
5072 #
5073 # status = 0: grep returned 0 lines, case statement not executed
5074 # status = 1: headerfile found
5075 # status = 2: while loop executed, no headerfile found
5076 #
5077 status=\$?
5078 $rm -f foo\$\$.c;
5079 if test \$status -eq 1; then
5080         exit 0;
5081 fi
5082 exit 1
5083 EOF
5084 chmod +x findhdr
5085
5086 : define an alternate in-header-list? function
5087 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5088 cont=true; xxf="echo \"<\$1> found.\" >&4";
5089 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5090 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5091 esac;
5092 case $# in 4) instead=instead;; *) instead="at last";; esac;
5093 while $test "$cont"; do
5094         xxx=`./findhdr $1`
5095         var=$2; eval "was=\$$2";
5096         if $test "$xxx" && $test -r "$xxx";
5097         then eval $xxf;
5098         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5099                 cont="";
5100         else eval $xxnf;
5101         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5102         set $yyy; shift; shift; yyy=$@;
5103         case $# in 0) cont="";;
5104         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5105                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5106         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5107                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5108         esac;
5109 done;
5110 while $test "$yyy";
5111 do set $yyy; var=$2; eval "was=\$$2";
5112         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5113         set $yyy; shift; shift; yyy=$@;
5114 done'
5115
5116 : see if inttypes.h is available
5117 : we want a real compile instead of Inhdr because some systems
5118 : have an inttypes.h which includes non-existent headers
5119 echo " "
5120 $cat >try.c <<EOCP
5121 #include <inttypes.h>
5122 int main() {
5123         static int32_t foo32 = 0x12345678;
5124 }
5125 EOCP
5126 set try
5127 if eval $compile; then
5128         echo "<inttypes.h> found." >&4
5129         val="$define"
5130 else
5131         echo "<inttypes.h> NOT found." >&4
5132         val="$undef"
5133 fi
5134 $rm -f try.c try
5135 set i_inttypes
5136 eval $setvar
5137
5138 : check for int64_t
5139 echo " "
5140 echo "Checking to see if you have int64_t..." >&4
5141 $cat >try.c <<EOCP
5142 #include <sys/types.h>
5143 #$i_inttypes I_INTTYPES
5144 #ifdef I_INTTYPES
5145 #include <inttypes.h>
5146 #endif
5147 int main() { int64_t x = 7; }
5148 EOCP
5149 set try
5150 if eval $compile; then
5151         val="$define"
5152         echo "You have int64_t."
5153 else
5154         val="$undef"
5155         echo "You do not have int64_t."
5156 fi
5157 $rm -f try try.*
5158 set d_int64_t
5159 eval $setvar
5160
5161
5162 echo " "
5163 echo "Checking which 64-bit integer type we could use..." >&4
5164
5165 case "$intsize" in
5166 8) val=int
5167    set quadtype
5168    eval $setvar
5169    val='"unsigned int"'
5170    set uquadtype
5171    eval $setvar
5172    quadkind=1
5173    ;;
5174 *) case "$longsize" in
5175    8) val=long
5176       set quadtype
5177       eval $setvar
5178       val='"unsigned long"'
5179       set uquadtype
5180       eval $setvar
5181       quadkind=2
5182       ;;
5183    *) case "$d_longlong:$longlongsize" in
5184       define:8)
5185         val='"long long"'
5186         set quadtype
5187         eval $setvar
5188         val='"unsigned long long"'
5189         set uquadtype
5190         eval $setvar
5191         quadkind=3
5192         ;;
5193       *) case "$d_int64_t" in
5194          define)
5195            val=int64_t
5196            set quadtype
5197            eval $setvar
5198            val=uint64_t
5199            set uquadtype
5200            eval $setvar
5201            quadkind=4
5202            ;;
5203          esac
5204          ;;
5205       esac
5206       ;;
5207    esac
5208    ;;
5209 esac
5210
5211 case "$quadtype" in
5212 '')     echo "Alas, no 64-bit integer types in sight." >&4
5213         d_quad="$undef"
5214         ;;
5215 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5216         d_quad="$define"
5217         ;;
5218 esac
5219
5220
5221 case "$uselonglong" in
5222 "$define"|true|[yY]*)
5223         cat <<EOM >&4
5224
5225 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5226 EOM
5227         use64bitint="$define"
5228         ;;
5229 esac                          
5230 case "$use64bits" in
5231 "$define"|true|[yY]*)
5232         cat <<EOM >&4
5233
5234 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5235 EOM
5236         use64bitint="$define"
5237         ;;
5238 esac                          
5239 case "$use64bitints" in
5240 "$define"|true|[yY]*)
5241         cat <<EOM >&4
5242
5243 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5244 EOM
5245         use64bitint="$define"
5246         ;;
5247 esac                          
5248 case "$use64bitsint" in
5249 "$define"|true|[yY]*)
5250         cat <<EOM >&4
5251
5252 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5253 EOM
5254         use64bitint="$define"
5255         ;;
5256 esac                          
5257 case "$uselonglongs" in
5258 "$define"|true|[yY]*)
5259         cat <<EOM >&4
5260
5261 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5262 EOM
5263         use64bitint="$define"
5264         ;;
5265 esac                          
5266 case "$use64bitsall" in
5267 "$define"|true|[yY]*)
5268         cat <<EOM >&4
5269
5270 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5271 EOM
5272         use64bitall="$define"
5273         ;;
5274 esac                          
5275
5276 case "$ccflags" in
5277 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5278 esac
5279 case "$use64bitall" in
5280 "$define"|true|[yY]*) use64bitint="$define" ;;
5281 esac
5282
5283 case "$longsize" in
5284 8) cat <<EOM
5285
5286 You have natively 64-bit long integers.
5287 EOM
5288    val="$define"
5289    ;;
5290 *) case "$use64bitint" in
5291    "$define"|true|[yY]*) dflt='y';;
5292    *) dflt='n';;
5293    esac
5294    case "$d_quad" in
5295    "$define") ;;
5296    *) dflt='n' ;;
5297    esac
5298    cat <<EOM
5299
5300 Perl can be built to take advantage of 64-bit integer types
5301 on some systems.  To do so, Configure can be run with -Duse64bitint.
5302 Choosing this option will most probably introduce binary incompatibilities.
5303
5304 If this doesn't make any sense to you, just accept the default '$dflt'.
5305 (The default has been chosen based on your configuration.)
5306 EOM
5307    rp='Try to use 64-bit integers, if available?'
5308    . ./myread
5309    case "$ans" in
5310    [yY]*) val="$define" ;;
5311    *)     val="$undef"  ;;
5312    esac
5313    ;;
5314 esac
5315 set use64bitint
5316 eval $setvar
5317
5318 case "$use64bitall" in
5319 "$define"|true|[yY]*) dflt='y' ;;
5320 *) case "$longsize" in
5321    8) dflt='y' ;;
5322    *) dflt='n' ;;
5323    esac
5324    ;;
5325 esac    
5326 cat <<EOM
5327
5328 You may also choose to try maximal 64-bitness.  It means using as much
5329 64-bitness as possible on the platform.  This in turn means even more
5330 binary incompatibilities.  On the other hand, your platform may not
5331 have any more 64-bitness available than what you already have chosen.
5332
5333 If this doesn't make any sense to you, just accept the default '$dflt'.
5334 (The default has been chosen based on your configuration.)
5335 EOM
5336 rp='Try to use maximal 64-bit support, if available?'
5337 . ./myread
5338 case "$ans" in
5339 [yY]*) val="$define" ;;
5340 *)     val="$undef"  ;;
5341 esac
5342 set use64bitall
5343 eval $setvar
5344 case "$use64bitall" in
5345 "$define")
5346         case "$use64bitint" in
5347         "$undef")
5348                 cat <<EOM
5349
5350 Since you have chosen a maximally 64-bit build, I'm also turning on
5351 the use of 64-bit integers.
5352 EOM
5353                 use64bitint="$define" ;;
5354         esac
5355         ;;
5356 esac
5357
5358 case "$use64bitall" in
5359 "$define"|true|[yY]*)
5360         case "$ptrsize" in
5361         4)      cat <<EOM >&4
5362
5363 *** You have chosen a maximally 64-bit build, but your pointers
5364 *** are only 4 bytes wide, disabling maximal 64-bitness.
5365
5366 EOM
5367                 use64bitall="$undef"
5368                 case "$use64bitint" in
5369                 "$define"|true|[yY]*) ;;
5370                 *)      cat <<EOM >&4
5371
5372 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5373
5374 EOM
5375                         use64bitint="$define"
5376                         ;;
5377                 esac
5378                 ;;
5379         esac
5380         ;;
5381 esac
5382
5383 case "$use64bitint" in
5384 "$define"|true|[yY]*)
5385 : Look for a hint-file generated 'call-back-unit'.  If the
5386 : user has specified that a 64-bit perl is to be built,
5387 : we may need to set or change some other defaults.
5388         if $test -f use64bitint.cbu; then
5389                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5390                 . ./use64bitint.cbu
5391         fi
5392         case "$longsize" in
5393         4) case "$archname64" in
5394            '') archname64=64int ;;
5395            esac
5396            ;;
5397         esac
5398         ;;
5399 esac
5400
5401 case "$use64bitall" in
5402 "$define"|true|[yY]*)
5403 : Look for a hint-file generated 'call-back-unit'.  If the
5404 : user has specified that a maximally 64-bit perl is to be built,
5405 : we may need to set or change some other defaults.
5406         if $test -f use64bitall.cbu; then
5407                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5408                 . ./use64bitall.cbu
5409         fi
5410         case "$longsize" in
5411         4) case "$archname64" in
5412            ''|64int) archname64=64all ;;
5413            esac
5414            ;;
5415         esac
5416         ;;
5417 esac
5418
5419 echo " "
5420 echo "Checking for GNU C Library..." >&4
5421 cat >try.c <<EOM
5422 #include <stdio.h>
5423 int main()
5424 {
5425 #ifdef __GLIBC__
5426     exit(0);
5427 #else
5428     exit(1);
5429 #endif
5430 }
5431 EOM
5432 set try
5433 if eval $compile_ok && $run ./try; then
5434         val="$define"
5435         echo "You are using the GNU C Library"
5436 else
5437         val="$undef"
5438         echo "You are not using the GNU C Library"
5439 fi
5440 $rm -f try try.*
5441 set d_gnulibc
5442 eval $setvar
5443
5444 : see if nm is to be used to determine whether a symbol is defined or not
5445 case "$usenm" in
5446 '')
5447         dflt=''
5448         case "$d_gnulibc" in
5449         "$define")
5450                 echo " "
5451                 echo "nm probably won't work on the GNU C Library." >&4
5452                 dflt=n
5453                 ;;
5454         esac
5455         case "$dflt" in
5456         '') 
5457                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5458                         echo " "
5459                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5460                         echo "'nm' won't be sufficient on this sytem." >&4
5461                         dflt=n
5462                 fi
5463                 ;;
5464         esac
5465         case "$dflt" in
5466         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5467                 if $test $dflt -gt 20; then
5468                         dflt=y
5469                 else
5470                         dflt=n
5471                 fi
5472                 ;;
5473         esac
5474         ;;
5475 *)
5476         case "$usenm" in
5477         true|$define) dflt=y;;
5478         *) dflt=n;;
5479         esac
5480         ;;
5481 esac
5482 $cat <<EOM
5483
5484 I can use $nm to extract the symbols from your C libraries. This
5485 is a time consuming task which may generate huge output on the disk (up
5486 to 3 megabytes) but that should make the symbols extraction faster. The
5487 alternative is to skip the 'nm' extraction part and to compile a small
5488 test program instead to determine whether each symbol is present. If
5489 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5490 this may be the best solution.
5491
5492 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5493
5494 EOM
5495 rp="Shall I use $nm to extract C symbols from the libraries?"
5496 . ./myread
5497 case "$ans" in
5498 [Nn]*) usenm=false;;
5499 *) usenm=true;;
5500 esac
5501
5502 runnm=$usenm
5503 case "$reuseval" in
5504 true) runnm=false;;
5505 esac
5506
5507 : nm options which may be necessary
5508 case "$nm_opt" in
5509 '') if $test -f /mach_boot; then
5510                 nm_opt=''       # Mach
5511         elif $test -d /usr/ccs/lib; then
5512                 nm_opt='-p'     # Solaris (and SunOS?)
5513         elif $test -f /dgux; then
5514                 nm_opt='-p'     # DG-UX
5515         elif $test -f /lib64/rld; then
5516                 nm_opt='-p'     # 64-bit Irix
5517         else
5518                 nm_opt=''
5519         fi;;
5520 esac
5521
5522 : nm options which may be necessary for shared libraries but illegal
5523 : for archive libraries.  Thank you, Linux.
5524 case "$nm_so_opt" in
5525 '')     case "$myuname" in
5526         *linux*)
5527                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5528                         nm_so_opt='--dynamic'
5529                 fi
5530                 ;;
5531         esac
5532         ;;
5533 esac
5534
5535 case "$runnm" in
5536 true)
5537 : get list of predefined functions in a handy place
5538 echo " "
5539 case "$libc" in
5540 '') libc=unknown
5541         case "$libs" in
5542         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5543         esac
5544         ;;
5545 esac
5546 case "$libs" in
5547 '') ;;
5548 *)  for thislib in $libs; do
5549         case "$thislib" in
5550         -lc|-lc_s)
5551                 : Handle C library specially below.
5552                 ;;
5553         -l*)
5554                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5555                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5556                         :
5557                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5558                         :
5559                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5560                         :
5561                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5562                         :
5563                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5564                         :
5565                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5566                         :
5567                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5568                         :
5569                 else
5570                         try=''
5571                 fi
5572                 libnames="$libnames $try"
5573                 ;;
5574         *) libnames="$libnames $thislib" ;;
5575         esac
5576         done
5577         ;;
5578 esac
5579 xxx=normal
5580 case "$libc" in
5581 unknown)
5582         set /lib/libc.$so
5583         for xxx in $libpth; do
5584                 $test -r $1 || set $xxx/libc.$so
5585                 : The messy sed command sorts on library version numbers.
5586                 $test -r $1 || \
5587                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5588                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5589                                 h
5590                                 s/[0-9][0-9]*/0000&/g
5591                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5592                                 G
5593                                 s/\n/ /' | \
5594                          $sort | $sed -e 's/^.* //'`
5595                 eval set \$$#
5596         done
5597         $test -r $1 || set /usr/ccs/lib/libc.$so
5598         $test -r $1 || set /lib/libsys_s$_a
5599         ;;
5600 *)
5601         set blurfl
5602         ;;
5603 esac
5604 if $test -r "$1"; then
5605         echo "Your (shared) C library seems to be in $1."
5606         libc="$1"
5607 elif $test -r /lib/libc && $test -r /lib/clib; then
5608         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5609         xxx=apollo
5610         libc='/lib/clib /lib/libc'
5611         if $test -r /lib/syslib; then
5612                 echo "(Your math library is in /lib/syslib.)"
5613                 libc="$libc /lib/syslib"
5614         fi
5615 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5616         echo "Your C library seems to be in $libc, as you said before."
5617 elif $test -r $incpath/usr/lib/libc$_a; then
5618         libc=$incpath/usr/lib/libc$_a;
5619         echo "Your C library seems to be in $libc.  That's fine."
5620 elif $test -r /lib/libc$_a; then
5621         libc=/lib/libc$_a;
5622         echo "Your C library seems to be in $libc.  You're normal."
5623 else
5624         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5625                 :
5626         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5627                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5628         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5629                 :
5630         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5631                 :
5632         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5633                 :
5634         else
5635                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5636         fi
5637         if $test -r "$tans"; then
5638                 echo "Your C library seems to be in $tans, of all places."
5639                 libc=$tans
5640         else
5641                 libc='blurfl'
5642         fi
5643 fi
5644 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5645         dflt="$libc"
5646         cat <<EOM
5647
5648 If the guess above is wrong (which it might be if you're using a strange
5649 compiler, or your machine supports multiple models), you can override it here.
5650
5651 EOM
5652 else
5653         dflt=''
5654         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5655         cat >&4 <<EOM
5656 I can't seem to find your C library.  I've looked in the following places:
5657
5658 EOM
5659         $sed 's/^/      /' libpath
5660         cat <<EOM
5661
5662 None of these seems to contain your C library. I need to get its name...
5663
5664 EOM
5665 fi
5666 fn=f
5667 rp='Where is your C library?'
5668 . ./getfile
5669 libc="$ans"
5670
5671 echo " "
5672 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5673 set X `cat libnames`
5674 shift
5675 xxx=files
5676 case $# in 1) xxx=file; esac
5677 echo "Extracting names from the following $xxx for later perusal:" >&4
5678 echo " "
5679 $sed 's/^/      /' libnames >&4
5680 echo " "
5681 $echo $n "This may take a while...$c" >&4
5682
5683 for file in $*; do
5684         case $file in
5685         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5686         *) $nm $nm_opt $file 2>/dev/null;;
5687         esac
5688 done >libc.tmp
5689
5690 $echo $n ".$c"
5691 $grep fprintf libc.tmp > libc.ptf
5692 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5693 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5694 xxx='[ADTSIW]'
5695 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5696         eval $xscan;\
5697         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5698                 eval $xrun
5699 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5700         eval $xscan;\
5701         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5702                 eval $xrun
5703 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5704         eval $xscan;\
5705         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5706                 eval $xrun
5707 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5708         eval $xscan;\
5709         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5710                 eval $xrun
5711 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5712         eval $xscan;\
5713         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5714                 eval $xrun
5715 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5716         eval $xscan;\
5717         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5718                 eval $xrun
5719 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5720                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5721         eval $xscan;\
5722         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5723                 eval $xrun
5724 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5725         eval $xscan;\
5726         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5727                 eval $xrun
5728 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5729         eval $xscan;\
5730         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5731                 eval $xrun
5732 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5733         eval $xscan;\
5734         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5735                 eval $xrun
5736 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5737         eval $xscan;\
5738         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5739                 eval $xrun
5740 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5741         eval $xscan;\
5742         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5743                 eval $xrun
5744 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5745         eval $xscan;\
5746         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5747                 eval $xrun
5748 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5749         eval $xscan;\
5750         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5751                 eval $xrun
5752 else
5753         $nm -p $* 2>/dev/null >libc.tmp
5754         $grep fprintf libc.tmp > libc.ptf
5755         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5756                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5757         then
5758                 nm_opt='-p'
5759                 eval $xrun
5760         else
5761                 echo " "
5762                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5763                 com=''
5764                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5765                         for thisname in $libnames $libc; do
5766                                 $ar t $thisname >>libc.tmp
5767                         done
5768                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5769                         echo "Ok." >&4
5770                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5771                         # Repeat libc to extract forwarders to DLL entries too
5772                         for thisname in $libnames $libc; do
5773                                 $ar tv $thisname >>libc.tmp
5774                                 # Revision 50 of EMX has bug in $ar.
5775                                 # it will not extract forwarders to DLL entries
5776                                 # Use emximp which will extract exactly them.
5777                                 emximp -o tmp.imp $thisname \
5778                                     2>/dev/null && \
5779                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5780                                     < tmp.imp >>libc.tmp
5781                                 $rm tmp.imp
5782                         done
5783                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5784                         echo "Ok." >&4
5785                 else
5786                         echo "$ar didn't seem to work right." >&4
5787                         echo "Maybe this is a Cray...trying bld instead..." >&4
5788                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5789                         then
5790                                 for thisname in $libnames; do
5791                                         bld t $libnames | \
5792                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5793                                         $ar t $thisname >>libc.tmp
5794                                 done
5795                                 echo "Ok." >&4
5796                         else
5797                                 echo "That didn't work either.  Giving up." >&4
5798                                 exit 1
5799                         fi
5800                 fi
5801         fi
5802 fi
5803 nm_extract="$com"
5804 if $test -f /lib/syscalls.exp; then
5805         echo " "
5806         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5807         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5808 fi
5809 ;;
5810 esac
5811 $rm -f libnames libpath
5812
5813 : is a C symbol defined?
5814 csym='tlook=$1;
5815 case "$3" in
5816 -v) tf=libc.tmp; tc=""; tdc="";;
5817 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5818 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5819 esac;
5820 tx=yes;
5821 case "$reuseval-$4" in
5822 true-) ;;
5823 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5824 esac;
5825 case "$tx" in
5826 yes)
5827         case "$runnm" in
5828         true)
5829                 if $contains $tlook $tf >/dev/null 2>&1;
5830                 then tval=true;
5831                 else tval=false;
5832                 fi;;
5833         *)
5834                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5835                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5836                 then tval=true;
5837                 else tval=false;
5838                 fi;
5839                 $rm -f t t.c;;
5840         esac;;
5841 *)
5842         case "$tval" in
5843         $define) tval=true;;
5844         *) tval=false;;
5845         esac;;
5846 esac;
5847 eval "$2=$tval"'
5848
5849 : define an is-in-libc? function
5850 inlibc='echo " "; td=$define; tu=$undef;
5851 sym=$1; var=$2; eval "was=\$$2";
5852 tx=yes;
5853 case "$reuseval$was" in
5854 true) ;;
5855 true*) tx=no;;
5856 esac;
5857 case "$tx" in
5858 yes)
5859         set $sym tres -f;
5860         eval $csym;
5861         case "$tres" in
5862         true)
5863                 echo "$sym() found." >&4;
5864                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5865         *)
5866                 echo "$sym() NOT found." >&4;
5867                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5868         esac;;
5869 *)
5870         case "$was" in
5871         $define) echo "$sym() found." >&4;;
5872         *) echo "$sym() NOT found." >&4;;
5873         esac;;
5874 esac'
5875
5876 : see if sqrtl exists
5877 set sqrtl d_sqrtl
5878 eval $inlibc
5879
5880 : check for length of double
5881 echo " "
5882 case "$doublesize" in
5883 '')
5884         echo "Checking to see how big your double precision numbers are..." >&4
5885         $cat >try.c <<'EOCP'
5886 #include <stdio.h>
5887 int main()
5888 {
5889     printf("%d\n", (int)sizeof(double));
5890     exit(0);
5891 }
5892 EOCP
5893         set try
5894         if eval $compile_ok; then
5895                 doublesize=`$run ./try`
5896                 echo "Your double is $doublesize bytes long."
5897         else
5898                 dflt='8'
5899                 echo "(I can't seem to compile the test program.  Guessing...)"
5900                 rp="What is the size of a double precision number (in bytes)?"
5901                 . ./myread
5902                 doublesize="$ans"
5903         fi
5904         ;;
5905 esac
5906 $rm -f try.c try
5907
5908 : check for long doubles
5909 echo " "
5910 echo "Checking to see if you have long double..." >&4
5911 echo 'int main() { long double x = 7.0; }' > try.c
5912 set try
5913 if eval $compile; then
5914         val="$define"
5915         echo "You have long double."
5916 else
5917         val="$undef"
5918         echo "You do not have long double."
5919 fi
5920 $rm try.*
5921 set d_longdbl
5922 eval $setvar
5923
5924 : check for length of long double
5925 case "${d_longdbl}${longdblsize}" in
5926 $define)
5927         echo " "
5928         echo "Checking to see how big your long doubles are..." >&4
5929         $cat >try.c <<'EOCP'
5930 #include <stdio.h>
5931 int main()
5932 {
5933         printf("%d\n", sizeof(long double));
5934 }
5935 EOCP
5936         set try
5937         set try
5938         if eval $compile; then
5939                 longdblsize=`$run ./try`
5940                 echo "Your long doubles are $longdblsize bytes long."
5941         else
5942                 dflt='8'
5943                 echo " "
5944                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5945                 rp="What is the size of a long double (in bytes)?"
5946                 . ./myread
5947                 longdblsize="$ans"
5948         fi
5949         if $test "X$doublesize" = "X$longdblsize"; then
5950                 echo "(That isn't any different from an ordinary double.)"
5951         fi      
5952         ;;
5953 esac
5954 $rm -f try.* try
5955
5956 echo " "
5957
5958 if $test X"$d_longdbl" = X"$define"; then
5959
5960 echo "Checking how to print long doubles..." >&4
5961
5962 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5963         $cat >try.c <<'EOCP'
5964 #include <sys/types.h>
5965 #include <stdio.h>
5966 int main() {
5967   double d = 123.456;
5968   printf("%.3f\n", d);
5969 }
5970 EOCP
5971         set try
5972         if eval $compile; then
5973                 yyy=`$run ./try`
5974                 case "$yyy" in
5975                 123.456)
5976                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5977                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5978                         echo "We will use %f."
5979                         ;;
5980                 esac
5981         fi
5982 fi
5983
5984 if $test X"$sPRIfldbl" = X; then
5985         $cat >try.c <<'EOCP'
5986 #include <sys/types.h>
5987 #include <stdio.h>
5988 int main() {
5989   long double d = 123.456;
5990   printf("%.3Lf\n", d);
5991 }
5992 EOCP
5993         set try
5994         if eval $compile; then
5995                 yyy=`$run ./try`
5996                 case "$yyy" in
5997                 123.456)
5998                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
5999                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
6000                         echo "We will use %Lf."
6001                         ;;
6002                 esac
6003         fi
6004 fi
6005
6006 if $test X"$sPRIfldbl" = X; then
6007         $cat >try.c <<'EOCP'
6008 #include <sys/types.h>
6009 #include <stdio.h>
6010 int main() {
6011   long double d = 123.456;
6012   printf("%.3llf\n", d);
6013 }
6014 EOCP
6015         set try
6016         if eval $compile; then
6017                 yyy=`$run ./try`
6018                 case "$yyy" in
6019                 123.456)
6020                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
6021                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
6022                         echo "We will use %llf."
6023                         ;;
6024                 esac
6025         fi
6026 fi
6027
6028 if $test X"$sPRIfldbl" = X; then
6029         $cat >try.c <<'EOCP'
6030 #include <sys/types.h>
6031 #include <stdio.h>
6032 int main() {
6033   long double d = 123.456;
6034   printf("%.3lf\n", d);
6035 }
6036 EOCP
6037         set try
6038         if eval $compile; then
6039                 yyy=`$run ./try`
6040                 case "$yyy" in
6041                 123.456)
6042                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
6043                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
6044                         echo "We will use %lf."
6045                         ;;
6046                 esac
6047         fi
6048 fi
6049
6050 if $test X"$sPRIfldbl" = X; then
6051         echo "Cannot figure out how to print long doubles." >&4
6052 else
6053         sSCNfldbl=$sPRIfldbl    # expect consistency
6054 fi
6055
6056 $rm -f try try.*
6057
6058 fi # d_longdbl
6059
6060 case "$sPRIfldbl" in
6061 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
6062         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
6063         d_SCNfldbl="$undef";
6064         ;;
6065 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
6066         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
6067         d_SCNfldbl="$define";
6068         ;;
6069 esac
6070
6071 : see if modfl exists
6072 set modfl d_modfl
6073 eval $inlibc
6074
6075 d_modfl_pow32_bug="$undef"
6076
6077 case "$d_longdbl$d_modfl" in
6078 $define$define)
6079         $cat <<EOM
6080 Checking to see whether your modfl() is okay for large values...
6081 EOM
6082 $cat >try.c <<EOCP
6083 #include <math.h> 
6084 #include <stdio.h>
6085 int main() {
6086     long double nv = 4294967303.15;
6087     long double v, w;
6088     v = modfl(nv, &w);         
6089 #ifdef __GLIBC__
6090     printf("glibc");
6091 #endif
6092     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6093     return 0;
6094 }
6095 EOCP
6096         case "$osname:$gccversion" in
6097         aix:)   saveccflags="$ccflags"
6098                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6099         esac
6100         set try
6101         if eval $compile; then
6102                 foo=`$run ./try`
6103                 case "$foo" in
6104                 *" 4294967303.150000 1.150000 4294967302.000000")
6105                         echo >&4 "Your modfl() is broken for large values."
6106                         d_modfl_pow32_bug="$define"
6107                         case "$foo" in
6108                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6109                         ;;
6110                         esac
6111                         ;;
6112                 *" 4294967303.150000 0.150000 4294967303.000000")
6113                         echo >&4 "Your modfl() seems okay for large values."
6114                         ;;
6115                 *)      echo >&4 "I don't understand your modfl() at all."
6116                         d_modfl="$undef"
6117                         ;;
6118                 esac
6119                 $rm -f try.* try core core.try.*
6120         else
6121                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6122                 d_modfl="$undef"
6123         fi
6124         case "$osname:$gccversion" in
6125         aix:)   ccflags="$saveccflags" ;; # restore
6126         esac
6127         ;;
6128 esac
6129
6130 case "$ccflags" in
6131 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6132 esac
6133
6134 case "$uselongdouble" in
6135 $define|true|[yY]*)     dflt='y';;
6136 *) dflt='n';;
6137 esac
6138 cat <<EOM
6139
6140 Perl can be built to take advantage of long doubles which
6141 (if available) may give more accuracy and range for floating point numbers.
6142
6143 If this doesn't make any sense to you, just accept the default '$dflt'.
6144 EOM
6145 rp='Try to use long doubles if available?'
6146 . ./myread
6147 case "$ans" in
6148 y|Y)    val="$define"   ;;
6149 *)      val="$undef"    ;;
6150 esac
6151 set uselongdouble
6152 eval $setvar
6153
6154 case "$uselongdouble" in
6155 true|[yY]*) uselongdouble="$define" ;;
6156 esac
6157
6158 case "$uselongdouble" in
6159 $define)
6160 : Look for a hint-file generated 'call-back-unit'.  If the
6161 : user has specified that long doubles should be used,
6162 : we may need to set or change some other defaults.
6163         if $test -f uselongdouble.cbu; then
6164                 echo "Your platform has some specific hints for long doubles, using them..."
6165                 . ./uselongdouble.cbu
6166         else
6167                 $cat <<EOM
6168 (Your platform doesn't have any specific hints for long doubles.)
6169 EOM
6170         fi
6171         ;;
6172 esac
6173
6174 message=X
6175 case "$uselongdouble:$d_sqrtl:$d_modfl" in
6176 $define:$define:$define)
6177         : You have both
6178         ;;
6179 $define:$define:$undef)
6180         message="I could not find modfl"
6181         ;;
6182 $define:$undef:$define)
6183         message="I could not find sqrtl"
6184         ;;
6185 $define:$undef:$undef)
6186         message="I found neither sqrtl nor modfl"
6187         ;;
6188 esac
6189
6190 if $test "$message" != X; then
6191         $cat <<EOM >&4
6192
6193 *** You requested the use of long doubles but you do not seem to have
6194 *** the mathematic functions for long doubles.
6195 *** ($message)
6196 *** I'm disabling the use of long doubles.
6197
6198 EOM
6199
6200         uselongdouble=$undef
6201 fi
6202
6203 case "$useperlio" in
6204 $define|true|[yY]*|'')  dflt='y';;
6205 *) dflt='n';;
6206 esac
6207 cat <<EOM
6208
6209 Previous version of $package used the standard IO mechanisms as
6210 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
6211 alternate IO mechanisms via the PerlIO abstraction layer, but the
6212 stdio mechanism is still available if needed.  The abstraction layer
6213 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
6214 Using PerlIO with sfio may cause problems with some extension modules.
6215
6216 If this doesn't make any sense to you, just accept the default '$dflt'.
6217 EOM
6218 rp='Use the PerlIO abstraction layer?'
6219 . ./myread
6220 case "$ans" in
6221 y|Y) 
6222         val="$define"
6223         ;;
6224 *)      
6225         echo "Ok, doing things the stdio way."
6226         val="$undef"
6227         ;;
6228 esac
6229 set useperlio
6230 eval $setvar 
6231
6232 case "$usesocks" in
6233 $define|true|[yY]*)
6234         case "$useperlio" in
6235         $define|true|[yY]*) ;;
6236         *)      cat >&4 <<EOM
6237
6238 You are using the SOCKS proxy protocol library which means that you
6239 should also use the PerlIO layer.  You may be headed for trouble.
6240
6241 EOM
6242                 ;;
6243         esac
6244         ;;
6245 esac
6246
6247         
6248 : determine the architecture name
6249 echo " "
6250 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6251         tarch=`arch`"-$osname"
6252 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6253         if uname -m > tmparch 2>&1 ; then
6254                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6255                         -e 's/$/'"-$osname/" tmparch`
6256         else
6257                 tarch="$osname"
6258         fi
6259         $rm -f tmparch
6260 else
6261         tarch="$osname"
6262 fi
6263 case "$myarchname" in
6264 ''|"$tarch") ;;
6265 *)
6266         echo "(Your architecture name used to be $myarchname.)"
6267         archname=''
6268         ;;
6269 esac
6270 case "$targetarch" in
6271 '') ;;
6272 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6273 esac
6274 myarchname="$tarch"
6275 case "$archname" in
6276 '') dflt="$tarch";;
6277 *) dflt="$archname";;
6278 esac
6279 rp='What is your architecture name'
6280 . ./myread
6281 archname="$ans"
6282 case "$usethreads" in
6283 $define)
6284         echo "Threads selected." >&4
6285         case "$archname" in
6286         *-thread*) echo "...and architecture name already has -thread." >&4
6287                 ;;
6288         *)      archname="$archname-thread"
6289                 echo "...setting architecture name to $archname." >&4
6290                 ;;
6291         esac
6292         ;;
6293 esac
6294 case "$usemultiplicity" in
6295 $define)
6296         echo "Multiplicity selected." >&4
6297         case "$archname" in
6298         *-multi*) echo "...and architecture name already has -multi." >&4
6299                 ;;
6300         *)      archname="$archname-multi"
6301                 echo "...setting architecture name to $archname." >&4
6302                 ;;
6303         esac
6304         ;;
6305 esac
6306 case "$use64bitint$use64bitall" in
6307 *"$define"*)
6308         case "$archname64" in
6309         '')
6310                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6311                 ;;
6312         *)
6313                 case "$use64bitint" in
6314                 "$define") echo "64 bit integers selected." >&4 ;;
6315                 esac
6316                 case "$use64bitall" in
6317                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6318                 esac
6319                 case "$archname" in
6320                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6321                         ;;
6322                 *)      archname="$archname-$archname64"
6323                         echo "...setting architecture name to $archname." >&4
6324                         ;;
6325                 esac
6326                 ;;
6327         esac
6328 esac
6329 case "$uselongdouble" in
6330 $define)
6331         echo "Long doubles selected." >&4
6332         case "$longdblsize" in
6333         $doublesize)
6334                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6335                 ;;
6336         *)
6337                 case "$archname" in
6338                 *-ld*) echo "...and architecture name already has -ld." >&4
6339                         ;;
6340                 *)      archname="$archname-ld"
6341                         echo "...setting architecture name to $archname." >&4
6342                         ;;
6343                 esac
6344                 ;;
6345         esac
6346         ;;
6347 esac
6348 case "$useperlio" in
6349 $define)
6350         echo "Perlio selected." >&4
6351         ;;
6352 *)
6353         echo "Perlio not selected, using stdio." >&4
6354         case "$archname" in
6355         *-stdio*) echo "...and architecture name already has -stdio." >&4
6356                 ;;
6357         *)      archname="$archname-stdio"
6358                 echo "...setting architecture name to $archname." >&4
6359                 ;;
6360         esac
6361         ;;
6362 esac
6363
6364 : determine root of directory hierarchy where package will be installed.
6365 case "$prefix" in
6366 '')
6367         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6368         ;;
6369 *)
6370         dflt="$prefix"
6371         ;;
6372 esac
6373 $cat <<EOM
6374
6375 By default, $package will be installed in $dflt/bin, manual pages
6376 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6377 installation directories. Typically this is something like /usr/local.
6378 If you wish to have binaries under /usr/bin but other parts of the
6379 installation under /usr/local, that's ok: you will be prompted
6380 separately for each of the installation directories, the prefix being
6381 only used to set the defaults.
6382
6383 EOM
6384 fn=d~
6385 rp='Installation prefix to use?'
6386 . ./getfile
6387 oldprefix=''
6388 case "$prefix" in
6389 '') ;;
6390 *)
6391         case "$ans" in
6392         "$prefix") ;;
6393         *) oldprefix="$prefix";;
6394         esac
6395         ;;
6396 esac
6397 prefix="$ans"
6398 prefixexp="$ansexp"
6399
6400 case "$afsroot" in
6401 '')     afsroot=/afs ;;
6402 *)      afsroot=$afsroot ;;
6403 esac
6404
6405 : is AFS running?
6406 echo " "
6407 case "$afs" in
6408 $define|true)   afs=true ;;
6409 $undef|false)   afs=false ;;
6410 *)      if test -d $afsroot; then
6411                 afs=true
6412         else
6413                 afs=false
6414         fi
6415         ;;
6416 esac
6417 if $afs; then
6418         echo "AFS may be running... I'll be extra cautious then..." >&4
6419 else
6420         echo "AFS does not seem to be running..." >&4
6421 fi
6422
6423 : determine installation prefix for where package is to be installed.
6424 if $afs; then 
6425 $cat <<EOM
6426
6427 Since you are running AFS, I need to distinguish the directory in which
6428 files will reside from the directory in which they are installed (and from
6429 which they are presumably copied to the former directory by occult means).
6430
6431 EOM
6432         case "$installprefix" in
6433         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6434         *) dflt="$installprefix";;
6435         esac
6436 else
6437 $cat <<EOM
6438
6439 In some special cases, particularly when building $package for distribution,
6440 it is convenient to distinguish between the directory in which files should 
6441 be installed from the directory ($prefix) in which they 
6442 will eventually reside.  For most users, these two directories are the same.
6443
6444 EOM
6445         case "$installprefix" in
6446         '') dflt=$prefix ;;
6447         *) dflt=$installprefix;;
6448         esac
6449 fi
6450 fn=d~
6451 rp='What installation prefix should I use for installing files?'
6452 . ./getfile
6453 installprefix="$ans"
6454 installprefixexp="$ansexp"
6455
6456 : set the prefixit variable, to compute a suitable default value
6457 prefixit='case "$3" in
6458 ""|none)
6459         case "$oldprefix" in
6460         "") eval "$1=\"\$$2\"";;
6461         *)
6462                 case "$3" in
6463                 "") eval "$1=";;
6464                 none)
6465                         eval "tp=\"\$$2\"";
6466                         case "$tp" in
6467                         ""|" ") eval "$1=\"\$$2\"";;
6468                         *) eval "$1=";;
6469                         esac;;
6470                 esac;;
6471         esac;;
6472 *)
6473         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6474         case "$tp" in
6475         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6476         /*-$oldprefix/*|\~*-$oldprefix/*)
6477                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6478         *) eval "$1=\"\$$2\"";;
6479         esac;;
6480 esac'
6481
6482 : get the patchlevel
6483 echo " "
6484 echo "Getting the current patchlevel..." >&4
6485 if $test -r $rsrc/patchlevel.h;then
6486         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6487         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6488         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6489         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6490         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6491         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6492        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6493 else
6494         revision=0
6495         patchlevel=0
6496         subversion=0
6497         api_revision=0
6498         api_version=0
6499         api_subversion=0
6500         perl_patchlevel=0
6501         $echo "(You do not have patchlevel.h.  Eek.)"
6502 fi
6503 if $test -r $rsrc/.patch ; then  
6504         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6505                 perl_patchlevel=`cat $rsrc/.patch`
6506         fi
6507 fi
6508 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6509 version_patchlevel_string="version $patchlevel subversion $subversion"
6510 case "$perl_patchlevel" in
6511 0|'') ;;
6512 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6513 esac
6514
6515 $echo "(You have $package $version_patchlevel_string.)"
6516
6517 case "$osname" in
6518 dos|vms)
6519         : XXX Should be a Configure test for double-dots in filenames.
6520         version=`echo $revision $patchlevel $subversion | \
6521                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6522         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6523                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6524         ;;
6525 *)
6526         version=`echo $revision $patchlevel $subversion | \
6527                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6528         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6529                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6530         ;;
6531 esac
6532 : Special case the 5.005_xx maintenance series, which used 5.005
6533 : without any subversion label as a subdirectory in $sitelib
6534 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6535         api_versionstring='5.005'
6536 fi
6537
6538 : determine installation style
6539 : For now, try to deduce it from prefix unless it is already set.
6540 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6541 case "$installstyle" in
6542 '')     case "$prefix" in
6543                 *perl*) dflt='lib';;
6544                 *) dflt='lib/perl5' ;;
6545         esac
6546         ;;
6547 *)      dflt="$installstyle" ;;
6548 esac
6549 : Probably not worth prompting for this since we prompt for all
6550 : the directories individually, and the prompt would be too long and
6551 : confusing anyway.
6552 installstyle=$dflt
6553
6554 : determine where private library files go
6555 : Usual default is /usr/local/lib/perl5/$version.
6556 : Also allow things like /opt/perl/lib/$version, since 
6557 : /opt/perl/lib/perl5... would be redundant.
6558 : The default "style" setting is made in installstyle.U
6559 case "$installstyle" in
6560 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6561 *)       set dflt privlib lib/$version ;;
6562 esac
6563 eval $prefixit
6564 $cat <<EOM
6565
6566 There are some auxiliary files for $package that need to be put into a
6567 private library directory that is accessible by everyone.
6568
6569 EOM
6570 fn=d~+
6571 rp='Pathname where the private library files will reside?'
6572 . ./getfile
6573 privlib="$ans"
6574 privlibexp="$ansexp"
6575 : Change installation prefix, if necessary.
6576 if $test X"$prefix" != X"$installprefix"; then
6577         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6578 else
6579         installprivlib="$privlibexp"
6580 fi
6581
6582 : set the prefixup variable, to restore leading tilda escape
6583 prefixup='case "$prefixexp" in
6584 "$prefix") ;;
6585 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6586 esac'
6587
6588 : determine where public architecture dependent libraries go
6589 set archlib archlib
6590 eval $prefixit
6591 : privlib default is /usr/local/lib/$package/$version
6592 : archlib default is /usr/local/lib/$package/$version/$archname
6593 : privlib may have an optional trailing /share.
6594 tdflt=`echo $privlib | $sed 's,/share$,,'`
6595 tdflt=$tdflt/$archname
6596 case "$archlib" in
6597 '')     dflt=$tdflt
6598         ;;
6599 *)      dflt="$archlib"
6600     ;;
6601 esac
6602 $cat <<EOM
6603
6604 $spackage contains architecture-dependent library files.  If you are
6605 sharing libraries in a heterogeneous environment, you might store
6606 these files in a separate location.  Otherwise, you can just include
6607 them with the rest of the public library files.
6608
6609 EOM
6610 fn=d+~
6611 rp='Where do you want to put the public architecture-dependent libraries?'
6612 . ./getfile
6613 archlib="$ans"
6614 archlibexp="$ansexp"
6615 if $test X"$archlib" = X"$privlib"; then
6616         d_archlib="$undef"
6617 else
6618         d_archlib="$define"
6619 fi
6620 : Change installation prefix, if necessary.
6621 if $test X"$prefix" != X"$installprefix"; then
6622         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6623 else
6624         installarchlib="$archlibexp"
6625 fi
6626
6627
6628 : Binary compatibility with 5.005 is not possible for builds
6629 : with advanced features
6630 case "$usethreads$usemultiplicity" in
6631 *define*)
6632         bincompat5005="$undef"
6633         d_bincompat5005="$undef"
6634         ;;
6635 *)      $cat <<EOM
6636
6637 This version of Perl can be compiled for binary compatibility with 5.005.
6638 If you decide to do so, you will be able to continue using most of the
6639 extensions that were compiled for Perl 5.005.
6640
6641 EOM
6642         case "$bincompat5005$d_bincompat5005" in
6643         *"$undef"*) dflt=n ;;
6644         *) dflt=y ;;
6645         esac
6646         rp='Binary compatibility with Perl 5.005?'
6647         . ./myread
6648         case "$ans" in
6649         y*) val="$define" ;;
6650         *)  val="$undef" ;;
6651         esac
6652         set d_bincompat5005
6653         eval $setvar
6654         case "$d_bincompat5005" in
6655         "$define")
6656                 bincompat5005="$define"
6657                 ;;
6658         *)      bincompat5005="$undef"
6659                 d_bincompat5005="$undef"
6660                 ;;
6661         esac
6662         ;;
6663 esac
6664
6665
6666 : see if setuid scripts can be secure
6667 $cat <<EOM
6668
6669 Some kernels have a bug that prevents setuid #! scripts from being
6670 secure.  Some sites have disabled setuid #! scripts because of this.
6671
6672 First let's decide if your kernel supports secure setuid #! scripts.
6673 (If setuid #! scripts would be secure but have been disabled anyway,
6674 don't say that they are secure if asked.)
6675
6676 EOM
6677
6678 val="$undef"
6679 if $test -d /dev/fd; then
6680         echo "#!$ls" >reflect
6681         chmod +x,u+s reflect
6682         ./reflect >flect 2>&1
6683         if $contains "/dev/fd" flect >/dev/null; then
6684                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6685                 val="$define"
6686         else
6687                 $cat <<EOM
6688 If you are not sure if they are secure, I can check but I'll need a
6689 username and password different from the one you are using right now.
6690 If you don't have such a username or don't want me to test, simply
6691 enter 'none'.
6692
6693 EOM
6694                 rp='Other username to test security of setuid scripts with?'
6695                 dflt='none'
6696                 . ./myread
6697                 case "$ans" in
6698                 n|none)
6699                         case "$d_suidsafe" in
6700                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6701                                 dflt=n;;
6702                         "$undef")
6703                                 echo "Well, the $hint value is *not* secure." >&4
6704                                 dflt=n;;
6705                         *)      echo "Well, the $hint value *is* secure." >&4
6706                                 dflt=y;;
6707                         esac
6708                         ;;
6709                 *)
6710                         $rm -f reflect flect
6711                         echo "#!$ls" >reflect
6712                         chmod +x,u+s reflect
6713                         echo >flect
6714                         chmod a+w flect
6715                         echo '"su" will (probably) prompt you for '"$ans's password."
6716                         su $ans -c './reflect >flect'
6717                         if $contains "/dev/fd" flect >/dev/null; then
6718                                 echo "Okay, it looks like setuid scripts are secure." >&4
6719                                 dflt=y
6720                         else
6721                                 echo "I don't think setuid scripts are secure." >&4
6722                                 dflt=n
6723                         fi
6724                         ;;
6725                 esac
6726                 rp='Does your kernel have *secure* setuid scripts?'
6727                 . ./myread
6728                 case "$ans" in
6729                 [yY]*)  val="$define";;
6730                 *)      val="$undef";;
6731                 esac
6732         fi
6733 else
6734         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6735         echo "(That's for file descriptors, not floppy disks.)"
6736         val="$undef"
6737 fi
6738 set d_suidsafe
6739 eval $setvar
6740
6741 $rm -f reflect flect
6742
6743 : now see if they want to do setuid emulation
6744 echo " "
6745 val="$undef"
6746 case "$d_suidsafe" in
6747 "$define")
6748         val="$undef"
6749         echo "No need to emulate SUID scripts since they are secure here." >&4
6750         ;;
6751 *)
6752         $cat <<EOM
6753 Some systems have disabled setuid scripts, especially systems where
6754 setuid scripts cannot be secure.  On systems where setuid scripts have
6755 been disabled, the setuid/setgid bits on scripts are currently
6756 useless.  It is possible for $package to detect those bits and emulate
6757 setuid/setgid in a secure fashion.  This emulation will only work if
6758 setuid scripts have been disabled in your kernel.
6759
6760 EOM
6761         case "$d_dosuid" in
6762         "$define") dflt=y ;;
6763         *) dflt=n ;;
6764         esac
6765         rp="Do you want to do setuid/setgid emulation?"
6766         . ./myread
6767         case "$ans" in
6768         [yY]*)  val="$define";;
6769         *)      val="$undef";;
6770         esac
6771         ;;
6772 esac
6773 set d_dosuid
6774 eval $setvar
6775
6776 : see if this is a malloc.h system
6777 set malloc.h i_malloc
6778 eval $inhdr
6779
6780 : see if stdlib is available
6781 set stdlib.h i_stdlib
6782 eval $inhdr
6783
6784 : determine which malloc to compile in
6785 echo " "
6786 case "$usemymalloc" in
6787 [yY]*|true|$define)     dflt='y' ;;
6788 [nN]*|false|$undef)     dflt='n' ;;
6789 *)      case "$ptrsize" in
6790         4) dflt='y' ;;
6791         *) dflt='n' ;;
6792         esac
6793         ;;
6794 esac
6795 rp="Do you wish to attempt to use the malloc that comes with $package?"
6796 . ./myread
6797 usemymalloc="$ans"
6798 case "$ans" in
6799 y*|true)
6800         usemymalloc='y'
6801         mallocsrc='malloc.c'
6802         mallocobj="malloc$_o"
6803         d_mymalloc="$define"
6804         case "$libs" in
6805         *-lmalloc*)
6806                 : Remove malloc from list of libraries to use
6807                 echo "Removing unneeded -lmalloc from library list" >&4
6808                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6809                 shift
6810                 libs="$*"
6811                 echo "libs = $libs" >&4
6812                 ;;
6813         esac
6814         ;;
6815 *)
6816         usemymalloc='n'
6817         mallocsrc=''
6818         mallocobj=''
6819         d_mymalloc="$undef"
6820         ;;
6821 esac
6822
6823 : compute the return types of malloc and free
6824 echo " "
6825 $cat >malloc.c <<END
6826 #$i_malloc I_MALLOC
6827 #$i_stdlib I_STDLIB
6828 #include <stdio.h>
6829 #include <sys/types.h>
6830 #ifdef I_MALLOC
6831 #include <malloc.h>
6832 #endif
6833 #ifdef I_STDLIB
6834 #include <stdlib.h>
6835 #endif
6836 #ifdef TRY_MALLOC
6837 void *malloc();
6838 #endif
6839 #ifdef TRY_FREE
6840 void free();
6841 #endif
6842 END
6843 case "$malloctype" in
6844 '')
6845         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6846                 malloctype='void *'
6847         else
6848                 malloctype='char *'
6849         fi
6850         ;;
6851 esac
6852 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6853
6854 case "$freetype" in
6855 '')
6856         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6857                 freetype='void'
6858         else
6859                 freetype='int'
6860         fi
6861         ;;
6862 esac
6863 echo "Your system uses $freetype free(), it would seem." >&4
6864 $rm -f malloc.[co]
6865 $cat <<EOM
6866
6867 After $package is installed, you may wish to install various
6868 add-on modules and utilities.  Typically, these add-ons will
6869 be installed under $prefix with the rest
6870 of this package.  However, you may wish to install such add-ons
6871 elsewhere under a different prefix.
6872
6873 If you do not wish to put everything under a single prefix, that's
6874 ok.  You will be prompted for the individual locations; this siteprefix
6875 is only used to suggest the defaults.
6876
6877 The default should be fine for most people.
6878
6879 EOM
6880 fn=d~+
6881 rp='Installation prefix to use for add-on modules and utilities?'
6882 : XXX Here might be another good place for an installstyle setting.
6883 case "$siteprefix" in
6884 '') dflt=$prefix ;;
6885 *)  dflt=$siteprefix ;;
6886 esac
6887 . ./getfile
6888 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6889 oldsiteprefix=''
6890 case "$siteprefix" in
6891 '') ;;
6892 *)      case "$ans" in
6893         "$prefix") ;;
6894         *) oldsiteprefix="$prefix";;
6895         esac
6896         ;;
6897 esac
6898 siteprefix="$ans"
6899 siteprefixexp="$ansexp"
6900
6901 : determine where site specific libraries go.
6902 : Usual default is /usr/local/lib/perl5/site_perl/$version
6903 : The default "style" setting is made in installstyle.U
6904 : XXX No longer works with Prefixit stuff.
6905 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6906 case "$sitelib" in
6907 '') case "$installstyle" in
6908         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6909         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6910         esac
6911         ;;
6912 *)      dflt="$sitelib"
6913         ;;
6914 esac
6915 $cat <<EOM
6916
6917 The installation process will create a directory for
6918 site-specific extensions and modules.  Most users find it convenient
6919 to place all site-specific files in this directory rather than in the
6920 main distribution directory.
6921
6922 EOM
6923 fn=d~+
6924 rp='Pathname for the site-specific library files?'
6925 . ./getfile
6926 sitelib="$ans"
6927 sitelibexp="$ansexp"
6928 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6929 : Change installation prefix, if necessary.
6930 if $test X"$prefix" != X"$installprefix"; then
6931         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6932 else
6933         installsitelib="$sitelibexp"
6934 fi
6935
6936 : determine where site specific architecture-dependent libraries go.
6937 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6938 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6939 : sitelib may have an optional trailing /share.
6940 case "$sitearch" in
6941 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6942         dflt="$dflt/$archname"
6943         ;;
6944 *)      dflt="$sitearch"
6945         ;;
6946 esac
6947 set sitearch sitearch none
6948 eval $prefixit
6949 $cat <<EOM
6950
6951 The installation process will also create a directory for
6952 architecture-dependent site-specific extensions and modules.
6953
6954 EOM
6955 fn=d~+
6956 rp='Pathname for the site-specific architecture-dependent library files?'
6957 . ./getfile
6958 sitearch="$ans"
6959 sitearchexp="$ansexp"
6960 : Change installation prefix, if necessary.
6961 if $test X"$prefix" != X"$installprefix"; then
6962         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6963 else
6964         installsitearch="$sitearchexp"
6965 fi
6966
6967 $cat <<EOM
6968
6969 The installation process will also create a directory for
6970 vendor-supplied add-ons.  Vendors who supply perl with their system
6971 may find it convenient to place all vendor-supplied files in this
6972 directory rather than in the main distribution directory.  This will
6973 ease upgrades between binary-compatible maintenance versions of perl.
6974
6975 Of course you may also use these directories in whatever way you see
6976 fit.  For example, you might use them to access modules shared over a
6977 company-wide network.
6978
6979 The default answer should be fine for most people.
6980 This causes further questions about vendor add-ons to be skipped
6981 and no vendor-specific directories will be configured for perl.
6982
6983 EOM
6984 rp='Do you want to configure vendor-specific add-on directories?'
6985 case "$usevendorprefix" in
6986 define|true|[yY]*) dflt=y ;;
6987 *)      : User may have set vendorprefix directly on Configure command line.
6988         case "$vendorprefix" in
6989         ''|' ') dflt=n ;;
6990         *)      dflt=y ;;
6991         esac
6992         ;;
6993 esac
6994 . ./myread
6995 case "$ans" in
6996 [yY]*)  fn=d~+
6997         rp='Installation prefix to use for vendor-supplied add-ons?'
6998         case "$vendorprefix" in
6999         '') dflt='' ;;
7000         *)  dflt=$vendorprefix ;;
7001         esac
7002         . ./getfile
7003         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7004         oldvendorprefix=''
7005         case "$vendorprefix" in
7006         '') ;;
7007         *)      case "$ans" in
7008                 "$prefix") ;;
7009                 *) oldvendorprefix="$prefix";;
7010                 esac
7011                 ;;
7012         esac
7013         usevendorprefix="$define"
7014         vendorprefix="$ans"
7015         vendorprefixexp="$ansexp"
7016         ;;
7017 *)      usevendorprefix="$undef"
7018         vendorprefix=''
7019         vendorprefixexp=''
7020         ;;
7021 esac
7022
7023 case "$vendorprefix" in
7024 '')     d_vendorlib="$undef"
7025         vendorlib=''
7026         vendorlibexp=''
7027         ;;
7028 *)      d_vendorlib="$define"
7029         : determine where vendor-supplied modules go.
7030         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
7031         case "$vendorlib" in
7032         '')
7033                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7034                 case "$installstyle" in
7035                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
7036                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
7037                 esac
7038                 ;;
7039         *)      dflt="$vendorlib"
7040                 ;;
7041         esac
7042         fn=d~+
7043         rp='Pathname for the vendor-supplied library files?'
7044         . ./getfile
7045         vendorlib="$ans"
7046         vendorlibexp="$ansexp"
7047         ;;
7048 esac
7049 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
7050 : Change installation prefix, if necessary.
7051 if $test X"$prefix" != X"$installprefix"; then
7052         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
7053 else
7054         installvendorlib="$vendorlibexp"
7055 fi
7056
7057 case "$vendorprefix" in
7058 '')     d_vendorarch="$undef"
7059         vendorarch=''
7060         vendorarchexp=''
7061         ;;
7062 *)      d_vendorarch="$define"
7063         : determine where vendor-supplied architecture-dependent libraries go.
7064         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
7065         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
7066         : vendorlib may have an optional trailing /share.
7067         case "$vendorarch" in
7068         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
7069                 dflt="$dflt/$archname"
7070                 ;;
7071         *)      dflt="$vendorarch" ;;
7072         esac
7073         fn=d~+
7074         rp='Pathname for vendor-supplied architecture-dependent files?'
7075         . ./getfile
7076         vendorarch="$ans"
7077         vendorarchexp="$ansexp"
7078         ;;
7079 esac
7080 : Change installation prefix, if necessary.
7081 if $test X"$prefix" != X"$installprefix"; then
7082         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
7083 else
7084         installvendorarch="$vendorarchexp"
7085 fi
7086
7087 : Final catch-all directories to search
7088 $cat <<EOM
7089
7090 Lastly, you can have perl look in other directories for extensions and
7091 modules in addition to those already specified.
7092 These directories will be searched after 
7093         $sitearch 
7094         $sitelib 
7095 EOM
7096 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7097 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7098 echo ' '
7099 case "$otherlibdirs" in
7100 ''|' ') dflt='none' ;;
7101 *)      dflt="$otherlibdirs" ;;
7102 esac
7103 $cat <<EOM
7104 Enter a colon-separated set of extra paths to include in perl's @INC
7105 search path, or enter 'none' for no extra paths.
7106
7107 EOM
7108
7109 rp='Colon-separated list of additional directories for perl to search?'
7110 . ./myread
7111 case "$ans" in
7112 ' '|''|none)    otherlibdirs=' ' ;;     
7113 *)      otherlibdirs="$ans" ;;
7114 esac
7115 case "$otherlibdirs" in
7116 ' ') val=$undef ;;
7117 *)      val=$define ;;
7118 esac
7119 set d_perl_otherlibdirs
7120 eval $setvar
7121
7122 : Cruising for prototypes
7123 echo " "
7124 echo "Checking out function prototypes..." >&4
7125 $cat >prototype.c <<'EOCP'
7126 int main(int argc, char *argv[]) {
7127         exit(0);}
7128 EOCP
7129 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7130         echo "Your C compiler appears to support function prototypes."
7131         val="$define"
7132 else
7133         echo "Your C compiler doesn't seem to understand function prototypes."
7134         val="$undef"
7135 fi
7136 set prototype
7137 eval $setvar
7138 $rm -f prototype*
7139
7140 case "$prototype" in
7141 "$define") ;;
7142 *)      ansi2knr='ansi2knr'
7143         echo " "
7144         cat <<EOM >&4
7145
7146 $me:  FATAL ERROR:
7147 This version of $package can only be compiled by a compiler that 
7148 understands function prototypes.  Unfortunately, your C compiler 
7149         $cc $ccflags
7150 doesn't seem to understand them.  Sorry about that.
7151
7152 If GNU cc is available for your system, perhaps you could try that instead.  
7153
7154 Eventually, we hope to support building Perl with pre-ANSI compilers.
7155 If you would like to help in that effort, please contact <perlbug@perl.org>.
7156
7157 Aborting Configure now.
7158 EOM
7159         exit 2
7160         ;;
7161 esac
7162
7163 : determine where public executables go
7164 echo " "
7165 set dflt bin bin
7166 eval $prefixit
7167 fn=d~
7168 rp='Pathname where the public executables will reside?'
7169 . ./getfile
7170 if $test "X$ansexp" != "X$binexp"; then
7171         installbin=''
7172 fi
7173 bin="$ans"
7174 binexp="$ansexp"
7175 : Change installation prefix, if necessary.
7176 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7177 if $test X"$prefix" != X"$installprefix"; then
7178         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7179 else
7180         installbin="$binexp"
7181 fi
7182
7183 echo " "
7184 case "$extras" in
7185 '') dflt='n';;
7186 *) dflt='y';;
7187 esac
7188 cat <<EOM
7189 Perl can be built with extra modules or bundles of modules which
7190 will be fetched from the CPAN and installed alongside Perl.
7191
7192 Notice that you will need access to the CPAN; either via the Internet,
7193 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7194 be asked later to configure the CPAN.pm module which will in turn do
7195 the installation of the rest of the extra modules or bundles.)
7196
7197 Notice also that if the modules require any external software such as
7198 libraries and headers (the libz library and the zlib.h header for the
7199 Compress::Zlib module, for example) you MUST have any such software
7200 already installed, this configuration process will NOT install such
7201 things for you.
7202
7203 If this doesn't make any sense to you, just accept the default '$dflt'.
7204 EOM
7205 rp='Install any extra modules (y or n)?'
7206 . ./myread
7207 case "$ans" in
7208 y|Y)
7209         cat <<EOM
7210
7211 Please list any extra modules or bundles to be installed from CPAN,
7212 with spaces between the names.  The names can be in any format the
7213 'install' command of CPAN.pm will understand.  (Answer 'none',
7214 without the quotes, to install no extra modules or bundles.)
7215 EOM
7216         rp='Extras?'
7217         dflt="$extras"
7218         . ./myread
7219         extras="$ans"
7220 esac
7221 case "$extras" in
7222 ''|'none')
7223         val=''
7224         $rm -f ../extras.lst
7225         ;;
7226 *)      echo "(Saving the list of extras for later...)"
7227         echo "$extras" > ../extras.lst
7228         val="'$extras'"
7229         ;;
7230 esac
7231 set extras
7232 eval $setvar
7233 echo " "
7234
7235 : Find perl5.005 or later.
7236 echo "Looking for a previously installed perl5.005 or later... "
7237 case "$perl5" in
7238 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7239                 : Check if this perl is recent and can load a simple module
7240                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7241                         perl5=$tdir/perl
7242                         break;
7243                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7244                         perl5=$tdir/perl5
7245                         break;
7246                 fi
7247         done
7248         ;;
7249 *)      perl5="$perl5"
7250         ;;
7251 esac
7252 case "$perl5" in
7253 '')     echo "None found.  That's ok.";;
7254 *)      echo "Using $perl5." ;;
7255 esac
7256
7257 : Determine list of previous versions to include in @INC
7258 $cat > getverlist <<EOPL
7259 #!$perl5 -w
7260 use File::Basename;
7261 \$api_versionstring = "$api_versionstring";
7262 \$version = "$version";
7263 \$stem = "$sitelib_stem";
7264 \$archname = "$archname";
7265 EOPL
7266         $cat >> getverlist <<'EOPL'
7267 # Can't have leading @ because metaconfig interprets it as a command!
7268 ;@inc_version_list=();
7269 # XXX Redo to do opendir/readdir? 
7270 if (-d $stem) {
7271     chdir($stem);
7272     ;@candidates = glob("5.*");
7273 }
7274 else {
7275     ;@candidates = ();
7276 }
7277
7278 # XXX ToDo:  These comparisons must be reworked when two-digit
7279 # subversions come along, so that 5.7.10 compares as greater than
7280 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7281 # widespread that we can use the built-in version vectors rather
7282 # than reinventing them here.  For 5.6.0, however, we must
7283 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7284 foreach $d (@candidates) {
7285     if ($d lt $version) {
7286         if ($d ge $api_versionstring) {
7287             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7288         }
7289         elsif ($d ge "5.005") {
7290             unshift(@inc_version_list, grep { -d } $d);
7291         }
7292     }
7293     else {
7294         # Skip newer version.  I.e. don't look in
7295         # 5.7.0 if we're installing 5.6.1.
7296     }
7297 }
7298
7299 if (@inc_version_list) {
7300     print join(' ', @inc_version_list);
7301 }
7302 else {
7303     # Blank space to preserve value for next Configure run.
7304     print " ";
7305 }
7306 EOPL
7307 chmod +x getverlist
7308 case "$inc_version_list" in
7309 '')     if test -x "$perl5$exe_ext"; then
7310                 dflt=`$perl5 getverlist`
7311         else
7312                 dflt='none'
7313         fi
7314         ;;
7315 $undef) dflt='none' ;;
7316 *)  eval dflt=\"$inc_version_list\" ;;
7317 esac
7318 case "$dflt" in
7319 ''|' ') dflt=none ;;
7320 esac
7321 case "$dflt" in
7322 5.005) case "$bincompat5005" in
7323        $define|true|[yY]*) ;;
7324        *) dflt=none ;;
7325        esac
7326        ;;
7327 esac
7328 $cat <<'EOM'
7329
7330 In order to ease the process of upgrading, this version of perl 
7331 can be configured to use modules built and installed with earlier 
7332 versions of perl that were installed under $prefix.  Specify here
7333 the list of earlier versions that this version of perl should check.
7334 If Configure detected no earlier versions of perl installed under
7335 $prefix, then the list will be empty.  Answer 'none' to tell perl
7336 to not search earlier versions.
7337
7338 The default should almost always be sensible, so if you're not sure,
7339 just accept the default.
7340 EOM
7341
7342 rp='List of earlier versions to include in @INC?'
7343 . ./myread
7344 case "$ans" in
7345 [Nn]one|''|' ') inc_version_list=' ' ;;
7346 *) inc_version_list="$ans" ;;
7347 esac
7348 case "$inc_version_list" in
7349 ''|' ') 
7350         inc_version_list_init='0';;
7351 *)      inc_version_list_init=`echo $inc_version_list |
7352                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7353         ;;
7354 esac
7355 $rm -f getverlist
7356
7357 : determine whether to install perl also as /usr/bin/perl
7358
7359 echo " "
7360 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7361         $cat <<EOM
7362 Many scripts expect perl to be installed as /usr/bin/perl.
7363 I can install the perl you are about to compile also as /usr/bin/perl
7364 (in addition to $installbin/perl).
7365 EOM
7366         case "$installusrbinperl" in
7367         "$undef"|[nN]*) dflt='n';;
7368         *)              dflt='y';;
7369         esac
7370         rp="Do you want to install perl as /usr/bin/perl?"
7371         . ./myread
7372         case "$ans" in
7373         [yY]*)  val="$define";;
7374         *)      val="$undef" ;;
7375         esac
7376 else
7377         val="$undef"
7378 fi
7379 set installusrbinperl
7380 eval $setvar
7381
7382 : see if dld is available
7383 set dld.h i_dld
7384 eval $inhdr
7385
7386 : see if dlopen exists
7387 xxx_runnm="$runnm"
7388 runnm=false
7389 set dlopen d_dlopen
7390 eval $inlibc
7391 runnm="$xxx_runnm"
7392
7393 : determine which dynamic loading, if any, to compile in
7394 echo " "
7395 dldir="ext/DynaLoader"
7396 case "$usedl" in
7397 $define|y|true)
7398         dflt='y'
7399         usedl="$define"
7400         ;;
7401 $undef|n|false)
7402         dflt='n'
7403         usedl="$undef"
7404         ;;
7405 *) 
7406         dflt='n'
7407         case "$d_dlopen" in
7408             $define) dflt='y' ;;
7409         esac
7410         case "$i_dld" in
7411             $define) dflt='y' ;;
7412         esac
7413         : Does a dl_xxx.xs file exist for this operating system
7414         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7415         ;;
7416 esac
7417 rp="Do you wish to use dynamic loading?"
7418 . ./myread
7419 usedl="$ans"
7420 case "$ans" in
7421 y*) usedl="$define"
7422         case "$dlsrc" in
7423         '')
7424                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7425                         dflt="$dldir/dl_${osname}.xs"
7426                 elif $test "$d_dlopen" = "$define" ; then
7427                         dflt="$dldir/dl_dlopen.xs"
7428                 elif $test "$i_dld" = "$define" ; then
7429                         dflt="$dldir/dl_dld.xs"
7430                 else
7431                         dflt=''
7432                 fi
7433                 ;;
7434         *)      dflt="$dldir/$dlsrc"
7435                 ;;
7436         esac
7437     echo "The following dynamic loading files are available:"
7438         : Can not go over to $dldir because getfile has path hard-coded in.
7439         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7440         rp="Source file to use for dynamic loading"
7441         fn="fne"
7442         gfpth="$src"
7443         . ./getfile
7444         usedl="$define"
7445         : emulate basename
7446         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7447
7448         $cat << EOM
7449
7450 Some systems may require passing special flags to $cc -c to
7451 compile modules that will be used to create a shared library.
7452 To use no flags, say "none".
7453
7454 EOM
7455     case "$cccdlflags" in
7456     '') case "$gccversion" in
7457                 '') case "$osname" in
7458                         hpux)   dflt='+z' ;;
7459                         next)   dflt='none' ;;
7460                         irix*)  dflt='-KPIC' ;;
7461                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7462                         sunos)  dflt='-pic' ;;
7463                         *)      dflt='none' ;;
7464                     esac
7465                         ;;
7466                 *)  case "$osname" in
7467                         darwin) dflt='none' ;;
7468                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7469                         *)      dflt='-fpic' ;;
7470                     esac ;;
7471             esac ;;
7472         ' ') dflt='none' ;;
7473     *)  dflt="$cccdlflags" ;;
7474     esac
7475     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7476     . ./myread
7477     case "$ans" in
7478     none) cccdlflags=' ' ;;
7479     *) cccdlflags="$ans" ;;
7480     esac
7481
7482     cat << EOM
7483
7484 Some systems use ld to create libraries that can be dynamically loaded,
7485 while other systems (such as those using ELF) use $cc.
7486
7487 EOM
7488         case "$ld" in
7489         '')     $cat >try.c <<'EOM'
7490 /* Test for whether ELF binaries are produced */
7491 #include <fcntl.h>
7492 #include <stdlib.h>
7493 int main() {
7494         char b[4];
7495         int i = open("a.out",O_RDONLY);
7496         if(i == -1) 
7497                 exit(1); /* fail */
7498         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7499                 exit(0); /* succeed (yes, it's ELF) */
7500         else
7501                 exit(1); /* fail */
7502 }
7503 EOM
7504                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7505                         cat <<EOM
7506 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7507 EOM
7508                         dflt="$cc"
7509                 else
7510                         echo "I'll use ld to build dynamic libraries."
7511                         dflt='ld'
7512                 fi
7513                 rm -f try.c a.out
7514                 ;;
7515         *)      dflt="$ld"
7516                 ;;
7517         esac
7518
7519     rp="What command should be used to create dynamic libraries?"
7520     . ./myread
7521         ld="$ans"
7522
7523     cat << EOM
7524
7525 Some systems may require passing special flags to $ld to create a
7526 library that can be dynamically loaded.  If your ld flags include
7527 -L/other/path options to locate libraries outside your loader's normal
7528 search path, you may need to specify those -L options here as well.  To
7529 use no flags, say "none".
7530
7531 EOM
7532     case "$lddlflags" in
7533     '') case "$osname" in
7534                         beos) dflt='-nostart' ;;
7535                         hpux) dflt='-b';
7536                               case "$gccversion" in
7537                               '') dflt="$dflt +vnocompatwarnings" ;;
7538                               esac
7539                               ;;        
7540                         linux|irix*)    dflt='-shared' ;;
7541                         next)  dflt='none' ;;
7542                         solaris) dflt='-G' ;;
7543                         sunos) dflt='-assert nodefinitions' ;;
7544                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7545                 *)     dflt='none' ;;
7546                         esac
7547                         ;;
7548     *) dflt="$lddlflags" ;;
7549     esac
7550
7551         : Try to guess additional flags to pick up local libraries.
7552         : Be careful not to append to a plain 'none'
7553         case "$dflt" in
7554         none) dflt='' ;;
7555         esac
7556         for thisflag in $ldflags; do
7557                 case "$thisflag" in
7558                 -L*|-R*|-Wl,-R*)
7559                         case " $dflt " in
7560                         *" $thisflag "*) ;;
7561                         *) dflt="$dflt $thisflag" ;;
7562                         esac
7563                         ;;
7564                 esac
7565         done
7566
7567         case "$dflt" in
7568         ''|' ') dflt='none' ;;
7569         esac
7570
7571     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7572     . ./myread
7573     case "$ans" in
7574     none) lddlflags=' ' ;;
7575     *) lddlflags="$ans" ;;
7576     esac
7577
7578         cat <<EOM
7579
7580 Some systems may require passing special flags to $cc to indicate that
7581 the resulting executable will use dynamic linking.  To use no flags,
7582 say "none".
7583
7584 EOM
7585     case "$ccdlflags" in
7586     '') case "$osname" in
7587                 hpux)   dflt='-Wl,-E' ;;
7588                 linux)  dflt='-rdynamic' ;;
7589                 next)   dflt='none' ;;
7590                 sunos)  dflt='none' ;;
7591                 *)      dflt='none' ;;
7592             esac ;;
7593     ' ')  dflt='none' ;;
7594     *)  dflt="$ccdlflags" ;;
7595     esac
7596     rp="Any special flags to pass to $cc to use dynamic linking?"
7597     . ./myread
7598     case "$ans" in
7599     none) ccdlflags=' ' ;;
7600     *) ccdlflags="$ans" ;;
7601     esac
7602     ;;
7603 *)  usedl="$undef"
7604         ld='ld'
7605     dlsrc='dl_none.xs'
7606     lddlflags=''
7607     ccdlflags=''
7608     ;;
7609 esac
7610
7611 also=''
7612 case "$usedl" in
7613 $undef)
7614         # No dynamic loading being used, so don't bother even to prompt.
7615         useshrplib='false'
7616         ;;
7617 *)      case "$useshrplib" in
7618         '')     case "$osname" in
7619                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7620                         dflt=y
7621                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7622                         ;;
7623                 next*)
7624                         case "$osvers" in
7625                         4*)     dflt=y
7626                                 also='Building a shared libperl is needed for MAB support.'
7627                                 ;;
7628                         *)      dflt=n
7629                                 ;;
7630                         esac
7631                         ;;
7632                 *)      dflt=n
7633                         ;;
7634                 esac
7635                 ;;
7636         $define|true|[Yy]*)
7637                 dflt=y
7638                 ;;
7639         *)      dflt=n
7640                 ;;
7641         esac
7642         $cat << EOM
7643
7644 The perl executable is normally obtained by linking perlmain.c with
7645 libperl${_a}, any static extensions (usually just DynaLoader), and
7646 any other libraries needed on this system (such as -lm, etc.).  Since
7647 your system supports dynamic loading, it is probably possible to build
7648 a shared libperl.$so.  If you will have more than one executable linked
7649 to libperl.$so, this will significantly reduce the size of each
7650 executable, but it may have a noticeable affect on performance.  The
7651 default is probably sensible for your system.
7652 $also
7653
7654 EOM
7655         rp="Build a shared libperl.$so (y/n)"
7656         . ./myread
7657         case "$ans" in
7658         true|$define|[Yy]*)
7659                 useshrplib='true'  ;;
7660         *)      useshrplib='false' ;;
7661         esac
7662         ;;
7663 esac
7664
7665 case "$useshrplib" in
7666 true)
7667         case "$libperl" in
7668         '')
7669                 # Figure out a good name for libperl.so.  Since it gets stored in
7670                 # a version-specific architecture-dependent library, the version
7671                 # number isn't really that important, except for making cc/ld happy.
7672                 #
7673                 # A name such as libperl.so.3.1
7674                 majmin="libperl.$so.$patchlevel.$subversion"
7675                 # A name such as libperl.so.301
7676                 majonly=`echo $patchlevel $subversion |
7677                         $awk '{printf "%d%02d", $1, $2}'`
7678                 majonly=libperl.$so.$majonly
7679                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7680                 # rely on figuring it out from the naming of libc.
7681                 case "${osname}${osvers}" in
7682                 next4*)
7683                         dflt=libperl.5.$so
7684                         # XXX How handle the --version stuff for MAB?
7685                         ;;
7686                 linux*)  # ld won't link with a bare -lperl otherwise.
7687                         dflt=libperl.$so
7688                         ;;
7689                 cygwin*) # ld links against an importlib
7690                         dflt=libperl$lib_ext
7691                         ;;
7692                 *)      # Try to guess based on whether libc has major.minor.
7693                         case "$libc" in
7694                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7695                         *libc.$so.[0-9]*) dflt=$majonly ;;
7696                         *)      dflt=libperl.$so ;;
7697                         esac
7698                         ;;
7699                 esac
7700                 ;;
7701         *)      dflt=$libperl
7702                 ;;
7703         esac
7704         cat << EOM
7705
7706 I need to select a good name for the shared libperl.  If your system uses
7707 library names with major and minor numbers, then you might want something
7708 like $majmin.  Alternatively, if your system uses a single version
7709 number for shared libraries, then you might want to use $majonly.
7710 Or, your system might be quite happy with a simple libperl.$so.
7711
7712 Since the shared libperl will get installed into a version-specific
7713 architecture-dependent directory, the version number of the shared perl
7714 library probably isn't important, so the default should be o.k.
7715
7716 EOM
7717         rp='What name do you want to give to the shared libperl?'
7718         . ./myread
7719         libperl=$ans
7720         echo "Ok, I'll use $libperl"
7721         ;;
7722 *)
7723         libperl="libperl${_a}"
7724         ;;
7725 esac
7726
7727 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7728 case "$shrpdir" in
7729 '') ;;
7730 *)      $cat >&4 <<EOM
7731 WARNING:  Use of the shrpdir variable for the installation location of
7732 the shared $libperl is not supported.  It was never documented and
7733 will not work in this version.  Let me (perlbug@perl.org)
7734 know of any problems this may cause.
7735
7736 EOM
7737         case "$shrpdir" in
7738         "$archlibexp/CORE")
7739                 $cat >&4 <<EOM
7740 But your current setting of $shrpdir is
7741 the default anyway, so it's harmless.
7742 EOM
7743                 ;;
7744         *)
7745                 $cat >&4 <<EOM
7746 Further, your current attempted setting of $shrpdir
7747 conflicts with the value of $archlibexp/CORE
7748 that installperl will use.
7749 EOM
7750                 ;;
7751         esac
7752         ;;
7753 esac
7754
7755 # How will the perl executable find the installed shared $libperl?
7756 # Add $xxx to ccdlflags.
7757 # If we can't figure out a command-line option, use $shrpenv to
7758 # set env LD_RUN_PATH.  The main perl makefile uses this.
7759 shrpdir=$archlibexp/CORE
7760 xxx=''
7761 tmp_shrpenv=''
7762 if "$useshrplib"; then
7763     case "$osname" in 
7764         aix)
7765                 # We'll set it in Makefile.SH...
7766                 ;;
7767         solaris)
7768                 xxx="-R $shrpdir"
7769                 ;;
7770         freebsd|netbsd)
7771                 xxx="-Wl,-R$shrpdir"
7772                 ;;
7773         bsdos|linux|irix*|dec_osf)
7774                 xxx="-Wl,-rpath,$shrpdir"
7775                 ;;
7776         next)
7777                 # next doesn't like the default...
7778                 ;;
7779         beos)
7780                 # beos doesn't like the default, either.
7781                 ;;
7782         hpux*)
7783                 # hpux doesn't like the default, either.
7784                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7785                 ;;
7786         *)
7787                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7788                 ;;
7789         esac
7790         case "$xxx" in
7791         '') ;;
7792         *)      
7793                 # Only add $xxx if it isn't already in ccdlflags.
7794                 case " $ccdlflags " in
7795                 *" $xxx "*)     ;;
7796                 *)      ccdlflags="$ccdlflags $xxx"
7797                         cat <<EOM >&4
7798
7799 Adding $xxx to the flags
7800 passed to $ld so that the perl executable will find the 
7801 installed shared $libperl.
7802
7803 EOM
7804                         ;;
7805                 esac
7806                 ;;
7807         esac
7808 fi
7809 # Fix ccdlflags in AIX for building external extensions.
7810 # (For building Perl itself bare -bE:perl.exp is needed,
7811 #  Makefile.SH takes care of this.)
7812 case "$osname" in
7813 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7814 esac
7815 # Respect a hint or command-line value.
7816 case "$shrpenv" in
7817 '') shrpenv="$tmp_shrpenv" ;;
7818 esac
7819 case "$ldlibpthname" in
7820 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7821 none)   ldlibpthname='' ;;
7822 esac
7823
7824 : determine where manual pages are on this system
7825 echo " "
7826 case "$sysman" in
7827 '') 
7828         syspath='/usr/share/man/man1 /usr/man/man1'
7829         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7830         syspath="$syspath /usr/man/u_man/man1"
7831         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7832         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7833         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7834         sysman=`./loc . /usr/man/man1 $syspath`
7835         ;;
7836 esac
7837 if $test -d "$sysman"; then
7838         echo "System manual is in $sysman." >&4
7839 else
7840         echo "Could not find manual pages in source form." >&4
7841 fi
7842
7843 : determine where manual pages go
7844 set man1dir man1dir none
7845 eval $prefixit
7846 $cat <<EOM
7847
7848 $spackage has manual pages available in source form.
7849 EOM
7850 case "$nroff" in
7851 nroff)
7852         echo "However, you don't have nroff, so they're probably useless to you."
7853         case "$man1dir" in
7854         '') man1dir="none";;
7855         esac;;
7856 esac
7857 echo "If you don't want the manual sources installed, answer 'none'."
7858 case "$man1dir" in
7859 ' ') dflt=none
7860         ;;
7861 '')
7862         lookpath="$prefixexp/share/man/man1"
7863         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7864         lookpath="$lookpath $prefixexp/man/p_man/man1"
7865         lookpath="$lookpath $prefixexp/man/u_man/man1"
7866         lookpath="$lookpath $prefixexp/man/man.1"
7867         case "$sysman" in
7868         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7869         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7870         esac
7871         set dflt
7872         eval $prefixup
7873         ;;
7874 *)  dflt="$man1dir"
7875         ;;
7876 esac
7877 echo " "
7878 fn=dn+~
7879 rp="Where do the main $spackage manual pages (source) go?"
7880 . ./getfile
7881 if $test "X$man1direxp" != "X$ansexp"; then
7882         installman1dir=''
7883 fi
7884 man1dir="$ans"
7885 man1direxp="$ansexp"
7886 case "$man1dir" in
7887 '')     man1dir=' '
7888         installman1dir='';;
7889 esac
7890
7891 : Change installation prefix, if necessary.
7892 if $test X"$prefix" != X"$installprefix"; then
7893         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7894 else
7895         installman1dir="$man1direxp"
7896 fi
7897
7898 : What suffix to use on installed man pages
7899
7900 case "$man1dir" in
7901 ' ')
7902         man1ext='0'
7903         ;;
7904 *)
7905         rp="What suffix should be used for the main $spackage man pages?"
7906         case "$man1ext" in
7907         '')     case "$man1dir" in
7908                 *1)  dflt=1 ;;
7909                 *1p) dflt=1p ;;
7910                 *1pm) dflt=1pm ;;
7911                 *l) dflt=l;;
7912                 *n) dflt=n;;
7913                 *o) dflt=o;;
7914                 *p) dflt=p;;
7915                 *C) dflt=C;;
7916                 *L) dflt=L;;
7917                 *L1) dflt=L1;;
7918                 *) dflt=1;;
7919                 esac
7920                 ;;
7921         *)      dflt="$man1ext";;
7922         esac
7923         . ./myread
7924         man1ext="$ans"
7925         ;;
7926 esac
7927
7928 : see if we can have long filenames
7929 echo " "
7930 first=123456789abcdef
7931 $rm -f $first
7932 if (echo hi >$first) 2>/dev/null; then
7933         if $test -f 123456789abcde; then
7934                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7935                 val="$undef"
7936         else
7937                 echo 'You can have filenames longer than 14 characters.'>&4
7938                 val="$define"
7939         fi
7940 else
7941         $cat <<'EOM'
7942 You can't have filenames longer than 14 chars.
7943 You can't even think about them!
7944 EOM
7945         val="$undef"
7946 fi 
7947 set d_flexfnam
7948 eval $setvar
7949 $rm -rf 123456789abcde*
7950
7951 : determine where library module manual pages go
7952 set man3dir man3dir none
7953 eval $prefixit
7954 $cat <<EOM
7955
7956 $spackage has manual pages for many of the library modules.
7957 EOM
7958
7959 case "$nroff" in
7960 nroff)
7961         $cat <<'EOM'
7962 However, you don't have nroff, so they're probably useless to you.
7963 EOM
7964         case "$man3dir" in
7965         '') man3dir="none";;
7966         esac;;
7967 esac
7968
7969 case "$d_flexfnam" in
7970 undef)
7971         $cat <<'EOM'
7972 However, your system can't handle the long file names like File::Basename.3. 
7973 EOM
7974         case "$man3dir" in
7975         '') man3dir="none";;
7976         esac;;
7977 esac
7978
7979 echo "If you don't want the manual sources installed, answer 'none'."
7980 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7981 case "$man3dir" in
7982 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7983         if $test -d "$privlib/man/man3"; then
7984                 cat <<EOM >&4
7985
7986 WARNING:  Previous versions of perl installed man3 pages into
7987 $privlib/man/man3.  This version will suggest a 
7988 new default of $dflt.  
7989 EOM
7990                 tdflt=$dflt
7991                 dflt='n'
7992                 rp='Do you wish to preserve the old behavior?(y/n)'
7993                 . ./myread
7994                 case "$ans" in
7995                 y*) dflt="$privlib/man/man3" ;;
7996                 *)  dflt=$tdflt ;;
7997                 esac
7998     fi
7999         ;;
8000 *)      dflt="$man3dir" ;;
8001 esac
8002 case "$dflt" in
8003 ' ') dflt=none ;;
8004 esac
8005 echo " "
8006 fn=dn+~
8007 rp="Where do the $package library man pages (source) go?"
8008 . ./getfile
8009 man3dir="$ans"
8010 man3direxp="$ansexp"
8011 case "$man3dir" in
8012 '')     man3dir=' '
8013         installman3dir='';;
8014 esac
8015
8016 : Change installation prefix, if necessary.
8017 if $test X"$prefix" != X"$installprefix"; then
8018         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8019 else
8020         installman3dir="$man3direxp"
8021 fi
8022
8023 : What suffix to use on installed man pages
8024 case "$man3dir" in
8025 ' ')
8026         man3ext='0'
8027         ;;
8028 *)
8029         rp="What suffix should be used for the $package library man pages?"
8030         case "$man3ext" in
8031         '')     case "$man3dir" in
8032                 *3)  dflt=3 ;;
8033                 *3p) dflt=3p ;;
8034                 *3pm) dflt=3pm ;;
8035                 *l) dflt=l;;
8036                 *n) dflt=n;;
8037                 *o) dflt=o;;
8038                 *p) dflt=p;;
8039                 *C) dflt=C;;
8040                 *L) dflt=L;;
8041                 *L3) dflt=L3;;
8042                 *) dflt=3;;
8043                 esac
8044                 ;;
8045         *)      dflt="$man3ext";;
8046         esac
8047         . ./myread
8048         man3ext="$ans"
8049         ;;
8050 esac
8051
8052 : see if we have to deal with yellow pages, now NIS.
8053 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8054         if $test -f /usr/etc/nibindd; then
8055                 echo " "
8056                 echo "I'm fairly confident you're on a NeXT."
8057                 echo " "
8058                 rp='Do you get the hosts file via NetInfo?'
8059                 dflt=y
8060                 case "$hostcat" in
8061                 nidump*) ;;
8062                 '') ;;
8063                 *) dflt=n;;
8064                 esac
8065                 . ./myread
8066                 case "$ans" in
8067                 y*) hostcat='nidump hosts .';;
8068                 *)      case "$hostcat" in
8069                         nidump*) hostcat='';;
8070                         esac
8071                         ;;
8072                 esac
8073         fi
8074         case "$hostcat" in
8075         nidump*) ;;
8076         *)
8077                 case "$hostcat" in
8078                 *ypcat*) dflt=y;;
8079                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8080                                 dflt=y
8081                         else
8082                                 dflt=n
8083                         fi;;
8084                 *) dflt=n;;
8085                 esac
8086                 echo " "
8087                 rp='Are you getting the hosts file via yellow pages?'
8088                 . ./myread
8089                 case "$ans" in
8090                 y*) hostcat='ypcat hosts';;
8091                 *) hostcat='cat /etc/hosts';;
8092                 esac
8093                 ;;
8094         esac
8095 fi
8096 case "$hostcat" in
8097 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8098 esac
8099 case "$groupcat" in
8100 '') test -f /etc/group && groupcat='cat /etc/group';;
8101 esac
8102 case "$passcat" in
8103 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8104 esac
8105
8106 : now get the host name
8107 echo " "
8108 echo "Figuring out host name..." >&4
8109 case "$myhostname" in
8110 '') cont=true
8111         echo 'Maybe "hostname" will work...'
8112         if tans=`sh -c hostname 2>&1` ; then
8113                 myhostname=$tans
8114                 phostname=hostname
8115                 cont=''
8116         fi
8117         ;;
8118 *) cont='';;
8119 esac
8120 if $test "$cont"; then
8121         if ./xenix; then
8122                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8123                 if tans=`cat /etc/systemid 2>&1` ; then
8124                         myhostname=$tans
8125                         phostname='cat /etc/systemid'
8126                         echo "Whadyaknow.  Xenix always was a bit strange..."
8127                         cont=''
8128                 fi
8129         elif $test -r /etc/systemid; then
8130                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8131         fi
8132 fi
8133 if $test "$cont"; then
8134         echo 'No, maybe "uuname -l" will work...'
8135         if tans=`sh -c 'uuname -l' 2>&1` ; then
8136                 myhostname=$tans
8137                 phostname='uuname -l'
8138         else
8139                 echo 'Strange.  Maybe "uname -n" will work...'
8140                 if tans=`sh -c 'uname -n' 2>&1` ; then
8141                         myhostname=$tans
8142                         phostname='uname -n'
8143                 else
8144                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8145                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8146                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8147                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8148                         else
8149                                 case "$myhostname" in
8150                                 '') echo "Does this machine have an identity crisis or something?"
8151                                         phostname='';;
8152                                 *)
8153                                         echo "Well, you said $myhostname before..."
8154                                         phostname='echo $myhostname';;
8155                                 esac
8156                         fi
8157                 fi
8158         fi
8159 fi
8160 case "$myhostname" in
8161 '') myhostname=noname ;;
8162 esac
8163 : you do not want to know about this
8164 set $myhostname
8165 myhostname=$1
8166
8167 : verify guess
8168 if $test "$myhostname" ; then
8169         dflt=y
8170         rp='Your host name appears to be "'$myhostname'".'" Right?"
8171         . ./myread
8172         case "$ans" in
8173         y*) ;;
8174         *) myhostname='';;
8175         esac
8176 fi
8177
8178 : bad guess or no guess
8179 while $test "X$myhostname" = X ; do
8180         dflt=''
8181         rp="Please type the (one word) name of your host:"
8182         . ./myread
8183         myhostname="$ans"
8184 done
8185
8186 : translate upper to lower if necessary
8187 case "$myhostname" in
8188 *[A-Z]*)
8189         echo "(Normalizing case in your host name)"
8190         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8191         ;;
8192 esac
8193
8194 case "$myhostname" in
8195 *.*)
8196         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8197         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8198         echo "(Trimming domain name from host name--host name is now $myhostname)"
8199         ;;
8200 *) case "$mydomain" in
8201         '')
8202                 {
8203                         test "X$hostcat" = "Xypcat hosts" &&
8204                         ypmatch "$myhostname" hosts 2>/dev/null |\
8205                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8206                         $test -s hosts
8207                 } || {
8208                         test "X$hostcat" != "X" &&
8209                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8210                                         /[       ]$myhostname[  . ]/p" > hosts
8211                 }
8212                 tmp_re="[       . ]"
8213                 if $test -f hosts; then
8214                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8215                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8216                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8217                                 hosts | $sort | $uniq | \
8218                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8219                         case `$echo X$dflt` in
8220                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8221                                 dflt=.
8222                                 ;;
8223                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8224                                 ;;
8225                         esac
8226                 else
8227                         echo "(I cannot locate a hosts database anywhere)"
8228                         dflt=.
8229                 fi
8230                 case "$dflt" in
8231                 .)
8232                         tans=`./loc resolv.conf X /etc /usr/etc`
8233                         if $test -f "$tans"; then
8234                                 echo "(Attempting domain name extraction from $tans)"
8235                                 dflt=.`$sed -n -e 's/   / /g' \
8236                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8237                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8238                                 case "$dflt" in
8239                                 .) dflt=.`$sed -n -e 's/        / /g' \
8240                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8241                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8242                                         ;;
8243                                 esac
8244                         fi
8245                         ;;
8246                 esac
8247                 case "$dflt" in
8248                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8249                         dflt=.`sh -c domainname 2>/dev/null`
8250                         case "$dflt" in
8251                         '') dflt='.';;
8252                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8253                         esac
8254                         ;;
8255                 esac
8256                 case "$dflt$osname" in
8257                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8258                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8259                         ;;
8260                 esac
8261                 case "$dflt" in
8262                 .) echo "(Lost all hope -- silly guess then)"
8263                         dflt='.nonet'
8264                         ;;
8265                 esac
8266                 $rm -f hosts
8267                 ;;
8268         *) dflt="$mydomain";;
8269         esac;;
8270 esac
8271 echo " "
8272 rp="What is your domain name?"
8273 . ./myread
8274 tans="$ans"
8275 case "$ans" in
8276 '') ;;
8277 .*) ;;
8278 *) tans=".$tans";;
8279 esac
8280 mydomain="$tans"
8281
8282 : translate upper to lower if necessary
8283 case "$mydomain" in
8284 *[A-Z]*)
8285         echo "(Normalizing case in your domain name)"
8286         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8287         ;;
8288 esac
8289
8290 : a little sanity check here
8291 case "$phostname" in
8292 '') ;;
8293 *)
8294         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8295         $myhostname$mydomain|$myhostname) ;;
8296         *)
8297                 case "$phostname" in
8298                 sed*)
8299                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8300                         ;;
8301                 *)
8302                         echo "(That doesn't agree with your $phostname command, by the way.)"
8303                         ;;
8304                 esac
8305         ;;
8306         esac
8307         ;;
8308 esac
8309
8310 $cat <<EOM
8311
8312 I need to get your e-mail address in Internet format if possible, i.e.
8313 something like user@host.domain. Please answer accurately since I have
8314 no easy means to double check it. The default value provided below
8315 is most probably close to reality but may not be valid from outside
8316 your organization...
8317
8318 EOM
8319 cont=x
8320 while test "$cont"; do
8321         case "$cf_email" in
8322         '') dflt="$cf_by@$myhostname$mydomain";;
8323         *) dflt="$cf_email";;
8324         esac
8325         rp='What is your e-mail address?'
8326         . ./myread
8327         cf_email="$ans"
8328         case "$cf_email" in
8329         *@*.*) cont='' ;;
8330         *)
8331                 rp='Address does not look like an Internet one.  Use it anyway?'
8332                 case "$fastread" in
8333                 yes) dflt=y ;;
8334                 *) dflt=n ;;
8335                 esac
8336                 . ./myread
8337                 case "$ans" in
8338                 y*) cont='' ;;
8339                 *) echo " " ;;
8340                 esac
8341                 ;;
8342         esac
8343 done
8344
8345 $cat <<EOM
8346
8347 If you or somebody else will be maintaining perl at your site, please
8348 fill in the correct e-mail address here so that they may be contacted
8349 if necessary. Currently, the "perlbug" program included with perl
8350 will send mail to this address in addition to perlbug@perl.org. You may
8351 enter "none" for no administrator.
8352
8353 EOM
8354 case "$perladmin" in
8355 '') dflt="$cf_email";;
8356 *) dflt="$perladmin";;
8357 esac
8358 rp='Perl administrator e-mail address'
8359 . ./myread
8360 perladmin="$ans"
8361
8362 : determine whether to only install version-specific parts.
8363 echo " "
8364 $cat <<EOM
8365 Do you want to install only the version-specific parts of the perl
8366 distribution?  Usually you do *not* want to do this.
8367 EOM
8368 case "$versiononly" in
8369 "$define"|[Yy]*|true) dflt='y' ;;
8370 *) dflt='n';
8371 esac
8372 rp="Do you want to install only the version-specific parts of perl?"
8373 . ./myread
8374 case "$ans" in
8375 [yY]*)  val="$define";;
8376 *)      val="$undef" ;;
8377 esac
8378 set versiononly
8379 eval $setvar
8380
8381 : figure out how to guarantee perl startup
8382 case "$startperl" in
8383 '')
8384         case "$sharpbang" in
8385         *!)
8386                 $cat <<EOH
8387
8388 I can use the #! construct to start perl on your system. This will
8389 make startup of perl scripts faster, but may cause problems if you
8390 want to share those scripts and perl is not in a standard place
8391 ($binexp/perl) on all your platforms. The alternative is to force
8392 a shell by starting the script with a single ':' character.
8393
8394 EOH
8395                 case "$versiononly" in
8396                 "$define")      dflt="$binexp/perl$version";;  
8397                 *)              dflt="$binexp/perl";;
8398                 esac
8399                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8400                 . ./myread
8401                 case "$ans" in
8402                 none)   startperl=": # use perl";;
8403                 *)      startperl="#!$ans"
8404                         if $test 30 -lt `echo "$ans" | wc -c`; then
8405                                 $cat >&4 <<EOM
8406
8407 WARNING:  Some systems limit the #! command to 32 characters.
8408 If you experience difficulty running Perl scripts with #!, try
8409 installing Perl in a directory with a shorter pathname.
8410
8411 EOM
8412                         fi ;;
8413                 esac
8414                 ;;
8415         *) startperl=": # use perl"
8416                 ;;
8417         esac
8418         ;;
8419 esac
8420 echo "I'll use $startperl to start perl scripts."
8421
8422 : figure best path for perl in scripts
8423 case "$perlpath" in
8424 '')
8425         case "$versiononly" in
8426         "$define")      perlpath="$binexp/perl$version";;
8427         *)              perlpath="$binexp/perl";;
8428         esac
8429         case "$startperl" in
8430         *!*) ;;
8431         *)
8432                 $cat <<EOH
8433
8434 I will use the "eval 'exec'" idiom to start Perl on your system.
8435 I can use the full path of your Perl binary for this purpose, but
8436 doing so may cause problems if you want to share those scripts and
8437 Perl is not always in a standard place ($binexp/perl).
8438
8439 EOH
8440                 dflt="$binexp/perl"
8441                 rp="What path shall I use in \"eval 'exec'\"?"
8442                 . ./myread
8443                 perlpath="$ans"
8444                 ;;
8445         esac
8446         ;;
8447 esac
8448 case "$startperl" in
8449 *!*)    ;;
8450 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8451 esac
8452
8453 : determine where public executable scripts go
8454 set scriptdir scriptdir
8455 eval $prefixit
8456 case "$scriptdir" in
8457 '')
8458         dflt="$bin"
8459         : guess some guesses
8460         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8461         $test -d /usr/share/bin     && dflt=/usr/share/bin
8462         $test -d /usr/local/script  && dflt=/usr/local/script
8463         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8464         $test -d $prefixexp/script  && dflt=$prefixexp/script
8465         set dflt
8466         eval $prefixup
8467         ;;
8468 *)  dflt="$scriptdir"
8469         ;;
8470 esac
8471 $cat <<EOM
8472  
8473 Some installations have a separate directory just for executable scripts so
8474 that they can mount it across multiple architectures but keep the scripts in
8475 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8476 Or you might just lump your scripts in with all your other executables.
8477  
8478 EOM
8479 fn=d~
8480 rp='Where do you keep publicly executable scripts?'
8481 . ./getfile
8482 if $test "X$ansexp" != "X$scriptdirexp"; then
8483         installscript=''
8484 fi
8485 scriptdir="$ans"
8486 scriptdirexp="$ansexp"
8487 : Change installation prefix, if necessary.
8488 if $test X"$prefix" != X"$installprefix"; then
8489         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8490 else
8491         installscript="$scriptdirexp"
8492 fi
8493
8494 : determine where add-on public executables go
8495 case "$sitebin" in
8496 '')     dflt=$siteprefix/bin ;;
8497 *)      dflt=$sitebin ;;
8498 esac
8499 fn=d~
8500 rp='Pathname where the add-on public executables should be installed?'
8501 . ./getfile
8502 sitebin="$ans"
8503 sitebinexp="$ansexp"
8504 : Change installation prefix, if necessary.
8505 if $test X"$prefix" != X"$installprefix"; then
8506         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8507 else
8508         installsitebin="$sitebinexp"
8509 fi
8510
8511 : define an is-a-typedef? function
8512 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8513 case "$inclist" in
8514 "") inclist="sys/types.h";;
8515 esac;
8516 eval "varval=\$$var";
8517 case "$varval" in
8518 "")
8519         $rm -f temp.c;
8520         for inc in $inclist; do
8521                 echo "#include <$inc>" >>temp.c;
8522         done;
8523         echo "#ifdef $type" >> temp.c;
8524         echo "printf(\"We have $type\");" >> temp.c;
8525         echo "#endif" >> temp.c;
8526         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8527         if $contains $type temp.E >/dev/null 2>&1; then
8528                 eval "$var=\$type";
8529         else
8530                 eval "$var=\$def";
8531         fi;
8532         $rm -f temp.?;;
8533 *) eval "$var=\$varval";;
8534 esac'
8535
8536 : define an is-a-typedef? function that prompts if the type is not available.
8537 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8538 case "$inclist" in
8539 "") inclist="sys/types.h";;
8540 esac;
8541 eval "varval=\$$var";
8542 case "$varval" in
8543 "")
8544         $rm -f temp.c;
8545         for inc in $inclist; do
8546                 echo "#include <$inc>" >>temp.c;
8547         done;
8548         echo "#ifdef $type" >> temp.c;
8549         echo "printf(\"We have $type\");" >> temp.c;
8550         echo "#endif" >> temp.c;
8551         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8552         echo " " ;
8553         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8554         if $contains $type temp.E >/dev/null 2>&1; then
8555                 echo "$type found." >&4;
8556                 eval "$var=\$type";
8557         else
8558                 echo "$type NOT found." >&4;
8559                 dflt="$def";
8560                 . ./myread ;
8561                 eval "$var=\$ans";
8562         fi;
8563         $rm -f temp.?;;
8564 *) eval "$var=\$varval";;
8565 esac'
8566
8567 : see what type lseek is declared as in the kernel
8568 rp="What is the type used for lseek's offset on this system?"
8569 set off_t lseektype long stdio.h sys/types.h
8570 eval $typedef_ask
8571
8572 echo " "
8573 echo "Checking to see how big your file offsets are..." >&4
8574 $cat >try.c <<EOCP
8575 #include <sys/types.h>
8576 #include <stdio.h>
8577 int main()
8578 {
8579     printf("%d\n", (int)sizeof($lseektype));
8580     return(0); 
8581 }
8582 EOCP
8583 set try
8584 if eval $compile_ok; then
8585         lseeksize=`$run ./try`
8586         echo "Your file offsets are $lseeksize bytes long."
8587 else
8588         dflt=$longsize
8589         echo " "
8590         echo "(I can't seem to compile the test program.  Guessing...)"
8591         rp="What is the size of your file offsets (in bytes)?"
8592         . ./myread
8593         lseeksize="$ans"
8594 fi
8595 $rm -f try.c try
8596
8597 : see what type file positions are declared as in the library
8598 rp="What is the type for file position used by fsetpos()?"
8599 set fpos_t fpostype long stdio.h sys/types.h
8600 eval $typedef_ask
8601
8602 echo " "
8603 case "$fpostype" in
8604 *_t) zzz="$fpostype"    ;;
8605 *)   zzz="fpos_t"       ;;
8606 esac
8607 echo "Checking the size of $zzz..." >&4 
8608 cat > try.c <<EOCP
8609 #include <sys/types.h>
8610 #include <stdio.h>
8611 int main() {
8612     printf("%d\n", (int)sizeof($fpostype));
8613     exit(0);
8614 }
8615 EOCP
8616 set try
8617 if eval $compile_ok; then
8618         yyy=`$run ./try`
8619         case "$yyy" in
8620         '')     fpossize=4
8621                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8622                 ;;
8623         *)      fpossize=$yyy
8624                 echo "Your $zzz is $fpossize bytes long."
8625                 ;;
8626         esac
8627 else
8628         dflt="$longsize"
8629         echo " " >&4
8630         echo "(I can't compile the test program.  Guessing...)" >&4
8631         rp="What is the size of your file positions (in bytes)?"
8632         . ./myread
8633         fpossize="$ans"
8634 fi
8635
8636
8637
8638 # Backward compatibility (uselfs is deprecated).
8639 case "$uselfs" in
8640 "$define"|true|[yY]*)
8641         cat <<EOM >&4
8642
8643 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8644 EOM
8645         uselargefiles="$define"
8646         ;;
8647 esac                          
8648
8649 case "$lseeksize:$fpossize" in
8650 8:8) cat <<EOM
8651
8652 You can have files larger than 2 gigabytes.
8653 EOM
8654    val="$define" ;;
8655 *)    case "$uselargefiles" in
8656    "$undef"|false|[nN]*) dflt='n' ;;
8657    *)   dflt='y' ;;
8658    esac
8659    cat <<EOM
8660
8661 Perl can be built to understand large files (files larger than 2 gigabytes)
8662 on some systems.  To do so, Configure can be run with -Duselargefiles.
8663
8664 If this doesn't make any sense to you, just accept the default '$dflt'.
8665 EOM
8666    rp='Try to understand large files, if available?'
8667    . ./myread
8668    case "$ans" in
8669    y|Y)         val="$define" ;;
8670    *)           val="$undef"  ;;
8671    esac
8672    ;;
8673 esac
8674 set uselargefiles
8675 eval $setvar
8676 case "$uselargefiles" in
8677 "$define")
8678 : Look for a hint-file generated 'call-back-unit'.  If the
8679 : user has specified that a large files perl is to be built,
8680 : we may need to set or change some other defaults.
8681         if $test -f uselargefiles.cbu; then
8682                 echo "Your platform has some specific hints for large file builds, using them..."
8683                 . ./uselargefiles.cbu
8684                 echo " "
8685                 echo "Rechecking to see how big your file offsets are..." >&4
8686                 $cat >try.c <<EOCP
8687 #include <sys/types.h>
8688 #include <stdio.h>
8689 int main()
8690 {
8691     printf("%d\n", (int)sizeof($lseektype));
8692     return(0); 
8693 }
8694 EOCP
8695                 set try
8696                 if eval $compile_ok; then
8697                         lseeksize=`$run ./try`
8698                         $echo "Your file offsets are now $lseeksize bytes long."
8699                 else
8700                         dflt="$lseeksize"
8701                         echo " "
8702                         echo "(I can't seem to compile the test program.  Guessing...)"
8703                         rp="What is the size of your file offsets (in bytes)?"
8704                         . ./myread
8705                         lseeksize="$ans"
8706                 fi
8707                 case "$fpostype" in
8708                 *_t) zzz="$fpostype"    ;;
8709                 *)   zzz="fpos_t"       ;;
8710                 esac
8711                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8712                 $cat > try.c <<EOCP
8713 #include <sys/types.h>
8714 #include <stdio.h>
8715 int main() {
8716     printf("%d\n", (int)sizeof($fpostype));
8717     exit(0);
8718 }
8719 EOCP
8720                 set try
8721                 if eval $compile_ok; then
8722                         yyy=`$run ./try`
8723                         dflt="$lseeksize"
8724                         case "$yyy" in
8725                         '')     echo " "
8726                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8727                                 ;;
8728                         *)      fpossize=$yyy
8729                                 echo " $fpossize bytes." >&4
8730                                 ;;
8731                         esac
8732                 else
8733                         dflt="$fpossize"
8734                         echo " "
8735                         echo "(I can't compile the test program.  Guessing...)" >&4
8736                         rp="What is the size of your file positions (in bytes)?"
8737                         . ./myread
8738                         fpossize="$ans"
8739                 fi
8740                 $rm -f try.c try
8741         fi
8742         ;;
8743 esac
8744
8745 case "$vendorprefix" in
8746 '')     d_vendorbin="$undef"
8747         vendorbin=''
8748         vendorbinexp=''
8749         ;;
8750 *)      d_vendorbin="$define"
8751         : determine where vendor-supplied executables go.
8752         case "$vendorbin" in
8753         '') dflt=$vendorprefix/bin ;;
8754         *)      dflt="$vendorbin" ;;
8755         esac
8756         fn=d~+
8757         rp='Pathname for the vendor-supplied executables directory?'
8758         . ./getfile
8759         vendorbin="$ans"
8760         vendorbinexp="$ansexp"
8761         ;;
8762 esac
8763 : Change installation prefix, if necessary.
8764 if $test X"$prefix" != X"$installprefix"; then
8765         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8766 else
8767         installvendorbin="$vendorbinexp"
8768 fi
8769
8770 : see if qgcvt exists
8771 set qgcvt d_qgcvt
8772 eval $inlibc
8773
8774 : Check how to convert floats to strings.
8775
8776 if test "X$d_Gconvert" = X; then
8777
8778 echo " "
8779 echo "Checking for an efficient way to convert floats to strings."
8780 echo " " > try.c
8781 case "$uselongdouble" in
8782 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8783 esac
8784 case "$d_longdbl" in
8785 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8786 esac
8787 case "$d_PRIgldbl" in
8788 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8789 esac
8790 $cat >>try.c <<EOP
8791 #ifdef TRY_gconvert
8792 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8793 char *myname = "gconvert";
8794 #endif
8795 #ifdef TRY_gcvt
8796 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8797 char *myname = "gcvt";
8798 #endif
8799 #ifdef TRY_qgcvt
8800 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8801 char *myname = "qgcvt";
8802 #define DOUBLETYPE long double
8803 #endif
8804 #ifdef TRY_sprintf
8805 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8806 #ifdef HAS_PRIgldbl
8807 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8808 #else
8809 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8810 #endif
8811 #else
8812 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8813 #endif
8814 char *myname = "sprintf";
8815 #endif
8816
8817 #ifndef DOUBLETYPE
8818 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8819 #define DOUBLETYPE long double
8820 #else
8821 #define DOUBLETYPE double
8822 #endif
8823 #endif
8824
8825 #include <stdio.h>
8826
8827 #define I_STDLIB $i_stdlib
8828 #ifdef I_STDLIB
8829 #include <stdlib.h>
8830 #endif
8831
8832 int
8833 checkit(expect, got)
8834 char *expect;
8835 char *got;
8836 {
8837     if (strcmp(expect, got)) {
8838                 printf("%s oddity:  Expected %s, got %s\n",
8839                         myname, expect, got);
8840                 exit(1);
8841         }
8842 }
8843
8844 int main()
8845
8846         char buf[64]; 
8847         buf[63] = '\0';
8848
8849         /* This must be 1st test on (which?) platform */
8850         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8851         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8852         checkit("0.1", buf);
8853
8854         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
8855         checkit("0.01", buf);
8856
8857         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
8858         checkit("0.001", buf);
8859
8860         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
8861         checkit("0.0001", buf);
8862
8863         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8864         if (strlen(buf) > 5)
8865             checkit("9e-005", buf); /* for Microsoft ?? */
8866         else
8867             checkit("9e-05", buf);
8868
8869         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8870         checkit("1", buf);
8871
8872         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8873         checkit("1.1", buf);
8874
8875         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8876         checkit("1.01", buf);
8877
8878         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8879         checkit("1.001", buf);
8880
8881         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8882         checkit("1.0001", buf);
8883
8884         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8885         checkit("1.00001", buf);
8886
8887         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8888         checkit("1.000001", buf);
8889
8890         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8891         checkit("0", buf);
8892
8893         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8894         checkit("-1", buf);
8895
8896         /* Some Linux gcvt's give 1.e+5 here. */
8897         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8898         checkit("100000", buf);
8899         
8900         /* Some Linux gcvt's give -1.e+5 here. */
8901         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8902         checkit("-100000", buf);
8903
8904         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8905         checkit("123.456", buf);
8906
8907         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8908         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
8909         /* 34 should be enough to scare even long double
8910          * places into using the e notation. */
8911         if (strlen(buf) > 5)
8912             checkit("1e+034", buf); /* for Microsoft */
8913         else
8914             checkit("1e+34", buf);
8915
8916         /* For Perl, if you add additional tests here, also add them to
8917          * t/base/num.t for benefit of platforms not using Configure or
8918          * overriding d_Gconvert */
8919
8920         exit(0);
8921 }
8922 EOP
8923 : first add preferred functions to our list
8924 xxx_list=""
8925 for xxx_convert in $gconvert_preference; do
8926     case $xxx_convert in
8927     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
8928     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
8929     esac 
8930 done
8931 : then add any others
8932 for xxx_convert in gconvert gcvt sprintf; do
8933     case "$xxx_list" in
8934     *$xxx_convert*) ;;
8935     *) xxx_list="$xxx_list $xxx_convert" ;;
8936     esac 
8937 done
8938
8939 case "$d_longdbl$uselongdouble" in
8940 "$define$define")
8941     : again, add prefered functions to our list first
8942     xxx_ld_list=""
8943     for xxx_convert in $gconvert_ld_preference; do
8944         case $xxx_convert in
8945         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8946         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
8947         esac
8948     done
8949     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
8950     for xxx_convert in qgcvt sprintf $xxx_list; do
8951         case "$xxx_ld_list" in
8952         $xxx_convert*|*" $xxx_convert"*) ;;
8953         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8954         esac
8955     done
8956     : if sprintf cannot do long doubles, move it to the end
8957     if test "$d_PRIgldbl" != "$define"; then
8958         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
8959     fi
8960     : if no qgcvt, remove it
8961     if test "$d_qgcvt" != "$define"; then
8962         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
8963     fi
8964     : use the ld_list
8965     xxx_list="$xxx_ld_list"
8966     ;;
8967 esac
8968
8969 for xxx_convert in $xxx_list; do
8970         echo "Trying $xxx_convert..."
8971         $rm -f try try$_o
8972         set try -DTRY_$xxx_convert
8973         if eval $compile; then
8974                 echo "$xxx_convert() found." >&4
8975                 if $run ./try; then
8976                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8977                         break;
8978                 else
8979                         echo "...But $xxx_convert didn't work as I expected."
8980                         xxx_convert=''
8981                 fi
8982         else
8983                 echo "$xxx_convert NOT found." >&4
8984         fi
8985 done
8986
8987 if test X$xxx_convert = X; then
8988     echo "*** WHOA THERE!!! ***" >&4
8989     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
8990     xxx_convert=sprintf
8991 fi
8992
8993 case "$xxx_convert" in
8994 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8995 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8996 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8997 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8998    "$define$define$define")
8999       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9000    "$define$define$undef")
9001       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9002    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9003    esac
9004    ;;  
9005 esac
9006
9007 fi
9008
9009 : see if _fwalk exists
9010 set fwalk d__fwalk
9011 eval $inlibc
9012
9013 : Initialize h_fcntl
9014 h_fcntl=false
9015
9016 : Initialize h_sysfile
9017 h_sysfile=false
9018
9019 : access call always available on UNIX
9020 set access d_access
9021 eval $inlibc
9022
9023 : locate the flags for 'access()'
9024 case "$d_access" in
9025 "$define")
9026         echo " "
9027         $cat >access.c <<'EOCP'
9028 #include <sys/types.h>
9029 #ifdef I_FCNTL
9030 #include <fcntl.h>
9031 #endif
9032 #ifdef I_SYS_FILE
9033 #include <sys/file.h>
9034 #endif
9035 #ifdef I_UNISTD
9036 #include <unistd.h>
9037 #endif
9038 int main() {
9039         exit(R_OK);
9040 }
9041 EOCP
9042         : check sys/file.h first, no particular reason here
9043         if $test `./findhdr sys/file.h` && \
9044                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9045                 h_sysfile=true;
9046                 echo "<sys/file.h> defines the *_OK access constants." >&4
9047         elif $test `./findhdr fcntl.h` && \
9048                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9049                 h_fcntl=true;
9050                 echo "<fcntl.h> defines the *_OK access constants." >&4
9051         elif $test `./findhdr unistd.h` && \
9052                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9053                 echo "<unistd.h> defines the *_OK access constants." >&4
9054         else
9055                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9056         fi
9057         ;;
9058 esac
9059 $rm -f access*
9060
9061 : see if accessx exists
9062 set accessx d_accessx
9063 eval $inlibc
9064
9065 : see if alarm exists
9066 set alarm d_alarm
9067 eval $inlibc
9068
9069 : define a fucntion to check prototypes
9070 $cat > protochk <<EOSH
9071 $startsh
9072 cc="$cc"
9073 optimize="$optimize"
9074 ccflags="$ccflags"
9075 prototype="$prototype"
9076 define="$define"
9077 rm=$rm
9078 EOSH
9079
9080 $cat >> protochk <<'EOSH'
9081
9082 $rm -f try.c
9083 foo="$1"
9084 shift
9085 while test $# -ge 2; do
9086         case "$1" in
9087                 $define) echo "#include <$2>" >> try.c ;;
9088                 literal) echo "$2" >> try.c ;;
9089         esac
9090     shift 2
9091 done
9092 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9093 cat >> try.c <<'EOCP'
9094 #ifdef CAN_PROTOTYPE
9095 #define _(args) args
9096 #else
9097 #define _(args) ()
9098 #endif
9099 EOCP
9100 echo "$foo" >> try.c
9101 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9102 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9103 status=$?
9104 $rm -f try.[co]
9105 exit $status
9106 EOSH
9107 chmod +x protochk
9108 $eunicefix protochk
9109
9110 hasproto='varname=$1; func=$2; shift; shift;
9111 while $test $# -ge 2; do
9112         case "$1" in
9113         $define) echo "#include <$2>";;
9114         esac ;
9115     shift 2;
9116 done > try.c;
9117 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9118 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9119         echo "$func() prototype found.";
9120         val="$define";
9121 else
9122         echo "$func() prototype NOT found.";
9123         val="$undef";
9124 fi;
9125 set $varname;
9126 eval $setvar;
9127 $rm -f try.c tryout.c'
9128
9129 : see if sys/types.h has to be included
9130 set sys/types.h i_systypes
9131 eval $inhdr
9132
9133 : see if sys/select.h has to be included
9134 set sys/select.h i_sysselct
9135 eval $inhdr
9136
9137 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9138 while $test $# -ge 2; do
9139         case "$1" in
9140         $define) echo "#include <$2>";;
9141         esac ;
9142     shift 2;
9143 done > try.c;
9144 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9145 set try;
9146 if eval $compile; then
9147         val="$define";
9148 else
9149         val="$undef";
9150 fi;
9151 set $varname;
9152 eval $setvar;
9153 $rm -f try.c try.o'
9154
9155 : see if we should include time.h, sys/time.h, or both
9156 echo " "
9157 if test "X$timeincl" = X; then
9158         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9159         $echo $n "I'm now running the test program...$c"
9160         $cat >try.c <<'EOCP'
9161 #include <sys/types.h>
9162 #ifdef I_TIME
9163 #include <time.h>
9164 #endif
9165 #ifdef I_SYSTIME
9166 #ifdef SYSTIMEKERNEL
9167 #define KERNEL
9168 #endif
9169 #include <sys/time.h>
9170 #endif
9171 #ifdef I_SYSSELECT
9172 #include <sys/select.h>
9173 #endif
9174 int main()
9175 {
9176         struct tm foo;
9177 #ifdef S_TIMEVAL
9178         struct timeval bar;
9179 #endif
9180 #ifdef S_TIMEZONE
9181         struct timezone tzp;
9182 #endif
9183         if (foo.tm_sec == foo.tm_sec)
9184                 exit(0);
9185 #ifdef S_TIMEVAL
9186         if (bar.tv_sec == bar.tv_sec)
9187                 exit(0);
9188 #endif
9189         exit(1);
9190 }
9191 EOCP
9192         flags=''
9193         for s_timezone in '-DS_TIMEZONE' ''; do
9194         sysselect=''
9195         for s_timeval in '-DS_TIMEVAL' ''; do
9196         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9197         for i_time in '' '-DI_TIME'; do
9198         for i_systime in '-DI_SYSTIME' ''; do
9199                 case "$flags" in
9200                 '') $echo $n ".$c"
9201                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9202                         if eval $compile; then
9203                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9204                                 shift
9205                                 flags="$*"
9206                                 echo " "
9207                                 $echo $n "Succeeded with $flags$c"
9208                         fi
9209                         ;;
9210                 esac
9211         done
9212         done
9213         done
9214         done
9215         done
9216         timeincl=''
9217         echo " "
9218         case "$flags" in
9219         *SYSTIMEKERNEL*) i_systimek="$define"
9220                 timeincl=`./findhdr sys/time.h`
9221                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9222         *) i_systimek="$undef";;
9223         esac
9224         case "$flags" in
9225         *I_TIME*) i_time="$define"
9226                 timeincl=`./findhdr time.h`" $timeincl"
9227                 echo "We'll include <time.h>." >&4;;
9228         *) i_time="$undef";;
9229         esac
9230         case "$flags" in
9231         *I_SYSTIME*) i_systime="$define"
9232                 timeincl=`./findhdr sys/time.h`" $timeincl"
9233                 echo "We'll include <sys/time.h>." >&4;;
9234         *) i_systime="$undef";;
9235         esac
9236         $rm -f try.c try
9237 fi
9238 : see if struct tm knows about tm_zone
9239 case "$i_systime$i_time" in
9240 *$define*) 
9241         echo " "
9242         echo "Checking to see if your struct tm has tm_zone field..." >&4
9243         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9244         eval $hasfield
9245         ;;
9246 *)      val="$undef"
9247         set d_tm_tm_zone
9248         eval $setvar
9249         ;;
9250 esac
9251 case "$d_tm_tm_zone" in
9252 "$define")      echo "Yes, it does."   ;;
9253 *)              echo "No, it doesn't." ;;
9254 esac
9255 : see if struct tm knows about tm_gmtoff
9256 case "$i_systime$i_time" in
9257 *$define*) 
9258         echo " "
9259         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9260         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9261         eval $hasfield
9262         ;;
9263 *)      val="$undef"
9264         set d_tm_tm_gmtoff
9265         eval $setvar
9266         ;;
9267 esac
9268 case "$d_tm_tm_gmtoff" in
9269 "$define")      echo "Yes, it does."   ;;
9270 *)              echo "No, it doesn't." ;;
9271 esac
9272
9273 : see if asctime_r exists
9274 set asctime_r d_asctime_r
9275 eval $inlibc
9276 case "$d_asctime_r" in
9277 "$define")
9278         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
9279         case "time" in
9280         time)
9281                 hdrs="$hdrs $i_systime sys/time.h"
9282                 ;;
9283         esac
9284         case "$d_asctime_r_proto:$usethreads" in
9285         ":define")      d_asctime_r_proto=define
9286                 set d_asctime_r_proto asctime_r $hdrs
9287                 eval $hasproto ;;
9288         *)      ;;
9289         esac
9290         case "$d_asctime_r_proto" in
9291         define)
9292         case "$asctime_r_proto" in
9293         ''|0) try='char* asctime_r(const struct tm*, char*);'
9294         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9295         esac
9296         case "$asctime_r_proto" in
9297         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9298         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9299         esac
9300         case "$asctime_r_proto" in
9301         ''|0) try='int asctime_r(const struct tm*, char*);'
9302         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9303         esac
9304         case "$asctime_r_proto" in
9305         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9306         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9307         esac
9308         case "$asctime_r_proto" in
9309         ''|0)   d_asctime_r=undef
9310                 asctime_r_proto=0
9311                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9312         * )     case "$asctime_r_proto" in
9313                 REENTRANT_PROTO*) ;;
9314                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9315                 esac
9316                 echo "Prototype: $try" ;;
9317         esac
9318         ;;
9319         *)      case "$usethreads" in
9320                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9321                 esac
9322                 d_asctime_r=undef
9323                 asctime_r_proto=0
9324                 ;;
9325         esac
9326         ;;
9327 *)      asctime_r_proto=0
9328         ;;
9329 esac
9330
9331 : see if atolf exists
9332 set atolf d_atolf
9333 eval $inlibc
9334
9335 : see if atoll exists
9336 set atoll d_atoll
9337 eval $inlibc
9338
9339 : Look for GNU-cc style attribute checking
9340 echo " "
9341 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9342 $cat >attrib.c <<'EOCP'
9343 #include <stdio.h>
9344 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9345 EOCP
9346 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9347         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9348                 echo "Your C compiler doesn't fully support __attribute__."
9349                 val="$undef"
9350         else
9351                 echo "Your C compiler supports __attribute__."
9352                 val="$define"
9353         fi
9354 else
9355         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9356         val="$undef"
9357 fi
9358 set d_attribut
9359 eval $setvar
9360 $rm -f attrib*
9361
9362 : see if bcmp exists
9363 set bcmp d_bcmp
9364 eval $inlibc
9365
9366 : see if bcopy exists
9367 set bcopy d_bcopy
9368 eval $inlibc
9369
9370 : see if this is a unistd.h system
9371 set unistd.h i_unistd
9372 eval $inhdr
9373
9374 : see if getpgrp exists
9375 set getpgrp d_getpgrp
9376 eval $inlibc
9377
9378 case "$d_getpgrp" in
9379 "$define")
9380         echo " "
9381         echo "Checking to see which flavor of getpgrp is in use..."
9382         $cat >try.c <<EOP
9383 #$i_unistd I_UNISTD
9384 #include <sys/types.h>
9385 #ifdef I_UNISTD
9386 #  include <unistd.h>
9387 #endif
9388 int main()
9389 {
9390         if (getuid() == 0) {
9391                 printf("(I see you are running Configure as super-user...)\n");
9392                 setuid(1);
9393         }
9394 #ifdef TRY_BSD_PGRP
9395         if (getpgrp(1) == 0)
9396                 exit(0);
9397 #else
9398         if (getpgrp() > 0)
9399                 exit(0);
9400 #endif
9401         exit(1);
9402 }
9403 EOP
9404         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9405                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9406                 val="$define"
9407         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9408                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9409                 val="$undef"
9410         else
9411                 echo "I can't seem to compile and run the test program."
9412                 if ./usg; then
9413                         xxx="a USG one, i.e. you use getpgrp()."
9414                 else
9415                         # SVR4 systems can appear rather BSD-ish.
9416                         case "$i_unistd" in
9417                         $undef)
9418                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9419                                 val="$define"
9420                                 ;;
9421                         $define)
9422                                 xxx="probably a USG one, i.e. you use getpgrp()."
9423                                 val="$undef"
9424                                 ;;
9425                         esac
9426                 fi
9427                 echo "Assuming your getpgrp is $xxx" >&4
9428         fi
9429         ;;
9430 *) val="$undef";;
9431 esac
9432 set d_bsdgetpgrp
9433 eval $setvar
9434 $rm -f try try.*
9435
9436 : see if setpgrp exists
9437 set setpgrp d_setpgrp
9438 eval $inlibc
9439
9440 case "$d_setpgrp" in
9441 "$define")
9442         echo " "
9443         echo "Checking to see which flavor of setpgrp is in use..."
9444         $cat >try.c <<EOP
9445 #$i_unistd I_UNISTD
9446 #include <sys/types.h>
9447 #ifdef I_UNISTD
9448 #  include <unistd.h>
9449 #endif
9450 int main()
9451 {
9452         if (getuid() == 0) {
9453                 printf("(I see you are running Configure as super-user...)\n");
9454                 setuid(1);
9455         }
9456 #ifdef TRY_BSD_PGRP
9457         if (-1 == setpgrp(1, 1))
9458                 exit(0);
9459 #else
9460         if (setpgrp() != -1)
9461                 exit(0);
9462 #endif
9463         exit(1);
9464 }
9465 EOP
9466         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9467                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9468                 val="$define"
9469         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9470                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9471                 val="$undef"
9472         else
9473                 echo "(I can't seem to compile and run the test program.)"
9474                 if ./usg; then
9475                         xxx="a USG one, i.e. you use setpgrp()."
9476                 else
9477                         # SVR4 systems can appear rather BSD-ish.
9478                         case "$i_unistd" in
9479                         $undef)
9480                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9481                                 val="$define"
9482                                 ;;
9483                         $define)
9484                                 xxx="probably a USG one, i.e. you use setpgrp()."
9485                                 val="$undef"
9486                                 ;;
9487                         esac
9488                 fi
9489                 echo "Assuming your setpgrp is $xxx" >&4
9490         fi
9491         ;;
9492 *) val="$undef";;
9493 esac
9494 set d_bsdsetpgrp
9495 eval $setvar
9496 $rm -f try try.*
9497 : see if bzero exists
9498 set bzero d_bzero
9499 eval $inlibc
9500
9501 : see if signal is declared as pointer to function returning int or void
9502 echo " "
9503 xxx=`./findhdr signal.h`
9504 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9505 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9506         echo "You have int (*signal())() instead of void." >&4
9507         val="$undef"
9508 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9509         echo "You have void (*signal())()." >&4
9510         val="$define"
9511 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9512         echo "You have int (*signal())() instead of void." >&4
9513         val="$undef"
9514 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9515         echo "You have void (*signal())()." >&4
9516         val="$define"
9517 else
9518         case "$d_voidsig" in
9519         '')
9520         echo "I can't determine whether signal handler returns void or int..." >&4
9521                 dflt=void
9522                 rp="What type does your signal handler return?"
9523                 . ./myread
9524                 case "$ans" in
9525                 v*) val="$define";;
9526                 *) val="$undef";;
9527                 esac;;
9528         "$define")
9529                 echo "As you already told me, signal handler returns void." >&4
9530                 val="$define"
9531                 ;;
9532         *)      echo "As you already told me, signal handler returns int." >&4
9533                 val="$undef"
9534                 ;;
9535         esac
9536 fi
9537 set d_voidsig
9538 eval $setvar
9539 case "$d_voidsig" in
9540 "$define") signal_t="void";;
9541 *) signal_t="int";;
9542 esac
9543 $rm -f $$.tmp
9544
9545 : check for ability to cast large floats to 32-bit ints.
9546 echo " "
9547 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9548 if $test "$intsize" -ge 4; then
9549         xxx=int
9550 else
9551         xxx=long
9552 fi
9553 $cat >try.c <<EOCP
9554 #include <stdio.h>
9555 #include <sys/types.h>
9556 #include <signal.h>
9557 $signal_t blech(s) int s; { exit(3); }
9558 int main()
9559 {
9560         $xxx i32;
9561         double f, g;
9562         int result = 0;
9563         char str[16];
9564         signal(SIGFPE, blech);
9565
9566         /* Don't let compiler optimize the test away.  Store the number 
9567            in a writable string for gcc to pass to sscanf under HP/UX.
9568         */
9569         sprintf(str, "2147483647");
9570         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9571         g = 10 * f;
9572         i32  = ($xxx) g;
9573
9574         /* x86 processors will probably give 0x8000 0000, which is a
9575        sign change.  We don't want that.  We want to mimic SPARC
9576            behavior here, which is to preserve the sign and give
9577            back 0x7fff ffff.
9578         */
9579         if (i32 != ($xxx) f)
9580                 result |= 1;
9581         exit(result);
9582 }
9583 EOCP
9584 set try
9585 if eval $compile_ok; then
9586         $run ./try
9587         yyy=$?
9588 else
9589         echo "(I can't seem to compile the test program--assuming it can't)"
9590         yyy=1
9591 fi
9592 case "$yyy" in
9593 0)      val="$define"
9594         echo "Yup, it can."
9595         ;;
9596 *)      val="$undef"
9597         echo "Nope, it can't."
9598         ;;
9599 esac
9600 set d_casti32
9601 eval $setvar
9602 $rm -f try try.*
9603
9604 : check for ability to cast negative floats to unsigned
9605 echo " "
9606 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9607 $cat >try.c <<EOCP
9608 #include <stdio.h>
9609 #include <sys/types.h>
9610 #include <signal.h>
9611 $signal_t blech(s) int s; { exit(7); }
9612 $signal_t blech_in_list(s) int s; { exit(4); }
9613 unsigned long dummy_long(p) unsigned long p; { return p; }
9614 unsigned int dummy_int(p) unsigned int p; { return p; }
9615 unsigned short dummy_short(p) unsigned short p; { return p; }
9616 int main()
9617 {
9618         double f;
9619         unsigned long along;
9620         unsigned int aint;
9621         unsigned short ashort;
9622         int result = 0;
9623         char str[16];
9624         
9625         /* Frustrate gcc-2.7.2's optimizer which failed this test with
9626            a direct f = -123. assignment.  gcc-2.8.0 reportedly
9627            optimized the whole file away
9628         */
9629         /* Store the number in a writable string for gcc to pass to 
9630            sscanf under HP/UX.
9631         */
9632         sprintf(str, "-123");
9633         sscanf(str, "%lf", &f);  /* f = -123.; */
9634
9635         signal(SIGFPE, blech);
9636         along = (unsigned long)f;
9637         aint = (unsigned int)f;
9638         ashort = (unsigned short)f;
9639         if (along != (unsigned long)-123)
9640                 result |= 1;
9641         if (aint != (unsigned int)-123)
9642                 result |= 1;
9643         if (ashort != (unsigned short)-123)
9644                 result |= 1;
9645         sprintf(str, "1073741824.");
9646         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9647         f = f + f;
9648         along = 0;
9649         along = (unsigned long)f;
9650         if (along != 0x80000000)
9651                 result |= 2;
9652         f -= 1.;
9653         along = 0;
9654         along = (unsigned long)f;
9655         if (along != 0x7fffffff)
9656                 result |= 1;
9657         f += 2.;
9658         along = 0;
9659         along = (unsigned long)f;
9660         if (along != 0x80000001)
9661                 result |= 2;
9662         if (result)
9663                 exit(result);
9664         signal(SIGFPE, blech_in_list);
9665         sprintf(str, "123.");
9666         sscanf(str, "%lf", &f);  /* f = 123.; */
9667         along = dummy_long((unsigned long)f);
9668         aint = dummy_int((unsigned int)f);
9669         ashort = dummy_short((unsigned short)f);
9670         if (along != (unsigned long)123)
9671                 result |= 4;
9672         if (aint != (unsigned int)123)
9673                 result |= 4;
9674         if (ashort != (unsigned short)123)
9675                 result |= 4;
9676         exit(result);
9677
9678 }
9679 EOCP
9680 set try
9681 if eval $compile_ok; then
9682         $run ./try
9683         castflags=$?
9684 else
9685         echo "(I can't seem to compile the test program--assuming it can't)"
9686         castflags=7
9687 fi
9688 case "$castflags" in
9689 0)      val="$define"
9690         echo "Yup, it can."
9691         ;;
9692 *)      val="$undef"
9693         echo "Nope, it can't."
9694         ;;
9695 esac
9696 set d_castneg
9697 eval $setvar
9698 $rm -f try.*
9699
9700 : see if vprintf exists
9701 echo " "
9702 if set vprintf val -f d_vprintf; eval $csym; $val; then
9703         echo 'vprintf() found.' >&4
9704         val="$define"
9705         $cat >try.c <<'EOF'
9706 #include <varargs.h>
9707
9708 int main() { xxx("foo"); }
9709
9710 xxx(va_alist)
9711 va_dcl
9712 {
9713         va_list args;
9714         char buf[10];
9715
9716         va_start(args);
9717         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9718 }
9719 EOF
9720         set try
9721         if eval $compile && $run ./try; then
9722                 echo "Your vsprintf() returns (int)." >&4
9723                 val2="$undef"
9724         else
9725                 echo "Your vsprintf() returns (char*)." >&4
9726                 val2="$define"
9727         fi
9728 else
9729         echo 'vprintf() NOT found.' >&4
9730                 val="$undef"
9731                 val2="$undef"
9732 fi
9733 $rm -f try try.*
9734 set d_vprintf
9735 eval $setvar
9736 val=$val2
9737 set d_charvspr
9738 eval $setvar
9739
9740 : see if chown exists
9741 set chown d_chown
9742 eval $inlibc
9743
9744 : see if chroot exists
9745 set chroot d_chroot
9746 eval $inlibc
9747
9748 : see if chsize exists
9749 set chsize d_chsize
9750 eval $inlibc
9751
9752 : see if class exists
9753 set class d_class
9754 eval $inlibc
9755
9756 hasstruct='varname=$1; struct=$2; shift; shift;
9757 while $test $# -ge 2; do
9758         case "$1" in
9759         $define) echo "#include <$2>";;
9760         esac ;
9761     shift 2;
9762 done > try.c;
9763 echo "int main () { struct $struct foo; }" >> try.c;
9764 set try;
9765 if eval $compile; then
9766         val="$define";
9767 else
9768         val="$undef";
9769 fi;
9770 set $varname;
9771 eval $setvar;
9772 $rm -f try.c try.o'
9773
9774 socketlib=''
9775 sockethdr=''
9776 : see whether socket exists
9777 echo " "
9778 $echo $n "Hmm... $c" >&4
9779 if set socket val -f d_socket; eval $csym; $val; then
9780         echo "Looks like you have Berkeley networking support." >&4
9781         d_socket="$define"
9782         if set setsockopt val -f; eval $csym; $val; then
9783                 d_oldsock="$undef"
9784         else
9785                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9786                 d_oldsock="$define"
9787         fi
9788 else
9789         if $contains socklib libc.list >/dev/null 2>&1; then
9790                 echo "Looks like you have Berkeley networking support." >&4
9791                 d_socket="$define"
9792                 : we will have to assume that it supports the 4.2 BSD interface
9793                 d_oldsock="$undef"
9794         else
9795                 echo "You don't have Berkeley networking in libc$_a..." >&4
9796                 if test "X$d_socket" = "X$define"; then
9797                    echo "...but you seem to believe that you have sockets." >&4
9798                 else
9799                         for net in net socket
9800                         do
9801                                 if test -f /usr/lib/lib$net$_a; then
9802                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9803                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9804                                         if $contains socket libc.list >/dev/null 2>&1; then
9805                                                 d_socket="$define"
9806                                                 socketlib="-l$net"
9807                                                 case "$net" in
9808                                                 net)
9809                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9810                                                         sockethdr="-I/usr/netinclude"
9811                                                         ;;
9812                                                 esac
9813                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
9814                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9815                                                         d_oldsock="$undef"
9816                                                 else
9817                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9818                                                         d_oldsock="$define"
9819                                                 fi
9820                                                 break
9821                                         fi
9822                                 fi
9823                         done
9824                         if test "X$d_socket" != "X$define"; then
9825                            echo "or anywhere else I see." >&4
9826                            d_socket="$undef"
9827                            d_oldsock="$undef"
9828                         fi
9829                 fi
9830         fi
9831 fi
9832
9833 : see if socketpair exists
9834 set socketpair d_sockpair
9835 eval $inlibc
9836
9837
9838 echo " "
9839 echo "Checking the availability of certain socket constants..." >&4
9840 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9841         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9842         $cat >try.c <<EOF
9843 #include <sys/types.h>
9844 #include <sys/socket.h>
9845 int main() {
9846     int i = $ENUM;
9847 }
9848 EOF
9849         val="$undef"
9850         set try; if eval $compile; then
9851                 val="$define"
9852         fi
9853         set d_${enum}; eval $setvar
9854         $rm -f try.c try
9855 done
9856
9857 : see if this is a sys/uio.h system
9858 set sys/uio.h i_sysuio
9859 eval $inhdr
9860
9861
9862 echo " "
9863 echo "Checking to see if your system supports struct cmsghdr..." >&4
9864 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9865 eval $hasstruct
9866 case "$d_cmsghdr_s" in
9867 "$define")      echo "Yes, it does."   ;;
9868 *)              echo "No, it doesn't." ;;
9869 esac
9870
9871
9872 : check for const keyword
9873 echo " "
9874 echo 'Checking to see if your C compiler knows about "const"...' >&4
9875 $cat >const.c <<'EOCP'
9876 typedef struct spug { int drokk; } spug;
9877 int main()
9878 {
9879         const char *foo;
9880         const spug y;
9881 }
9882 EOCP
9883 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9884         val="$define"
9885         echo "Yup, it does."
9886 else
9887         val="$undef"
9888         echo "Nope, it doesn't."
9889 fi
9890 set d_const
9891 eval $setvar
9892
9893 : see if crypt exists
9894 echo " "
9895 set crypt d_crypt
9896 eval $inlibc
9897 case "$d_crypt" in
9898 $define) cryptlib='' ;;
9899 *)      if set crypt val -f d_crypt; eval $csym; $val; then
9900                 echo 'crypt() found.' >&4
9901                 val="$define"
9902                 cryptlib=''
9903         else
9904                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9905                 if $test -z "$cryptlib"; then
9906                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9907                 else
9908                         cryptlib=-lcrypt
9909                 fi
9910                 if $test -z "$cryptlib"; then
9911                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9912                 else
9913                         cryptlib=-lcrypt
9914                 fi
9915                 if $test -z "$cryptlib"; then
9916                         cryptlib=`./loc libcrypt$_a "" $libpth`
9917                 else
9918                         cryptlib=-lcrypt
9919                 fi
9920                 if $test -z "$cryptlib"; then
9921                         echo 'crypt() NOT found.' >&4
9922                         val="$undef"
9923                 else
9924                         val="$define"
9925                 fi
9926         fi
9927         set d_crypt
9928         eval $setvar
9929         ;;
9930 esac
9931
9932 : see if this is a crypt.h system
9933 set crypt.h i_crypt
9934 eval $inhdr
9935
9936 : see if crypt_r exists
9937 set crypt_r d_crypt_r
9938 eval $inlibc
9939 case "$d_crypt_r" in
9940 "$define")
9941         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
9942         case "crypt" in
9943         time)
9944                 hdrs="$hdrs $i_systime sys/time.h"
9945                 ;;
9946         esac
9947         case "$d_crypt_r_proto:$usethreads" in
9948         ":define")      d_crypt_r_proto=define
9949                 set d_crypt_r_proto crypt_r $hdrs
9950                 eval $hasproto ;;
9951         *)      ;;
9952         esac
9953         case "$d_crypt_r_proto" in
9954         define)
9955         case "$crypt_r_proto" in
9956         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
9957         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
9958         esac
9959         case "$crypt_r_proto" in
9960         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
9961         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
9962         esac
9963         case "$crypt_r_proto" in
9964         ''|0)   d_crypt_r=undef
9965                 crypt_r_proto=0
9966                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
9967         * )     case "$crypt_r_proto" in
9968                 REENTRANT_PROTO*) ;;
9969                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
9970                 esac
9971                 echo "Prototype: $try" ;;
9972         esac
9973         ;;
9974         *)      case "$usethreads" in
9975                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
9976                 esac
9977                 d_crypt_r=undef
9978                 crypt_r_proto=0
9979                 ;;
9980         esac
9981         ;;
9982 *)      crypt_r_proto=0
9983         ;;
9984 esac
9985
9986 : get csh whereabouts
9987 case "$csh" in
9988 'csh') val="$undef" ;;
9989 *) val="$define" ;;
9990 esac
9991 set d_csh
9992 eval $setvar
9993 : Respect a hint or command line value for full_csh.
9994 case "$full_csh" in
9995 '') full_csh=$csh ;;
9996 esac
9997
9998 : see if ctermid_r exists
9999 set ctermid_r d_ctermid_r
10000 eval $inlibc
10001 case "$d_ctermid_r" in
10002 "$define")
10003         hdrs="$i_systypes sys/types.h define stdio.h $i_stdio stdio.h"
10004         case "stdio" in
10005         time)
10006                 hdrs="$hdrs $i_systime sys/time.h"
10007                 ;;
10008         esac
10009         case "$d_ctermid_r_proto:$usethreads" in
10010         ":define")      d_ctermid_r_proto=define
10011                 set d_ctermid_r_proto ctermid_r $hdrs
10012                 eval $hasproto ;;
10013         *)      ;;
10014         esac
10015         case "$d_ctermid_r_proto" in
10016         define)
10017         case "$ctermid_r_proto" in
10018         ''|0) try='char* ctermid_r(char*);'
10019         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10020         esac
10021         case "$ctermid_r_proto" in
10022         ''|0)   d_ctermid_r=undef
10023                 ctermid_r_proto=0
10024                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10025         * )     case "$ctermid_r_proto" in
10026                 REENTRANT_PROTO*) ;;
10027                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10028                 esac
10029                 echo "Prototype: $try" ;;
10030         esac
10031         ;;
10032         *)      case "$usethreads" in
10033                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10034                 esac
10035                 d_ctermid_r=undef
10036                 ctermid_r_proto=0
10037                 ;;
10038         esac
10039         ;;
10040 *)      ctermid_r_proto=0
10041         ;;
10042 esac
10043
10044 : see if ctime_r exists
10045 set ctime_r d_ctime_r
10046 eval $inlibc
10047 case "$d_ctime_r" in
10048 "$define")
10049         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
10050         case "time" in
10051         time)
10052                 hdrs="$hdrs $i_systime sys/time.h"
10053                 ;;
10054         esac
10055         case "$d_ctime_r_proto:$usethreads" in
10056         ":define")      d_ctime_r_proto=define
10057                 set d_ctime_r_proto ctime_r $hdrs
10058                 eval $hasproto ;;
10059         *)      ;;
10060         esac
10061         case "$d_ctime_r_proto" in
10062         define)
10063         case "$ctime_r_proto" in
10064         ''|0) try='char* ctime_r(const time_t*, char*);'
10065         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10066         esac
10067         case "$ctime_r_proto" in
10068         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10069         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10070         esac
10071         case "$ctime_r_proto" in
10072         ''|0) try='int ctime_r(const time_t*, char*);'
10073         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10074         esac
10075         case "$ctime_r_proto" in
10076         ''|0) try='int ctime_r(const time_t*, char*, int);'
10077         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10078         esac
10079         case "$ctime_r_proto" in
10080         ''|0)   d_ctime_r=undef
10081                 ctime_r_proto=0
10082                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10083         * )     case "$ctime_r_proto" in
10084                 REENTRANT_PROTO*) ;;
10085                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10086                 esac
10087                 echo "Prototype: $try" ;;
10088         esac
10089         ;;
10090         *)      case "$usethreads" in
10091                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10092                 esac
10093                 d_ctime_r=undef
10094                 ctime_r_proto=0
10095                 ;;
10096         esac
10097         ;;
10098 *)      ctime_r_proto=0
10099         ;;
10100 esac
10101
10102 : see if cuserid exists
10103 set cuserid d_cuserid
10104 eval $inlibc
10105
10106 : see if this is a limits.h system
10107 set limits.h i_limits
10108 eval $inhdr
10109
10110 : see if this is a float.h system
10111 set float.h i_float
10112 eval $inhdr
10113
10114 : See if number of significant digits in a double precision number is known
10115 echo " "
10116 $cat >dbl_dig.c <<EOM
10117 #$i_limits I_LIMITS
10118 #$i_float I_FLOAT
10119 #ifdef I_LIMITS
10120 #include <limits.h>
10121 #endif
10122 #ifdef I_FLOAT
10123 #include <float.h>
10124 #endif
10125 #ifdef DBL_DIG
10126 printf("Contains DBL_DIG");
10127 #endif
10128 EOM
10129 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10130 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10131         echo "DBL_DIG found." >&4
10132         val="$define"
10133 else
10134         echo "DBL_DIG NOT found." >&4
10135         val="$undef"
10136 fi
10137 $rm -f dbl_dig.?
10138 set d_dbl_dig
10139 eval $setvar
10140
10141 : see if dbm.h is available
10142 : see if dbmclose exists
10143 set dbmclose d_dbmclose
10144 eval $inlibc
10145
10146 case "$d_dbmclose" in
10147 $define)
10148         set dbm.h i_dbm
10149         eval $inhdr
10150         case "$i_dbm" in
10151         $define)
10152                 val="$undef"
10153                 set i_rpcsvcdbm
10154                 eval $setvar
10155                 ;;
10156         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10157                 eval $inhdr
10158                 ;;
10159         esac
10160         ;;
10161 *)      echo "We won't be including <dbm.h>"
10162         val="$undef"
10163         set i_dbm
10164         eval $setvar
10165         val="$undef"
10166         set i_rpcsvcdbm
10167         eval $setvar
10168         ;;
10169 esac
10170
10171 : see if prototype for dbminit is available
10172 echo " "
10173 set d_dbminitproto dbminit $i_dbm dbm.h
10174 eval $hasproto
10175
10176 : see if difftime exists
10177 set difftime d_difftime
10178 eval $inlibc
10179
10180 : see if this is a dirent system
10181 echo " "
10182 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10183         val="$define"
10184         echo "<dirent.h> found." >&4
10185 else
10186         val="$undef"
10187         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10188                 echo "<sys/dir.h> found." >&4
10189                 echo " "
10190         else
10191                 xinc=`./findhdr sys/ndir.h`
10192         fi
10193         echo "<dirent.h> NOT found." >&4
10194 fi
10195 set i_dirent
10196 eval $setvar
10197
10198 : Look for type of directory structure.
10199 echo " "
10200 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10201
10202 case "$direntrytype" in
10203 ''|' ')
10204         case "$i_dirent" in
10205         $define) guess1='struct dirent' ;;
10206         *) guess1='struct direct'  ;;
10207         esac
10208         ;;
10209 *)      guess1="$direntrytype"
10210         ;;
10211 esac
10212
10213 case "$guess1" in
10214 'struct dirent') guess2='struct direct' ;;
10215 *) guess2='struct dirent' ;;
10216 esac
10217                 
10218 if $contains "$guess1" try.c >/dev/null 2>&1; then
10219         direntrytype="$guess1"
10220         echo "Your directory entries are $direntrytype." >&4
10221 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10222         direntrytype="$guess2"
10223         echo "Your directory entries seem to be $direntrytype." >&4
10224 else
10225         echo "I don't recognize your system's directory entries." >&4
10226         rp="What type is used for directory entries on this system?"
10227         dflt="$guess1"
10228         . ./myread
10229         direntrytype="$ans"
10230 fi
10231 $rm -f try.c
10232
10233
10234 : see if the directory entry stores field length
10235 echo " "
10236 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10237 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10238         echo "Good, your directory entry keeps length information in d_namlen." >&4
10239         val="$define"
10240 else
10241         echo "Your directory entry does not know about the d_namlen field." >&4
10242         val="$undef"
10243 fi
10244 set d_dirnamlen
10245 eval $setvar
10246 $rm -f try.c
10247
10248 : see if this is an sysdir system
10249 set sys/dir.h i_sysdir
10250 eval $inhdr
10251
10252 : see if this is an sysndir system
10253 set sys/ndir.h i_sysndir
10254 eval $inhdr
10255
10256 : Look for dirfd
10257 echo " "
10258 $cat >dirfd.c <<EOM
10259 #include <stdio.h>
10260 #$i_dirent I_DIRENT             /**/
10261 #$i_sysdir I_SYS_DIR            /**/
10262 #$i_sysndir I_SYS_NDIR          /**/
10263 #$i_systypes I_SYS_TYPES        /**/
10264 #if defined(I_SYS_TYPES)
10265 #include <sys/types.h>
10266 #endif
10267 #if defined(I_DIRENT)
10268 #include <dirent.h>
10269 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10270 #include <sys/dir.h>
10271 #endif
10272 #else
10273 #ifdef I_SYS_NDIR
10274 #include <sys/ndir.h>
10275 #else
10276 #ifdef I_SYS_DIR
10277 #ifdef hp9000s500
10278 #include <ndir.h>       /* may be wrong in the future */
10279 #else
10280 #include <sys/dir.h>
10281 #endif
10282 #endif
10283 #endif
10284 #endif 
10285 int main() {
10286         DIR *dirp = opendir(".");
10287         if (dirfd(dirp) >= 0)
10288                 exit(0);
10289         else
10290                 exit(1);
10291 }
10292 EOM
10293 set dirfd
10294 if eval $compile; then
10295         val="$define"
10296 fi
10297 case "$val" in
10298 $define)        echo "dirfd() found." >&4       ;;
10299 *)              echo "dirfd() NOT found." >&4   ;;
10300 esac
10301 set d_dirfd
10302 eval $setvar
10303 $rm -f dirfd*
10304
10305 : see if dlerror exists
10306 xxx_runnm="$runnm"
10307 runnm=false
10308 set dlerror d_dlerror
10309 eval $inlibc
10310 runnm="$xxx_runnm"
10311
10312 : see if dlfcn is available
10313 set dlfcn.h i_dlfcn
10314 eval $inhdr
10315
10316 case "$usedl" in
10317 $define|y|true)
10318         $cat << EOM
10319
10320 On a few systems, the dynamically loaded modules that perl generates and uses
10321 will need a different extension than shared libs. The default will probably
10322 be appropriate.
10323
10324 EOM
10325         case "$dlext" in
10326         '')     dflt="$so" ;;
10327         *)      dflt="$dlext" ;;
10328         esac
10329         rp='What is the extension of dynamically loaded modules'
10330         . ./myread
10331         dlext="$ans"
10332         ;;
10333 *)
10334         dlext="none"
10335         ;;
10336 esac
10337
10338 : Check if dlsym need a leading underscore
10339 echo " "
10340 val="$undef"
10341
10342 case "$dlsrc" in
10343 dl_dlopen.xs)
10344         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10345         $cat >dyna.c <<'EOM'
10346 fred () { }
10347 EOM
10348
10349 $cat >fred.c<<EOM
10350
10351 #include <stdio.h>
10352 #$i_dlfcn I_DLFCN
10353 #ifdef I_DLFCN
10354 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10355 #else
10356 #include <sys/types.h>
10357 #include <nlist.h>
10358 #include <link.h>
10359 #endif
10360
10361 extern int fred() ;
10362
10363 int main()
10364 {
10365     void * handle ;
10366     void * symbol ;
10367 #ifndef RTLD_LAZY
10368     int mode = 1 ;
10369 #else
10370     int mode = RTLD_LAZY ;
10371 #endif
10372     handle = dlopen("./dyna.$dlext", mode) ;
10373     if (handle == NULL) {
10374         printf ("1\n") ;
10375         fflush (stdout) ;
10376         exit(0);
10377     }
10378     symbol = dlsym(handle, "fred") ;
10379     if (symbol == NULL) {
10380         /* try putting a leading underscore */
10381         symbol = dlsym(handle, "_fred") ;
10382         if (symbol == NULL) {
10383             printf ("2\n") ;
10384             fflush (stdout) ;
10385             exit(0);
10386         }
10387         printf ("3\n") ;
10388     }
10389     else
10390         printf ("4\n") ;
10391     fflush (stdout) ;
10392     exit(0);
10393 }
10394 EOM
10395         : Call the object file tmp-dyna.o in case dlext=o.
10396         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10397                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10398                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10399                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10400                 xxx=`$run ./fred`
10401                 case $xxx in
10402                 1)      echo "Test program failed using dlopen." >&4
10403                         echo "Perhaps you should not use dynamic loading." >&4;;
10404                 2)      echo "Test program failed using dlsym." >&4
10405                         echo "Perhaps you should not use dynamic loading." >&4;;
10406                 3)      echo "dlsym needs a leading underscore" >&4
10407                         val="$define" ;;
10408                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10409                 esac
10410         else
10411                 echo "I can't compile and run the test program." >&4
10412                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10413         fi
10414         ;;
10415 esac
10416                 
10417 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10418
10419 set d_dlsymun
10420 eval $setvar
10421
10422 : see if drand48_r exists
10423 set drand48_r d_drand48_r
10424 eval $inlibc
10425 case "$d_drand48_r" in
10426 "$define")
10427         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10428         case "stdlib" in
10429         time)
10430                 hdrs="$hdrs $i_systime sys/time.h"
10431                 ;;
10432         esac
10433         case "$d_drand48_r_proto:$usethreads" in
10434         ":define")      d_drand48_r_proto=define
10435                 set d_drand48_r_proto drand48_r $hdrs
10436                 eval $hasproto ;;
10437         *)      ;;
10438         esac
10439         case "$d_drand48_r_proto" in
10440         define)
10441         case "$drand48_r_proto" in
10442         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10443         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10444         esac
10445         case "$drand48_r_proto" in
10446         ''|0)   d_drand48_r=undef
10447                 drand48_r_proto=0
10448                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10449         * )     case "$drand48_r_proto" in
10450                 REENTRANT_PROTO*) ;;
10451                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10452                 esac
10453                 echo "Prototype: $try" ;;
10454         esac
10455         ;;
10456         *)      case "$usethreads" in
10457                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10458                 esac
10459                 d_drand48_r=undef
10460                 drand48_r_proto=0
10461                 ;;
10462         esac
10463         ;;
10464 *)      drand48_r_proto=0
10465         ;;
10466 esac
10467
10468 : see if prototype for drand48 is available
10469 echo " "
10470 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10471 eval $hasproto
10472
10473 : see if dup2 exists
10474 set dup2 d_dup2
10475 eval $inlibc
10476
10477 : see if eaccess exists
10478 set eaccess d_eaccess
10479 eval $inlibc
10480
10481 : see if endgrent exists
10482 set endgrent d_endgrent
10483 eval $inlibc
10484
10485 : see if this is an grp system
10486 set grp.h i_grp
10487 eval $inhdr
10488
10489 case "$i_grp" in
10490 $define)
10491         xxx=`./findhdr grp.h`
10492         $cppstdin $cppflags $cppminus < $xxx >$$.h
10493
10494         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10495                 val="$define"
10496         else
10497                 val="$undef"
10498         fi
10499         set d_grpasswd
10500         eval $setvar
10501
10502         $rm -f $$.h
10503         ;;
10504 *)
10505         val="$undef";
10506         set d_grpasswd; eval $setvar
10507         ;;
10508 esac
10509
10510 : see if endgrent_r exists
10511 set endgrent_r d_endgrent_r
10512 eval $inlibc
10513 case "$d_endgrent_r" in
10514 "$define")
10515         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10516         case "grp" in
10517         time)
10518                 hdrs="$hdrs $i_systime sys/time.h"
10519                 ;;
10520         esac
10521         case "$d_endgrent_r_proto:$usethreads" in
10522         ":define")      d_endgrent_r_proto=define
10523                 set d_endgrent_r_proto endgrent_r $hdrs
10524                 eval $hasproto ;;
10525         *)      ;;
10526         esac
10527         case "$d_endgrent_r_proto" in
10528         define)
10529         case "$endgrent_r_proto" in
10530         ''|0) try='int endgrent_r(FILE**);'
10531         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10532         esac
10533         case "$endgrent_r_proto" in
10534         ''|0) try='void endgrent_r(FILE**);'
10535         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10536         esac
10537         case "$endgrent_r_proto" in
10538         ''|0)   d_endgrent_r=undef
10539                 endgrent_r_proto=0
10540                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10541         * )     case "$endgrent_r_proto" in
10542                 REENTRANT_PROTO*) ;;
10543                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10544                 esac
10545                 echo "Prototype: $try" ;;
10546         esac
10547         ;;
10548         *)      case "$usethreads" in
10549                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
10550                 esac
10551                 d_endgrent_r=undef
10552                 endgrent_r_proto=0
10553                 ;;
10554         esac
10555         ;;
10556 *)      endgrent_r_proto=0
10557         ;;
10558 esac
10559
10560 : see if endhostent exists
10561 set endhostent d_endhent
10562 eval $inlibc
10563
10564 : see if this is a netdb.h system
10565 set netdb.h i_netdb
10566 eval $inhdr
10567
10568 : see if endhostent_r exists
10569 set endhostent_r d_endhostent_r
10570 eval $inlibc
10571 case "$d_endhostent_r" in
10572 "$define")
10573         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10574         case "netdb" in
10575         time)
10576                 hdrs="$hdrs $i_systime sys/time.h"
10577                 ;;
10578         esac
10579         case "$d_endhostent_r_proto:$usethreads" in
10580         ":define")      d_endhostent_r_proto=define
10581                 set d_endhostent_r_proto endhostent_r $hdrs
10582                 eval $hasproto ;;
10583         *)      ;;
10584         esac
10585         case "$d_endhostent_r_proto" in
10586         define)
10587         case "$endhostent_r_proto" in
10588         ''|0) try='int endhostent_r(struct hostent_data*);'
10589         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_S ;;
10590         esac
10591         case "$endhostent_r_proto" in
10592         ''|0) try='void endhostent_r(struct hostent_data*);'
10593         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_S ;;
10594         esac
10595         case "$endhostent_r_proto" in
10596         ''|0)   d_endhostent_r=undef
10597                 endhostent_r_proto=0
10598                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
10599         * )     case "$endhostent_r_proto" in
10600                 REENTRANT_PROTO*) ;;
10601                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
10602                 esac
10603                 echo "Prototype: $try" ;;
10604         esac
10605         ;;
10606         *)      case "$usethreads" in
10607                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
10608                 esac
10609                 d_endhostent_r=undef
10610                 endhostent_r_proto=0
10611                 ;;
10612         esac
10613         ;;
10614 *)      endhostent_r_proto=0
10615         ;;
10616 esac
10617
10618 : see if endnetent exists
10619 set endnetent d_endnent
10620 eval $inlibc
10621
10622 : see if endnetent_r exists
10623 set endnetent_r d_endnetent_r
10624 eval $inlibc
10625 case "$d_endnetent_r" in
10626 "$define")
10627         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10628         case "netdb" in
10629         time)
10630                 hdrs="$hdrs $i_systime sys/time.h"
10631                 ;;
10632         esac
10633         case "$d_endnetent_r_proto:$usethreads" in
10634         ":define")      d_endnetent_r_proto=define
10635                 set d_endnetent_r_proto endnetent_r $hdrs
10636                 eval $hasproto ;;
10637         *)      ;;
10638         esac
10639         case "$d_endnetent_r_proto" in
10640         define)
10641         case "$endnetent_r_proto" in
10642         ''|0) try='int endnetent_r(struct netent_data*);'
10643         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_S ;;
10644         esac
10645         case "$endnetent_r_proto" in
10646         ''|0) try='void endnetent_r(struct netent_data*);'
10647         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_S ;;
10648         esac
10649         case "$endnetent_r_proto" in
10650         ''|0)   d_endnetent_r=undef
10651                 endnetent_r_proto=0
10652                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
10653         * )     case "$endnetent_r_proto" in
10654                 REENTRANT_PROTO*) ;;
10655                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
10656                 esac
10657                 echo "Prototype: $try" ;;
10658         esac
10659         ;;
10660         *)      case "$usethreads" in
10661                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
10662                 esac
10663                 d_endnetent_r=undef
10664                 endnetent_r_proto=0
10665                 ;;
10666         esac
10667         ;;
10668 *)      endnetent_r_proto=0
10669         ;;
10670 esac
10671
10672 : see if endprotoent exists
10673 set endprotoent d_endpent
10674 eval $inlibc
10675
10676 : see if endprotoent_r exists
10677 set endprotoent_r d_endprotoent_r
10678 eval $inlibc
10679 case "$d_endprotoent_r" in
10680 "$define")
10681         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10682         case "netdb" in
10683         time)
10684                 hdrs="$hdrs $i_systime sys/time.h"
10685                 ;;
10686         esac
10687         case "$d_endprotoent_r_proto:$usethreads" in
10688         ":define")      d_endprotoent_r_proto=define
10689                 set d_endprotoent_r_proto endprotoent_r $hdrs
10690                 eval $hasproto ;;
10691         *)      ;;
10692         esac
10693         case "$d_endprotoent_r_proto" in
10694         define)
10695         case "$endprotoent_r_proto" in
10696         ''|0) try='int endprotoent_r(struct protoent_data*);'
10697         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_S ;;
10698         esac
10699         case "$endprotoent_r_proto" in
10700         ''|0) try='void endprotoent_r(struct protoent_data*);'
10701         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_S ;;
10702         esac
10703         case "$endprotoent_r_proto" in
10704         ''|0)   d_endprotoent_r=undef
10705                 endprotoent_r_proto=0
10706                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
10707         * )     case "$endprotoent_r_proto" in
10708                 REENTRANT_PROTO*) ;;
10709                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
10710                 esac
10711                 echo "Prototype: $try" ;;
10712         esac
10713         ;;
10714         *)      case "$usethreads" in
10715                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
10716                 esac
10717                 d_endprotoent_r=undef
10718                 endprotoent_r_proto=0
10719                 ;;
10720         esac
10721         ;;
10722 *)      endprotoent_r_proto=0
10723         ;;
10724 esac
10725
10726 : see if endpwent exists
10727 set endpwent d_endpwent
10728 eval $inlibc
10729
10730 : see if this is a pwd.h system
10731 set pwd.h i_pwd
10732 eval $inhdr
10733
10734 case "$i_pwd" in
10735 $define)
10736         xxx=`./findhdr pwd.h`
10737         $cppstdin $cppflags $cppminus < $xxx >$$.h
10738
10739         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10740                 val="$define"
10741         else
10742                 val="$undef"
10743         fi
10744         set d_pwquota
10745         eval $setvar
10746
10747         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10748                 val="$define"
10749         else
10750                 val="$undef"
10751         fi
10752         set d_pwage
10753         eval $setvar
10754
10755         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10756                 val="$define"
10757         else
10758                 val="$undef"
10759         fi
10760         set d_pwchange
10761         eval $setvar
10762
10763         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10764                 val="$define"
10765         else
10766                 val="$undef"
10767         fi
10768         set d_pwclass
10769         eval $setvar
10770
10771         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10772                 val="$define"
10773         else
10774                 val="$undef"
10775         fi
10776         set d_pwexpire
10777         eval $setvar
10778
10779         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10780                 val="$define"
10781         else
10782                 val="$undef"
10783         fi
10784         set d_pwcomment
10785         eval $setvar
10786
10787         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10788                 val="$define"
10789         else
10790                 val="$undef"
10791         fi
10792         set d_pwgecos
10793         eval $setvar
10794
10795         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10796                 val="$define"
10797         else
10798                 val="$undef"
10799         fi
10800         set d_pwpasswd
10801         eval $setvar
10802
10803         $rm -f $$.h
10804         ;;
10805 *)
10806         val="$undef"; 
10807         set d_pwquota; eval $setvar
10808         set d_pwage; eval $setvar
10809         set d_pwchange; eval $setvar
10810         set d_pwclass; eval $setvar
10811         set d_pwexpire; eval $setvar
10812         set d_pwcomment; eval $setvar
10813         set d_pwgecos; eval $setvar
10814         set d_pwpasswd; eval $setvar
10815         ;;
10816 esac
10817
10818 : see if endpwent_r exists
10819 set endpwent_r d_endpwent_r
10820 eval $inlibc
10821 case "$d_endpwent_r" in
10822 "$define")
10823         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
10824         case "pwd" in
10825         time)
10826                 hdrs="$hdrs $i_systime sys/time.h"
10827                 ;;
10828         esac
10829         case "$d_endpwent_r_proto:$usethreads" in
10830         ":define")      d_endpwent_r_proto=define
10831                 set d_endpwent_r_proto endpwent_r $hdrs
10832                 eval $hasproto ;;
10833         *)      ;;
10834         esac
10835         case "$d_endpwent_r_proto" in
10836         define)
10837         case "$endpwent_r_proto" in
10838         ''|0) try='int endpwent_r(FILE**);'
10839         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
10840         esac
10841         case "$endpwent_r_proto" in
10842         ''|0) try='void endpwent_r(FILE**);'
10843         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
10844         esac
10845         case "$endpwent_r_proto" in
10846         ''|0)   d_endpwent_r=undef
10847                 endpwent_r_proto=0
10848                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
10849         * )     case "$endpwent_r_proto" in
10850                 REENTRANT_PROTO*) ;;
10851                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
10852                 esac
10853                 echo "Prototype: $try" ;;
10854         esac
10855         ;;
10856         *)      case "$usethreads" in
10857                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
10858                 esac
10859                 d_endpwent_r=undef
10860                 endpwent_r_proto=0
10861                 ;;
10862         esac
10863         ;;
10864 *)      endpwent_r_proto=0
10865         ;;
10866 esac
10867
10868 : see if endservent exists
10869 set endservent d_endsent
10870 eval $inlibc
10871
10872 : see if endservent_r exists
10873 set endservent_r d_endservent_r
10874 eval $inlibc
10875 case "$d_endservent_r" in
10876 "$define")
10877         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10878         case "netdb" in
10879         time)
10880                 hdrs="$hdrs $i_systime sys/time.h"
10881                 ;;
10882         esac
10883         case "$d_endservent_r_proto:$usethreads" in
10884         ":define")      d_endservent_r_proto=define
10885                 set d_endservent_r_proto endservent_r $hdrs
10886                 eval $hasproto ;;
10887         *)      ;;
10888         esac
10889         case "$d_endservent_r_proto" in
10890         define)
10891         case "$endservent_r_proto" in
10892         ''|0) try='int endservent_r(struct servent_data*);'
10893         ./protochk "extern $try" $hdrs && endservent_r_proto=I_S ;;
10894         esac
10895         case "$endservent_r_proto" in
10896         ''|0) try='void endservent_r(struct servent_data*);'
10897         ./protochk "extern $try" $hdrs && endservent_r_proto=V_S ;;
10898         esac
10899         case "$endservent_r_proto" in
10900         ''|0)   d_endservent_r=undef
10901                 endservent_r_proto=0
10902                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
10903         * )     case "$endservent_r_proto" in
10904                 REENTRANT_PROTO*) ;;
10905                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
10906                 esac
10907                 echo "Prototype: $try" ;;
10908         esac
10909         ;;
10910         *)      case "$usethreads" in
10911                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
10912                 esac
10913                 d_endservent_r=undef
10914                 endservent_r_proto=0
10915                 ;;
10916         esac
10917         ;;
10918 *)      endservent_r_proto=0
10919         ;;
10920 esac
10921
10922 : Locate the flags for 'open()'
10923 echo " "
10924 $cat >try.c <<'EOCP'
10925 #include <sys/types.h>
10926 #ifdef I_FCNTL
10927 #include <fcntl.h>
10928 #endif
10929 #ifdef I_SYS_FILE
10930 #include <sys/file.h>
10931 #endif
10932 int main() {
10933         if(O_RDONLY);
10934 #ifdef O_TRUNC
10935         exit(0);
10936 #else
10937         exit(1);
10938 #endif
10939 }
10940 EOCP
10941 : check sys/file.h first to get FREAD on Sun
10942 if $test `./findhdr sys/file.h` && \
10943                 set try -DI_SYS_FILE && eval $compile; then
10944         h_sysfile=true;
10945         echo "<sys/file.h> defines the O_* constants..." >&4
10946         if $run ./try; then
10947                 echo "and you have the 3 argument form of open()." >&4
10948                 val="$define"
10949         else
10950                 echo "but not the 3 argument form of open().  Oh, well." >&4
10951                 val="$undef"
10952         fi
10953 elif $test `./findhdr fcntl.h` && \
10954                 set try -DI_FCNTL && eval $compile; then
10955         h_fcntl=true;
10956         echo "<fcntl.h> defines the O_* constants..." >&4
10957         if $run ./try; then
10958                 echo "and you have the 3 argument form of open()." >&4
10959                 val="$define"
10960         else
10961                 echo "but not the 3 argument form of open().  Oh, well." >&4
10962                 val="$undef"
10963         fi
10964 else
10965         val="$undef"
10966         echo "I can't find the O_* constant definitions!  You got problems." >&4
10967 fi
10968 set d_open3
10969 eval $setvar
10970 $rm -f try try.*
10971
10972 : see which of string.h or strings.h is needed
10973 echo " "
10974 strings=`./findhdr string.h`
10975 if $test "$strings" && $test -r "$strings"; then
10976         echo "Using <string.h> instead of <strings.h>." >&4
10977         val="$define"
10978 else
10979         val="$undef"
10980         strings=`./findhdr strings.h`
10981         if $test "$strings" && $test -r "$strings"; then
10982                 echo "Using <strings.h> instead of <string.h>." >&4
10983         else
10984                 echo "No string header found -- You'll surely have problems." >&4
10985         fi
10986 fi
10987 set i_string
10988 eval $setvar
10989 case "$i_string" in
10990 "$undef") strings=`./findhdr strings.h`;;
10991 *)        strings=`./findhdr string.h`;;
10992 esac
10993
10994 : see if this is a sys/file.h system
10995 val=''
10996 set sys/file.h val
10997 eval $inhdr
10998
10999 : do we need to include sys/file.h ?
11000 case "$val" in
11001 "$define")
11002         echo " "
11003         if $h_sysfile; then
11004                 val="$define"
11005                 echo "We'll be including <sys/file.h>." >&4
11006         else
11007                 val="$undef"
11008                 echo "We won't be including <sys/file.h>." >&4
11009         fi
11010         ;;
11011 *)
11012         h_sysfile=false
11013         ;;
11014 esac
11015 set i_sysfile
11016 eval $setvar
11017
11018 : see if fcntl.h is there
11019 val=''
11020 set fcntl.h val
11021 eval $inhdr
11022
11023 : see if we can include fcntl.h
11024 case "$val" in
11025 "$define")
11026         echo " "
11027         if $h_fcntl; then
11028                 val="$define"
11029                 echo "We'll be including <fcntl.h>." >&4
11030         else
11031                 val="$undef"
11032                 if $h_sysfile; then
11033         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11034                 else
11035                         echo "We won't be including <fcntl.h>." >&4
11036                 fi
11037         fi
11038         ;;
11039 *)
11040         h_fcntl=false
11041         val="$undef"
11042         ;;
11043 esac
11044 set i_fcntl
11045 eval $setvar
11046
11047 : check for non-blocking I/O stuff
11048 case "$h_sysfile" in
11049 true) echo "#include <sys/file.h>" > head.c;;
11050 *)
11051        case "$h_fcntl" in
11052        true) echo "#include <fcntl.h>" > head.c;;
11053        *) echo "#include <sys/fcntl.h>" > head.c;;
11054        esac
11055        ;;
11056 esac
11057 echo " "
11058 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11059 case "$o_nonblock" in
11060 '')
11061         $cat head.c > try.c
11062         $cat >>try.c <<EOCP
11063 #include <stdio.h>
11064 #include <stdlib.h>
11065 #$i_fcntl I_FCNTL
11066 #ifdef I_FCNTL
11067 #include <fcntl.h>
11068 #endif
11069 int main() {
11070 #ifdef O_NONBLOCK
11071         printf("O_NONBLOCK\n");
11072         exit(0);
11073 #endif
11074 #ifdef O_NDELAY
11075         printf("O_NDELAY\n");
11076         exit(0);
11077 #endif
11078 #ifdef FNDELAY
11079         printf("FNDELAY\n");
11080         exit(0);
11081 #endif
11082         exit(0);
11083 }
11084 EOCP
11085         set try
11086         if eval $compile_ok; then
11087                 o_nonblock=`$run ./try`
11088                 case "$o_nonblock" in
11089                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11090                 *) echo "Seems like we can use $o_nonblock.";;
11091                 esac
11092         else
11093                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11094         fi
11095         ;;
11096 *) echo "Using $hint value $o_nonblock.";;
11097 esac
11098 $rm -f try try.* .out core
11099
11100 echo " "
11101 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11102 case "$eagain" in
11103 '')
11104         $cat head.c > try.c
11105         $cat >>try.c <<EOCP
11106 #include <errno.h>
11107 #include <sys/types.h>
11108 #include <signal.h>
11109 #include <stdio.h> 
11110 #include <stdlib.h> 
11111 #$i_fcntl I_FCNTL
11112 #ifdef I_FCNTL
11113 #include <fcntl.h>
11114 #endif
11115 #define MY_O_NONBLOCK $o_nonblock
11116 #ifndef errno  /* XXX need better Configure test */
11117 extern int errno;
11118 #endif
11119 #$i_unistd I_UNISTD
11120 #ifdef I_UNISTD
11121 #include <unistd.h>
11122 #endif
11123 #$i_string I_STRING
11124 #ifdef I_STRING
11125 #include <string.h>
11126 #else
11127 #include <strings.h>
11128 #endif
11129 $signal_t blech(x) int x; { exit(3); }
11130 EOCP
11131         $cat >> try.c <<'EOCP'
11132 int main()
11133 {
11134         int pd[2];
11135         int pu[2];
11136         char buf[1];
11137         char string[100];
11138
11139         pipe(pd);       /* Down: child -> parent */
11140         pipe(pu);       /* Up: parent -> child */
11141         if (0 != fork()) {
11142                 int ret;
11143                 close(pd[1]);   /* Parent reads from pd[0] */
11144                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11145 #ifdef F_SETFL
11146                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11147                         exit(1);
11148 #else
11149                 exit(4);
11150 #endif
11151                 signal(SIGALRM, blech);
11152                 alarm(5);
11153                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11154                         exit(2);
11155                 sprintf(string, "%d\n", ret);
11156                 write(2, string, strlen(string));
11157                 alarm(0);
11158 #ifdef EAGAIN
11159                 if (errno == EAGAIN) {
11160                         printf("EAGAIN\n");
11161                         goto ok;
11162                 }
11163 #endif
11164 #ifdef EWOULDBLOCK
11165                 if (errno == EWOULDBLOCK)
11166                         printf("EWOULDBLOCK\n");
11167 #endif
11168         ok:
11169                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11170                 sleep(2);                               /* Give it time to close our pipe */
11171                 alarm(5);
11172                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11173                 alarm(0);
11174                 sprintf(string, "%d\n", ret);
11175                 write(4, string, strlen(string));
11176                 exit(0);
11177         }
11178
11179         close(pd[0]);                   /* We write to pd[1] */
11180         close(pu[1]);                   /* We read from pu[0] */
11181         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11182         close(pd[1]);                   /* Pipe pd is now fully closed! */
11183         exit(0);                                /* Bye bye, thank you for playing! */
11184 }
11185 EOCP
11186         set try
11187         if eval $compile_ok; then
11188                 echo "$startsh" >mtry
11189                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11190                 chmod +x mtry
11191                 ./mtry >/dev/null 2>&1
11192                 case $? in
11193                 0) eagain=`$cat try.out`;;
11194                 1) echo "Could not perform non-blocking setting!";;
11195                 2) echo "I did a successful read() for something that was not there!";;
11196                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11197                 4) echo "Could not find F_SETFL!";;
11198                 *) echo "Something terribly wrong happened during testing.";;
11199                 esac
11200                 rd_nodata=`$cat try.ret`
11201                 echo "A read() system call with no data present returns $rd_nodata."
11202                 case "$rd_nodata" in
11203                 0|-1) ;;
11204                 *)
11205                         echo "(That's peculiar, fixing that to be -1.)"
11206                         rd_nodata=-1
11207                         ;;
11208                 esac
11209                 case "$eagain" in
11210                 '')
11211                         echo "Forcing errno EAGAIN on read() with no data available."
11212                         eagain=EAGAIN
11213                         ;;
11214                 *)
11215                         echo "Your read() sets errno to $eagain when no data is available."
11216                         ;;
11217                 esac
11218                 status=`$cat try.err`
11219                 case "$status" in
11220                 0) echo "And it correctly returns 0 to signal EOF.";;
11221                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11222                 *) echo "However, your read() returns '$status' on EOF??";;
11223                 esac
11224                 val="$define"
11225                 if test "$status" = "$rd_nodata"; then
11226                         echo "WARNING: you can't distinguish between EOF and no data!"
11227                         val="$undef"
11228                 fi
11229         else
11230                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11231                 eagain=EAGAIN
11232         fi
11233         set d_eofnblk
11234         eval $setvar
11235         ;;
11236 *)
11237         echo "Using $hint value $eagain."
11238         echo "Your read() returns $rd_nodata when no data is present."
11239         case "$d_eofnblk" in
11240         "$define") echo "And you can see EOF because read() returns 0.";;
11241         "$undef") echo "But you can't see EOF status from read() returned value.";;
11242         *)
11243                 echo "(Assuming you can't see EOF status from read anyway.)"
11244                 d_eofnblk=$undef
11245                 ;;
11246         esac
11247         ;;
11248 esac
11249 $rm -f try try.* .out core head.c mtry
11250
11251 : see if fchdir exists
11252 set fchdir d_fchdir
11253 eval $inlibc
11254
11255 : see if fchmod exists
11256 set fchmod d_fchmod
11257 eval $inlibc
11258
11259 : see if fchown exists
11260 set fchown d_fchown
11261 eval $inlibc
11262
11263 : see if this is an fcntl system
11264 set fcntl d_fcntl
11265 eval $inlibc
11266
11267 echo " "
11268 : See if fcntl-based locking works.
11269 $cat >try.c <<EOCP
11270 #include <stdlib.h>
11271 #include <unistd.h>
11272 #include <fcntl.h>
11273 #include <signal.h>
11274 $signal_t blech(x) int x; { exit(3); }
11275 int main() {
11276 #if defined(F_SETLK) && defined(F_SETLKW)
11277      struct flock flock;
11278      int retval, fd;
11279      fd = open("try.c", O_RDONLY);
11280      flock.l_type = F_RDLCK;
11281      flock.l_whence = SEEK_SET;
11282      flock.l_start = flock.l_len = 0;
11283      signal(SIGALRM, blech);
11284      alarm(10);
11285      retval = fcntl(fd, F_SETLK, &flock);
11286      close(fd);
11287      (retval < 0 ? exit(2) : exit(0));
11288 #else
11289      exit(2);
11290 #endif
11291 }
11292 EOCP
11293 echo "Checking if fcntl-based file locking works... "
11294 case "$d_fcntl" in
11295 "$define")
11296         set try
11297         if eval $compile_ok; then
11298                 if $run ./try; then
11299                         echo "Yes, it seems to work."
11300                         val="$define"
11301                 else
11302                         echo "Nope, it didn't work."
11303                         val="$undef"
11304                         case "$?" in
11305                         3) $cat >&4 <<EOM
11306 ***
11307 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11308 *** This is (almost) impossible.
11309 *** If your NFS lock daemons are not feeling well, something like
11310 *** this may happen, please investigate.  Cannot continue, aborting.
11311 ***
11312 EOM
11313                                 exit 1
11314                                 ;;
11315                         esac
11316                 fi
11317         else
11318                 echo "I'm unable to compile the test program, so I'll assume not."
11319                 val="$undef"
11320         fi
11321         ;;
11322 *) val="$undef";
11323         echo "Nope, since you don't even have fcntl()."
11324         ;;
11325 esac
11326 set d_fcntl_can_lock
11327 eval $setvar
11328 $rm -f try*
11329
11330
11331 : check for fd_set items
11332 $cat <<EOM
11333
11334 Checking to see how well your C compiler handles fd_set and friends ...
11335 EOM
11336 $cat >try.c <<EOCP
11337 #$i_systime I_SYS_TIME
11338 #$i_sysselct I_SYS_SELECT
11339 #$d_socket HAS_SOCKET
11340 #include <sys/types.h>
11341 #ifdef HAS_SOCKET
11342 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11343 #endif
11344 #ifdef I_SYS_TIME
11345 #include <sys/time.h>
11346 #endif
11347 #ifdef I_SYS_SELECT
11348 #include <sys/select.h>
11349 #endif
11350 int main() {
11351         fd_set fds;
11352
11353 #ifdef TRYBITS
11354         if(fds.fds_bits);
11355 #endif
11356
11357 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11358         exit(0);
11359 #else
11360         exit(1);
11361 #endif
11362 }
11363 EOCP
11364 set try -DTRYBITS
11365 if eval $compile; then
11366         d_fds_bits="$define"
11367         d_fd_set="$define"
11368         echo "Well, your system knows about the normal fd_set typedef..." >&4
11369         if $run ./try; then
11370                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11371                 d_fd_macros="$define"
11372         else
11373                 $cat >&4 <<'EOM'
11374 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
11375 EOM
11376                 d_fd_macros="$undef"
11377         fi
11378 else
11379         $cat <<'EOM'
11380 Hmm, your compiler has some difficulty with fd_set.  Checking further...
11381 EOM
11382         set try
11383         if eval $compile; then
11384                 d_fds_bits="$undef"
11385                 d_fd_set="$define"
11386                 echo "Well, your system has some sort of fd_set available..." >&4
11387                 if $run ./try; then
11388                         echo "and you have the normal fd_set macros." >&4
11389                         d_fd_macros="$define"
11390                 else
11391                         $cat <<'EOM'
11392 but not the normal fd_set macros!  Gross!  More work for me...
11393 EOM
11394                         d_fd_macros="$undef"
11395                 fi
11396         else
11397         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
11398                 d_fd_set="$undef"
11399                 d_fds_bits="$undef"
11400                 d_fd_macros="$undef"
11401         fi
11402 fi
11403 $rm -f try try.*
11404
11405 : see if fgetpos exists
11406 set fgetpos d_fgetpos
11407 eval $inlibc
11408
11409 : see if finite exists
11410 set finite d_finite
11411 eval $inlibc
11412
11413 : see if finitel exists
11414 set finitel d_finitel
11415 eval $inlibc
11416
11417 : see if flock exists
11418 set flock d_flock
11419 eval $inlibc
11420
11421 : see if prototype for flock is available
11422 echo " "
11423 set d_flockproto flock $i_sysfile sys/file.h
11424 eval $hasproto
11425
11426 : see if fork exists
11427 set fork d_fork
11428 eval $inlibc
11429
11430 : see if fp_class exists
11431 set fp_class d_fp_class
11432 eval $inlibc
11433
11434 : see if pathconf exists
11435 set pathconf d_pathconf
11436 eval $inlibc
11437
11438 : see if fpathconf exists
11439 set fpathconf d_fpathconf
11440 eval $inlibc
11441
11442 : see if fpclass exists
11443 set fpclass d_fpclass
11444 eval $inlibc
11445
11446 : see if fpclassify exists
11447 set fpclassify d_fpclassify
11448 eval $inlibc
11449
11450 : see if fpclassl exists
11451 set fpclassl d_fpclassl
11452 eval $inlibc
11453
11454
11455 : check for fpos64_t
11456 echo " "
11457 echo "Checking to see if you have fpos64_t..." >&4
11458 $cat >try.c <<EOCP
11459 #include <stdio.h>
11460 int main() { fpos64_t x = 7; }
11461 EOCP
11462 set try
11463 if eval $compile; then
11464         val="$define"
11465         echo "You have fpos64_t."
11466 else
11467         val="$undef"
11468         echo "You do not have fpos64_t."
11469         case "$fpossize" in
11470         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11471         esac
11472 fi
11473 $rm -f try.* try
11474 set d_fpos64_t
11475 eval $setvar
11476
11477 : see if frexpl exists
11478 set frexpl d_frexpl
11479 eval $inlibc
11480
11481 : see if this is a sys/param system
11482 set sys/param.h i_sysparam
11483 eval $inhdr
11484
11485 : see if this is a sys/mount.h system
11486 set sys/mount.h i_sysmount
11487 eval $inhdr
11488
11489
11490 echo " "
11491 echo "Checking to see if your system supports struct fs_data..." >&4
11492 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11493 eval $hasstruct
11494 case "$d_fs_data_s" in
11495 "$define")      echo "Yes, it does."   ;;
11496 *)              echo "No, it doesn't." ;;
11497 esac
11498
11499 : see if fseeko exists
11500 set fseeko d_fseeko
11501 eval $inlibc
11502 case "$longsize" in
11503 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11504 esac
11505
11506 : see if fsetpos exists
11507 set fsetpos d_fsetpos
11508 eval $inlibc
11509
11510
11511 : see if fstatfs exists
11512 set fstatfs d_fstatfs
11513 eval $inlibc
11514
11515
11516 : see if statvfs exists
11517 set statvfs d_statvfs
11518 eval $inlibc
11519
11520 : see if fstatvfs exists
11521 set fstatvfs d_fstatvfs
11522 eval $inlibc
11523
11524
11525 : see if fsync exists
11526 set fsync d_fsync
11527 eval $inlibc
11528
11529 : see if ftello exists
11530 set ftello d_ftello
11531 eval $inlibc
11532 case "$longsize" in
11533 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11534 esac
11535
11536 : see if getcwd exists
11537 set getcwd d_getcwd
11538 eval $inlibc
11539
11540 : see if getespwnam exists
11541 set getespwnam d_getespwnam
11542 eval $inlibc
11543
11544
11545 : see if getfsstat exists
11546 set getfsstat d_getfsstat
11547 eval $inlibc
11548
11549 : see if getgrent exists
11550 set getgrent d_getgrent
11551 eval $inlibc
11552
11553 : see if getgrent_r exists
11554 set getgrent_r d_getgrent_r
11555 eval $inlibc
11556 case "$d_getgrent_r" in
11557 "$define")
11558         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11559         case "grp" in
11560         time)
11561                 hdrs="$hdrs $i_systime sys/time.h"
11562                 ;;
11563         esac
11564         case "$d_getgrent_r_proto:$usethreads" in
11565         ":define")      d_getgrent_r_proto=define
11566                 set d_getgrent_r_proto getgrent_r $hdrs
11567                 eval $hasproto ;;
11568         *)      ;;
11569         esac
11570         case "$d_getgrent_r_proto" in
11571         define)
11572         case "$getgrent_r_proto" in
11573         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
11574         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
11575         esac
11576         case "$getgrent_r_proto" in
11577         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
11578         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
11579         esac
11580         case "$getgrent_r_proto" in
11581         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
11582         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
11583         esac
11584         case "$getgrent_r_proto" in
11585         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
11586         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
11587         esac
11588         case "$getgrent_r_proto" in
11589         ''|0) try='int getgrent_r(struct group*, char*, int);'
11590         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
11591         esac
11592         case "$getgrent_r_proto" in
11593         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
11594         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
11595         esac
11596         case "$getgrent_r_proto" in
11597         ''|0)   d_getgrent_r=undef
11598                 getgrent_r_proto=0
11599                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
11600         * )     case "$getgrent_r_proto" in
11601                 REENTRANT_PROTO*) ;;
11602                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
11603                 esac
11604                 echo "Prototype: $try" ;;
11605         esac
11606         ;;
11607         *)      case "$usethreads" in
11608                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
11609                 esac
11610                 d_getgrent_r=undef
11611                 getgrent_r_proto=0
11612                 ;;
11613         esac
11614         ;;
11615 *)      getgrent_r_proto=0
11616         ;;
11617 esac
11618
11619 : see if getgrgid_r exists
11620 set getgrgid_r d_getgrgid_r
11621 eval $inlibc
11622 case "$d_getgrgid_r" in
11623 "$define")
11624         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11625         case "grp" in
11626         time)
11627                 hdrs="$hdrs $i_systime sys/time.h"
11628                 ;;
11629         esac
11630         case "$d_getgrgid_r_proto:$usethreads" in
11631         ":define")      d_getgrgid_r_proto=define
11632                 set d_getgrgid_r_proto getgrgid_r $hdrs
11633                 eval $hasproto ;;
11634         *)      ;;
11635         esac
11636         case "$d_getgrgid_r_proto" in
11637         define)
11638         case "$getgrgid_r_proto" in
11639         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
11640         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
11641         esac
11642         case "$getgrgid_r_proto" in
11643         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
11644         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
11645         esac
11646         case "$getgrgid_r_proto" in
11647         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
11648         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
11649         esac
11650         case "$getgrgid_r_proto" in
11651         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
11652         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
11653         esac
11654         case "$getgrgid_r_proto" in
11655         ''|0)   d_getgrgid_r=undef
11656                 getgrgid_r_proto=0
11657                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
11658         * )     case "$getgrgid_r_proto" in
11659                 REENTRANT_PROTO*) ;;
11660                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
11661                 esac
11662                 echo "Prototype: $try" ;;
11663         esac
11664         ;;
11665         *)      case "$usethreads" in
11666                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
11667                 esac
11668                 d_getgrgid_r=undef
11669                 getgrgid_r_proto=0
11670                 ;;
11671         esac
11672         ;;
11673 *)      getgrgid_r_proto=0
11674         ;;
11675 esac
11676
11677 : see if getgrnam_r exists
11678 set getgrnam_r d_getgrnam_r
11679 eval $inlibc
11680 case "$d_getgrnam_r" in
11681 "$define")
11682         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11683         case "grp" in
11684         time)
11685                 hdrs="$hdrs $i_systime sys/time.h"
11686                 ;;
11687         esac
11688         case "$d_getgrnam_r_proto:$usethreads" in
11689         ":define")      d_getgrnam_r_proto=define
11690                 set d_getgrnam_r_proto getgrnam_r $hdrs
11691                 eval $hasproto ;;
11692         *)      ;;
11693         esac
11694         case "$d_getgrnam_r_proto" in
11695         define)
11696         case "$getgrnam_r_proto" in
11697         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
11698         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
11699         esac
11700         case "$getgrnam_r_proto" in
11701         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
11702         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
11703         esac
11704         case "$getgrnam_r_proto" in
11705         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
11706         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
11707         esac
11708         case "$getgrnam_r_proto" in
11709         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
11710         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
11711         esac
11712         case "$getgrnam_r_proto" in
11713         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
11714         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
11715         esac
11716         case "$getgrnam_r_proto" in
11717         ''|0)   d_getgrnam_r=undef
11718                 getgrnam_r_proto=0
11719                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
11720         * )     case "$getgrnam_r_proto" in
11721                 REENTRANT_PROTO*) ;;
11722                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
11723                 esac
11724                 echo "Prototype: $try" ;;
11725         esac
11726         ;;
11727         *)      case "$usethreads" in
11728                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
11729                 esac
11730                 d_getgrnam_r=undef
11731                 getgrnam_r_proto=0
11732                 ;;
11733         esac
11734         ;;
11735 *)      getgrnam_r_proto=0
11736         ;;
11737 esac
11738
11739 : see if gethostbyaddr exists
11740 set gethostbyaddr d_gethbyaddr
11741 eval $inlibc
11742
11743 : see if gethostbyname exists
11744 set gethostbyname d_gethbyname
11745 eval $inlibc
11746
11747 : see if gethostent exists
11748 set gethostent d_gethent
11749 eval $inlibc
11750
11751 : see how we will look up host name
11752 echo " "
11753 call=''
11754 if set gethostname val -f d_gethname; eval $csym; $val; then
11755         echo 'gethostname() found.' >&4
11756         d_gethname="$define"
11757         call=gethostname
11758 fi
11759 if set uname val -f d_uname; eval $csym; $val; then
11760         if ./xenix; then
11761                 $cat <<'EOM'
11762 uname() was found, but you're running xenix, and older versions of xenix
11763 have a broken uname(). If you don't really know whether your xenix is old
11764 enough to have a broken system call, use the default answer.
11765
11766 EOM
11767                 dflt=y
11768                 case "$d_uname" in
11769                 "$define") dflt=n;;
11770                 esac
11771                 rp='Is your uname() broken?'
11772                 . ./myread
11773                 case "$ans" in
11774                 n*) d_uname="$define"; call=uname;;
11775                 esac
11776         else
11777                 echo 'uname() found.' >&4
11778                 d_uname="$define"
11779                 case "$call" in
11780                 '') call=uname ;;
11781                 esac
11782         fi
11783 fi
11784 case "$d_gethname" in
11785 '') d_gethname="$undef";;
11786 esac
11787 case "$d_uname" in
11788 '') d_uname="$undef";;
11789 esac
11790 case "$d_uname$d_gethname" in
11791 *define*)
11792         dflt=n
11793         cat <<EOM
11794  
11795 Every now and then someone has a $call() that lies about the hostname
11796 but can't be fixed for political or economic reasons.  If you wish, I can
11797 pretend $call() isn't there and maybe compute hostname at run-time
11798 thanks to the '$phostname' command.
11799
11800 EOM
11801         rp="Shall I ignore $call() from now on?"
11802         . ./myread
11803         case "$ans" in
11804         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
11805         esac;;
11806 esac
11807 case "$phostname" in
11808 '') aphostname='';;
11809 *) case "$aphostname" in
11810         /*) ;;
11811         *) set X $phostname
11812                 shift
11813                 file=$1
11814                 shift
11815                 file=`./loc $file $file $pth`
11816                 aphostname=`echo $file $*`
11817                 ;;
11818         esac
11819         ;;
11820 esac
11821 case "$d_uname$d_gethname" in
11822 *define*) ;;
11823 *)
11824         case "$phostname" in
11825         '')
11826                 echo "There will be no way for $package to get your hostname." >&4;;
11827         *)
11828         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
11829                 ;;
11830         esac;;
11831 esac
11832 case "$d_phostname" in
11833 '') d_phostname="$undef";;
11834 esac
11835
11836 : see if gethostbyaddr_r exists
11837 set gethostbyaddr_r d_gethostbyaddr_r
11838 eval $inlibc
11839 case "$d_gethostbyaddr_r" in
11840 "$define")
11841         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11842         case "netdb" in
11843         time)
11844                 hdrs="$hdrs $i_systime sys/time.h"
11845                 ;;
11846         esac
11847         case "$d_gethostbyaddr_r_proto:$usethreads" in
11848         ":define")      d_gethostbyaddr_r_proto=define
11849                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
11850                 eval $hasproto ;;
11851         *)      ;;
11852         esac
11853         case "$d_gethostbyaddr_r_proto" in
11854         define)
11855         case "$gethostbyaddr_r_proto" in
11856         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
11857         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
11858         esac
11859         case "$gethostbyaddr_r_proto" in
11860         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
11861         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
11862         esac
11863         case "$gethostbyaddr_r_proto" in
11864         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
11865         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
11866         esac
11867         case "$gethostbyaddr_r_proto" in
11868         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
11869         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
11870         esac
11871         case "$gethostbyaddr_r_proto" in
11872         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
11873         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
11874         esac
11875         case "$gethostbyaddr_r_proto" in
11876         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
11877         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
11878         esac
11879         case "$gethostbyaddr_r_proto" in
11880         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
11881         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
11882         esac
11883         case "$gethostbyaddr_r_proto" in
11884         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
11885         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
11886         esac
11887         case "$gethostbyaddr_r_proto" in
11888         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
11889         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
11890         esac
11891         case "$gethostbyaddr_r_proto" in
11892         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
11893         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
11894         esac
11895         case "$gethostbyaddr_r_proto" in
11896         ''|0)   d_gethostbyaddr_r=undef
11897                 gethostbyaddr_r_proto=0
11898                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
11899         * )     case "$gethostbyaddr_r_proto" in
11900                 REENTRANT_PROTO*) ;;
11901                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
11902                 esac
11903                 echo "Prototype: $try" ;;
11904         esac
11905         ;;
11906         *)      case "$usethreads" in
11907                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
11908                 esac
11909                 d_gethostbyaddr_r=undef
11910                 gethostbyaddr_r_proto=0
11911                 ;;
11912         esac
11913         ;;
11914 *)      gethostbyaddr_r_proto=0
11915         ;;
11916 esac
11917
11918 : see if gethostbyname_r exists
11919 set gethostbyname_r d_gethostbyname_r
11920 eval $inlibc
11921 case "$d_gethostbyname_r" in
11922 "$define")
11923         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11924         case "netdb" in
11925         time)
11926                 hdrs="$hdrs $i_systime sys/time.h"
11927                 ;;
11928         esac
11929         case "$d_gethostbyname_r_proto:$usethreads" in
11930         ":define")      d_gethostbyname_r_proto=define
11931                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
11932                 eval $hasproto ;;
11933         *)      ;;
11934         esac
11935         case "$d_gethostbyname_r_proto" in
11936         define)
11937         case "$gethostbyname_r_proto" in
11938         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
11939         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
11940         esac
11941         case "$gethostbyname_r_proto" in
11942         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
11943         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
11944         esac
11945         case "$gethostbyname_r_proto" in
11946         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
11947         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
11948         esac
11949         case "$gethostbyname_r_proto" in
11950         ''|0)   d_gethostbyname_r=undef
11951                 gethostbyname_r_proto=0
11952                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
11953         * )     case "$gethostbyname_r_proto" in
11954                 REENTRANT_PROTO*) ;;
11955                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
11956                 esac
11957                 echo "Prototype: $try" ;;
11958         esac
11959         ;;
11960         *)      case "$usethreads" in
11961                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
11962                 esac
11963                 d_gethostbyname_r=undef
11964                 gethostbyname_r_proto=0
11965                 ;;
11966         esac
11967         ;;
11968 *)      gethostbyname_r_proto=0
11969         ;;
11970 esac
11971
11972 : see if gethostent_r exists
11973 set gethostent_r d_gethostent_r
11974 eval $inlibc
11975 case "$d_gethostent_r" in
11976 "$define")
11977         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11978         case "netdb" in
11979         time)
11980                 hdrs="$hdrs $i_systime sys/time.h"
11981                 ;;
11982         esac
11983         case "$d_gethostent_r_proto:$usethreads" in
11984         ":define")      d_gethostent_r_proto=define
11985                 set d_gethostent_r_proto gethostent_r $hdrs
11986                 eval $hasproto ;;
11987         *)      ;;
11988         esac
11989         case "$d_gethostent_r_proto" in
11990         define)
11991         case "$gethostent_r_proto" in
11992         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
11993         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
11994         esac
11995         case "$gethostent_r_proto" in
11996         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
11997         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
11998         esac
11999         case "$gethostent_r_proto" in
12000         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12001         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12002         esac
12003         case "$gethostent_r_proto" in
12004         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12005         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12006         esac
12007         case "$gethostent_r_proto" in
12008         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12009         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12010         esac
12011         case "$gethostent_r_proto" in
12012         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12013         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12014         esac
12015         case "$gethostent_r_proto" in
12016         ''|0)   d_gethostent_r=undef
12017                 gethostent_r_proto=0
12018                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12019         * )     case "$gethostent_r_proto" in
12020                 REENTRANT_PROTO*) ;;
12021                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12022                 esac
12023                 echo "Prototype: $try" ;;
12024         esac
12025         ;;
12026         *)      case "$usethreads" in
12027                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12028                 esac
12029                 d_gethostent_r=undef
12030                 gethostent_r_proto=0
12031                 ;;
12032         esac
12033         ;;
12034 *)      gethostent_r_proto=0
12035         ;;
12036 esac
12037
12038 : see if prototypes for various gethostxxx netdb.h functions are available
12039 echo " "
12040 set d_gethostprotos gethostent $i_netdb netdb.h
12041 eval $hasproto
12042
12043 : see if getitimer exists
12044 set getitimer d_getitimer
12045 eval $inlibc
12046
12047 : see if getlogin exists
12048 set getlogin d_getlogin
12049 eval $inlibc
12050
12051 : see if getlogin_r exists
12052 set getlogin_r d_getlogin_r
12053 eval $inlibc
12054 case "$d_getlogin_r" in
12055 "$define")
12056         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12057         case "unistd" in
12058         time)
12059                 hdrs="$hdrs $i_systime sys/time.h"
12060                 ;;
12061         esac
12062         case "$d_getlogin_r_proto:$usethreads" in
12063         ":define")      d_getlogin_r_proto=define
12064                 set d_getlogin_r_proto getlogin_r $hdrs
12065                 eval $hasproto ;;
12066         *)      ;;
12067         esac
12068         case "$d_getlogin_r_proto" in
12069         define)
12070         case "$getlogin_r_proto" in
12071         ''|0) try='int getlogin_r(char*, size_t);'
12072         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12073         esac
12074         case "$getlogin_r_proto" in
12075         ''|0) try='int getlogin_r(char*, int);'
12076         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12077         esac
12078         case "$getlogin_r_proto" in
12079         ''|0) try='char* getlogin_r(char*, size_t);'
12080         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12081         esac
12082         case "$getlogin_r_proto" in
12083         ''|0) try='char* getlogin_r(char*, int);'
12084         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12085         esac
12086         case "$getlogin_r_proto" in
12087         ''|0)   d_getlogin_r=undef
12088                 getlogin_r_proto=0
12089                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12090         * )     case "$getlogin_r_proto" in
12091                 REENTRANT_PROTO*) ;;
12092                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12093                 esac
12094                 echo "Prototype: $try" ;;
12095         esac
12096         ;;
12097         *)      case "$usethreads" in
12098                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12099                 esac
12100                 d_getlogin_r=undef
12101                 getlogin_r_proto=0
12102                 ;;
12103         esac
12104         ;;
12105 *)      getlogin_r_proto=0
12106         ;;
12107 esac
12108
12109 : see if getmnt exists
12110 set getmnt d_getmnt
12111 eval $inlibc
12112
12113 : see if getmntent exists
12114 set getmntent d_getmntent
12115 eval $inlibc
12116
12117 : see if getnetbyaddr exists
12118 set getnetbyaddr d_getnbyaddr
12119 eval $inlibc
12120
12121 : see if getnetbyname exists
12122 set getnetbyname d_getnbyname
12123 eval $inlibc
12124
12125 : see if getnetent exists
12126 set getnetent d_getnent
12127 eval $inlibc
12128
12129 : see if getnetbyaddr_r exists
12130 set getnetbyaddr_r d_getnetbyaddr_r
12131 eval $inlibc
12132 case "$d_getnetbyaddr_r" in
12133 "$define")
12134         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12135         case "netdb" in
12136         time)
12137                 hdrs="$hdrs $i_systime sys/time.h"
12138                 ;;
12139         esac
12140         case "$d_getnetbyaddr_r_proto:$usethreads" in
12141         ":define")      d_getnetbyaddr_r_proto=define
12142                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12143                 eval $hasproto ;;
12144         *)      ;;
12145         esac
12146         case "$d_getnetbyaddr_r_proto" in
12147         define)
12148         case "$getnetbyaddr_r_proto" in
12149         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12150         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12151         esac
12152         case "$getnetbyaddr_r_proto" in
12153         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12154         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12155         esac
12156         case "$getnetbyaddr_r_proto" in
12157         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12158         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12159         esac
12160         case "$getnetbyaddr_r_proto" in
12161         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12162         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12163         esac
12164         case "$getnetbyaddr_r_proto" in
12165         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12166         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12167         esac
12168         case "$getnetbyaddr_r_proto" in
12169         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12170         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12171         esac
12172         case "$getnetbyaddr_r_proto" in
12173         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12174         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12175         esac
12176         case "$getnetbyaddr_r_proto" in
12177         ''|0)   d_getnetbyaddr_r=undef
12178                 getnetbyaddr_r_proto=0
12179                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12180         * )     case "$getnetbyaddr_r_proto" in
12181                 REENTRANT_PROTO*) ;;
12182                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12183                 esac
12184                 echo "Prototype: $try" ;;
12185         esac
12186         ;;
12187         *)      case "$usethreads" in
12188                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12189                 esac
12190                 d_getnetbyaddr_r=undef
12191                 getnetbyaddr_r_proto=0
12192                 ;;
12193         esac
12194         ;;
12195 *)      getnetbyaddr_r_proto=0
12196         ;;
12197 esac
12198
12199 : see if getnetbyname_r exists
12200 set getnetbyname_r d_getnetbyname_r
12201 eval $inlibc
12202 case "$d_getnetbyname_r" in
12203 "$define")
12204         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12205         case "netdb" in
12206         time)
12207                 hdrs="$hdrs $i_systime sys/time.h"
12208                 ;;
12209         esac
12210         case "$d_getnetbyname_r_proto:$usethreads" in
12211         ":define")      d_getnetbyname_r_proto=define
12212                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12213                 eval $hasproto ;;
12214         *)      ;;
12215         esac
12216         case "$d_getnetbyname_r_proto" in
12217         define)
12218         case "$getnetbyname_r_proto" in
12219         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12220         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12221         esac
12222         case "$getnetbyname_r_proto" in
12223         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12224         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12225         esac
12226         case "$getnetbyname_r_proto" in
12227         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12228         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12229         esac
12230         case "$getnetbyname_r_proto" in
12231         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12232         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12233         esac
12234         case "$getnetbyname_r_proto" in
12235         ''|0)   d_getnetbyname_r=undef
12236                 getnetbyname_r_proto=0
12237                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12238         * )     case "$getnetbyname_r_proto" in
12239                 REENTRANT_PROTO*) ;;
12240                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12241                 esac
12242                 echo "Prototype: $try" ;;
12243         esac
12244         ;;
12245         *)      case "$usethreads" in
12246                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12247                 esac
12248                 d_getnetbyname_r=undef
12249                 getnetbyname_r_proto=0
12250                 ;;
12251         esac
12252         ;;
12253 *)      getnetbyname_r_proto=0
12254         ;;
12255 esac
12256
12257 : see if getnetent_r exists
12258 set getnetent_r d_getnetent_r
12259 eval $inlibc
12260 case "$d_getnetent_r" in
12261 "$define")
12262         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12263         case "netdb" in
12264         time)
12265                 hdrs="$hdrs $i_systime sys/time.h"
12266                 ;;
12267         esac
12268         case "$d_getnetent_r_proto:$usethreads" in
12269         ":define")      d_getnetent_r_proto=define
12270                 set d_getnetent_r_proto getnetent_r $hdrs
12271                 eval $hasproto ;;
12272         *)      ;;
12273         esac
12274         case "$d_getnetent_r_proto" in
12275         define)
12276         case "$getnetent_r_proto" in
12277         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12278         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12279         esac
12280         case "$getnetent_r_proto" in
12281         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12282         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12283         esac
12284         case "$getnetent_r_proto" in
12285         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12286         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12287         esac
12288         case "$getnetent_r_proto" in
12289         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12290         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12291         esac
12292         case "$getnetent_r_proto" in
12293         ''|0) try='int getnetent_r(struct netent*, char*, int);'
12294         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12295         esac
12296         case "$getnetent_r_proto" in
12297         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12298         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12299         esac
12300         case "$getnetent_r_proto" in
12301         ''|0)   d_getnetent_r=undef
12302                 getnetent_r_proto=0
12303                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
12304         * )     case "$getnetent_r_proto" in
12305                 REENTRANT_PROTO*) ;;
12306                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12307                 esac
12308                 echo "Prototype: $try" ;;
12309         esac
12310         ;;
12311         *)      case "$usethreads" in
12312                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12313                 esac
12314                 d_getnetent_r=undef
12315                 getnetent_r_proto=0
12316                 ;;
12317         esac
12318         ;;
12319 *)      getnetent_r_proto=0
12320         ;;
12321 esac
12322
12323 : see if prototypes for various getnetxxx netdb.h functions are available
12324 echo " "
12325 set d_getnetprotos getnetent $i_netdb netdb.h
12326 eval $hasproto
12327
12328 : see if getpagesize exists
12329 set getpagesize d_getpagsz
12330 eval $inlibc
12331
12332
12333 : see if getprotobyname exists
12334 set getprotobyname d_getpbyname
12335 eval $inlibc
12336
12337 : see if getprotobynumber exists
12338 set getprotobynumber d_getpbynumber
12339 eval $inlibc
12340
12341 : see if getprotoent exists
12342 set getprotoent d_getpent
12343 eval $inlibc
12344
12345 : see if getpgid exists
12346 set getpgid d_getpgid
12347 eval $inlibc
12348
12349 : see if getpgrp2 exists
12350 set getpgrp2 d_getpgrp2
12351 eval $inlibc
12352
12353 : see if getppid exists
12354 set getppid d_getppid
12355 eval $inlibc
12356
12357 : see if getpriority exists
12358 set getpriority d_getprior
12359 eval $inlibc
12360
12361 : see if getprotobyname_r exists
12362 set getprotobyname_r d_getprotobyname_r
12363 eval $inlibc
12364 case "$d_getprotobyname_r" in
12365 "$define")
12366         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12367         case "netdb" in
12368         time)
12369                 hdrs="$hdrs $i_systime sys/time.h"
12370                 ;;
12371         esac
12372         case "$d_getprotobyname_r_proto:$usethreads" in
12373         ":define")      d_getprotobyname_r_proto=define
12374                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12375                 eval $hasproto ;;
12376         *)      ;;
12377         esac
12378         case "$d_getprotobyname_r_proto" in
12379         define)
12380         case "$getprotobyname_r_proto" in
12381         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12382         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12383         esac
12384         case "$getprotobyname_r_proto" in
12385         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12386         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12387         esac
12388         case "$getprotobyname_r_proto" in
12389         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12390         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12391         esac
12392         case "$getprotobyname_r_proto" in
12393         ''|0)   d_getprotobyname_r=undef
12394                 getprotobyname_r_proto=0
12395                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
12396         * )     case "$getprotobyname_r_proto" in
12397                 REENTRANT_PROTO*) ;;
12398                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12399                 esac
12400                 echo "Prototype: $try" ;;
12401         esac
12402         ;;
12403         *)      case "$usethreads" in
12404                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12405                 esac
12406                 d_getprotobyname_r=undef
12407                 getprotobyname_r_proto=0
12408                 ;;
12409         esac
12410         ;;
12411 *)      getprotobyname_r_proto=0
12412         ;;
12413 esac
12414
12415 : see if getprotobynumber_r exists
12416 set getprotobynumber_r d_getprotobynumber_r
12417 eval $inlibc
12418 case "$d_getprotobynumber_r" in
12419 "$define")
12420         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12421         case "netdb" in
12422         time)
12423                 hdrs="$hdrs $i_systime sys/time.h"
12424                 ;;
12425         esac
12426         case "$d_getprotobynumber_r_proto:$usethreads" in
12427         ":define")      d_getprotobynumber_r_proto=define
12428                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12429                 eval $hasproto ;;
12430         *)      ;;
12431         esac
12432         case "$d_getprotobynumber_r_proto" in
12433         define)
12434         case "$getprotobynumber_r_proto" in
12435         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12436         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12437         esac
12438         case "$getprotobynumber_r_proto" in
12439         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12440         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12441         esac
12442         case "$getprotobynumber_r_proto" in
12443         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12444         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12445         esac
12446         case "$getprotobynumber_r_proto" in
12447         ''|0)   d_getprotobynumber_r=undef
12448                 getprotobynumber_r_proto=0
12449                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
12450         * )     case "$getprotobynumber_r_proto" in
12451                 REENTRANT_PROTO*) ;;
12452                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12453                 esac
12454                 echo "Prototype: $try" ;;
12455         esac
12456         ;;
12457         *)      case "$usethreads" in
12458                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12459                 esac
12460                 d_getprotobynumber_r=undef
12461                 getprotobynumber_r_proto=0
12462                 ;;
12463         esac
12464         ;;
12465 *)      getprotobynumber_r_proto=0
12466         ;;
12467 esac
12468
12469 : see if getprotoent_r exists
12470 set getprotoent_r d_getprotoent_r
12471 eval $inlibc
12472 case "$d_getprotoent_r" in
12473 "$define")
12474         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12475         case "netdb" in
12476         time)
12477                 hdrs="$hdrs $i_systime sys/time.h"
12478                 ;;
12479         esac
12480         case "$d_getprotoent_r_proto:$usethreads" in
12481         ":define")      d_getprotoent_r_proto=define
12482                 set d_getprotoent_r_proto getprotoent_r $hdrs
12483                 eval $hasproto ;;
12484         *)      ;;
12485         esac
12486         case "$d_getprotoent_r_proto" in
12487         define)
12488         case "$getprotoent_r_proto" in
12489         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12490         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12491         esac
12492         case "$getprotoent_r_proto" in
12493         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12494         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12495         esac
12496         case "$getprotoent_r_proto" in
12497         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12498         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12499         esac
12500         case "$getprotoent_r_proto" in
12501         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12502         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12503         esac
12504         case "$getprotoent_r_proto" in
12505         ''|0)   d_getprotoent_r=undef
12506                 getprotoent_r_proto=0
12507                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
12508         * )     case "$getprotoent_r_proto" in
12509                 REENTRANT_PROTO*) ;;
12510                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12511                 esac
12512                 echo "Prototype: $try" ;;
12513         esac
12514         ;;
12515         *)      case "$usethreads" in
12516                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12517                 esac
12518                 d_getprotoent_r=undef
12519                 getprotoent_r_proto=0
12520                 ;;
12521         esac
12522         ;;
12523 *)      getprotoent_r_proto=0
12524         ;;
12525 esac
12526
12527 : see if prototypes for various getprotoxxx netdb.h functions are available
12528 echo " "
12529 set d_getprotoprotos getprotoent $i_netdb netdb.h
12530 eval $hasproto
12531
12532 : see if getprpwnam exists
12533 set getprpwnam d_getprpwnam
12534 eval $inlibc
12535
12536 : see if getpwent exists
12537 set getpwent d_getpwent
12538 eval $inlibc
12539
12540 : see if getpwent_r exists
12541 set getpwent_r d_getpwent_r
12542 eval $inlibc
12543 case "$d_getpwent_r" in
12544 "$define")
12545         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12546         case "pwd" in
12547         time)
12548                 hdrs="$hdrs $i_systime sys/time.h"
12549                 ;;
12550         esac
12551         case "$d_getpwent_r_proto:$usethreads" in
12552         ":define")      d_getpwent_r_proto=define
12553                 set d_getpwent_r_proto getpwent_r $hdrs
12554                 eval $hasproto ;;
12555         *)      ;;
12556         esac
12557         case "$d_getpwent_r_proto" in
12558         define)
12559         case "$getpwent_r_proto" in
12560         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12561         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12562         esac
12563         case "$getpwent_r_proto" in
12564         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12565         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12566         esac
12567         case "$getpwent_r_proto" in
12568         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12569         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12570         esac
12571         case "$getpwent_r_proto" in
12572         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12573         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12574         esac
12575         case "$getpwent_r_proto" in
12576         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12577         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12578         esac
12579         case "$getpwent_r_proto" in
12580         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12581         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12582         esac
12583         case "$getpwent_r_proto" in
12584         ''|0)   d_getpwent_r=undef
12585                 getpwent_r_proto=0
12586                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
12587         * )     case "$getpwent_r_proto" in
12588                 REENTRANT_PROTO*) ;;
12589                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12590                 esac
12591                 echo "Prototype: $try" ;;
12592         esac
12593         ;;
12594         *)      case "$usethreads" in
12595                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
12596                 esac
12597                 d_getpwent_r=undef
12598                 getpwent_r_proto=0
12599                 ;;
12600         esac
12601         ;;
12602 *)      getpwent_r_proto=0
12603         ;;
12604 esac
12605
12606 : see if getpwnam_r exists
12607 set getpwnam_r d_getpwnam_r
12608 eval $inlibc
12609 case "$d_getpwnam_r" in
12610 "$define")
12611         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12612         case "pwd" in
12613         time)
12614                 hdrs="$hdrs $i_systime sys/time.h"
12615                 ;;
12616         esac
12617         case "$d_getpwnam_r_proto:$usethreads" in
12618         ":define")      d_getpwnam_r_proto=define
12619                 set d_getpwnam_r_proto getpwnam_r $hdrs
12620                 eval $hasproto ;;
12621         *)      ;;
12622         esac
12623         case "$d_getpwnam_r_proto" in
12624         define)
12625         case "$getpwnam_r_proto" in
12626         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12627         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12628         esac
12629         case "$getpwnam_r_proto" in
12630         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
12631         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
12632         esac
12633         case "$getpwnam_r_proto" in
12634         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
12635         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
12636         esac
12637         case "$getpwnam_r_proto" in
12638         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
12639         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
12640         esac
12641         case "$getpwnam_r_proto" in
12642         ''|0)   d_getpwnam_r=undef
12643                 getpwnam_r_proto=0
12644                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
12645         * )     case "$getpwnam_r_proto" in
12646                 REENTRANT_PROTO*) ;;
12647                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
12648                 esac
12649                 echo "Prototype: $try" ;;
12650         esac
12651         ;;
12652         *)      case "$usethreads" in
12653                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
12654                 esac
12655                 d_getpwnam_r=undef
12656                 getpwnam_r_proto=0
12657                 ;;
12658         esac
12659         ;;
12660 *)      getpwnam_r_proto=0
12661         ;;
12662 esac
12663
12664 : see if getpwuid_r exists
12665 set getpwuid_r d_getpwuid_r
12666 eval $inlibc
12667 case "$d_getpwuid_r" in
12668 "$define")
12669         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12670         case "pwd" in
12671         time)
12672                 hdrs="$hdrs $i_systime sys/time.h"
12673                 ;;
12674         esac
12675         case "$d_getpwuid_r_proto:$usethreads" in
12676         ":define")      d_getpwuid_r_proto=define
12677                 set d_getpwuid_r_proto getpwuid_r $hdrs
12678                 eval $hasproto ;;
12679         *)      ;;
12680         esac
12681         case "$d_getpwuid_r_proto" in
12682         define)
12683         case "$getpwuid_r_proto" in
12684         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
12685         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
12686         esac
12687         case "$getpwuid_r_proto" in
12688         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
12689         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
12690         esac
12691         case "$getpwuid_r_proto" in
12692         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
12693         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
12694         esac
12695         case "$getpwuid_r_proto" in
12696         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
12697         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
12698         esac
12699         case "$getpwuid_r_proto" in
12700         ''|0)   d_getpwuid_r=undef
12701                 getpwuid_r_proto=0
12702                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
12703         * )     case "$getpwuid_r_proto" in
12704                 REENTRANT_PROTO*) ;;
12705                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
12706                 esac
12707                 echo "Prototype: $try" ;;
12708         esac
12709         ;;
12710         *)      case "$usethreads" in
12711                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
12712                 esac
12713                 d_getpwuid_r=undef
12714                 getpwuid_r_proto=0
12715                 ;;
12716         esac
12717         ;;
12718 *)      getpwuid_r_proto=0
12719         ;;
12720 esac
12721
12722
12723 : see if getservbyname exists
12724 set getservbyname d_getsbyname
12725 eval $inlibc
12726
12727 : see if getservbyport exists
12728 set getservbyport d_getsbyport
12729 eval $inlibc
12730
12731 : see if getservent exists
12732 set getservent d_getsent
12733 eval $inlibc
12734
12735 : see if getservbyname_r exists
12736 set getservbyname_r d_getservbyname_r
12737 eval $inlibc
12738 case "$d_getservbyname_r" in
12739 "$define")
12740         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12741         case "netdb" in
12742         time)
12743                 hdrs="$hdrs $i_systime sys/time.h"
12744                 ;;
12745         esac
12746         case "$d_getservbyname_r_proto:$usethreads" in
12747         ":define")      d_getservbyname_r_proto=define
12748                 set d_getservbyname_r_proto getservbyname_r $hdrs
12749                 eval $hasproto ;;
12750         *)      ;;
12751         esac
12752         case "$d_getservbyname_r_proto" in
12753         define)
12754         case "$getservbyname_r_proto" in
12755         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
12756         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
12757         esac
12758         case "$getservbyname_r_proto" in
12759         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
12760         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
12761         esac
12762         case "$getservbyname_r_proto" in
12763         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
12764         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
12765         esac
12766         case "$getservbyname_r_proto" in
12767         ''|0)   d_getservbyname_r=undef
12768                 getservbyname_r_proto=0
12769                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
12770         * )     case "$getservbyname_r_proto" in
12771                 REENTRANT_PROTO*) ;;
12772                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
12773                 esac
12774                 echo "Prototype: $try" ;;
12775         esac
12776         ;;
12777         *)      case "$usethreads" in
12778                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
12779                 esac
12780                 d_getservbyname_r=undef
12781                 getservbyname_r_proto=0
12782                 ;;
12783         esac
12784         ;;
12785 *)      getservbyname_r_proto=0
12786         ;;
12787 esac
12788
12789 : see if getservbyport_r exists
12790 set getservbyport_r d_getservbyport_r
12791 eval $inlibc
12792 case "$d_getservbyport_r" in
12793 "$define")
12794         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12795         case "netdb" in
12796         time)
12797                 hdrs="$hdrs $i_systime sys/time.h"
12798                 ;;
12799         esac
12800         case "$d_getservbyport_r_proto:$usethreads" in
12801         ":define")      d_getservbyport_r_proto=define
12802                 set d_getservbyport_r_proto getservbyport_r $hdrs
12803                 eval $hasproto ;;
12804         *)      ;;
12805         esac
12806         case "$d_getservbyport_r_proto" in
12807         define)
12808         case "$getservbyport_r_proto" in
12809         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
12810         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
12811         esac
12812         case "$getservbyport_r_proto" in
12813         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
12814         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
12815         esac
12816         case "$getservbyport_r_proto" in
12817         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
12818         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
12819         esac
12820         case "$getservbyport_r_proto" in
12821         ''|0)   d_getservbyport_r=undef
12822                 getservbyport_r_proto=0
12823                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
12824         * )     case "$getservbyport_r_proto" in
12825                 REENTRANT_PROTO*) ;;
12826                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
12827                 esac
12828                 echo "Prototype: $try" ;;
12829         esac
12830         ;;
12831         *)      case "$usethreads" in
12832                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
12833                 esac
12834                 d_getservbyport_r=undef
12835                 getservbyport_r_proto=0
12836                 ;;
12837         esac
12838         ;;
12839 *)      getservbyport_r_proto=0
12840         ;;
12841 esac
12842
12843 : see if getservent_r exists
12844 set getservent_r d_getservent_r
12845 eval $inlibc
12846 case "$d_getservent_r" in
12847 "$define")
12848         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12849         case "netdb" in
12850         time)
12851                 hdrs="$hdrs $i_systime sys/time.h"
12852                 ;;
12853         esac
12854         case "$d_getservent_r_proto:$usethreads" in
12855         ":define")      d_getservent_r_proto=define
12856                 set d_getservent_r_proto getservent_r $hdrs
12857                 eval $hasproto ;;
12858         *)      ;;
12859         esac
12860         case "$d_getservent_r_proto" in
12861         define)
12862         case "$getservent_r_proto" in
12863         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
12864         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
12865         esac
12866         case "$getservent_r_proto" in
12867         ''|0) try='int getservent_r(struct servent*, char*, int);'
12868         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
12869         esac
12870         case "$getservent_r_proto" in
12871         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
12872         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
12873         esac
12874         case "$getservent_r_proto" in
12875         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
12876         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
12877         esac
12878         case "$getservent_r_proto" in
12879         ''|0)   d_getservent_r=undef
12880                 getservent_r_proto=0
12881                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
12882         * )     case "$getservent_r_proto" in
12883                 REENTRANT_PROTO*) ;;
12884                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
12885                 esac
12886                 echo "Prototype: $try" ;;
12887         esac
12888         ;;
12889         *)      case "$usethreads" in
12890                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
12891                 esac
12892                 d_getservent_r=undef
12893                 getservent_r_proto=0
12894                 ;;
12895         esac
12896         ;;
12897 *)      getservent_r_proto=0
12898         ;;
12899 esac
12900
12901 : see if prototypes for various getservxxx netdb.h functions are available
12902 echo " "
12903 set d_getservprotos getservent $i_netdb netdb.h
12904 eval $hasproto
12905
12906 : see if getspnam exists
12907 set getspnam d_getspnam
12908 eval $inlibc
12909
12910 : see if this is a shadow.h system
12911 set shadow.h i_shadow
12912 eval $inhdr
12913
12914 : see if getspnam_r exists
12915 set getspnam_r d_getspnam_r
12916 eval $inlibc
12917 case "$d_getspnam_r" in
12918 "$define")
12919         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
12920         case "shadow" in
12921         time)
12922                 hdrs="$hdrs $i_systime sys/time.h"
12923                 ;;
12924         esac
12925         case "$d_getspnam_r_proto:$usethreads" in
12926         ":define")      d_getspnam_r_proto=define
12927                 set d_getspnam_r_proto getspnam_r $hdrs
12928                 eval $hasproto ;;
12929         *)      ;;
12930         esac
12931         case "$d_getspnam_r_proto" in
12932         define)
12933         case "$getspnam_r_proto" in
12934         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
12935         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
12936         esac
12937         case "$getspnam_r_proto" in
12938         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
12939         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
12940         esac
12941         case "$getspnam_r_proto" in
12942         ''|0)   d_getspnam_r=undef
12943                 getspnam_r_proto=0
12944                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
12945         * )     case "$getspnam_r_proto" in
12946                 REENTRANT_PROTO*) ;;
12947                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
12948                 esac
12949                 echo "Prototype: $try" ;;
12950         esac
12951         ;;
12952         *)      case "$usethreads" in
12953                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
12954                 esac
12955                 d_getspnam_r=undef
12956                 getspnam_r_proto=0
12957                 ;;
12958         esac
12959         ;;
12960 *)      getspnam_r_proto=0
12961         ;;
12962 esac
12963
12964 : see if gettimeofday or ftime exists
12965 set gettimeofday d_gettimeod
12966 eval $inlibc
12967 case "$d_gettimeod" in
12968 "$undef")
12969         set ftime d_ftime 
12970         eval $inlibc
12971         ;;
12972 *)
12973         val="$undef"; set d_ftime; eval $setvar
12974         ;;
12975 esac
12976 case "$d_gettimeod$d_ftime" in
12977 "$undef$undef")
12978         echo " "
12979         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
12980         ;;
12981 esac
12982
12983 : see if gmtime_r exists
12984 set gmtime_r d_gmtime_r
12985 eval $inlibc
12986 case "$d_gmtime_r" in
12987 "$define")
12988         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
12989         case "time" in
12990         time)
12991                 hdrs="$hdrs $i_systime sys/time.h"
12992                 ;;
12993         esac
12994         case "$d_gmtime_r_proto:$usethreads" in
12995         ":define")      d_gmtime_r_proto=define
12996                 set d_gmtime_r_proto gmtime_r $hdrs
12997                 eval $hasproto ;;
12998         *)      ;;
12999         esac
13000         case "$d_gmtime_r_proto" in
13001         define)
13002         case "$gmtime_r_proto" in
13003         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13004         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13005         esac
13006         case "$gmtime_r_proto" in
13007         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13008         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13009         esac
13010         case "$gmtime_r_proto" in
13011         ''|0)   d_gmtime_r=undef
13012                 gmtime_r_proto=0
13013                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13014         * )     case "$gmtime_r_proto" in
13015                 REENTRANT_PROTO*) ;;
13016                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13017                 esac
13018                 echo "Prototype: $try" ;;
13019         esac
13020         ;;
13021         *)      case "$usethreads" in
13022                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13023                 esac
13024                 d_gmtime_r=undef
13025                 gmtime_r_proto=0
13026                 ;;
13027         esac
13028         ;;
13029 *)      gmtime_r_proto=0
13030         ;;
13031 esac
13032
13033 : see if hasmntopt exists
13034 set hasmntopt d_hasmntopt
13035 eval $inlibc
13036
13037 : see if this is a netinet/in.h or sys/in.h system
13038 set netinet/in.h i_niin sys/in.h i_sysin
13039 eval $inhdr
13040
13041 : see if arpa/inet.h has to be included
13042 set arpa/inet.h i_arpainet
13043 eval $inhdr
13044
13045 : see if htonl --and friends-- exists
13046 val=''
13047 set htonl val
13048 eval $inlibc
13049
13050 : Maybe they are macros.
13051 case "$val" in
13052 $undef)
13053         $cat >htonl.c <<EOM
13054 #include <stdio.h>
13055 #include <sys/types.h>
13056 #$i_niin I_NETINET_IN
13057 #$i_sysin I_SYS_IN
13058 #$i_arpainet I_ARPA_INET
13059 #ifdef I_NETINET_IN
13060 #include <netinet/in.h>
13061 #endif
13062 #ifdef I_SYS_IN
13063 #include <sys/in.h>
13064 #endif
13065 #ifdef I_ARPA_INET
13066 #include <arpa/inet.h>
13067 #endif
13068 #ifdef htonl
13069 printf("Defined as a macro.");
13070 #endif
13071 EOM
13072         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13073         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13074                 val="$define"
13075                 echo "But it seems to be defined as a macro." >&4
13076         fi
13077         $rm -f htonl.?
13078         ;;
13079 esac
13080 set d_htonl
13081 eval $setvar
13082
13083 : index or strchr
13084 echo " "
13085 if set index val -f; eval $csym; $val; then
13086         if set strchr val -f d_strchr; eval $csym; $val; then
13087                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13088                         val="$define"
13089                         vali="$undef"
13090                         echo "strchr() found." >&4
13091                 else
13092                         val="$undef"
13093                         vali="$define"
13094                         echo "index() found." >&4
13095                 fi
13096         else
13097                 val="$undef"
13098                 vali="$define"
13099                 echo "index() found." >&4
13100         fi
13101 else
13102         if set strchr val -f d_strchr; eval $csym; $val; then
13103                 val="$define"
13104                 vali="$undef"
13105                 echo "strchr() found." >&4
13106         else
13107                 echo "No index() or strchr() found!" >&4
13108                 val="$undef"
13109                 vali="$undef"
13110         fi
13111 fi
13112 set d_strchr; eval $setvar
13113 val="$vali"
13114 set d_index; eval $setvar
13115
13116 : check whether inet_aton exists
13117 set inet_aton d_inetaton
13118 eval $inlibc
13119
13120 : Look for isascii
13121 echo " "
13122 $cat >isascii.c <<'EOCP'
13123 #include <stdio.h>
13124 #include <ctype.h>
13125 int main() {
13126         int c = 'A';
13127         if (isascii(c))
13128                 exit(0);
13129         else
13130                 exit(1);
13131 }
13132 EOCP
13133 set isascii
13134 if eval $compile; then
13135         echo "isascii() found." >&4
13136         val="$define"
13137 else
13138         echo "isascii() NOT found." >&4
13139         val="$undef"
13140 fi
13141 set d_isascii
13142 eval $setvar
13143 $rm -f isascii*
13144
13145 : see if isfinite exists
13146 set isfinite d_isfinite
13147 eval $inlibc
13148
13149 : see if isinf exists
13150 set isinf d_isinf
13151 eval $inlibc
13152
13153 : see if isnan exists
13154 set isnan d_isnan
13155 eval $inlibc
13156
13157 : see if isnanl exists
13158 set isnanl d_isnanl
13159 eval $inlibc
13160
13161 : see if killpg exists
13162 set killpg d_killpg
13163 eval $inlibc
13164
13165 : see if lchown exists
13166 echo " "
13167 $cat > try.c <<'EOCP'
13168 /* System header to define __stub macros and hopefully few prototypes,
13169     which can conflict with char lchown(); below.  */
13170 #include <assert.h>
13171 /* Override any gcc2 internal prototype to avoid an error.  */
13172 /* We use char because int might match the return type of a gcc2
13173    builtin and then its argument prototype would still apply.  */
13174 char lchown();
13175 int main() {
13176     /*  The GNU C library defines this for functions which it implements
13177         to always fail with ENOSYS.  Some functions are actually named
13178         something starting with __ and the normal name is an alias.  */
13179 #if defined (__stub_lchown) || defined (__stub___lchown)
13180 choke me
13181 #else
13182 lchown();
13183 #endif
13184 ; return 0; }
13185 EOCP
13186 set try
13187 if eval $compile; then
13188     $echo "lchown() found." >&4
13189     val="$define"
13190 else
13191     $echo "lchown() NOT found." >&4
13192     val="$undef"
13193 fi
13194 set d_lchown
13195 eval $setvar
13196
13197 : See if number of significant digits in a double precision number is known
13198 echo " "
13199 $cat >ldbl_dig.c <<EOM
13200 #$i_limits I_LIMITS
13201 #$i_float I_FLOAT
13202 #ifdef I_LIMITS
13203 #include <limits.h>
13204 #endif
13205 #ifdef I_FLOAT
13206 #include <float.h>
13207 #endif
13208 #ifdef LDBL_DIG
13209 printf("Contains LDBL_DIG");
13210 #endif
13211 EOM
13212 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13213 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13214         echo "LDBL_DIG found." >&4
13215         val="$define"
13216 else
13217         echo "LDBL_DIG NOT found." >&4
13218         val="$undef"
13219 fi
13220 $rm -f ldbl_dig.?
13221 set d_ldbl_dig
13222 eval $setvar
13223
13224 : see if link exists
13225 set link d_link
13226 eval $inlibc
13227
13228 : see if localtime_r exists
13229 set localtime_r d_localtime_r
13230 eval $inlibc
13231 case "$d_localtime_r" in
13232 "$define")
13233         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
13234         case "time" in
13235         time)
13236                 hdrs="$hdrs $i_systime sys/time.h"
13237                 ;;
13238         esac
13239         case "$d_localtime_r_proto:$usethreads" in
13240         ":define")      d_localtime_r_proto=define
13241                 set d_localtime_r_proto localtime_r $hdrs
13242                 eval $hasproto ;;
13243         *)      ;;
13244         esac
13245         case "$d_localtime_r_proto" in
13246         define)
13247         case "$localtime_r_proto" in
13248         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13249         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13250         esac
13251         case "$localtime_r_proto" in
13252         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13253         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13254         esac
13255         case "$localtime_r_proto" in
13256         ''|0)   d_localtime_r=undef
13257                 localtime_r_proto=0
13258                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13259         * )     case "$localtime_r_proto" in
13260                 REENTRANT_PROTO*) ;;
13261                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13262                 esac
13263                 echo "Prototype: $try" ;;
13264         esac
13265         ;;
13266         *)      case "$usethreads" in
13267                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13268                 esac
13269                 d_localtime_r=undef
13270                 localtime_r_proto=0
13271                 ;;
13272         esac
13273         ;;
13274 *)      localtime_r_proto=0
13275         ;;
13276 esac
13277
13278 : see if localeconv exists
13279 set localeconv d_locconv
13280 eval $inlibc
13281
13282 : see if lockf exists
13283 set lockf d_lockf
13284 eval $inlibc
13285
13286 : see if prototype for lseek is available
13287 echo " "
13288 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13289 eval $hasproto
13290
13291 : see if lstat exists
13292 set lstat d_lstat
13293 eval $inlibc
13294
13295 : see if madvise exists
13296 set madvise d_madvise
13297 eval $inlibc
13298
13299 : see if mblen exists
13300 set mblen d_mblen
13301 eval $inlibc
13302
13303 : see if mbstowcs exists
13304 set mbstowcs d_mbstowcs
13305 eval $inlibc
13306
13307 : see if mbtowc exists
13308 set mbtowc d_mbtowc
13309 eval $inlibc
13310
13311 : see if memchr exists
13312 set memchr d_memchr
13313 eval $inlibc
13314
13315 : see if memcmp exists
13316 set memcmp d_memcmp
13317 eval $inlibc
13318
13319 : see if memcpy exists
13320 set memcpy d_memcpy
13321 eval $inlibc
13322
13323 : see if memmove exists
13324 set memmove d_memmove
13325 eval $inlibc
13326
13327 : see if memset exists
13328 set memset d_memset
13329 eval $inlibc
13330
13331 : see if mkdir exists
13332 set mkdir d_mkdir
13333 eval $inlibc
13334
13335 : see if mkdtemp exists
13336 set mkdtemp d_mkdtemp
13337 eval $inlibc
13338
13339 : see if mkfifo exists
13340 set mkfifo d_mkfifo
13341 eval $inlibc
13342
13343 : see if mkstemp exists
13344 set mkstemp d_mkstemp
13345 eval $inlibc
13346
13347 : see if mkstemps exists
13348 set mkstemps d_mkstemps
13349 eval $inlibc
13350
13351 : see if mktime exists
13352 set mktime d_mktime
13353 eval $inlibc
13354
13355 : see if this is a sys/mman.h system
13356 set sys/mman.h i_sysmman
13357 eval $inhdr
13358
13359 : see if mmap exists
13360 set mmap d_mmap
13361 eval $inlibc
13362 : see what shmat returns
13363 : default to something harmless
13364 mmaptype='void *'
13365 case "$i_sysmman$d_mmap" in
13366 "$define$define")
13367         $cat >mmap.c <<'END'
13368 #include <sys/mman.h>
13369 void *mmap();
13370 END
13371         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13372                 mmaptype='void *'
13373         else
13374                 mmaptype='caddr_t'
13375         fi
13376         echo "and it returns ($mmaptype)." >&4
13377         ;;
13378 esac
13379
13380
13381
13382 : see if mprotect exists
13383 set mprotect d_mprotect
13384 eval $inlibc
13385
13386 : see if msgctl exists
13387 set msgctl d_msgctl
13388 eval $inlibc
13389
13390 : see if msgget exists
13391 set msgget d_msgget
13392 eval $inlibc
13393
13394 : see if msgsnd exists
13395 set msgsnd d_msgsnd
13396 eval $inlibc
13397
13398 : see if msgrcv exists
13399 set msgrcv d_msgrcv
13400 eval $inlibc
13401
13402 : see how much of the 'msg*(2)' library is present.
13403 h_msg=true
13404 echo " "
13405 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13406 *"$undef"*) h_msg=false;;
13407 esac
13408 case "$osname" in
13409 freebsd)
13410     case "`ipcs 2>&1`" in
13411     "SVID messages"*"not configured"*)
13412         echo "Your $osname does not have the msg*(2) configured." >&4
13413         h_msg=false
13414         val="$undef"
13415         set msgctl d_msgctl
13416         eval $setvar
13417         set msgget d_msgget
13418         eval $setvar
13419         set msgsnd d_msgsnd
13420         eval $setvar
13421         set msgrcv d_msgrcv
13422         eval $setvar
13423         ;;
13424     esac
13425     ;;
13426 esac
13427 : we could also check for sys/ipc.h ...
13428 if $h_msg && $test `./findhdr sys/msg.h`; then
13429         echo "You have the full msg*(2) library." >&4
13430         val="$define"
13431 else
13432         echo "You don't have the full msg*(2) library." >&4
13433         val="$undef"
13434 fi
13435 set d_msg
13436 eval $setvar
13437
13438
13439 echo " "
13440 echo "Checking to see if your system supports struct msghdr..." >&4
13441 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13442 eval $hasstruct
13443 case "$d_msghdr_s" in
13444 "$define")      echo "Yes, it does."   ;;
13445 *)              echo "No, it doesn't." ;;
13446 esac
13447
13448
13449 : see if msync exists
13450 set msync d_msync
13451 eval $inlibc
13452
13453 : see if munmap exists
13454 set munmap d_munmap
13455 eval $inlibc
13456
13457 : see if nice exists
13458 set nice d_nice
13459 eval $inlibc
13460
13461 : see if this is a langinfo.h system
13462 set langinfo.h i_langinfo
13463 eval $inhdr
13464
13465 : see if nl_langinfo exists
13466 set nl_langinfo d_nl_langinfo
13467 eval $inlibc
13468
13469 : check for length of character
13470 echo " "
13471 case "$charsize" in
13472 '')
13473         echo "Checking to see how big your characters are (hey, you never know)..." >&4
13474         $cat >try.c <<'EOCP'
13475 #include <stdio.h>
13476 int main()
13477 {
13478     printf("%d\n", (int)sizeof(char));
13479     exit(0);
13480 }
13481 EOCP
13482         set try
13483         if eval $compile_ok; then
13484                 dflt=`$run ./try`
13485         else
13486                 dflt='1'
13487                 echo "(I can't seem to compile the test program.  Guessing...)"
13488         fi
13489         ;;
13490 *)
13491         dflt="$charsize"
13492         ;;
13493 esac
13494 rp="What is the size of a character (in bytes)?"
13495 . ./myread
13496 charsize="$ans"
13497 $rm -f try.c try
13498
13499 : check for volatile keyword
13500 echo " "
13501 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13502 $cat >try.c <<'EOCP'
13503 int main()
13504 {
13505         typedef struct _goo_struct goo_struct;
13506         goo_struct * volatile goo = ((goo_struct *)0);
13507         struct _goo_struct {
13508                 long long_int;
13509                 int reg_int;
13510                 char char_var;
13511         };
13512         typedef unsigned short foo_t;
13513         char *volatile foo;
13514         volatile int bar;
13515         volatile foo_t blech;
13516         foo = foo;
13517 }
13518 EOCP
13519 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13520         val="$define"
13521         echo "Yup, it does."
13522 else
13523         val="$undef"
13524         echo "Nope, it doesn't."
13525 fi
13526 set d_volatile
13527 eval $setvar
13528 $rm -f try.*
13529
13530
13531 echo " "
13532 $echo "Choosing the C types to be used for Perl's internal types..." >&4
13533
13534 case "$use64bitint:$d_quad:$quadtype" in
13535 define:define:?*)
13536         ivtype="$quadtype"
13537         uvtype="$uquadtype"
13538         ivsize=8
13539         uvsize=8
13540         ;;
13541 *)      ivtype="long"
13542         uvtype="unsigned long"
13543         ivsize=$longsize
13544         uvsize=$longsize
13545         ;;
13546 esac
13547
13548 case "$uselongdouble:$d_longdbl" in
13549 define:define)
13550         nvtype="long double"
13551         nvsize=$longdblsize
13552         ;;
13553 *)      nvtype=double
13554         nvsize=$doublesize
13555         ;;
13556 esac
13557
13558 $echo "(IV will be "$ivtype", $ivsize bytes)"
13559 $echo "(UV will be "$uvtype", $uvsize bytes)"
13560 $echo "(NV will be "$nvtype", $nvsize bytes)"
13561
13562 $cat >try.c <<EOCP
13563 #$i_inttypes I_INTTYPES
13564 #ifdef I_INTTYPES
13565 #include <inttypes.h>
13566 #endif
13567 #include <stdio.h>
13568 int main() {
13569 #ifdef INT8
13570    int8_t i =  INT8_MAX;
13571   uint8_t u = UINT8_MAX;
13572   printf("int8_t\n");
13573 #endif
13574 #ifdef INT16
13575    int16_t i =  INT16_MAX;
13576   uint16_t i = UINT16_MAX;
13577   printf("int16_t\n");
13578 #endif
13579 #ifdef INT32
13580    int32_t i =  INT32_MAX;
13581   uint32_t u = UINT32_MAX;
13582   printf("int32_t\n");
13583 #endif
13584 }
13585 EOCP
13586
13587 case "$i8type" in
13588 '')     case "$charsize" in
13589         1)      i8type=char
13590                 u8type="unsigned char"
13591                 i8size=$charsize
13592                 u8size=$charsize
13593                 ;;
13594         esac
13595         ;;
13596 esac
13597 case "$i8type" in
13598 '')     set try -DINT8
13599         if eval $compile; then
13600                 case "`$run ./try`" in
13601                 int8_t) i8type=int8_t
13602                         u8type=uint8_t
13603                         i8size=1
13604                         u8size=1
13605                         ;;
13606                 esac
13607         fi
13608         ;;
13609 esac
13610 case "$i8type" in
13611 '')     if $test $charsize -ge 1; then
13612                 i8type=char
13613                 u8type="unsigned char"
13614                 i8size=$charsize
13615                 u8size=$charsize
13616         fi
13617         ;;
13618 esac
13619
13620 case "$i16type" in
13621 '')     case "$shortsize" in
13622         2)      i16type=short
13623                 u16type="unsigned short"
13624                 i16size=$shortsize
13625                 u16size=$shortsize
13626                 ;;
13627         esac
13628         ;;
13629 esac
13630 case "$i16type" in
13631 '')     set try -DINT16
13632         if eval $compile; then
13633                 case "`$run ./try`" in
13634                 int16_t)
13635                         i16type=int16_t
13636                         u16type=uint16_t
13637                         i16size=2
13638                         u16size=2
13639                         ;;
13640                 esac
13641         fi
13642         ;;
13643 esac
13644 case "$i16type" in
13645 '')     if $test $shortsize -ge 2; then
13646                 i16type=short
13647                 u16type="unsigned short"
13648                 i16size=$shortsize
13649                 u16size=$shortsize
13650         fi
13651         ;;
13652 esac
13653
13654 case "$i32type" in
13655 '')     case "$longsize" in
13656         4)      i32type=long
13657                 u32type="unsigned long"
13658                 i32size=$longsize
13659                 u32size=$longsize
13660                 ;;
13661         *)      case "$intsize" in
13662                 4)      i32type=int
13663                         u32type="unsigned int"
13664                         i32size=$intsize
13665                         u32size=$intsize
13666                         ;;
13667                 esac
13668                 ;;
13669         esac
13670         ;;
13671 esac
13672 case "$i32type" in
13673 '')     set try -DINT32
13674         if eval $compile; then
13675                 case "`$run ./try`" in
13676                 int32_t)
13677                         i32type=int32_t
13678                         u32type=uint32_t
13679                         i32size=4
13680                         u32size=4
13681                         ;;
13682                 esac
13683         fi
13684         ;;
13685 esac
13686 case "$i32type" in
13687 '')     if $test $intsize -ge 4; then
13688                 i32type=int
13689                 u32type="unsigned int"
13690                 i32size=$intsize
13691                 u32size=$intsize
13692         fi
13693         ;;
13694 esac
13695
13696 case "$i64type" in
13697 '')     case "$d_quad:$quadtype" in
13698         define:?*)
13699                 i64type="$quadtype"
13700                 u64type="$uquadtype"
13701                 i64size=8
13702                 u64size=8
13703                 ;;
13704         esac
13705         ;;
13706 esac
13707
13708 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
13709 : volatile so that the compiler has to store it out to memory.
13710 if test X"$d_volatile" = X"$define"; then
13711         volatile=volatile
13712 fi
13713 $cat <<EOP >try.c
13714 #include <stdio.h>
13715 #include <sys/types.h>
13716 #include <signal.h>
13717 #ifdef SIGFPE
13718 $volatile int bletched = 0;
13719 $signal_t blech(s) int s; { bletched = 1; }
13720 #endif
13721 int main() {
13722     $uvtype u = 0;
13723     $nvtype d;
13724     int     n = 8 * $uvsize;
13725     int     i;
13726 #ifdef SIGFPE
13727     signal(SIGFPE, blech);
13728 #endif
13729
13730     for (i = 0; i < n; i++) {
13731       u = u << 1 | ($uvtype)1;
13732       d = ($nvtype)u;
13733       if (($uvtype)d != u)
13734         break;
13735       if (d <= 0)
13736         break;
13737       d = ($nvtype)(u - 1);
13738       if (($uvtype)d != (u - 1))
13739         break;
13740 #ifdef SIGFPE
13741       if (bletched) {
13742         break;
13743 #endif
13744       } 
13745     }
13746     printf("%d\n", ((i == n) ? -n : i));
13747     exit(0);
13748 }
13749 EOP
13750 set try
13751
13752 d_nv_preserves_uv="$undef"
13753 if eval $compile; then
13754         nv_preserves_uv_bits="`$run ./try`"
13755 fi
13756 case "$nv_preserves_uv_bits" in
13757 \-[1-9]*)       
13758         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
13759         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
13760         d_nv_preserves_uv="$define"
13761         ;;
13762 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
13763         d_nv_preserves_uv="$undef" ;;
13764 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
13765         nv_preserves_uv_bits="$undef" ;;
13766 esac
13767
13768 $rm -f try.* try
13769
13770
13771 : check for off64_t
13772 echo " "
13773 echo "Checking to see if you have off64_t..." >&4
13774 $cat >try.c <<EOCP
13775 #include <sys/types.h>
13776 #include <unistd.h>
13777 int main() { off64_t x = 7; }
13778 EOCP
13779 set try
13780 if eval $compile; then
13781         val="$define"
13782         echo "You have off64_t."
13783 else
13784         val="$undef"
13785         echo "You do not have off64_t."
13786         case "$lseeksize" in
13787         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
13788         esac
13789 fi
13790 $rm -f try.* try
13791 set d_off64_t
13792 eval $setvar
13793
13794 : see if POSIX threads are available
13795 set pthread.h i_pthread
13796 eval $inhdr
13797
13798
13799
13800
13801 : how to create joinable pthreads
13802 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13803         echo " "
13804         echo "Checking what constant to use for creating joinable pthreads..." >&4 
13805         $cat >try.c <<'EOCP'
13806 #include <pthread.h>
13807 int main() {
13808     int detachstate = JOINABLE;
13809 }
13810 EOCP
13811         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
13812         if eval $compile; then
13813                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
13814                 val="$undef" # Yes, undef.
13815                 set d_old_pthread_create_joinable
13816                 eval $setvar
13817                 val=""
13818                 set old_pthread_create_joinable
13819                 eval $setvar
13820         else
13821                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
13822                 if eval $compile; then
13823                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13824                         val="$define"
13825                         set d_old_pthread_create_joinable
13826                         eval $setvar
13827                         val=PTHREAD_CREATE_UNDETACHED
13828                         set old_pthread_create_joinable
13829                         eval $setvar
13830                 else            
13831                         set try -DJOINABLE=__UNDETACHED
13832                         if eval $compile; then
13833                                 echo "You seem to use __UNDETACHED." >&4
13834                                 val="$define"
13835                                 set d_old_pthread_create_joinable
13836                                 eval $setvar
13837                                 val=__UNDETACHED
13838                                 set old_pthread_create_joinable
13839                                 eval $setvar
13840                         else
13841                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
13842                                 val="$define"
13843                                 set d_old_pthread_create_joinable
13844                                 eval $setvar
13845                                 val=0
13846                                 set old_pthread_create_joinable
13847                                 eval $setvar
13848                         fi
13849                 fi
13850         fi
13851         $rm -f try try.*
13852 else
13853     d_old_pthread_create_joinable="$undef"
13854     old_pthread_create_joinable=""
13855 fi
13856
13857 : see if pause exists
13858 set pause d_pause
13859 eval $inlibc
13860
13861 : see if pipe exists
13862 set pipe d_pipe
13863 eval $inlibc
13864
13865 : see if poll exists
13866 set poll d_poll
13867 eval $inlibc
13868
13869 : see if readlink exists
13870 set readlink d_readlink
13871 eval $inlibc
13872
13873 echo " "
13874 procselfexe=''
13875 val="$undef"
13876 case "$d_readlink" in
13877 "$define")
13878         if $issymlink /proc/self/exe ; then
13879                 $ls -l /proc/self/exe > reflect
13880                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13881                         echo "You have Linux-like /proc/self/exe."
13882                         procselfexe='"/proc/self/exe"'
13883                         val="$define"
13884                 fi
13885         fi
13886         if $issymlink /proc/curproc/file ; then
13887                 $ls -l /proc/curproc/file > reflect
13888                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13889                         echo "You have BSD-like /proc/curproc/file."
13890                         procselfexe='"/proc/curproc/file"'
13891                         val="$define"
13892                 fi
13893         fi
13894         ;;
13895 esac
13896 $rm -f reflect
13897 set d_procselfexe
13898 eval $setvar
13899
13900 : see whether the pthread_atfork exists
13901 $cat >try.c <<EOP
13902 #include <pthread.h>
13903 #include <stdio.h>
13904 int main() {
13905 #ifdef  PTHREAD_ATFORK
13906         pthread_atfork(NULL,NULL,NULL);
13907 #endif
13908 }
13909 EOP
13910
13911 : see if pthread_atfork exists
13912 set try -DPTHREAD_ATFORK
13913 if eval $compile; then
13914     val="$define"
13915 else
13916     val="$undef"
13917 fi
13918 case "$usethreads" in
13919 $define)
13920         case "$val" in
13921         $define) echo 'pthread_atfork found.' >&4        ;;
13922         *)       echo 'pthread_atfork NOT found.' >&4    ;;
13923         esac
13924 esac
13925 set d_pthread_atfork
13926 eval $setvar
13927
13928
13929 : see whether the various POSIXish _yields exist
13930 $cat >try.c <<EOP
13931 #include <pthread.h>
13932 #include <stdio.h>
13933 int main() {
13934 #ifdef SCHED_YIELD
13935         sched_yield();
13936 #else
13937 #ifdef PTHREAD_YIELD
13938         pthread_yield();
13939 #else
13940 #ifdef PTHREAD_YIELD_NULL
13941         pthread_yield(NULL);
13942 #endif
13943 #endif
13944 #endif
13945 }
13946 EOP
13947 : see if sched_yield exists
13948 set try -DSCHED_YIELD
13949 if eval $compile; then
13950     val="$define"
13951     sched_yield='sched_yield()'
13952 else
13953     val="$undef"
13954 fi
13955 case "$usethreads" in
13956 $define)
13957         case "$val" in
13958         $define) echo 'sched_yield() found.' >&4        ;;
13959         *)       echo 'sched_yield() NOT found.' >&4    ;;
13960         esac
13961 esac
13962 set d_sched_yield
13963 eval $setvar
13964
13965 : see if pthread_yield exists
13966 set try -DPTHREAD_YIELD
13967 if eval $compile; then
13968     val="$define"
13969     case "$sched_yield" in
13970     '') sched_yield='pthread_yield()' ;;
13971     esac
13972 else
13973     set try -DPTHREAD_YIELD_NULL
13974     if eval $compile; then
13975         val="$define"
13976         case "$sched_yield" in
13977         '') sched_yield='pthread_yield(NULL)' ;;
13978         esac
13979     else
13980         val="$undef"
13981     fi
13982 fi
13983 case "$usethreads" in
13984 $define)
13985         case "$val" in
13986         $define) echo 'pthread_yield() found.' >&4      ;;
13987         *)       echo 'pthread_yield() NOT found.' >&4  ;;
13988         esac
13989         ;;
13990 esac
13991 set d_pthread_yield
13992 eval $setvar
13993
13994 case "$sched_yield" in
13995 '') sched_yield=undef ;;
13996 esac
13997
13998 $rm -f try try.*
13999
14000 : see if random_r exists
14001 set random_r d_random_r
14002 eval $inlibc
14003 case "$d_random_r" in
14004 "$define")
14005         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14006         case "stdlib" in
14007         time)
14008                 hdrs="$hdrs $i_systime sys/time.h"
14009                 ;;
14010         esac
14011         case "$d_random_r_proto:$usethreads" in
14012         ":define")      d_random_r_proto=define
14013                 set d_random_r_proto random_r $hdrs
14014                 eval $hasproto ;;
14015         *)      ;;
14016         esac
14017         case "$d_random_r_proto" in
14018         define)
14019         case "$random_r_proto" in
14020         ''|0) try='int random_r(int*, struct random_data*);'
14021         ./protochk "extern $try" $hdrs && random_r_proto=I_TS ;;
14022         esac
14023         case "$random_r_proto" in
14024         ''|0)   d_random_r=undef
14025                 random_r_proto=0
14026                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14027         * )     case "$random_r_proto" in
14028                 REENTRANT_PROTO*) ;;
14029                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14030                 esac
14031                 echo "Prototype: $try" ;;
14032         esac
14033         ;;
14034         *)      case "$usethreads" in
14035                 define) echo "random_r has no prototype, not using it." >&4 ;;
14036                 esac
14037                 d_random_r=undef
14038                 random_r_proto=0
14039                 ;;
14040         esac
14041         ;;
14042 *)      random_r_proto=0
14043         ;;
14044 esac
14045
14046 : see if readdir and friends exist
14047 set readdir d_readdir
14048 eval $inlibc
14049 set seekdir d_seekdir
14050 eval $inlibc
14051 set telldir d_telldir
14052 eval $inlibc
14053 set rewinddir d_rewinddir
14054 eval $inlibc
14055
14056 : see if readdir64_r exists
14057 set readdir64_r d_readdir64_r
14058 eval $inlibc
14059 case "$d_readdir64_r" in
14060 "$define")
14061         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14062         case "dirent" in
14063         time)
14064                 hdrs="$hdrs $i_systime sys/time.h"
14065                 ;;
14066         esac
14067         case "$d_readdir64_r_proto:$usethreads" in
14068         ":define")      d_readdir64_r_proto=define
14069                 set d_readdir64_r_proto readdir64_r $hdrs
14070                 eval $hasproto ;;
14071         *)      ;;
14072         esac
14073         case "$d_readdir64_r_proto" in
14074         define)
14075         case "$readdir64_r_proto" in
14076         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14077         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14078         esac
14079         case "$readdir64_r_proto" in
14080         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14081         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14082         esac
14083         case "$readdir64_r_proto" in
14084         ''|0)   d_readdir64_r=undef
14085                 readdir64_r_proto=0
14086                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14087         * )     case "$readdir64_r_proto" in
14088                 REENTRANT_PROTO*) ;;
14089                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14090                 esac
14091                 echo "Prototype: $try" ;;
14092         esac
14093         ;;
14094         *)      case "$usethreads" in
14095                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14096                 esac
14097                 d_readdir64_r=undef
14098                 readdir64_r_proto=0
14099                 ;;
14100         esac
14101         ;;
14102 *)      readdir64_r_proto=0
14103         ;;
14104 esac
14105
14106 : see if readdir_r exists
14107 set readdir_r d_readdir_r
14108 eval $inlibc
14109 case "$d_readdir_r" in
14110 "$define")
14111         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14112         case "dirent" in
14113         time)
14114                 hdrs="$hdrs $i_systime sys/time.h"
14115                 ;;
14116         esac
14117         case "$d_readdir_r_proto:$usethreads" in
14118         ":define")      d_readdir_r_proto=define
14119                 set d_readdir_r_proto readdir_r $hdrs
14120                 eval $hasproto ;;
14121         *)      ;;
14122         esac
14123         case "$d_readdir_r_proto" in
14124         define)
14125         case "$readdir_r_proto" in
14126         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14127         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14128         esac
14129         case "$readdir_r_proto" in
14130         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14131         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14132         esac
14133         case "$readdir_r_proto" in
14134         ''|0)   d_readdir_r=undef
14135                 readdir_r_proto=0
14136                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14137         * )     case "$readdir_r_proto" in
14138                 REENTRANT_PROTO*) ;;
14139                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14140                 esac
14141                 echo "Prototype: $try" ;;
14142         esac
14143         ;;
14144         *)      case "$usethreads" in
14145                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14146                 esac
14147                 d_readdir_r=undef
14148                 readdir_r_proto=0
14149                 ;;
14150         esac
14151         ;;
14152 *)      readdir_r_proto=0
14153         ;;
14154 esac
14155
14156 : see if readv exists
14157 set readv d_readv
14158 eval $inlibc
14159
14160 : see if recvmsg exists
14161 set recvmsg d_recvmsg
14162 eval $inlibc
14163
14164 : see if rename exists
14165 set rename d_rename
14166 eval $inlibc
14167
14168 : see if rmdir exists
14169 set rmdir d_rmdir
14170 eval $inlibc
14171
14172 : see if memory.h is available.
14173 val=''
14174 set memory.h val
14175 eval $inhdr
14176
14177 : See if it conflicts with string.h
14178 case "$val" in
14179 $define)
14180         case "$strings" in
14181         '') ;;
14182         *)
14183                 $cppstdin $cppflags $cppminus < $strings > mem.h
14184                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14185                         echo " "
14186                         echo "We won't be including <memory.h>."
14187                         val="$undef"
14188                 fi
14189                 $rm -f mem.h
14190                 ;;
14191         esac
14192 esac
14193 set i_memory
14194 eval $setvar
14195
14196 : can bcopy handle overlapping blocks?
14197 echo " "
14198 val="$undef"
14199 case "$d_memmove" in
14200 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14201 *)      case "$d_bcopy" in
14202         "$define")
14203                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14204                 $cat >try.c <<EOCP
14205 #$i_memory I_MEMORY
14206 #$i_stdlib I_STDLIB
14207 #$i_string I_STRING
14208 #$i_unistd I_UNISTD
14209 EOCP
14210         $cat >>try.c <<'EOCP'
14211 #include <stdio.h>
14212 #ifdef I_MEMORY
14213 #  include <memory.h>
14214 #endif
14215 #ifdef I_STDLIB
14216 #  include <stdlib.h>
14217 #endif
14218 #ifdef I_STRING
14219 #  include <string.h>
14220 #else
14221 #  include <strings.h>
14222 #endif
14223 #ifdef I_UNISTD
14224 #  include <unistd.h>  /* Needed for NetBSD */
14225 #endif
14226 int main()
14227 {
14228 char buf[128], abc[128];
14229 char *b;
14230 int len;
14231 int off;
14232 int align;
14233
14234 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14235    try to store the string in read-only memory. */
14236 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14237
14238 for (align = 7; align >= 0; align--) {
14239         for (len = 36; len; len--) {
14240                 b = buf+align;
14241                 bcopy(abc, b, len);
14242                 for (off = 1; off <= len; off++) {
14243                         bcopy(b, b+off, len);
14244                         bcopy(b+off, b, len);
14245                         if (bcmp(b, abc, len))
14246                                 exit(1);
14247                 }
14248         }
14249 }
14250 exit(0);
14251 }
14252 EOCP
14253                 set try
14254                 if eval $compile_ok; then
14255                         if ./try 2>/dev/null; then
14256                                 echo "Yes, it can."
14257                                 val="$define"
14258                         else
14259                                 echo "It can't, sorry."
14260                         fi
14261                 else
14262                         echo "(I can't compile the test program, so we'll assume not...)"
14263                 fi
14264                 ;;
14265         esac
14266         $rm -f try.* try core
14267         ;;
14268 esac
14269 set d_safebcpy
14270 eval $setvar
14271
14272 : can memcpy handle overlapping blocks?
14273 echo " "
14274 val="$undef"
14275 case "$d_memmove" in
14276 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14277 *)      case "$d_memcpy" in
14278         "$define")
14279                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14280                 $cat >try.c <<EOCP
14281 #$i_memory I_MEMORY
14282 #$i_stdlib I_STDLIB
14283 #$i_string I_STRING
14284 #$i_unistd I_UNISTD
14285 EOCP
14286         $cat >>try.c <<'EOCP'
14287 #include <stdio.h>
14288 #ifdef I_MEMORY
14289 #  include <memory.h>
14290 #endif
14291 #ifdef I_STDLIB
14292 #  include <stdlib.h>
14293 #endif
14294 #ifdef I_STRING
14295 #  include <string.h>
14296 #else
14297 #  include <strings.h>
14298 #endif
14299 #ifdef I_UNISTD
14300 #  include <unistd.h>  /* Needed for NetBSD */
14301 #endif
14302 int main()
14303 {
14304 char buf[128], abc[128];
14305 char *b;
14306 int len;
14307 int off;
14308 int align;
14309
14310 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14311    try to store the string in read-only memory. */
14312 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14313
14314 for (align = 7; align >= 0; align--) {
14315         for (len = 36; len; len--) {
14316                 b = buf+align;
14317                 memcpy(b, abc, len);
14318                 for (off = 1; off <= len; off++) {
14319                         memcpy(b+off, b, len);
14320                         memcpy(b, b+off, len);
14321                         if (memcmp(b, abc, len))
14322                                 exit(1);
14323                 }
14324         }
14325 }
14326 exit(0);
14327 }
14328 EOCP
14329                 set try
14330                 if eval $compile_ok; then
14331                         if ./try 2>/dev/null; then
14332                                 echo "Yes, it can."
14333                                 val="$define"
14334                         else
14335                                 echo "It can't, sorry."
14336                         fi
14337                 else
14338                         echo "(I can't compile the test program, so we'll assume not...)"
14339                 fi
14340                 ;;
14341         esac
14342         $rm -f try.* try core
14343         ;;
14344 esac
14345 set d_safemcpy
14346 eval $setvar
14347
14348 : can memcmp be trusted to compare relative magnitude?
14349 val="$undef"
14350 case "$d_memcmp" in
14351 "$define")
14352         echo " "
14353         echo "Checking if your memcmp() can compare relative magnitude..." >&4
14354         $cat >try.c <<EOCP
14355 #$i_memory I_MEMORY
14356 #$i_stdlib I_STDLIB
14357 #$i_string I_STRING
14358 #$i_unistd I_UNISTD
14359 EOCP
14360         $cat >>try.c <<'EOCP'
14361 #include <stdio.h>
14362 #ifdef I_MEMORY
14363 #  include <memory.h>
14364 #endif
14365 #ifdef I_STDLIB
14366 #  include <stdlib.h>
14367 #endif
14368 #ifdef I_STRING
14369 #  include <string.h>
14370 #else
14371 #  include <strings.h>
14372 #endif
14373 #ifdef I_UNISTD
14374 #  include <unistd.h>  /* Needed for NetBSD */
14375 #endif
14376 int main()
14377 {
14378 char a = -1;
14379 char b = 0;
14380 if ((a < b) && memcmp(&a, &b, 1) < 0)
14381         exit(1);
14382 exit(0);
14383 }
14384 EOCP
14385         set try
14386         if eval $compile_ok; then
14387                 if $run ./try 2>/dev/null; then
14388                         echo "Yes, it can."
14389                         val="$define"
14390                 else
14391                         echo "No, it can't (it uses signed chars)."
14392                 fi
14393         else
14394                 echo "(I can't compile the test program, so we'll assume not...)"
14395         fi
14396         ;;
14397 esac
14398 $rm -f try.* try core
14399 set d_sanemcmp
14400 eval $setvar
14401
14402 : see if prototype for sbrk is available
14403 echo " "
14404 set d_sbrkproto sbrk $i_unistd unistd.h
14405 eval $hasproto
14406
14407 : see if select exists
14408 set select d_select
14409 eval $inlibc
14410
14411 : see if semctl exists
14412 set semctl d_semctl
14413 eval $inlibc
14414
14415 : see if semget exists
14416 set semget d_semget
14417 eval $inlibc
14418
14419 : see if semop exists
14420 set semop d_semop
14421 eval $inlibc
14422
14423 : see how much of the 'sem*(2)' library is present.
14424 h_sem=true
14425 echo " "
14426 case "$d_semctl$d_semget$d_semop" in
14427 *"$undef"*) h_sem=false;;
14428 esac
14429 case "$osname" in
14430 freebsd)
14431     case "`ipcs 2>&1`" in
14432     "SVID messages"*"not configured"*)
14433         echo "Your $osname does not have the sem*(2) configured." >&4
14434         h_sem=false
14435         val="$undef"
14436         set semctl d_semctl
14437         eval $setvar
14438         set semget d_semget
14439         eval $setvar
14440         set semop d_semop
14441         eval $setvar
14442         ;;
14443     esac
14444     ;;
14445 esac
14446 : we could also check for sys/ipc.h ...
14447 if $h_sem && $test `./findhdr sys/sem.h`; then
14448         echo "You have the full sem*(2) library." >&4
14449         val="$define"
14450 else
14451         echo "You don't have the full sem*(2) library." >&4
14452         val="$undef"
14453 fi
14454 set d_sem
14455 eval $setvar
14456
14457 : see whether sys/sem.h defines union semun
14458 echo " "
14459 $cat > try.c <<'END'
14460 #include <sys/types.h>
14461 #include <sys/ipc.h>
14462 #include <sys/sem.h>
14463 int main () { union semun semun; semun.buf = 0; }
14464 END
14465 set try
14466 if eval $compile; then
14467     echo "You have union semun in <sys/sem.h>." >&4
14468     val="$define"
14469 else
14470     echo "You do not have union semun in <sys/sem.h>." >&4
14471     val="$undef"
14472 fi
14473 $rm -f try try.c try.h
14474 set d_union_semun
14475 eval $setvar
14476
14477 : see how to do semctl IPC_STAT
14478 case "$d_sem" in
14479 $define)
14480     : see whether semctl IPC_STAT can use union semun
14481     echo " "
14482     $cat > try.h <<END
14483 #ifndef S_IRUSR
14484 #   ifdef S_IREAD
14485 #       define S_IRUSR S_IREAD
14486 #       define S_IWUSR S_IWRITE
14487 #       define S_IXUSR S_IEXEC
14488 #   else
14489 #       define S_IRUSR 0400
14490 #       define S_IWUSR 0200
14491 #       define S_IXUSR 0100
14492 #   endif
14493 #   define S_IRGRP (S_IRUSR>>3)
14494 #   define S_IWGRP (S_IWUSR>>3)
14495 #   define S_IXGRP (S_IXUSR>>3)
14496 #   define S_IROTH (S_IRUSR>>6)
14497 #   define S_IWOTH (S_IWUSR>>6)
14498 #   define S_IXOTH (S_IXUSR>>6)
14499 #endif
14500 #ifndef S_IRWXU
14501 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14502 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14503 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14504 #endif
14505 END
14506
14507     $cat > try.c <<END
14508 #include <sys/types.h>
14509 #include <sys/ipc.h>
14510 #include <sys/sem.h>
14511 #include <sys/stat.h>
14512 #include <stdio.h>
14513 #include <errno.h>
14514 #include "try.h"
14515 #ifndef errno
14516 extern int errno;
14517 #endif
14518 #$d_union_semun HAS_UNION_SEMUN
14519 int main() {
14520     union semun
14521 #ifndef HAS_UNION_SEMUN
14522     {
14523         int val;
14524         struct semid_ds *buf;
14525         unsigned short *array;
14526     }
14527 #endif
14528     arg;
14529     int sem, st;
14530
14531 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14532     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14533     if (sem > -1) {
14534         struct semid_ds argbuf;
14535         arg.buf = &argbuf;
14536 #       ifdef IPC_STAT
14537         st = semctl(sem, 0, IPC_STAT, arg);
14538         if (st == 0)
14539             printf("semun\n");
14540         else
14541 #       endif /* IPC_STAT */
14542             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14543 #       ifdef IPC_RMID
14544         if (semctl(sem, 0, IPC_RMID, arg) != 0)
14545 #       endif /* IPC_RMID */
14546             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14547     } else
14548 #endif /* IPC_PRIVATE && ... */
14549         printf("semget failed: errno = %d\n", errno);
14550   return 0;
14551 }
14552 END
14553     val="$undef"
14554     set try
14555     if eval $compile; then
14556         xxx=`$run ./try`
14557         case "$xxx" in
14558         semun) val="$define" ;;
14559         esac
14560     fi
14561     $rm -f try try.c
14562     set d_semctl_semun
14563     eval $setvar
14564     case "$d_semctl_semun" in
14565     $define)
14566         echo "You can use union semun for semctl IPC_STAT." >&4
14567         also='also'
14568         ;;
14569     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
14570         also=''
14571         ;;
14572     esac
14573
14574     : see whether semctl IPC_STAT can use struct semid_ds pointer
14575     $cat > try.c <<'END'
14576 #include <sys/types.h>
14577 #include <sys/ipc.h>
14578 #include <sys/sem.h>
14579 #include <sys/stat.h>
14580 #include "try.h"
14581 #include <stdio.h>
14582 #include <errno.h>
14583 #ifndef errno
14584 extern int errno;
14585 #endif
14586 int main() {
14587     struct semid_ds arg;
14588     int sem, st;
14589
14590 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
14591     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14592     if (sem > -1) {
14593 #       ifdef IPC_STAT
14594         st = semctl(sem, 0, IPC_STAT, &arg);
14595         if (st == 0)
14596             printf("semid_ds\n");
14597         else
14598 #       endif /* IPC_STAT */
14599             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14600 #       ifdef IPC_RMID
14601         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
14602 #       endif /* IPC_RMID */
14603             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14604     } else
14605 #endif /* IPC_PRIVATE && ... */
14606         printf("semget failed: errno = %d\n", errno);
14607
14608     return 0;
14609 }
14610 END
14611     val="$undef"
14612     set try
14613     if eval $compile; then
14614         xxx=`$run ./try`
14615         case "$xxx" in
14616         semid_ds) val="$define" ;;
14617         esac
14618     fi
14619     $rm -f try try.c
14620     set d_semctl_semid_ds
14621     eval $setvar
14622     case "$d_semctl_semid_ds" in
14623     $define)
14624         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
14625         ;;
14626     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
14627         ;;
14628     esac
14629     $rm -f try.h
14630     ;;
14631 *)  val="$undef"
14632
14633     # We do not have the full sem*(2) library, so assume we can not
14634     # use either.
14635
14636     set d_semctl_semun
14637     eval $setvar
14638
14639     set d_semctl_semid_ds
14640     eval $setvar
14641     ;;
14642 esac
14643
14644 : see if sendmsg exists
14645 set sendmsg d_sendmsg
14646 eval $inlibc
14647
14648 : see if setegid exists
14649 set setegid d_setegid
14650 eval $inlibc
14651
14652 : see if seteuid exists
14653 set seteuid d_seteuid
14654 eval $inlibc
14655
14656 : see if setgrent exists
14657 set setgrent d_setgrent
14658 eval $inlibc
14659
14660 : see if setgrent_r exists
14661 set setgrent_r d_setgrent_r
14662 eval $inlibc
14663 case "$d_setgrent_r" in
14664 "$define")
14665         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
14666         case "grp" in
14667         time)
14668                 hdrs="$hdrs $i_systime sys/time.h"
14669                 ;;
14670         esac
14671         case "$d_setgrent_r_proto:$usethreads" in
14672         ":define")      d_setgrent_r_proto=define
14673                 set d_setgrent_r_proto setgrent_r $hdrs
14674                 eval $hasproto ;;
14675         *)      ;;
14676         esac
14677         case "$d_setgrent_r_proto" in
14678         define)
14679         case "$setgrent_r_proto" in
14680         ''|0) try='int setgrent_r(FILE**);'
14681         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
14682         esac
14683         case "$setgrent_r_proto" in
14684         ''|0) try='void setgrent_r(FILE**);'
14685         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
14686         esac
14687         case "$setgrent_r_proto" in
14688         ''|0)   d_setgrent_r=undef
14689                 setgrent_r_proto=0
14690                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
14691         * )     case "$setgrent_r_proto" in
14692                 REENTRANT_PROTO*) ;;
14693                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
14694                 esac
14695                 echo "Prototype: $try" ;;
14696         esac
14697         ;;
14698         *)      case "$usethreads" in
14699                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
14700                 esac
14701                 d_setgrent_r=undef
14702                 setgrent_r_proto=0
14703                 ;;
14704         esac
14705         ;;
14706 *)      setgrent_r_proto=0
14707         ;;
14708 esac
14709
14710 : see if sethostent exists
14711 set sethostent d_sethent
14712 eval $inlibc
14713
14714 : see if sethostent_r exists
14715 set sethostent_r d_sethostent_r
14716 eval $inlibc
14717 case "$d_sethostent_r" in
14718 "$define")
14719         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14720         case "netdb" in
14721         time)
14722                 hdrs="$hdrs $i_systime sys/time.h"
14723                 ;;
14724         esac
14725         case "$d_sethostent_r_proto:$usethreads" in
14726         ":define")      d_sethostent_r_proto=define
14727                 set d_sethostent_r_proto sethostent_r $hdrs
14728                 eval $hasproto ;;
14729         *)      ;;
14730         esac
14731         case "$d_sethostent_r_proto" in
14732         define)
14733         case "$sethostent_r_proto" in
14734         ''|0) try='int sethostent_r(int, struct hostent_data*);'
14735         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
14736         esac
14737         case "$sethostent_r_proto" in
14738         ''|0) try='void sethostent_r(int, struct hostent_data*);'
14739         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
14740         esac
14741         case "$sethostent_r_proto" in
14742         ''|0)   d_sethostent_r=undef
14743                 sethostent_r_proto=0
14744                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
14745         * )     case "$sethostent_r_proto" in
14746                 REENTRANT_PROTO*) ;;
14747                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
14748                 esac
14749                 echo "Prototype: $try" ;;
14750         esac
14751         ;;
14752         *)      case "$usethreads" in
14753                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
14754                 esac
14755                 d_sethostent_r=undef
14756                 sethostent_r_proto=0
14757                 ;;
14758         esac
14759         ;;
14760 *)      sethostent_r_proto=0
14761         ;;
14762 esac
14763
14764 : see if setitimer exists
14765 set setitimer d_setitimer
14766 eval $inlibc
14767
14768 : see if setlinebuf exists
14769 set setlinebuf d_setlinebuf
14770 eval $inlibc
14771
14772 : see if setlocale exists
14773 set setlocale d_setlocale
14774 eval $inlibc
14775
14776 : see if locale.h is available
14777 set locale.h i_locale
14778 eval $inhdr
14779
14780 : see if setlocale_r exists
14781 set setlocale_r d_setlocale_r
14782 eval $inlibc
14783 case "$d_setlocale_r" in
14784 "$define")
14785         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
14786         case "locale" in
14787         time)
14788                 hdrs="$hdrs $i_systime sys/time.h"
14789                 ;;
14790         esac
14791         case "$d_setlocale_r_proto:$usethreads" in
14792         ":define")      d_setlocale_r_proto=define
14793                 set d_setlocale_r_proto setlocale_r $hdrs
14794                 eval $hasproto ;;
14795         *)      ;;
14796         esac
14797         case "$d_setlocale_r_proto" in
14798         define)
14799         case "$setlocale_r_proto" in
14800         ''|0) try='int setlocale_r(int, const char*, char*, int);'
14801         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
14802         esac
14803         case "$setlocale_r_proto" in
14804         ''|0)   d_setlocale_r=undef
14805                 setlocale_r_proto=0
14806                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
14807         * )     case "$setlocale_r_proto" in
14808                 REENTRANT_PROTO*) ;;
14809                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
14810                 esac
14811                 echo "Prototype: $try" ;;
14812         esac
14813         ;;
14814         *)      case "$usethreads" in
14815                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
14816                 esac
14817                 d_setlocale_r=undef
14818                 setlocale_r_proto=0
14819                 ;;
14820         esac
14821         ;;
14822 *)      setlocale_r_proto=0
14823         ;;
14824 esac
14825
14826 : see if setnetent exists
14827 set setnetent d_setnent
14828 eval $inlibc
14829
14830 : see if setnetent_r exists
14831 set setnetent_r d_setnetent_r
14832 eval $inlibc
14833 case "$d_setnetent_r" in
14834 "$define")
14835         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14836         case "netdb" in
14837         time)
14838                 hdrs="$hdrs $i_systime sys/time.h"
14839                 ;;
14840         esac
14841         case "$d_setnetent_r_proto:$usethreads" in
14842         ":define")      d_setnetent_r_proto=define
14843                 set d_setnetent_r_proto setnetent_r $hdrs
14844                 eval $hasproto ;;
14845         *)      ;;
14846         esac
14847         case "$d_setnetent_r_proto" in
14848         define)
14849         case "$setnetent_r_proto" in
14850         ''|0) try='int setnetent_r(int, struct netent_data*);'
14851         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
14852         esac
14853         case "$setnetent_r_proto" in
14854         ''|0) try='void setnetent_r(int, struct netent_data*);'
14855         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
14856         esac
14857         case "$setnetent_r_proto" in
14858         ''|0)   d_setnetent_r=undef
14859                 setnetent_r_proto=0
14860                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
14861         * )     case "$setnetent_r_proto" in
14862                 REENTRANT_PROTO*) ;;
14863                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
14864                 esac
14865                 echo "Prototype: $try" ;;
14866         esac
14867         ;;
14868         *)      case "$usethreads" in
14869                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
14870                 esac
14871                 d_setnetent_r=undef
14872                 setnetent_r_proto=0
14873                 ;;
14874         esac
14875         ;;
14876 *)      setnetent_r_proto=0
14877         ;;
14878 esac
14879
14880 : see if setprotoent exists
14881 set setprotoent d_setpent
14882 eval $inlibc
14883
14884 : see if setpgid exists
14885 set setpgid d_setpgid
14886 eval $inlibc
14887
14888 : see if setpgrp2 exists
14889 set setpgrp2 d_setpgrp2
14890 eval $inlibc
14891
14892 : see if setpriority exists
14893 set setpriority d_setprior
14894 eval $inlibc
14895
14896 : see if setproctitle exists
14897 set setproctitle d_setproctitle
14898 eval $inlibc
14899
14900 : see if setprotoent_r exists
14901 set setprotoent_r d_setprotoent_r
14902 eval $inlibc
14903 case "$d_setprotoent_r" in
14904 "$define")
14905         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14906         case "netdb" in
14907         time)
14908                 hdrs="$hdrs $i_systime sys/time.h"
14909                 ;;
14910         esac
14911         case "$d_setprotoent_r_proto:$usethreads" in
14912         ":define")      d_setprotoent_r_proto=define
14913                 set d_setprotoent_r_proto setprotoent_r $hdrs
14914                 eval $hasproto ;;
14915         *)      ;;
14916         esac
14917         case "$d_setprotoent_r_proto" in
14918         define)
14919         case "$setprotoent_r_proto" in
14920         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
14921         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
14922         esac
14923         case "$setprotoent_r_proto" in
14924         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
14925         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
14926         esac
14927         case "$setprotoent_r_proto" in
14928         ''|0)   d_setprotoent_r=undef
14929                 setprotoent_r_proto=0
14930                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
14931         * )     case "$setprotoent_r_proto" in
14932                 REENTRANT_PROTO*) ;;
14933                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
14934                 esac
14935                 echo "Prototype: $try" ;;
14936         esac
14937         ;;
14938         *)      case "$usethreads" in
14939                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
14940                 esac
14941                 d_setprotoent_r=undef
14942                 setprotoent_r_proto=0
14943                 ;;
14944         esac
14945         ;;
14946 *)      setprotoent_r_proto=0
14947         ;;
14948 esac
14949
14950 : see if setpwent exists
14951 set setpwent d_setpwent
14952 eval $inlibc
14953
14954 : see if setpwent_r exists
14955 set setpwent_r d_setpwent_r
14956 eval $inlibc
14957 case "$d_setpwent_r" in
14958 "$define")
14959         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14960         case "pwd" in
14961         time)
14962                 hdrs="$hdrs $i_systime sys/time.h"
14963                 ;;
14964         esac
14965         case "$d_setpwent_r_proto:$usethreads" in
14966         ":define")      d_setpwent_r_proto=define
14967                 set d_setpwent_r_proto setpwent_r $hdrs
14968                 eval $hasproto ;;
14969         *)      ;;
14970         esac
14971         case "$d_setpwent_r_proto" in
14972         define)
14973         case "$setpwent_r_proto" in
14974         ''|0) try='int setpwent_r(FILE**);'
14975         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
14976         esac
14977         case "$setpwent_r_proto" in
14978         ''|0) try='void setpwent_r(FILE**);'
14979         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
14980         esac
14981         case "$setpwent_r_proto" in
14982         ''|0)   d_setpwent_r=undef
14983                 setpwent_r_proto=0
14984                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
14985         * )     case "$setpwent_r_proto" in
14986                 REENTRANT_PROTO*) ;;
14987                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
14988                 esac
14989                 echo "Prototype: $try" ;;
14990         esac
14991         ;;
14992         *)      case "$usethreads" in
14993                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
14994                 esac
14995                 d_setpwent_r=undef
14996                 setpwent_r_proto=0
14997                 ;;
14998         esac
14999         ;;
15000 *)      setpwent_r_proto=0
15001         ;;
15002 esac
15003
15004 : see if setregid exists
15005 set setregid d_setregid
15006 eval $inlibc
15007 set setresgid d_setresgid
15008 eval $inlibc
15009
15010 : see if setreuid exists
15011 set setreuid d_setreuid
15012 eval $inlibc
15013 set setresuid d_setresuid
15014 eval $inlibc
15015
15016 : see if setrgid exists
15017 set setrgid d_setrgid
15018 eval $inlibc
15019
15020 : see if setruid exists
15021 set setruid d_setruid
15022 eval $inlibc
15023
15024 : see if setservent exists
15025 set setservent d_setsent
15026 eval $inlibc
15027
15028 : see if setservent_r exists
15029 set setservent_r d_setservent_r
15030 eval $inlibc
15031 case "$d_setservent_r" in
15032 "$define")
15033         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15034         case "netdb" in
15035         time)
15036                 hdrs="$hdrs $i_systime sys/time.h"
15037                 ;;
15038         esac
15039         case "$d_setservent_r_proto:$usethreads" in
15040         ":define")      d_setservent_r_proto=define
15041                 set d_setservent_r_proto setservent_r $hdrs
15042                 eval $hasproto ;;
15043         *)      ;;
15044         esac
15045         case "$d_setservent_r_proto" in
15046         define)
15047         case "$setservent_r_proto" in
15048         ''|0) try='int setservent_r(int, struct servent_data*);'
15049         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15050         esac
15051         case "$setservent_r_proto" in
15052         ''|0) try='void setservent_r(int, struct servent_data*);'
15053         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15054         esac
15055         case "$setservent_r_proto" in
15056         ''|0)   d_setservent_r=undef
15057                 setservent_r_proto=0
15058                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15059         * )     case "$setservent_r_proto" in
15060                 REENTRANT_PROTO*) ;;
15061                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15062                 esac
15063                 echo "Prototype: $try" ;;
15064         esac
15065         ;;
15066         *)      case "$usethreads" in
15067                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15068                 esac
15069                 d_setservent_r=undef
15070                 setservent_r_proto=0
15071                 ;;
15072         esac
15073         ;;
15074 *)      setservent_r_proto=0
15075         ;;
15076 esac
15077
15078 : see if setsid exists
15079 set setsid d_setsid
15080 eval $inlibc
15081
15082 : see if setvbuf exists
15083 set setvbuf d_setvbuf
15084 eval $inlibc
15085
15086 : see if sfio.h is available
15087 set sfio.h i_sfio
15088 eval $inhdr
15089
15090
15091 : see if sfio library is available
15092 case "$i_sfio" in
15093 $define)
15094         val=''
15095         set sfreserve val
15096         eval $inlibc
15097         ;;
15098 *)
15099         val="$undef"
15100         ;;
15101 esac
15102 : Ok, but do we want to use it.
15103 case "$val" in
15104 $define)
15105         case "$usesfio" in
15106         true|$define|[yY]*) dflt='y';;
15107         *) dflt='n';;
15108         esac
15109         echo "$package can use the sfio library, but it is experimental."
15110         case "$useperlio" in
15111         "$undef")
15112             echo "For sfio also the PerlIO abstraction layer is needed."
15113             echo "Earlier you said you wouldn't want that."
15114             ;;
15115         esac
15116         rp="You seem to have sfio available, do you want to try using it?"
15117         . ./myread
15118         case "$ans" in
15119         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15120                 useperlio="$define"
15121                 val="$define"
15122                 ;;
15123         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15124                 val="$undef"
15125                 ;;
15126         esac
15127         ;;
15128 *)      case "$usesfio" in
15129         true|$define|[yY]*)
15130                 echo "Sorry, cannot find sfio on this machine." >&4
15131                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15132                 val="$undef"
15133                 ;;
15134         esac
15135         ;;
15136 esac
15137 set d_sfio
15138 eval $setvar
15139 case "$d_sfio" in
15140 $define) usesfio='true';;
15141 *) usesfio='false';;
15142 esac
15143 case "$d_sfio" in
15144 $define) ;;
15145 *)      : Remove sfio from list of libraries to use
15146         case "$libs" in
15147         *-lsfio*)
15148                 echo "Removing unneeded -lsfio from library list" >&4
15149                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15150                 shift
15151                 libs="$*"
15152                 echo "libs = $libs" >&4
15153                 ;;
15154         esac
15155 ;;
15156 esac
15157
15158
15159 : see if shmctl exists
15160 set shmctl d_shmctl
15161 eval $inlibc
15162
15163 : see if shmget exists
15164 set shmget d_shmget
15165 eval $inlibc
15166
15167 : see if shmat exists
15168 set shmat d_shmat
15169 eval $inlibc
15170 : see what shmat returns
15171 case "$d_shmat" in
15172 "$define")
15173         $cat >shmat.c <<'END'
15174 #include <sys/shm.h>
15175 void *shmat();
15176 END
15177         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15178                 shmattype='void *'
15179         else
15180                 shmattype='char *'
15181         fi
15182         echo "and it returns ($shmattype)." >&4
15183         : see if a prototype for shmat is available
15184         xxx=`./findhdr sys/shm.h`
15185         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15186         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15187                 val="$define"
15188         else
15189                 val="$undef"
15190         fi
15191         $rm -f shmat.[co]
15192         ;;
15193 *)
15194         val="$undef"
15195         ;;
15196 esac
15197 set d_shmatprototype
15198 eval $setvar
15199
15200 : see if shmdt exists
15201 set shmdt d_shmdt
15202 eval $inlibc
15203
15204 : see how much of the 'shm*(2)' library is present.
15205 h_shm=true
15206 echo " "
15207 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15208 *"$undef"*) h_shm=false;;
15209 esac
15210 case "$osname" in
15211 freebsd)
15212     case "`ipcs 2>&1`" in
15213     "SVID shared memory"*"not configured"*)
15214         echo "Your $osname does not have the shm*(2) configured." >&4
15215         h_shm=false
15216         val="$undef"
15217         set shmctl d_shmctl
15218         evat $setvar
15219         set shmget d_shmget
15220         evat $setvar
15221         set shmat d_shmat
15222         evat $setvar
15223         set shmdt d_shmdt
15224         evat $setvar
15225         ;;
15226     esac
15227     ;;
15228 esac
15229 : we could also check for sys/ipc.h ...
15230 if $h_shm && $test `./findhdr sys/shm.h`; then
15231         echo "You have the full shm*(2) library." >&4
15232         val="$define"
15233 else
15234         echo "You don't have the full shm*(2) library." >&4
15235         val="$undef"
15236 fi
15237 set d_shm
15238 eval $setvar
15239
15240 echo " "
15241 : see if we have sigaction
15242 if set sigaction val -f d_sigaction; eval $csym; $val; then
15243         echo 'sigaction() found.' >&4
15244         $cat > try.c <<'EOP'
15245 #include <stdio.h>
15246 #include <sys/types.h>
15247 #include <signal.h>
15248 int main()
15249 {
15250     struct sigaction act, oact;
15251     act.sa_flags = 0;
15252     oact.sa_handler = 0;
15253     /* so that act and oact are used */
15254     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
15255 }
15256 EOP
15257         set try
15258         if eval $compile_ok; then
15259                 val="$define"
15260         else
15261                 echo "But you don't seem to have a useable struct sigaction." >&4
15262                 val="$undef"
15263         fi
15264 else
15265         echo 'sigaction NOT found.' >&4
15266         val="$undef"
15267 fi
15268 set d_sigaction; eval $setvar
15269 $rm -f try try$_o try.c
15270
15271 : see if sigprocmask exists
15272 set sigprocmask d_sigprocmask
15273 eval $inlibc
15274
15275 : see if sigsetjmp exists
15276 echo " "
15277 case "$d_sigsetjmp" in
15278 '')
15279         $cat >try.c <<'EOP'
15280 #include <setjmp.h>
15281 sigjmp_buf env;
15282 int set = 1;
15283 int main()
15284 {
15285         if (sigsetjmp(env,1))
15286                 exit(set);
15287         set = 0;
15288         siglongjmp(env, 1);
15289         exit(1);
15290 }
15291 EOP
15292         set try
15293         if eval $compile; then
15294                 if $run ./try >/dev/null 2>&1; then
15295                         echo "POSIX sigsetjmp found." >&4
15296                         val="$define"
15297                 else
15298                         $cat >&4 <<EOM
15299 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15300 I'll ignore them.
15301 EOM
15302                         val="$undef"
15303                 fi
15304         else
15305                 echo "sigsetjmp not found." >&4
15306                 val="$undef"
15307         fi
15308         ;;
15309 *) val="$d_sigsetjmp"
15310         case "$d_sigsetjmp" in
15311         $define) echo "POSIX sigsetjmp found." >&4;;
15312         $undef) echo "sigsetjmp not found." >&4;;
15313         esac
15314         ;;
15315 esac
15316 set d_sigsetjmp
15317 eval $setvar
15318 $rm -f try.c try
15319
15320 : see if sockatmark exists
15321 set sockatmark d_sockatmark
15322 eval $inlibc
15323
15324 : see if prototype for sockatmark is available
15325 echo " "
15326 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15327 eval $hasproto
15328
15329 : see if socks5_init exists
15330 set socks5_init d_socks5_init
15331 eval $inlibc
15332
15333 : see if srand48_r exists
15334 set srand48_r d_srand48_r
15335 eval $inlibc
15336 case "$d_srand48_r" in
15337 "$define")
15338         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15339         case "stdlib" in
15340         time)
15341                 hdrs="$hdrs $i_systime sys/time.h"
15342                 ;;
15343         esac
15344         case "$d_srand48_r_proto:$usethreads" in
15345         ":define")      d_srand48_r_proto=define
15346                 set d_srand48_r_proto srand48_r $hdrs
15347                 eval $hasproto ;;
15348         *)      ;;
15349         esac
15350         case "$d_srand48_r_proto" in
15351         define)
15352         case "$srand48_r_proto" in
15353         ''|0) try='int srand48_r(long, struct drand48_data*);'
15354         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15355         esac
15356         case "$srand48_r_proto" in
15357         ''|0)   d_srand48_r=undef
15358                 srand48_r_proto=0
15359                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
15360         * )     case "$srand48_r_proto" in
15361                 REENTRANT_PROTO*) ;;
15362                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15363                 esac
15364                 echo "Prototype: $try" ;;
15365         esac
15366         ;;
15367         *)      case "$usethreads" in
15368                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15369                 esac
15370                 d_srand48_r=undef
15371                 srand48_r_proto=0
15372                 ;;
15373         esac
15374         ;;
15375 *)      srand48_r_proto=0
15376         ;;
15377 esac
15378
15379 : see if srandom_r exists
15380 set srandom_r d_srandom_r
15381 eval $inlibc
15382 case "$d_srandom_r" in
15383 "$define")
15384         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15385         case "stdlib" in
15386         time)
15387                 hdrs="$hdrs $i_systime sys/time.h"
15388                 ;;
15389         esac
15390         case "$d_srandom_r_proto:$usethreads" in
15391         ":define")      d_srandom_r_proto=define
15392                 set d_srandom_r_proto srandom_r $hdrs
15393                 eval $hasproto ;;
15394         *)      ;;
15395         esac
15396         case "$d_srandom_r_proto" in
15397         define)
15398         case "$srandom_r_proto" in
15399         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15400         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15401         esac
15402         case "$srandom_r_proto" in
15403         ''|0)   d_srandom_r=undef
15404                 srandom_r_proto=0
15405                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
15406         * )     case "$srandom_r_proto" in
15407                 REENTRANT_PROTO*) ;;
15408                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15409                 esac
15410                 echo "Prototype: $try" ;;
15411         esac
15412         ;;
15413         *)      case "$usethreads" in
15414                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15415                 esac
15416                 d_srandom_r=undef
15417                 srandom_r_proto=0
15418                 ;;
15419         esac
15420         ;;
15421 *)      srandom_r_proto=0
15422         ;;
15423 esac
15424
15425 : see if prototype for setresgid is available
15426 echo " "
15427 set d_sresgproto setresgid $i_unistd unistd.h
15428 eval $hasproto
15429
15430 : see if prototype for setresuid is available
15431 echo " "
15432 set d_sresuproto setresuid $i_unistd unistd.h
15433 eval $hasproto
15434
15435 : see if sys/stat.h is available
15436 set sys/stat.h i_sysstat
15437 eval $inhdr
15438
15439
15440 : see if stat knows about block sizes
15441 echo " "
15442 echo "Checking to see if your struct stat has st_blocks field..." >&4
15443 set d_statblks stat st_blocks $i_sysstat sys/stat.h
15444 eval $hasfield
15445
15446
15447 : see if this is a sys/vfs.h system
15448 set sys/vfs.h i_sysvfs
15449 eval $inhdr
15450
15451
15452 : see if this is a sys/statfs.h system
15453 set sys/statfs.h i_sysstatfs
15454 eval $inhdr
15455
15456
15457 echo " "
15458 echo "Checking to see if your system supports struct statfs..." >&4
15459 set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
15460 eval $hasstruct
15461 case "$d_statfs_s" in
15462 "$define")      echo "Yes, it does."   ;;
15463 *)              echo "No, it doesn't." ;;
15464 esac
15465
15466
15467
15468 : see if struct statfs knows about f_flags
15469 case "$d_statfs_s" in
15470 define) 
15471         echo " "
15472         echo "Checking to see if your struct statfs has f_flags field..." >&4
15473         set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
15474         eval $hasfield
15475         ;;
15476 *)      val="$undef"
15477         set d_statfs_f_flags
15478         eval $setvar
15479         ;;
15480 esac
15481 case "$d_statfs_f_flags" in
15482 "$define")      echo "Yes, it does."   ;;
15483 *)              echo "No, it doesn't." ;;
15484 esac
15485
15486 : see if _ptr and _cnt from stdio act std
15487 echo " "
15488
15489 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15490         echo "(Looks like you have stdio.h from BSD.)"
15491         case "$stdio_ptr" in
15492         '') stdio_ptr='((fp)->_p)'
15493                 ptr_lval=$define
15494                 ;;
15495         *)      ptr_lval=$d_stdio_ptr_lval;;
15496         esac
15497         case "$stdio_cnt" in
15498         '') stdio_cnt='((fp)->_r)'
15499                 cnt_lval=$define
15500                 ;;
15501         *)      cnt_lval=$d_stdio_cnt_lval;;
15502         esac
15503         case "$stdio_base" in
15504         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15505         esac
15506         case "$stdio_bufsiz" in
15507         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15508         esac
15509 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
15510         echo "(Looks like you have stdio.h from Linux.)"
15511         case "$stdio_ptr" in
15512         '') stdio_ptr='((fp)->_IO_read_ptr)'
15513                 ptr_lval=$define
15514                 ;;
15515         *)      ptr_lval=$d_stdio_ptr_lval;;
15516         esac
15517         case "$stdio_cnt" in
15518         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15519                 cnt_lval=$undef
15520                 ;;
15521         *)      cnt_lval=$d_stdio_cnt_lval;;
15522         esac
15523         case "$stdio_base" in
15524         '') stdio_base='((fp)->_IO_read_base)';;
15525         esac
15526         case "$stdio_bufsiz" in
15527         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15528         esac
15529 else
15530         case "$stdio_ptr" in
15531         '') stdio_ptr='((fp)->_ptr)'
15532                 ptr_lval=$define
15533                 ;;
15534         *)      ptr_lval=$d_stdio_ptr_lval;;
15535         esac
15536         case "$stdio_cnt" in
15537         '') stdio_cnt='((fp)->_cnt)'
15538                 cnt_lval=$define
15539                 ;;
15540         *)      cnt_lval=$d_stdio_cnt_lval;;
15541         esac
15542         case "$stdio_base" in
15543         '') stdio_base='((fp)->_base)';;
15544         esac
15545         case "$stdio_bufsiz" in
15546         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15547         esac
15548 fi
15549
15550 : test whether _ptr and _cnt really work
15551 echo "Checking how std your stdio is..." >&4
15552 $cat >try.c <<EOP
15553 #include <stdio.h>
15554 #define FILE_ptr(fp)    $stdio_ptr
15555 #define FILE_cnt(fp)    $stdio_cnt
15556 int main() {
15557         FILE *fp = fopen("try.c", "r");
15558         char c = getc(fp);
15559         if (
15560                 18 <= FILE_cnt(fp) &&
15561                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15562         )
15563                 exit(0);
15564         exit(1);
15565 }
15566 EOP
15567 val="$undef"
15568 set try
15569 if eval $compile && $to try.c; then
15570         if $run ./try; then
15571                 echo "Your stdio acts pretty std."
15572                 val="$define"
15573         else
15574                 echo "Your stdio isn't very std."
15575         fi
15576 else
15577         echo "Your stdio doesn't appear very std."
15578 fi
15579 $rm -f try.c try
15580 set d_stdstdio
15581 eval $setvar
15582
15583 : Can _ptr be used as an lvalue?
15584 case "$d_stdstdio$ptr_lval" in
15585 $define$define) val=$define ;;
15586 *) val=$undef ;;
15587 esac
15588 set d_stdio_ptr_lval
15589 eval $setvar
15590
15591 : Can _cnt be used as an lvalue?
15592 case "$d_stdstdio$cnt_lval" in
15593 $define$define) val=$define ;;
15594 *) val=$undef ;;
15595 esac
15596 set d_stdio_cnt_lval
15597 eval $setvar
15598
15599
15600 : test whether setting _ptr sets _cnt as a side effect
15601 d_stdio_ptr_lval_sets_cnt="$undef"
15602 d_stdio_ptr_lval_nochange_cnt="$undef"
15603 case "$d_stdio_ptr_lval$d_stdstdio" in
15604 $define$define)
15605         echo "Checking to see what happens if we set the stdio ptr..." >&4
15606 $cat >try.c <<EOP
15607 #include <stdio.h>
15608 /* Can we scream? */
15609 /* Eat dust sed :-) */
15610 /* In the buffer space, no one can hear you scream. */
15611 #define FILE_ptr(fp)    $stdio_ptr
15612 #define FILE_cnt(fp)    $stdio_cnt
15613 #include <sys/types.h>
15614 int main() {
15615         FILE *fp = fopen("try.c", "r");
15616         int c;
15617         char *ptr;
15618         size_t cnt;
15619         if (!fp) {
15620             puts("Fail even to read");
15621             exit(1);
15622         }
15623         c = getc(fp); /* Read away the first # */
15624         if (c == EOF) {
15625             puts("Fail even to read");
15626             exit(1);
15627         }
15628         if (!(
15629                 18 <= FILE_cnt(fp) &&
15630                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15631         )) {
15632                 puts("Fail even to read");
15633                 exit (1);
15634         }
15635         ptr = (char*) FILE_ptr(fp);
15636         cnt = (size_t)FILE_cnt(fp);
15637
15638         FILE_ptr(fp) += 42;
15639
15640         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
15641                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
15642                 exit (1);
15643         }
15644         if (FILE_cnt(fp) <= 20) {
15645                 printf ("Fail (<20 chars to test)");
15646                 exit (1);
15647         }
15648         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
15649                 puts("Fail compare");
15650                 exit (1);
15651         }
15652         if (cnt == FILE_cnt(fp)) {
15653                 puts("Pass_unchanged");
15654                 exit (0);
15655         }       
15656         if (FILE_cnt(fp) == (cnt - 42)) {
15657                 puts("Pass_changed");
15658                 exit (0);
15659         }
15660         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
15661         return 1;
15662
15663 }
15664 EOP
15665         set try
15666         if eval $compile && $to try.c; then
15667                 case `$run ./try` in
15668                 Pass_changed)
15669                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
15670                         d_stdio_ptr_lval_sets_cnt="$define" ;;
15671                 Pass_unchanged)
15672                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
15673                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
15674                 Fail*)
15675                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
15676                 *)
15677                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
15678         esac
15679         else
15680                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
15681         fi
15682         $rm -f try.c try
15683         ;;
15684 esac
15685
15686 : see if _base is also standard
15687 val="$undef"
15688 case "$d_stdstdio" in
15689 $define)
15690         $cat >try.c <<EOP
15691 #include <stdio.h>
15692 #define FILE_base(fp)   $stdio_base
15693 #define FILE_bufsiz(fp) $stdio_bufsiz
15694 int main() {
15695         FILE *fp = fopen("try.c", "r");
15696         char c = getc(fp);
15697         if (
15698                 19 <= FILE_bufsiz(fp) &&
15699                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
15700         )
15701                 exit(0);
15702         exit(1);
15703 }
15704 EOP
15705         set try
15706         if eval $compile && $to try.c; then
15707                 if $run ./try; then
15708                         echo "And its _base field acts std."
15709                         val="$define"
15710                 else
15711                         echo "But its _base field isn't std."
15712                 fi
15713         else
15714                 echo "However, it seems to be lacking the _base field."
15715         fi
15716         $rm -f try.c try
15717         ;;
15718 esac
15719 set d_stdiobase
15720 eval $setvar
15721
15722 $cat >&4 <<EOM
15723 Checking how to access stdio streams by file descriptor number...
15724 EOM
15725 case "$stdio_stream_array" in
15726 '')     $cat >try.c <<EOCP
15727 #include <stdio.h>
15728 int main() {
15729   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
15730     printf("yes\n");
15731 }
15732 EOCP
15733         for s in _iob __iob __sF
15734         do
15735                 set try -DSTDIO_STREAM_ARRAY=$s
15736                 if eval $compile; then
15737                         case "`$run ./try`" in
15738                         yes)    stdio_stream_array=$s; break ;;
15739                         esac
15740                 fi
15741         done
15742         $rm -f try.* try$exe_ext
15743 esac
15744 case "$stdio_stream_array" in
15745 '')     $cat >&4 <<EOM
15746 I can't figure out how to access stdio streams by file descriptor number.
15747 EOM
15748         d_stdio_stream_array="$undef"
15749         ;;
15750 *)      $cat >&4 <<EOM
15751 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
15752 EOM
15753         d_stdio_stream_array="$define"
15754         ;;
15755 esac
15756
15757 : see if strcoll exists
15758 set strcoll d_strcoll
15759 eval $inlibc
15760
15761 : check for structure copying
15762 echo " "
15763 echo "Checking to see if your C compiler can copy structs..." >&4
15764 $cat >try.c <<'EOCP'
15765 int main()
15766 {
15767         struct blurfl {
15768                 int dyick;
15769         } foo, bar;
15770
15771         foo = bar;
15772 }
15773 EOCP
15774 if $cc -c try.c >/dev/null 2>&1 ; then
15775         val="$define"
15776         echo "Yup, it can."
15777 else
15778         val="$undef"
15779         echo "Nope, it can't."
15780 fi
15781 set d_strctcpy
15782 eval $setvar
15783 $rm -f try.*
15784
15785 : see if strerror and/or sys_errlist[] exist
15786 echo " "
15787 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
15788     if set strerror val -f d_strerror; eval $csym; $val; then
15789                 echo 'strerror() found.' >&4
15790                 d_strerror="$define"
15791                 d_strerrm='strerror(e)'
15792                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
15793                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
15794                         d_syserrlst="$define"
15795                 else
15796                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
15797                         d_syserrlst="$undef"
15798                 fi
15799     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
15800                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
15801                 echo 'strerror() found in string header.' >&4
15802                 d_strerror="$define"
15803                 d_strerrm='strerror(e)'
15804                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
15805                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
15806                                 d_syserrlst="$define"
15807                 else
15808                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
15809                         d_syserrlst="$undef"
15810                 fi
15811     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
15812                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
15813                 d_strerror="$undef"
15814                 d_syserrlst="$define"
15815                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
15816     else
15817                 echo 'strerror() and sys_errlist[] NOT found.' >&4
15818                 d_strerror="$undef"
15819                 d_syserrlst="$undef"
15820                 d_strerrm='"unknown"'
15821     fi
15822 fi
15823
15824 : see if strerror_r exists
15825 set strerror_r d_strerror_r
15826 eval $inlibc
15827 case "$d_strerror_r" in
15828 "$define")
15829         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
15830         case "string" in
15831         time)
15832                 hdrs="$hdrs $i_systime sys/time.h"
15833                 ;;
15834         esac
15835         case "$d_strerror_r_proto:$usethreads" in
15836         ":define")      d_strerror_r_proto=define
15837                 set d_strerror_r_proto strerror_r $hdrs
15838                 eval $hasproto ;;
15839         *)      ;;
15840         esac
15841         case "$d_strerror_r_proto" in
15842         define)
15843         case "$strerror_r_proto" in
15844         ''|0) try='int strerror_r(int, char*, size_t);'
15845         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
15846         esac
15847         case "$strerror_r_proto" in
15848         ''|0) try='int strerror_r(int, char*, int);'
15849         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
15850         esac
15851         case "$strerror_r_proto" in
15852         ''|0) try='char* strerror_r(int, char*, size_t);'
15853         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
15854         esac
15855         case "$strerror_r_proto" in
15856         ''|0)   d_strerror_r=undef
15857                 strerror_r_proto=0
15858                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
15859         * )     case "$strerror_r_proto" in
15860                 REENTRANT_PROTO*) ;;
15861                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
15862                 esac
15863                 echo "Prototype: $try" ;;
15864         esac
15865         ;;
15866         *)      case "$usethreads" in
15867                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
15868                 esac
15869                 d_strerror_r=undef
15870                 strerror_r_proto=0
15871                 ;;
15872         esac
15873         ;;
15874 *)      strerror_r_proto=0
15875         ;;
15876 esac
15877
15878 : see if strftime exists
15879 set strftime d_strftime
15880 eval $inlibc
15881
15882 : see if strtod exists
15883 set strtod d_strtod
15884 eval $inlibc
15885
15886 : see if strtol exists
15887 set strtol d_strtol
15888 eval $inlibc
15889
15890 : see if strtold exists
15891 set strtold d_strtold
15892 eval $inlibc
15893
15894 : see if strtoll exists
15895 set strtoll d_strtoll
15896 eval $inlibc
15897
15898 case "$d_longlong-$d_strtoll" in
15899 "$define-$define")
15900         $cat <<EOM
15901 Checking whether your strtoll() works okay...
15902 EOM
15903         $cat >try.c <<'EOCP'
15904 #include <errno.h>
15905 #ifdef __hpux
15906 #define strtoll __strtoll
15907 #endif
15908 #ifdef __EMX__
15909 #define strtoll _strtoll
15910 #endif
15911 #include <stdio.h>
15912 extern long long int strtoll(char *s, char **, int); 
15913 static int bad = 0;
15914 int check(char *s, long long ell, int een) {
15915         long long gll;
15916         errno = 0;
15917         gll = strtoll(s, 0, 10);
15918         if (!((gll == ell) && (errno == een)))
15919                 bad++;
15920 }
15921 int main() {
15922         check(" 1",                                      1LL, 0);
15923         check(" 0",                                      0LL, 0);
15924         check("-1",                                     -1LL, 0);
15925         check("-9223372036854775808", -9223372036854775808LL, 0);
15926         check("-9223372036854775808", -9223372036854775808LL, 0);
15927         check(" 9223372036854775807",  9223372036854775807LL, 0);
15928         check("-9223372036854775808", -9223372036854775808LL, 0);
15929         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
15930         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
15931         if (!bad)
15932                 printf("ok\n");
15933 }
15934 EOCP
15935         set try
15936         if eval $compile; then
15937                 yyy=`$run ./try`
15938                 case "$yyy" in
15939                 ok) echo "Your strtoll() seems to be working okay." ;;
15940                 *) cat <<EOM >&4
15941 Your strtoll() doesn't seem to be working okay.
15942 EOM
15943                    d_strtoll="$undef"
15944                    ;;
15945                 esac
15946         else
15947                 echo "(I can't seem to compile the test program--assuming it doesn't)"
15948                 d_strtoll="$undef"
15949         fi
15950         ;;
15951 esac
15952
15953 : see if strtoq exists
15954 set strtoq d_strtoq
15955 eval $inlibc
15956
15957 : see if strtoul exists
15958 set strtoul d_strtoul
15959 eval $inlibc
15960
15961 case "$d_strtoul" in
15962 "$define")
15963         $cat <<EOM
15964 Checking whether your strtoul() works okay...
15965 EOM
15966         $cat >try.c <<'EOCP'
15967 #include <errno.h>
15968 #include <stdio.h>
15969 extern unsigned long int strtoul(char *s, char **, int); 
15970 static int bad = 0;
15971 void check(char *s, unsigned long eul, int een) {
15972         unsigned long gul;
15973         errno = 0;
15974         gul = strtoul(s, 0, 10);
15975         if (!((gul == eul) && (errno == een)))
15976                 bad++;
15977 }
15978 int main() {
15979         check(" 1", 1L, 0);
15980         check(" 0", 0L, 0);
15981 EOCP
15982         case "$longsize" in
15983         8)
15984             $cat >>try.c <<'EOCP'
15985         check("18446744073709551615", 18446744073709551615UL, 0);
15986         check("18446744073709551616", 18446744073709551615UL, ERANGE);
15987 #if 0 /* strtoul() for /^-/ strings is undefined. */
15988         check("-1", 18446744073709551615UL, 0);
15989         check("-18446744073709551614", 2, 0);
15990         check("-18446744073709551615", 1, 0);
15991         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
15992         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
15993 #endif
15994 EOCP
15995                 ;;
15996         4)
15997                     $cat >>try.c <<'EOCP'
15998         check("4294967295", 4294967295UL, 0);
15999         check("4294967296", 4294967295UL, ERANGE);
16000 #if 0 /* strtoul() for /^-/ strings is undefined. */
16001         check("-1", 4294967295UL, 0);
16002         check("-4294967294", 2, 0);
16003         check("-4294967295", 1, 0);
16004         check("-4294967296", 4294967295UL, ERANGE);
16005         check("-4294967297", 4294967295UL, ERANGE);
16006 #endif
16007 EOCP
16008                 ;;
16009         *)
16010 : Should we write these tests to be more portable by sprintf-ing
16011 : ~0 and then manipulating that char string as input for strtol?
16012                 ;;
16013         esac
16014         $cat >>try.c <<'EOCP'
16015         if (!bad)
16016                 printf("ok\n");
16017         return 0;
16018 }
16019 EOCP
16020         set try
16021         if eval $compile; then
16022                 case "`$run ./try`" in
16023                 ok) echo "Your strtoul() seems to be working okay." ;;
16024                 *) cat <<EOM >&4
16025 Your strtoul() doesn't seem to be working okay.
16026 EOM
16027                    d_strtoul="$undef"
16028                    ;;
16029                 esac
16030         fi
16031         ;;
16032 esac
16033
16034 : see if strtoull exists
16035 set strtoull d_strtoull
16036 eval $inlibc
16037
16038 case "$d_longlong-$d_strtoull" in
16039 "$define-$define")
16040         $cat <<EOM
16041 Checking whether your strtoull() works okay...
16042 EOM
16043         $cat >try.c <<'EOCP'
16044 #include <errno.h>
16045 #ifdef __hpux
16046 #define strtoull __strtoull
16047 #endif
16048 #include <stdio.h>
16049 extern unsigned long long int strtoull(char *s, char **, int); 
16050 static int bad = 0;
16051 int check(char *s, long long eull, int een) {
16052         long long gull;
16053         errno = 0;
16054         gull = strtoull(s, 0, 10);
16055         if (!((gull == eull) && (errno == een)))
16056                 bad++;
16057 }
16058 int main() {
16059         check(" 1",                                        1LL, 0);
16060         check(" 0",                                        0LL, 0);
16061         check("18446744073709551615",  18446744073709551615ULL, 0);
16062         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16063 #if 0 /* strtoull() for /^-/ strings is undefined. */
16064         check("-1",                    18446744073709551615ULL, 0);
16065         check("-18446744073709551614",                     2LL, 0);
16066         check("-18446744073709551615",                     1LL, 0);
16067         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16068         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16069 #endif
16070         if (!bad)
16071                 printf("ok\n");
16072 }
16073 EOCP
16074         set try
16075         if eval $compile; then
16076                 case "`$run ./try`" in
16077                 ok) echo "Your strtoull() seems to be working okay." ;;
16078                 *) cat <<EOM >&4
16079 Your strtoull() doesn't seem to be working okay.
16080 EOM
16081                    d_strtoull="$undef"
16082                    ;;
16083                 esac
16084         fi
16085         ;;
16086 esac
16087
16088 : see if strtouq exists
16089 set strtouq d_strtouq
16090 eval $inlibc
16091
16092 case "$d_strtouq" in
16093 "$define")
16094         $cat <<EOM
16095 Checking whether your strtouq() works okay...
16096 EOM
16097         $cat >try.c <<'EOCP'
16098 #include <errno.h>
16099 #include <stdio.h>
16100 extern unsigned long long int strtouq(char *s, char **, int); 
16101 static int bad = 0;
16102 void check(char *s, unsigned long long eull, int een) {
16103         unsigned long long gull;
16104         errno = 0;
16105         gull = strtouq(s, 0, 10);
16106         if (!((gull == eull) && (errno == een)))
16107                 bad++;
16108 }
16109 int main() {
16110         check(" 1",                                        1LL, 0);
16111         check(" 0",                                        0LL, 0);
16112         check("18446744073709551615",  18446744073709551615ULL, 0);
16113         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16114 #if 0 /* strtouq() for /^-/ strings is undefined. */
16115         check("-1",                    18446744073709551615ULL, 0);
16116         check("-18446744073709551614",                     2LL, 0);
16117         check("-18446744073709551615",                     1LL, 0);
16118         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16119         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16120 #endif
16121         if (!bad)
16122                 printf("ok\n");
16123         return 0;
16124 }
16125 EOCP
16126         set try
16127         if eval $compile; then
16128                 case "`$run ./try`" in
16129                 ok) echo "Your strtouq() seems to be working okay." ;;
16130                 *) cat <<EOM >&4
16131 Your strtouq() doesn't seem to be working okay.
16132 EOM
16133                    d_strtouq="$undef"
16134                    ;;
16135                 esac
16136         fi
16137         ;;
16138 esac
16139
16140 : see if strxfrm exists
16141 set strxfrm d_strxfrm
16142 eval $inlibc
16143
16144 : see if symlink exists
16145 set symlink d_symlink
16146 eval $inlibc
16147
16148 : see if syscall exists
16149 set syscall d_syscall
16150 eval $inlibc
16151
16152 : see if prototype for syscall is available
16153 echo " "
16154 set d_syscallproto syscall $i_unistd unistd.h
16155 eval $hasproto
16156
16157 : see if sysconf exists
16158 set sysconf d_sysconf
16159 eval $inlibc
16160
16161 : see if system exists
16162 set system d_system
16163 eval $inlibc
16164
16165 : see if tcgetpgrp exists
16166 set tcgetpgrp d_tcgetpgrp
16167 eval $inlibc
16168
16169 : see if tcsetpgrp exists
16170 set tcsetpgrp d_tcsetpgrp
16171 eval $inlibc
16172
16173 : see if prototype for telldir is available
16174 echo " "
16175 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16176 eval $hasproto
16177
16178 : see if this is a sys/times.h system
16179 set sys/times.h i_systimes
16180 eval $inhdr
16181
16182 : see if times exists
16183 echo " "
16184 if set times val -f d_times; eval $csym; $val; then
16185         echo 'times() found.' >&4
16186         d_times="$define"
16187         inc=''
16188         case "$i_systimes" in
16189         "$define") inc='sys/times.h';;
16190         esac
16191         rp="What is the type returned by times() on this system?"
16192         set clock_t clocktype long stdio.h sys/types.h $inc
16193         eval $typedef_ask
16194 else
16195         echo 'times() NOT found, hope that will do.' >&4
16196         d_times="$undef"
16197         clocktype='int'
16198 fi
16199
16200 : see if tmpnam_r exists
16201 set tmpnam_r d_tmpnam_r
16202 eval $inlibc
16203 case "$d_tmpnam_r" in
16204 "$define")
16205         hdrs="$i_systypes sys/types.h define stdio.h $i_stdio stdio.h"
16206         case "stdio" in
16207         time)
16208                 hdrs="$hdrs $i_systime sys/time.h"
16209                 ;;
16210         esac
16211         case "$d_tmpnam_r_proto:$usethreads" in
16212         ":define")      d_tmpnam_r_proto=define
16213                 set d_tmpnam_r_proto tmpnam_r $hdrs
16214                 eval $hasproto ;;
16215         *)      ;;
16216         esac
16217         case "$d_tmpnam_r_proto" in
16218         define)
16219         case "$tmpnam_r_proto" in
16220         ''|0) try='char* tmpnam_r(char*);'
16221         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16222         esac
16223         case "$tmpnam_r_proto" in
16224         ''|0)   d_tmpnam_r=undef
16225                 tmpnam_r_proto=0
16226                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16227         * )     case "$tmpnam_r_proto" in
16228                 REENTRANT_PROTO*) ;;
16229                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16230                 esac
16231                 echo "Prototype: $try" ;;
16232         esac
16233         ;;
16234         *)      case "$usethreads" in
16235                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16236                 esac
16237                 d_tmpnam_r=undef
16238                 tmpnam_r_proto=0
16239                 ;;
16240         esac
16241         ;;
16242 *)      tmpnam_r_proto=0
16243         ;;
16244 esac
16245
16246 : see if truncate exists
16247 set truncate d_truncate
16248 eval $inlibc
16249
16250 : see if ttyname_r exists
16251 set ttyname_r d_ttyname_r
16252 eval $inlibc
16253 case "$d_ttyname_r" in
16254 "$define")
16255         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16256         case "unistd" in
16257         time)
16258                 hdrs="$hdrs $i_systime sys/time.h"
16259                 ;;
16260         esac
16261         case "$d_ttyname_r_proto:$usethreads" in
16262         ":define")      d_ttyname_r_proto=define
16263                 set d_ttyname_r_proto ttyname_r $hdrs
16264                 eval $hasproto ;;
16265         *)      ;;
16266         esac
16267         case "$d_ttyname_r_proto" in
16268         define)
16269         case "$ttyname_r_proto" in
16270         ''|0) try='int ttyname_r(int, char*, size_t);'
16271         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16272         esac
16273         case "$ttyname_r_proto" in
16274         ''|0) try='int ttyname_r(int, char*, int);'
16275         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16276         esac
16277         case "$ttyname_r_proto" in
16278         ''|0) try='char* ttyname_r(int, char*, int);'
16279         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16280         esac
16281         case "$ttyname_r_proto" in
16282         ''|0)   d_ttyname_r=undef
16283                 ttyname_r_proto=0
16284                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16285         * )     case "$ttyname_r_proto" in
16286                 REENTRANT_PROTO*) ;;
16287                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16288                 esac
16289                 echo "Prototype: $try" ;;
16290         esac
16291         ;;
16292         *)      case "$usethreads" in
16293                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16294                 esac
16295                 d_ttyname_r=undef
16296                 ttyname_r_proto=0
16297                 ;;
16298         esac
16299         ;;
16300 *)      ttyname_r_proto=0
16301         ;;
16302 esac
16303
16304 : see if tzname[] exists
16305 echo " "
16306 if set tzname val -a d_tzname; eval $csym; $val; then
16307         val="$define"
16308         echo 'tzname[] found.' >&4
16309 else
16310         val="$undef"
16311         echo 'tzname[] NOT found.' >&4
16312 fi
16313 set d_tzname
16314 eval $setvar
16315
16316 case "$osname" in
16317 next|rhapsody|darwin) multiarch="$define" ;;
16318 esac
16319 case "$multiarch" in
16320 ''|[nN]*) multiarch="$undef" ;;
16321 esac
16322
16323 : check for ordering of bytes in a long
16324 echo " "
16325 case "$usecrosscompile$multiarch" in
16326 *$define*)
16327         $cat <<EOM
16328 You seem to be either cross-compiling or doing a multiarchitecture build,
16329 skipping the byteorder check.
16330
16331 EOM
16332         byteorder='ffff'
16333         ;;
16334 *)
16335         case "$byteorder" in
16336         '')
16337                 $cat <<'EOM'
16338 In the following, larger digits indicate more significance.  A big-endian
16339 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16340 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16341 machines may have weird orders like 3412.  A Cray will report 87654321,
16342 an Alpha will report 12345678. If the test program works the default is
16343 probably right.
16344 I'm now running the test program...
16345 EOM
16346                 $cat >try.c <<'EOCP'
16347 #include <stdio.h>
16348 int main()
16349 {
16350         int i;
16351         union {
16352                 unsigned long l;
16353                 char c[sizeof(long)];
16354         } u;
16355
16356         if (sizeof(long) > 4)
16357                 u.l = (0x08070605L << 32) | 0x04030201L;
16358         else
16359                 u.l = 0x04030201L;
16360         for (i = 0; i < sizeof(long); i++)
16361                 printf("%c", u.c[i]+'0');
16362         printf("\n");
16363         exit(0);
16364 }
16365 EOCP
16366                 xxx_prompt=y
16367                 set try
16368                 if eval $compile && ./try > /dev/null; then
16369                         dflt=`$run ./try`
16370                         case "$dflt" in
16371                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16372                                 echo "(The test program ran ok.)"
16373                                 echo "byteorder=$dflt"
16374                                 xxx_prompt=n
16375                         ;;
16376                         ????|????????) echo "(The test program ran ok.)" ;;
16377                         *) echo "(The test program didn't run right for some reason.)" ;;
16378                         esac
16379                 else
16380                         dflt='4321'
16381                         cat <<'EOM'
16382 (I can't seem to compile the test program.  Guessing big-endian...)
16383 EOM
16384                 fi
16385                 case "$xxx_prompt" in
16386                 y)
16387                         rp="What is the order of bytes in a long?"
16388                         . ./myread
16389                         byteorder="$ans"
16390                         ;;
16391                 *)      byteorder=$dflt
16392                         ;;
16393                 esac
16394                 ;;
16395         esac
16396         $rm -f try.c try
16397         ;;
16398 esac
16399
16400
16401 $cat <<EOM
16402
16403 Checking to see whether you can access character data unalignedly...
16404 EOM
16405 case "$d_u32align" in
16406 '')   $cat >try.c <<EOCP
16407 #include <stdio.h>
16408 #define U32 $u32type
16409 #define BYTEORDER 0x$byteorder
16410 #define U8 $u8type
16411 #include <signal.h>
16412 #ifdef SIGBUS
16413 $signal_t bletch(s) int s; { exit(4); }
16414 #endif
16415 int main() {
16416 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16417     U8 buf[8];
16418     U32 *up;
16419     int i;
16420
16421     if (sizeof(U32) != 4) {
16422         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16423         exit(1);
16424     }
16425
16426     fflush(stdout);
16427
16428 #ifdef SIGBUS
16429     signal(SIGBUS, bletch);
16430 #endif
16431
16432     buf[0] = 0;
16433     buf[1] = 0;
16434     buf[2] = 0;
16435     buf[3] = 1;
16436     buf[5] = 0;
16437     buf[6] = 0;
16438     buf[7] = 0;
16439     buf[8] = 1;
16440
16441     for (i = 0; i < 4; i++) {
16442         up = (U32*)(buf + i);
16443         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16444                (*up == 1 << (8*(3-i)))  /* little-endian */
16445               )
16446            )
16447         {
16448             printf("read failed (%x)\n", *up);
16449             exit(2);
16450         }
16451     }
16452
16453     /* write test */
16454     for (i = 0; i < 4; i++) {
16455         up = (U32*)(buf + i);
16456         *up = 0xBeef;
16457         if (*up != 0xBeef) {
16458             printf("write failed (%x)\n", *up);
16459             exit(3);
16460         }
16461     }
16462
16463     exit(0);
16464 #else
16465     printf("1\n");
16466     exit(1);
16467 #endif
16468     return 0;
16469 }
16470 EOCP
16471 set try
16472 if eval $compile_ok; then
16473         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16474         $run ./try 2>&1 >/dev/null
16475         case "$?" in
16476         0)      cat >&4 <<EOM
16477 You can access character data pretty unalignedly.
16478 EOM
16479                 d_u32align="$undef"
16480                 ;;
16481         *)      cat >&4 <<EOM
16482 It seems that you must access character data in an aligned manner.
16483 EOM
16484                 d_u32align="$define"
16485                 ;;
16486         esac
16487 else
16488         rp='Can you access character data at unaligned addresses?'
16489         dflt='n'
16490         . ./myread
16491         case "$ans" in
16492         [yY]*)  d_u32align="$undef"  ;;
16493         *)      d_u32align="$define" ;;
16494         esac
16495 fi
16496 $rm -f core core.try.* try.core
16497 ;;
16498 esac
16499
16500 : see if ualarm exists
16501 set ualarm d_ualarm
16502 eval $inlibc
16503
16504 : see if umask exists
16505 set umask d_umask
16506 eval $inlibc
16507
16508 : see if unordered exists
16509 set unordered d_unordered
16510 eval $inlibc
16511
16512 : see if usleep exists
16513 set usleep d_usleep
16514 eval $inlibc
16515
16516 : see if prototype for usleep is available
16517 echo " "
16518 set d_usleepproto usleep $i_unistd unistd.h
16519 eval $hasproto
16520
16521 : see if ustat exists
16522 set ustat d_ustat
16523 eval $inlibc
16524
16525 : backward compatibility for d_hvfork
16526 if test X$d_hvfork != X; then
16527         d_vfork="$d_hvfork"
16528         d_hvfork=''
16529 fi
16530 : see if there is a vfork
16531 val=''
16532 set vfork val
16533 eval $inlibc
16534
16535 : Ok, but do we want to use it. vfork is reportedly unreliable in 
16536 : perl on Solaris 2.x, and probably elsewhere.
16537 case "$val" in
16538 $define)
16539         echo " "
16540         case "$usevfork" in
16541         false) dflt='n';;
16542         *) dflt='y';;
16543         esac
16544         cat <<'EOM'
16545  
16546 Perl can only use a vfork() that doesn't suffer from strict
16547 restrictions on calling functions or modifying global data in
16548 the child.  For example, glibc-2.1 contains such a vfork()
16549 that is unsuitable.  If your system provides a proper fork()
16550 call, chances are that you do NOT want perl to use vfork().
16551
16552 EOM
16553         rp="Do you still want to use vfork()?"
16554         . ./myread
16555         case "$ans" in
16556         y|Y) ;;
16557         *)
16558                 echo "Ok, we won't use vfork()."
16559                 val="$undef"
16560                 ;;
16561         esac
16562         ;;
16563 esac
16564 set d_vfork
16565 eval $setvar
16566 case "$d_vfork" in
16567 $define) usevfork='true';;
16568 *) usevfork='false';;
16569 esac
16570
16571 : see if closedir exists
16572 set closedir d_closedir
16573 eval $inlibc
16574
16575 case "$d_closedir" in
16576 "$define")
16577         echo " "
16578         echo "Checking whether closedir() returns a status..." >&4
16579         cat > try.c <<EOM
16580 #$i_dirent I_DIRENT             /**/
16581 #$i_sysdir I_SYS_DIR            /**/
16582 #$i_sysndir I_SYS_NDIR          /**/
16583 #$i_systypes I_SYS_TYPES        /**/
16584
16585 #if defined(I_SYS_TYPES)
16586 #include <sys/types.h>
16587 #endif
16588 #if defined(I_DIRENT)
16589 #include <dirent.h>
16590 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
16591 #include <sys/dir.h>
16592 #endif
16593 #else
16594 #ifdef I_SYS_NDIR
16595 #include <sys/ndir.h>
16596 #else
16597 #ifdef I_SYS_DIR
16598 #ifdef hp9000s500
16599 #include <ndir.h>       /* may be wrong in the future */
16600 #else
16601 #include <sys/dir.h>
16602 #endif
16603 #endif
16604 #endif
16605 #endif 
16606 int main() { return closedir(opendir(".")); }
16607 EOM
16608         set try
16609         if eval $compile_ok; then
16610                 if $run ./try > /dev/null 2>&1 ; then
16611                         echo "Yes, it does."
16612                         val="$undef"
16613                 else
16614                         echo "No, it doesn't."
16615                         val="$define"
16616                 fi
16617         else
16618                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16619                 val="$define"
16620         fi
16621         ;;
16622 *)
16623         val="$undef";
16624         ;;
16625 esac
16626 set d_void_closedir
16627 eval $setvar
16628 $rm -f try try.*
16629 : see if there is a wait4
16630 set wait4 d_wait4
16631 eval $inlibc
16632
16633 : see if waitpid exists
16634 set waitpid d_waitpid
16635 eval $inlibc
16636
16637 : see if wcstombs exists
16638 set wcstombs d_wcstombs
16639 eval $inlibc
16640
16641 : see if wctomb exists
16642 set wctomb d_wctomb
16643 eval $inlibc
16644
16645 : see if writev exists
16646 set writev d_writev
16647 eval $inlibc
16648
16649 : preserve RCS keywords in files with variable substitution, grrr
16650 Date='$Date'
16651 Id='$Id'
16652 Log='$Log'
16653 RCSfile='$RCSfile'
16654 Revision='$Revision'
16655
16656 : check for alignment requirements
16657 echo " "
16658 case "$usecrosscompile$multiarch" in
16659 *$define*)
16660         $cat <<EOM
16661 You seem to be either cross-compiling or doing a multiarchitecture build,
16662 skipping the memory alignment check.
16663
16664 EOM
16665         case "$alignbytes" in
16666         '') alignbytes=8 ;;
16667         esac
16668         ;;
16669 *)
16670         case "$alignbytes" in
16671         '') echo "Checking alignment constraints..." >&4
16672                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
16673                         $cat >try.c <<'EOCP'
16674 typedef long double NV;
16675 EOCP
16676                 else
16677                         $cat >try.c <<'EOCP'
16678 typedef double NV;
16679 EOCP
16680                 fi
16681                 $cat >>try.c <<'EOCP'
16682 #include <stdio.h>
16683 struct foobar {
16684         char foo;
16685         NV bar;
16686 } try_algn;
16687 int main()
16688 {
16689     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
16690     return(0);
16691 }
16692 EOCP
16693                 set try
16694                 if eval $compile_ok; then
16695                         dflt=`$run ./try`
16696                 else
16697                         dflt='8'
16698                         echo "(I can't seem to compile the test program...)"
16699                 fi
16700                 ;;
16701         *) dflt="$alignbytes"
16702                 ;;
16703         esac
16704         rp="Doubles must be aligned on a how-many-byte boundary?"
16705         . ./myread
16706         alignbytes="$ans"
16707         $rm -f try.c try
16708         ;;
16709 esac
16710
16711
16712 : set the base revision
16713 baserev=5.0
16714
16715 : how do we catenate cpp tokens here?
16716 echo " "
16717 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
16718 $cat >cpp_stuff.c <<'EOCP'
16719 #define RCAT(a,b)a/**/b
16720 #define ACAT(a,b)a ## b
16721 RCAT(Rei,ser)
16722 ACAT(Cir,cus)
16723 EOCP
16724 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
16725 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
16726         echo "Oh!  Smells like ANSI's been here." >&4
16727         echo "We can catify or stringify, separately or together!"
16728         cpp_stuff=42
16729 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
16730         echo "Ah, yes!  The good old days!" >&4
16731         echo "However, in the good old days we don't know how to stringify and"
16732         echo "catify at the same time."
16733         cpp_stuff=1
16734 else
16735         $cat >&4 <<EOM
16736 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
16737 to have to edit the values of CAT[2-5] in config.h...
16738 EOM
16739         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
16740 fi
16741 $rm -f cpp_stuff.*
16742
16743 : see if this is a db.h system
16744 set db.h i_db
16745 eval $inhdr
16746
16747 case "$i_db" in
16748 $define)
16749         : Check db version.
16750         echo " "
16751         echo "Checking Berkeley DB version ..." >&4
16752         $cat >try.c <<EOCP
16753 #$d_const HASCONST
16754 #ifndef HASCONST
16755 #define const
16756 #endif
16757 #include <sys/types.h>
16758 #include <stdio.h>
16759 #include <db.h>
16760 int main(int argc, char *argv[])
16761 {
16762 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
16763     int Major, Minor, Patch ;
16764     unsigned long Version ;
16765     (void)db_version(&Major, &Minor, &Patch) ;
16766     if (argc == 2) {
16767         printf("%d %d %d %d %d %d\n",
16768                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
16769                Major, Minor, Patch);
16770         exit(0);
16771     }
16772     printf("You have Berkeley DB Version 2 or greater.\n");
16773
16774     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
16775                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
16776     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
16777                 Major, Minor, Patch) ;
16778
16779     /* check that db.h & libdb are compatible */
16780     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
16781         printf("db.h and libdb are incompatible.\n") ;
16782         exit(3);        
16783     }
16784
16785     printf("db.h and libdb are compatible.\n") ;
16786
16787     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
16788                 + DB_VERSION_PATCH ;
16789
16790     /* needs to be >= 2.3.4 */
16791     if (Version < 2003004) {
16792     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
16793         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
16794         exit(2);        
16795     }
16796
16797     exit(0);
16798 #else
16799 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
16800     if (argc == 2) {
16801         printf("1 0 0\n");
16802         exit(0);
16803     }
16804     printf("You have Berkeley DB Version 1.\n");
16805     exit(0);    /* DB version < 2: the coast is clear. */
16806 #else
16807     exit(1);    /* <db.h> not Berkeley DB? */
16808 #endif
16809 #endif
16810 }
16811 EOCP
16812         set try
16813         if eval $compile_ok && $run ./try; then
16814                 echo 'Looks OK.' >&4
16815                 set `$run ./try 1`
16816                 db_version_major=$1
16817                 db_version_minor=$2
16818                 db_version_patch=$3
16819         else
16820                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
16821                 i_db=$undef
16822                 case " $libs " in
16823                 *"-ldb "*)
16824                         : Remove db from list of libraries to use
16825                         echo "Removing unusable -ldb from library list" >&4
16826                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
16827                         shift
16828                         libs="$*"
16829                         echo "libs = $libs" >&4
16830                         ;;
16831                 esac
16832         fi
16833         $rm -f try.*
16834         ;;
16835 esac
16836
16837 case "$i_db" in
16838 define)
16839         : Check the return type needed for hash 
16840         echo " "
16841         echo "Checking return type needed for hash for Berkeley DB ..." >&4
16842         $cat >try.c <<EOCP
16843 #$d_const HASCONST
16844 #ifndef HASCONST
16845 #define const
16846 #endif
16847 #include <sys/types.h>
16848 #include <db.h>
16849
16850 #ifndef DB_VERSION_MAJOR
16851 u_int32_t hash_cb (ptr, size)
16852 const void *ptr;
16853 size_t size;
16854 {
16855 }
16856 HASHINFO info;
16857 int main()
16858 {
16859         info.hash = hash_cb;
16860 }
16861 #endif
16862 EOCP
16863         if $cc $ccflags -c try.c >try.out 2>&1 ; then
16864                 if $contains warning try.out >>/dev/null 2>&1 ; then
16865                         db_hashtype='int'
16866                 else
16867                         db_hashtype='u_int32_t'
16868                 fi
16869         else
16870                 : XXX Maybe we should just give up here.
16871                 db_hashtype=u_int32_t
16872                 $cat try.out >&4
16873                 echo "Help:  I can't seem to compile the db test program." >&4
16874                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
16875         fi
16876         $rm -f try.*
16877         echo "Your version of Berkeley DB uses $db_hashtype for hash."
16878         ;;
16879 *)      db_hashtype=u_int32_t
16880         ;;
16881 esac
16882 case "$i_db" in
16883 define)
16884         : Check the return type needed for prefix 
16885         echo " "
16886         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
16887         cat >try.c <<EOCP
16888 #$d_const HASCONST
16889 #ifndef HASCONST
16890 #define const
16891 #endif
16892 #include <sys/types.h>
16893 #include <db.h>
16894
16895 #ifndef DB_VERSION_MAJOR
16896 size_t prefix_cb (key1, key2)
16897 const DBT *key1;
16898 const DBT *key2;
16899 {
16900 }
16901 BTREEINFO info;
16902 int main()
16903 {
16904         info.prefix = prefix_cb;
16905 }
16906 #endif
16907 EOCP
16908         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
16909                 if $contains warning try.out >>/dev/null 2>&1 ; then
16910                         db_prefixtype='int'
16911                 else
16912                         db_prefixtype='size_t'
16913                 fi
16914         else
16915                 db_prefixtype='size_t'
16916                 : XXX Maybe we should just give up here.
16917                 $cat try.out >&4
16918                 echo "Help:  I can't seem to compile the db test program." >&4
16919                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
16920         fi
16921         $rm -f try.*
16922         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
16923         ;;
16924 *)      db_prefixtype='size_t'
16925         ;;
16926 esac
16927
16928
16929 : How can we generate normalized random numbers ?
16930 echo " "
16931 echo "Looking for a random number function..." >&4
16932 case "$randfunc" in
16933 '')
16934         if set drand48 val -f; eval $csym; $val; then
16935                 dflt="drand48"
16936                 echo "Good, found drand48()." >&4
16937         elif set random val -f; eval $csym; $val; then
16938                 dflt="random"
16939                 echo "OK, found random()." >&4
16940         else
16941                 dflt="rand"
16942                 echo "Yick, looks like I have to use rand()." >&4
16943         fi
16944         echo " "
16945         ;;
16946 *)
16947         dflt="$randfunc"
16948         ;;
16949 esac
16950 cont=true
16951
16952 case "$ccflags" in
16953 *-Dmy_rand=*|*-Dmy_srand=*)
16954         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
16955         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
16956         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
16957         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
16958         ;;
16959 esac
16960
16961 while $test "$cont"; do
16962         rp="Use which function to generate random numbers?"
16963         . ./myread
16964         if $test "$ans" = "$dflt"; then
16965                 : null
16966         else
16967                 randbits=''
16968         fi
16969         randfunc="$ans"
16970         if set $ans val -f; eval $csym; $val; then
16971                 cont=''
16972         else
16973                 dflt=y
16974                 rp="I cannot find function $ans. Use that name anyway?"
16975                 . ./myread
16976                 dflt=rand
16977                 case "$ans" in
16978                         [yY]*) cont='';;
16979                 esac
16980         fi
16981         case "$cont" in
16982         '')
16983                 case "$randfunc" in
16984                 drand48)
16985                         drand01="drand48()"
16986                         seedfunc="srand48"
16987                         randbits=48
16988                         randseedtype=long
16989                         ;;
16990                 rand|random)
16991                         case "$randbits" in
16992                         '')
16993 echo "Checking to see how many bits your $randfunc() function produces..." >&4
16994                                 $cat >try.c <<EOCP
16995 #$i_unistd I_UNISTD
16996 #$i_stdlib I_STDLIB
16997 #include <stdio.h>
16998 #ifdef I_UNISTD
16999 #  include <unistd.h>
17000 #endif
17001 #ifdef I_STDLIB
17002 #  include <stdlib.h>
17003 #endif
17004 int main()
17005 {
17006         register int i;
17007         register unsigned long tmp;
17008         register unsigned long max = 0L;
17009
17010         for (i = 1000; i; i--) {
17011                 tmp = (unsigned long) $randfunc();
17012                 if (tmp > max) max = tmp;
17013         }
17014         for (i = 0; max; i++)
17015                 max /= 2;
17016         printf("%d\n",i);
17017 }
17018 EOCP
17019                                 set try
17020                                 if eval $compile_ok; then
17021                                         dflt=`try`
17022                                 else
17023                                         dflt='?'
17024                                         echo "(I can't seem to compile the test program...)"
17025                                 fi
17026                                 ;;
17027                         *)
17028                                 dflt="$randbits"
17029                                 ;;
17030                         esac
17031                         rp="How many bits does your $randfunc() function produce?"
17032                         . ./myread
17033                         randbits="$ans"
17034                         $rm -f try.c try
17035                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17036                         seedfunc="s$randfunc"
17037                         randseedtype=unsigned
17038                         ;;
17039                 *)
17040                         dflt="31"
17041                         rp="How many bits does your $randfunc() function produce?"
17042                         . ./myread
17043                         randbits="$ans"
17044                         seedfunc="s$randfunc"
17045                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17046                         if set $seedfunc val -f; eval $csym; $val; then
17047                                 echo "(Using $seedfunc() to seed random generator)"
17048                         else
17049                                 echo "(Warning: no $seedfunc() to seed random generator)"
17050                                 seedfunc=rand
17051                         fi
17052                         randseedtype=unsigned
17053                         ;;
17054                 esac
17055                 ;;
17056         esac
17057 done
17058
17059 echo " "
17060 echo "Determining whether or not we are on an EBCDIC system..." >&4
17061 $cat >try.c <<'EOM'
17062 int main()
17063 {
17064   if ('M'==0xd4) return 0;
17065   return 1;
17066 }
17067 EOM
17068
17069 val=$undef
17070 set try
17071 if eval $compile_ok; then
17072         if $run ./try; then
17073                 echo "You seem to speak EBCDIC." >&4
17074                 val="$define"
17075         else
17076                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17077         fi
17078 else
17079         echo "I'm unable to compile the test program." >&4
17080         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17081 fi
17082 $rm -f try try.*
17083 set ebcdic
17084 eval $setvar
17085
17086 echo " "
17087 $cat >&4 <<EOM
17088 Checking how to flush all pending stdio output...
17089 EOM
17090 # I only know how to find the first 32 possibly open files on SunOS.
17091 # See also hints/sunos_4_1.sh and util.c  --AD
17092 case "$osname" in
17093 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17094 esac
17095 $cat >>try.c <<EOCP
17096 #include <stdio.h>
17097 #$i_unistd I_UNISTD
17098 #ifdef I_UNISTD
17099 # include <unistd.h>
17100 #endif
17101 #$d_sysconf HAS_SYSCONF
17102 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17103 #ifdef HAS_STDIO_STREAM_ARRAY
17104 # define STDIO_STREAM_ARRAY $stdio_stream_array
17105 #endif
17106 int main() {
17107   FILE* p;
17108   unlink("try.out");
17109   p = fopen("try.out", "w");
17110 #ifdef TRY_FPUTC
17111   fputc('x', p);
17112 #else
17113 # ifdef TRY_FPRINTF
17114   fprintf(p, "x");
17115 # endif
17116 #endif
17117 #ifdef TRY_FFLUSH_NULL
17118   fflush(NULL);
17119 #endif
17120 #ifdef TRY_FFLUSH_ALL
17121   {
17122     long open_max = -1;
17123 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17124     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17125 # else
17126 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17127     open_max = sysconf(_SC_OPEN_MAX);
17128 #  else
17129 #   ifdef FOPEN_MAX
17130     open_max = FOPEN_MAX;
17131 #   else
17132 #    ifdef OPEN_MAX
17133     open_max = OPEN_MAX;
17134 #    else
17135 #     ifdef _NFILE
17136     open_max = _NFILE;
17137 #     endif
17138 #    endif
17139 #   endif
17140 #  endif
17141 # endif 
17142 # ifdef HAS_STDIO_STREAM_ARRAY
17143     if (open_max > 0) {
17144       long i;
17145       for (i = 0; i < open_max; i++)
17146             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17147                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17148                 STDIO_STREAM_ARRAY[i]._flag)
17149                 fflush(&STDIO_STREAM_ARRAY[i]);
17150     }   
17151   }
17152 # endif
17153 #endif
17154   _exit(42);
17155 }
17156 EOCP
17157 : first we have to find out how _not_ to flush
17158 $to try.c
17159 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17160     output=''
17161     set try -DTRY_FPUTC
17162     if eval $compile; then
17163             $run ./try 2>/dev/null
17164             code="$?"
17165             $from try.out
17166             if $test ! -s try.out -a "X$code" = X42; then
17167                 output=-DTRY_FPUTC
17168             fi
17169     fi
17170     case "$output" in
17171     '')
17172             set try -DTRY_FPRINTF
17173             if eval $compile; then
17174                     $run ./try 2>/dev/null
17175                     code="$?"
17176                     $from try.out
17177                     if $test ! -s try.out -a "X$code" = X42; then
17178                         output=-DTRY_FPRINTF
17179                     fi
17180             fi
17181         ;;
17182     esac
17183 fi
17184 : check for fflush NULL behaviour
17185 case "$fflushNULL" in
17186 '')     set try -DTRY_FFLUSH_NULL $output
17187         if eval $compile; then
17188                 $run ./try 2>/dev/null
17189                 code="$?"
17190                 $from try.out
17191                 if $test -s try.out -a "X$code" = X42; then
17192                         fflushNULL="`$cat try.out`"
17193                 else
17194                         if $test "X$code" != X42; then
17195                                 $cat >&4 <<EOM
17196 (If this test failed, don't worry, we'll try another method shortly.)
17197 EOM
17198                         fi
17199                 fi
17200         fi
17201         $rm -f core try.core core.try.*
17202         case "$fflushNULL" in
17203         x)      $cat >&4 <<EOM
17204 Your fflush(NULL) works okay for output streams.
17205 Let's see if it clobbers input pipes...
17206 EOM
17207 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17208 # bug that improperly flushes the input end of pipes.  So we avoid the
17209 # autoflush on fork/system/exec support for now. :-(
17210 $cat >tryp.c <<EOCP
17211 #include <stdio.h>
17212 int
17213 main(int argc, char **argv)
17214 {
17215     char buf[1024];
17216     int i;
17217     char *bp = buf;
17218     while (1) {
17219         while ((i = getc(stdin)) != -1
17220                && (*bp++ = i) != '\n'
17221                && bp < &buf[1024])
17222         /* DO NOTHING */ ;
17223         *bp = '\0';
17224         fprintf(stdout, "%s", buf);
17225         fflush(NULL);
17226         if (i == -1)
17227             return 0;
17228         bp = buf;
17229     }
17230 }
17231 EOCP
17232                 fflushNULL="$define"
17233                 set tryp
17234                 if eval $compile; then
17235                     $rm -f tryp.out
17236                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17237                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17238                        $cat >&4 <<EOM
17239 fflush(NULL) seems to behave okay with input streams.
17240 EOM
17241                         fflushNULL="$define"
17242                     else
17243                         $cat >&4 <<EOM
17244 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17245 EOM
17246                         fflushNULL="$undef"
17247                     fi
17248                 fi
17249                 $rm -f core tryp.c tryp.core core.tryp.*
17250                 ;;
17251         '')     $cat >&4 <<EOM
17252 Your fflush(NULL) isn't working (contrary to ANSI C).
17253 EOM
17254                 fflushNULL="$undef"
17255                 ;;
17256         *)      $cat >&4 <<EOM
17257 Cannot figure out whether your fflush(NULL) works or not.
17258 I'm assuming it doesn't (contrary to ANSI C).
17259 EOM
17260                 fflushNULL="$undef"
17261                 ;;
17262         esac
17263         ;;
17264 $define|true|[yY]*)
17265         fflushNULL="$define"
17266         ;;
17267 *)
17268         fflushNULL="$undef"
17269         ;;
17270 esac
17271 : check explicit looping only if NULL did not work, and if the pipe
17272 : bug does not show up on an explicit flush too
17273 case "$fflushNULL" in
17274 "$undef")
17275         $cat >tryp.c <<EOCP
17276 #include <stdio.h>
17277 int
17278 main(int argc, char **argv)
17279 {
17280     char buf[1024];
17281     int i;
17282     char *bp = buf;
17283     while (1) {
17284         while ((i = getc(stdin)) != -1
17285                && (*bp++ = i) != '\n'
17286                && bp < &buf[1024])
17287         /* DO NOTHING */ ;
17288         *bp = '\0';
17289         fprintf(stdout, "%s", buf);
17290         fflush(stdin);
17291         if (i == -1)
17292             return 0;
17293         bp = buf;
17294     }
17295 }
17296 EOCP
17297         set tryp
17298         if eval $compile; then
17299             $rm -f tryp.out
17300             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17301             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17302                $cat >&4 <<EOM
17303 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17304 EOM
17305                 : now check for fflushall behaviour
17306                 case "$fflushall" in
17307                 '')     set try -DTRY_FFLUSH_ALL $output
17308                         if eval $compile; then
17309                                 $cat >&4 <<EOM
17310 (Now testing the other method--but note that this also may fail.)
17311 EOM
17312                                 $run ./try 2>/dev/null
17313                                 code=$?
17314                                 $from try.out
17315                                 if $test -s try.out -a "X$code" = X42; then
17316                                         fflushall="`$cat try.out`"
17317                                 fi
17318                         fi
17319                         $rm -f core try.core core.try.*
17320                         case "$fflushall" in
17321                         x)      $cat >&4 <<EOM
17322 Whew. Flushing explicitly all the stdio streams works.
17323 EOM
17324                                 fflushall="$define"
17325                                 ;;
17326                         '')     $cat >&4 <<EOM
17327 Sigh. Flushing explicitly all the stdio streams doesn't work.
17328 EOM
17329                                 fflushall="$undef"
17330                                 ;;
17331                         *)      $cat >&4 <<EOM
17332 Cannot figure out whether flushing stdio streams explicitly works or not.
17333 I'm assuming it doesn't.
17334 EOM
17335                                 fflushall="$undef"
17336                                 ;;
17337                         esac
17338                         ;;
17339                 "$define"|true|[yY]*)
17340                         fflushall="$define"
17341                         ;;
17342                 *)
17343                         fflushall="$undef"
17344                         ;;
17345                 esac
17346             else
17347                 $cat >&4 <<EOM
17348 All is futile.  Even fflush(stdin) clobbers input pipes!
17349 EOM
17350                 fflushall="$undef"
17351             fi
17352         else
17353             fflushall="$undef"
17354         fi
17355         $rm -f core tryp.c tryp.core core.tryp.*
17356         ;;
17357 *)      fflushall="$undef"
17358         ;;
17359 esac
17360
17361 case "$fflushNULL$fflushall" in
17362 undefundef)
17363         $cat <<EOM
17364 OK, I give up.  I cannot figure out how to flush pending stdio output.
17365 We won't be flushing handles at all before fork/exec/popen.
17366 EOM
17367         ;;
17368 esac
17369 $rm -f try.* try$exe_ext
17370
17371 : Store the full pathname to the ar program for use in the C program
17372 : Respect a hint or command line value for full_ar.
17373 case "$full_ar" in
17374 '') full_ar=$ar ;;
17375 esac
17376
17377 : Store the full pathname to the sed program for use in the C program
17378 full_sed=$sed
17379
17380 : see what type gids are declared as in the kernel
17381 echo " "
17382 echo "Looking for the type for group ids returned by getgid()."
17383 set gid_t gidtype xxx stdio.h sys/types.h
17384 eval $typedef
17385 case "$gidtype" in
17386 xxx)
17387         xxx=`./findhdr sys/user.h`
17388         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17389         case $1 in
17390         unsigned) dflt="$1 $2" ;;
17391         *) dflt="$1" ;;
17392         esac
17393         ;;
17394 *) dflt="$gidtype";;
17395 esac
17396 case "$gidtype" in
17397 gid_t) echo "gid_t found." ;;
17398 *)      rp="What is the type for group ids returned by getgid()?"
17399         . ./myread
17400         gidtype="$ans"
17401         ;;
17402 esac
17403
17404 echo " "
17405 case "$gidtype" in
17406 *_t) zzz="$gidtype"     ;;
17407 *)   zzz="gid"          ;;
17408 esac
17409 echo "Checking the size of $zzz..." >&4 
17410 cat > try.c <<EOCP
17411 #include <sys/types.h>
17412 #include <stdio.h>
17413 int main() {
17414     printf("%d\n", (int)sizeof($gidtype));
17415     exit(0);
17416 }
17417 EOCP
17418 set try
17419 if eval $compile_ok; then
17420         yyy=`$run ./try`
17421         case "$yyy" in
17422         '')     gidsize=4
17423                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17424                 ;;
17425         *)      gidsize=$yyy
17426                 echo "Your $zzz is $gidsize bytes long."
17427                 ;;
17428         esac
17429 else
17430         gidsize=4
17431         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17432 fi
17433
17434
17435 echo " "
17436 case "$gidtype" in
17437 *_t) zzz="$gidtype"     ;;
17438 *)   zzz="gid"          ;;
17439 esac
17440 echo "Checking the sign of $zzz..." >&4 
17441 cat > try.c <<EOCP
17442 #include <sys/types.h>
17443 #include <stdio.h>
17444 int main() {
17445         $gidtype foo = -1;
17446         if (foo < 0)
17447                 printf("-1\n");
17448         else
17449                 printf("1\n");
17450 }
17451 EOCP
17452 set try
17453 if eval $compile; then
17454         yyy=`$run ./try`
17455         case "$yyy" in
17456         '')     gidsign=1
17457                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17458                 ;;
17459         *)      gidsign=$yyy
17460                 case "$gidsign" in
17461                  1) echo "Your $zzz is unsigned." ;;
17462                 -1) echo "Your $zzz is signed."   ;;
17463                 esac
17464                 ;;
17465         esac
17466 else
17467         gidsign=1
17468         echo "(I can't compile the test program--guessing unsigned.)" >&4
17469 fi
17470
17471
17472 echo " "
17473
17474 if $test X"$quadtype" != X; then
17475
17476 echo "Checking how to print 64-bit integers..." >&4
17477
17478 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17479         $cat >try.c <<'EOCP'
17480 #include <sys/types.h>
17481 #include <stdio.h>
17482 int main() {
17483   int q = 12345678901;
17484   printf("%ld\n", q);
17485 }
17486 EOCP
17487         set try
17488         if eval $compile; then
17489                 yyy=`$run ./try`
17490                 case "$yyy" in
17491                 12345678901)
17492                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17493                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17494                         echo "We will use %d."
17495                         ;;
17496                 esac
17497         fi
17498 fi
17499
17500 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17501         $cat >try.c <<'EOCP'
17502 #include <sys/types.h>
17503 #include <stdio.h>
17504 int main() {
17505   long q = 12345678901;
17506   printf("%ld\n", q);
17507 }
17508 EOCP
17509         set try
17510         if eval $compile; then
17511                 yyy=`$run ./try`
17512                 case "$yyy" in
17513                 12345678901)
17514                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17515                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17516                         echo "We will use %ld."
17517                         ;;
17518                 esac
17519         fi
17520 fi
17521
17522 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17523         $cat >try.c <<'EOCP'
17524 #include <sys/types.h>
17525 #include <inttypes.h>
17526 #include <stdio.h>
17527 int main() {
17528   int64_t q = 12345678901;
17529   printf("%" PRId64 "\n", q);
17530 }
17531 EOCP
17532         set try
17533         if eval $compile; then
17534                 yyy=`$run ./try`
17535                 case "$yyy" in
17536                 12345678901)
17537                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
17538                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
17539                         echo "We will use the C9X style."
17540                         ;;
17541                 esac
17542         fi
17543 fi
17544
17545 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
17546         $cat >try.c <<EOCP
17547 #include <sys/types.h>
17548 #include <stdio.h>
17549 int main() {
17550   $quadtype q = 12345678901;
17551   printf("%Ld\n", q);
17552 }
17553 EOCP
17554         set try
17555         if eval $compile; then
17556                 yyy=`$run ./try`
17557                 case "$yyy" in
17558                 12345678901)
17559                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
17560                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
17561                         echo "We will use %Ld."
17562                         ;;
17563                 esac
17564         fi
17565 fi
17566
17567 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
17568         $cat >try.c <<'EOCP'
17569 #include <sys/types.h>
17570 #include <stdio.h>
17571 int main() {
17572   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
17573   printf("%lld\n", q);
17574 }
17575 EOCP
17576         set try
17577         if eval $compile; then
17578                 yyy=`$run ./try`
17579                 case "$yyy" in
17580                 12345678901)
17581                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
17582                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
17583                         echo "We will use the %lld style."
17584                         ;;
17585                 esac
17586         fi
17587 fi
17588
17589 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
17590         $cat >try.c <<EOCP
17591 #include <sys/types.h>
17592 #include <stdio.h>
17593 int main() {
17594   $quadtype q = 12345678901;
17595   printf("%qd\n", q);
17596 }
17597 EOCP
17598         set try
17599         if eval $compile; then
17600                 yyy=`$run ./try`
17601                 case "$yyy" in
17602                 12345678901)
17603                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
17604                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
17605                         echo "We will use %qd."
17606                         ;;
17607                 esac
17608         fi
17609 fi
17610
17611 if $test X"$sPRId64" = X; then
17612         echo "Cannot figure out how to print 64-bit integers." >&4
17613 fi
17614
17615 $rm -f try try.*
17616
17617 fi
17618
17619 case "$sPRId64" in
17620 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
17621         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
17622         ;;
17623 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
17624         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
17625         ;;
17626 esac
17627
17628
17629 echo " "
17630 $echo "Checking the format strings to be used for Perl's internal types..." >&4
17631
17632 if $test X"$ivsize" = X8; then
17633         ivdformat="$sPRId64"
17634         uvuformat="$sPRIu64"
17635         uvoformat="$sPRIo64"
17636         uvxformat="$sPRIx64"
17637         uvXUformat="$sPRIXU64"
17638 else
17639         if $test X"$ivsize" = X"$longsize"; then
17640                 ivdformat='"ld"'
17641                 uvuformat='"lu"'
17642                 uvoformat='"lo"'
17643                 uvxformat='"lx"'
17644                 uvXUformat='"lX"'
17645         else
17646                 if $test X"$ivsize" = X"$intsize"; then
17647                         ivdformat='"d"'
17648                         uvuformat='"u"'
17649                         uvoformat='"o"'
17650                         uvxformat='"x"'
17651                         uvXUformat='"X"'
17652                 else
17653                         : far out
17654                         if $test X"$ivsize" = X"$shortsize"; then
17655                                 ivdformat='"hd"'
17656                                 uvuformat='"hu"'
17657                                 uvoformat='"ho"'
17658                                 uvxformat='"hx"'
17659                                 uvXUformat='"hX"'
17660                         fi
17661                 fi
17662         fi
17663 fi
17664
17665 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
17666         nveformat="$sPRIeldbl"
17667         nvfformat="$sPRIfldbl"
17668         nvgformat="$sPRIgldbl"
17669         nvEUformat="$sPRIEUldbl"
17670         nvFUformat="$sPRIFUldbl"
17671         nvGUformat="$sPRIGUldbl"
17672 else
17673         nveformat='"e"'
17674         nvfformat='"f"'
17675         nvgformat='"g"'
17676         nvEUformat='"E"'
17677         nvFUformat='"F"'
17678         nvGUformat='"G"'
17679 fi
17680
17681 case "$ivdformat" in
17682 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
17683     exit 1
17684     ;;
17685 esac
17686
17687
17688 echo " "
17689 $echo "Checking the format string to be used for gids..." >&4
17690
17691 case "$gidsign" in
17692 -1)     if $test X"$gidsize" = X"$ivsize"; then
17693                 gidformat="$ivdformat"
17694         else
17695                 if $test X"$gidsize" = X"$longsize"; then
17696                         gidformat='"ld"'
17697                 else
17698                         if $test X"$gidsize" = X"$intsize"; then
17699                                 gidformat='"d"'
17700                         else
17701                                 if $test X"$gidsize" = X"$shortsize"; then
17702                                         gidformat='"hd"'
17703                                 fi
17704                         fi
17705                 fi
17706         fi
17707         ;;
17708 *)      if $test X"$gidsize" = X"$uvsize"; then
17709                 gidformat="$uvuformat"
17710         else
17711                 if $test X"$gidsize" = X"$longsize"; then
17712                         gidformat='"lu"'
17713                 else
17714                         if $test X"$gidsize" = X"$intsize"; then
17715                                 gidformat='"u"'
17716                         else
17717                                 if $test X"$gidsize" = X"$shortsize"; then
17718                                         gidformat='"hu"'
17719                                 fi
17720                         fi
17721                 fi
17722         fi
17723         ;;
17724 esac
17725
17726 : see if getgroups exists
17727 set getgroups d_getgrps
17728 eval $inlibc
17729
17730 : see if setgroups exists
17731 set setgroups d_setgrps
17732 eval $inlibc
17733
17734
17735 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
17736 echo " "
17737 case "$d_getgrps$d_setgrps" in
17738 *define*)
17739         case "$groupstype" in
17740         '') dflt="$gidtype" ;;
17741         *)  dflt="$groupstype" ;;
17742         esac
17743         $cat <<EOM
17744 What type of pointer is the second argument to getgroups() and setgroups()?
17745 Usually this is the same as group ids, $gidtype, but not always.
17746
17747 EOM
17748         rp='What type pointer is the second argument to getgroups() and setgroups()?'
17749         . ./myread
17750         groupstype="$ans"
17751         ;;
17752 *)  groupstype="$gidtype";;
17753 esac
17754
17755 echo " "
17756 echo "Checking if your $make program sets \$(MAKE)..." >&4
17757 case "$make_set_make" in
17758 '')
17759         $sed 's/^X //' > testmake.mak << 'EOF'
17760 Xall:
17761 X       @echo 'maketemp="$(MAKE)"'
17762 EOF
17763         case "`$make -f testmake.mak 2>/dev/null`" in
17764         *maketemp=*) make_set_make='#' ;;
17765         *)      make_set_make="MAKE=$make" ;;
17766         esac
17767         $rm -f testmake.mak
17768         ;;
17769 esac
17770 case "$make_set_make" in
17771 '#') echo "Yup, it does.";;
17772 *) echo "Nope, it doesn't.";;
17773 esac
17774
17775 : see what type is used for mode_t
17776 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
17777 set mode_t modetype int stdio.h sys/types.h
17778 eval $typedef_ask
17779
17780 : see if stdarg is available
17781 echo " "
17782 if $test `./findhdr stdarg.h`; then
17783         echo "<stdarg.h> found." >&4
17784         valstd="$define"
17785 else
17786         echo "<stdarg.h> NOT found." >&4
17787         valstd="$undef"
17788 fi
17789
17790 : see if varags is available
17791 echo " "
17792 if $test `./findhdr varargs.h`; then
17793         echo "<varargs.h> found." >&4
17794 else
17795         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
17796 fi
17797
17798 : set up the varargs testing programs
17799 $cat > varargs.c <<EOP
17800 #ifdef I_STDARG
17801 #include <stdarg.h>
17802 #endif
17803 #ifdef I_VARARGS
17804 #include <varargs.h>
17805 #endif
17806
17807 #ifdef I_STDARG
17808 int f(char *p, ...)
17809 #else
17810 int f(va_alist)
17811 va_dcl
17812 #endif
17813 {
17814         va_list ap;
17815 #ifndef I_STDARG
17816         char *p;
17817 #endif
17818 #ifdef I_STDARG
17819         va_start(ap,p);
17820 #else
17821         va_start(ap);
17822         p = va_arg(ap, char *);
17823 #endif
17824         va_end(ap);
17825 }
17826 EOP
17827 $cat > varargs <<EOP
17828 $startsh
17829 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
17830         echo "true"
17831 else
17832         echo "false"
17833 fi
17834 $rm -f varargs$_o
17835 EOP
17836 chmod +x varargs
17837
17838 : now check which varargs header should be included
17839 echo " "
17840 i_varhdr=''
17841 case "$valstd" in
17842 "$define")
17843         if `./varargs I_STDARG`; then
17844                 val='stdarg.h'
17845         elif `./varargs I_VARARGS`; then
17846                 val='varargs.h'
17847         fi
17848         ;;
17849 *)
17850         if `./varargs I_VARARGS`; then
17851                 val='varargs.h'
17852         fi
17853         ;;
17854 esac
17855 case "$val" in
17856 '')
17857 echo "I could not find the definition for va_dcl... You have problems..." >&4
17858         val="$undef"; set i_stdarg; eval $setvar
17859         val="$undef"; set i_varargs; eval $setvar
17860         ;;
17861 *) 
17862         set i_varhdr
17863         eval $setvar
17864         case "$i_varhdr" in
17865         stdarg.h)
17866                 val="$define"; set i_stdarg; eval $setvar
17867                 val="$undef"; set i_varargs; eval $setvar
17868                 ;;
17869         varargs.h)
17870                 val="$undef"; set i_stdarg; eval $setvar
17871                 val="$define"; set i_varargs; eval $setvar
17872                 ;;
17873         esac
17874         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
17875 esac
17876 $rm -f varargs*
17877
17878 : see if we need va_copy
17879 echo " "
17880 case "$i_stdarg" in
17881 "$define")
17882         $cat >try.c <<EOCP
17883 #include <stdarg.h>
17884 #include <stdio.h>
17885 #$i_stdlib I_STDLIB
17886 #ifdef I_STDLIB
17887 #include <stdlib.h>
17888 #endif
17889 #include <signal.h>
17890
17891 int
17892 ivfprintf(FILE *f, const char *fmt, va_list *valp)
17893 {
17894   return vfprintf(f, fmt, *valp);
17895 }
17896  
17897 int    
17898 myvfprintf(FILE *f, const  char *fmt, va_list val)
17899 {
17900   return ivfprintf(f, fmt, &val);
17901 }
17902       
17903 int
17904 myprintf(char *fmt, ...) 
17905 {
17906   va_list val;
17907   va_start(val, fmt);
17908   return myvfprintf(stdout, fmt, val); 
17909 }         
17910
17911 int
17912 main(int ac, char **av)
17913 {
17914   signal(SIGSEGV, exit);
17915
17916   myprintf("%s%cs all right, then\n", "that", '\'');                            
17917   exit(0);      
17918 }
17919 EOCP
17920         set try
17921         if eval $compile && $run ./try 2>&1 >/dev/null; then
17922                 case "`$run ./try`" in
17923                 "that's all right, then")
17924                         okay=yes
17925                         ;;
17926                 esac
17927         fi
17928         case "$okay" in
17929         yes)    echo "It seems that you don't need va_copy()." >&4
17930                 need_va_copy="$undef"
17931                 ;;
17932         *)      echo "It seems that va_copy() or similar will be needed." >&4
17933                 need_va_copy="$define"
17934                 ;;
17935         esac
17936         $rm -f try.* core core.* *.core *.core.*
17937         ;;
17938 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
17939         ;;
17940 esac
17941
17942 : see what type is used for size_t
17943 rp="What is the type used for the length parameter for string functions?"
17944 set size_t sizetype 'unsigned int' stdio.h sys/types.h
17945 eval $typedef_ask
17946
17947 : check for type of arguments to gethostbyaddr. 
17948 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
17949         case "$d_gethbyaddr" in
17950         $define)
17951                 $cat <<EOM
17952
17953 Checking to see what type of arguments are accepted by gethostbyaddr().
17954 EOM
17955                 hdrs="$define sys/types.h
17956                         $d_socket sys/socket.h 
17957                         $i_niin netinet/in.h 
17958                         $i_netdb netdb.h
17959                         $i_unistd unistd.h"
17960                 : The first arg can 'char *' or 'void *'
17961                 : The second arg is some of integral type
17962                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
17963                         for yyy in size_t long int; do
17964                                 case "$netdb_host_type" in
17965                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
17966                                         if ./protochk "$try" $hdrs; then
17967                                                 echo "Your system accepts $xxx for the first arg."
17968                                                 echo "...and $yyy for the second arg."
17969                                                 netdb_host_type="$xxx"
17970                                                 netdb_hlen_type="$yyy"
17971                                         fi
17972                                         ;;
17973                                 esac
17974                         done
17975                 done
17976                 : In case none of those worked, prompt the user.
17977                 case "$netdb_host_type" in
17978                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
17979                         dflt='char *'
17980                         . ./myread
17981                         netdb_host_type=$ans
17982                         rp='What is the type for the 2nd argument to gethostbyaddr?'
17983                         dflt="$sizetype"
17984                         . ./myread
17985                         netdb_hlen_type=$ans
17986                         ;;
17987                 esac
17988                 ;;
17989         *)      : no gethostbyaddr, so pick harmless defaults
17990                 netdb_host_type='char *'
17991                 netdb_hlen_type="$sizetype"
17992                 ;;
17993         esac
17994         # Remove the "const" if needed. -- but then we'll have a 
17995         # prototype clash!
17996         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
17997 fi
17998
17999 : check for type of argument to gethostbyname. 
18000 if test "X$netdb_name_type" = X ; then
18001         case "$d_gethbyname" in
18002         $define)
18003                 $cat <<EOM
18004
18005 Checking to see what type of argument is accepted by gethostbyname().
18006 EOM
18007                 hdrs="$define sys/types.h
18008                         $d_socket sys/socket.h 
18009                         $i_niin netinet/in.h 
18010                         $i_netdb netdb.h
18011                         $i_unistd unistd.h"
18012                 for xxx in "const char *" "char *"; do
18013                         case "$netdb_name_type" in
18014                         '')     try="extern struct hostent *gethostbyname($xxx);"
18015                                 if ./protochk "$try" $hdrs; then
18016                                         echo "Your system accepts $xxx."
18017                                         netdb_name_type="$xxx"
18018                                 fi
18019                                 ;;
18020                         esac
18021                 done
18022                 : In case none of those worked, prompt the user.
18023                 case "$netdb_name_type" in
18024                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18025                         dflt='char *'
18026                         . ./myread
18027                         netdb_name_type=$ans
18028                         ;;
18029                 esac
18030                 ;;
18031         *)      : no gethostbyname, so pick harmless default
18032                 netdb_name_type='char *'
18033                 ;;
18034         esac
18035 fi
18036
18037 : check for type of 1st argument to getnetbyaddr. 
18038 if test "X$netdb_net_type" = X ; then
18039         case "$d_getnbyaddr" in
18040         $define)
18041                 $cat <<EOM
18042
18043 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18044 EOM
18045                 hdrs="$define sys/types.h
18046                         $d_socket sys/socket.h 
18047                         $i_niin netinet/in.h 
18048                         $i_netdb netdb.h
18049                         $i_unistd unistd.h"
18050                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18051                         case "$netdb_net_type" in
18052                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18053                                 if ./protochk "$try" $hdrs; then
18054                                         echo "Your system accepts $xxx."
18055                                         netdb_net_type="$xxx"
18056                                 fi
18057                                 ;;
18058                         esac
18059                 done
18060                 : In case none of those worked, prompt the user.
18061                 case "$netdb_net_type" in
18062                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18063                         dflt='long'
18064                         . ./myread
18065                         netdb_net_type=$ans
18066                         ;;
18067                 esac
18068                 ;;
18069         *)      : no getnetbyaddr, so pick harmless default
18070                 netdb_net_type='long'
18071                 ;;
18072         esac
18073 fi
18074 : locate the preferred pager for this system
18075 case "$pager" in
18076 '')
18077         dflt=''
18078         case "$pg" in
18079         /*) dflt=$pg;;
18080         [a-zA-Z]:/*) dflt=$pg;;
18081         esac
18082         case "$more" in
18083         /*) dflt=$more;;
18084         [a-zA-Z]:/*) dflt=$more;;
18085         esac
18086         case "$less" in
18087         /*) dflt=$less;;
18088         [a-zA-Z]:/*) dflt=$less;;
18089         esac
18090         case "$dflt" in
18091         '') dflt=/usr/ucb/more;;
18092         esac
18093         ;;
18094 *) dflt="$pager";;
18095 esac
18096 echo " "
18097 fn=f/
18098 rp='What pager is used on your system?'
18099 . ./getfile
18100 pager="$ans"
18101
18102 : see what type pids are declared as in the kernel
18103 rp="What is the type of process ids on this system?"
18104 set pid_t pidtype int stdio.h sys/types.h
18105 eval $typedef_ask
18106
18107 : Find earliest binary compatible site_perl subdirectory perl can use.
18108 case "$bincompat5005" in
18109 "$define") xs_apiversion='5.005' ;;
18110 *) xs_apiversion=$version ;;   # The current site_perl version.
18111 esac
18112 : Find earliest pure perl site_perl subdirectory perl can use.
18113 : The versioned directories started at 5.005.
18114 pm_apiversion='5.005'
18115
18116 : see if ar generates random libraries by itself
18117 echo " "
18118 echo "Checking how to generate random libraries on your machine..." >&4
18119 echo 'int bar1() { return bar2(); }' > bar1.c
18120 echo 'int bar2() { return 2; }' > bar2.c
18121 $cat > foo.c <<'EOP'
18122 int main() { printf("%d\n", bar1()); exit(0); }
18123 EOP
18124 $cc $ccflags -c bar1.c >/dev/null 2>&1
18125 $cc $ccflags -c bar2.c >/dev/null 2>&1
18126 $cc $ccflags -c foo.c >/dev/null 2>&1
18127 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18128 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18129         $run ./foobar >/dev/null 2>&1; then
18130         echo "$ar appears to generate random libraries itself."
18131         orderlib=false
18132         ranlib=":"
18133 elif $ar ts bar$_a >/dev/null 2>&1 &&
18134         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18135         $run ./foobar >/dev/null 2>&1; then
18136                 echo "a table of contents needs to be added with '$ar ts'."
18137                 orderlib=false
18138                 ranlib="$ar ts"
18139 else
18140         case "$ranlib" in
18141         :) ranlib='';;
18142         '')
18143                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18144                 $test -f $ranlib || ranlib=''
18145                 ;;
18146         esac
18147         if $test -n "$ranlib"; then
18148                 echo "your system has '$ranlib'; we'll use that."
18149                 orderlib=false
18150         else
18151                 echo "your system doesn't seem to support random libraries"
18152                 echo "so we'll use lorder and tsort to order the libraries."
18153                 orderlib=true
18154                 ranlib=":"
18155         fi
18156 fi
18157 $rm -f foo* bar* 
18158
18159 : check for type of arguments to select. 
18160 case "$selecttype" in
18161 '') case "$d_select" in
18162         $define)
18163                 echo " "
18164                 $cat <<EOM
18165 Checking to see what type of arguments are accepted by select().
18166 EOM
18167                 hdrs="$define sys/types.h
18168                         $i_systime sys/time.h 
18169                         $i_sysselct sys/select.h
18170                         $d_socket sys/socket.h"
18171                 : The first arg can be int, unsigned, or size_t
18172                 : The last arg may or may not be 'const'
18173                 val=''
18174                 : void pointer has been seen but using that
18175                 : breaks the selectminbits test
18176                 for xxx in 'fd_set *' 'int *'; do
18177                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18178                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18179                                         case "$val" in
18180                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18181                                                 if ./protochk "$try" $hdrs; then
18182                                                         echo "Your system accepts $xxx."
18183                                                         val="$xxx"
18184                                                 fi
18185                                                 ;;
18186                                         esac
18187                                 done
18188                         done
18189                 done
18190                 case "$val" in
18191                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18192                         case "$d_fd_set" in
18193                                 $define) dflt="fd_set *" ;;
18194                                 *)              dflt="int *" ;;
18195                         esac
18196                         . ./myread
18197                         val=$ans
18198                         ;;
18199                 esac
18200                 selecttype="$val"
18201                 ;;
18202         *)      : no select, so pick a harmless default
18203                 selecttype='int *'
18204                 ;;
18205         esac
18206         ;;
18207 esac
18208
18209 : check for the select 'width'
18210 case "$selectminbits" in
18211 '') case "$d_select" in
18212         $define)
18213                 $cat <<EOM
18214
18215 Checking to see on how many bits at a time your select() operates...
18216 EOM
18217                 $cat >try.c <<EOCP
18218 #include <sys/types.h>
18219 #$i_time I_TIME
18220 #$i_systime I_SYS_TIME
18221 #$i_systimek I_SYS_TIME_KERNEL
18222 #ifdef I_TIME
18223 #   include <time.h>
18224 #endif
18225 #ifdef I_SYS_TIME
18226 #   ifdef I_SYS_TIME_KERNEL
18227 #       define KERNEL
18228 #   endif
18229 #   include <sys/time.h>
18230 #   ifdef I_SYS_TIME_KERNEL
18231 #       undef KERNEL
18232 #   endif
18233 #endif
18234 #$i_sysselct I_SYS_SELECT
18235 #ifdef I_SYS_SELECT
18236 #include <sys/select.h>
18237 #endif
18238 #$d_socket HAS_SOCKET
18239 #ifdef HAS_SOCKET
18240 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18241 #endif
18242 #include <stdio.h>
18243 $selecttype b;
18244 #define S sizeof(*(b))
18245 #define MINBITS 64
18246 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18247 #define NBITS  (NBYTES * 8)
18248 int main() {
18249     char s[NBYTES];
18250     struct timeval t;
18251     int i;
18252     FILE* fp;
18253     int fd;
18254
18255     fclose(stdin);
18256     fp = fopen("try.c", "r");
18257     if (fp == 0)
18258       exit(1);
18259     fd = fileno(fp);
18260     if (fd < 0)
18261       exit(2);
18262     b = ($selecttype)s;
18263     for (i = 0; i < NBITS; i++)
18264         FD_SET(i, b);
18265     t.tv_sec  = 0;
18266     t.tv_usec = 0;
18267     select(fd + 1, b, 0, 0, &t);
18268     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18269     printf("%d\n", i + 1);
18270     return 0;
18271 }
18272 EOCP
18273                 set try
18274                 if eval $compile_ok; then
18275                         selectminbits=`$run ./try`
18276                         case "$selectminbits" in
18277                         '')     cat >&4 <<EOM
18278 Cannot figure out on how many bits at a time your select() operates.
18279 I'll play safe and guess it is 32 bits.
18280 EOM
18281                                 selectminbits=32
18282                                 bits="32 bits"
18283                                 ;;
18284                         1)      bits="1 bit" ;;
18285                         *)      bits="$selectminbits bits" ;;
18286                         esac
18287                         echo "Your select() operates on $bits at a time." >&4
18288                 else
18289                         rp='What is the minimum number of bits your select() operates on?'
18290                         case "$byteorder" in
18291                         1234|12345678)  dflt=32 ;;
18292                         *)              dflt=1  ;;
18293                         esac
18294                         . ./myread
18295                         val=$ans
18296                         selectminbits="$val"
18297                 fi
18298                 $rm -f try.* try
18299                 ;;
18300         *)      : no select, so pick a harmless default
18301                 selectminbits='32'
18302                 ;;
18303         esac
18304         ;;
18305 esac
18306
18307 : Trace out the files included by signal.h, then look for SIGxxx names.
18308 : Remove SIGARRAYSIZE used by HPUX.
18309 : Remove SIGSTKSIZE used by Linux.
18310 : Remove SIGSTKSZ used by Posix.
18311 : Remove SIGTYP void lines used by OS2.
18312 : Some cpps, like os390, dont give the file name anywhere
18313 if [ "X$fieldn" = X ]; then
18314         : Just make some guesses.  We check them later.
18315         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18316 else
18317         xxx=`echo '#include <signal.h>' |
18318         $cppstdin $cppminus $cppflags 2>/dev/null |
18319         $grep '^[       ]*#.*include' | 
18320         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18321 fi
18322 : Check this list of files to be sure we have parsed the cpp output ok.
18323 : This will also avoid potentially non-existent files, such 
18324 : as ../foo/bar.h
18325 xxxfiles=''
18326 for xx in $xxx /dev/null ; do
18327         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18328 done
18329 : If we have found no files, at least try signal.h
18330 case "$xxxfiles" in
18331 '')     xxxfiles=`./findhdr signal.h` ;;
18332 esac
18333 xxx=`awk '
18334 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18335         print substr($2, 4, 20)
18336 }
18337 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18338         print substr($3, 4, 20)
18339 }' $xxxfiles`
18340 : Append some common names just in case the awk scan failed.
18341 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18342 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18343 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18344 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18345 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18346
18347 : generate a few handy files for later
18348 $cat > signal.c <<'EOCP'
18349 #include <sys/types.h>
18350 #include <signal.h>
18351 #include <stdio.h>
18352 int main() {
18353
18354 /* Strange style to avoid deeply-nested #if/#else/#endif */
18355 #ifndef NSIG
18356 #  ifdef _NSIG
18357 #    define NSIG (_NSIG)
18358 #  endif
18359 #endif
18360
18361 #ifndef NSIG
18362 #  ifdef SIGMAX
18363 #    define NSIG (SIGMAX+1)
18364 #  endif
18365 #endif
18366
18367 #ifndef NSIG
18368 #  ifdef SIG_MAX
18369 #    define NSIG (SIG_MAX+1)
18370 #  endif
18371 #endif
18372
18373 #ifndef NSIG
18374 #  ifdef MAXSIG
18375 #    define NSIG (MAXSIG+1)
18376 #  endif
18377 #endif
18378
18379 #ifndef NSIG
18380 #  ifdef MAX_SIG
18381 #    define NSIG (MAX_SIG+1)
18382 #  endif
18383 #endif
18384
18385 #ifndef NSIG
18386 #  ifdef SIGARRAYSIZE
18387 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18388 #  endif
18389 #endif
18390
18391 #ifndef NSIG
18392 #  ifdef _sys_nsig
18393 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18394 #  endif
18395 #endif
18396
18397 /* Default to some arbitrary number that's big enough to get most
18398    of the common signals.
18399 */
18400 #ifndef NSIG
18401 #    define NSIG 50
18402 #endif
18403
18404 printf("NSIG %d\n", NSIG);
18405
18406 #ifndef JUST_NSIG
18407
18408 EOCP
18409
18410 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18411 {
18412         printf "#ifdef SIG"; printf $1; printf "\n"
18413         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18414         printf $1; printf ");\n"
18415         printf "#endif\n"
18416 }
18417 END {
18418         printf "#endif /* JUST_NSIG */\n";
18419         printf "exit(0);\n}\n";
18420 }
18421 ' >>signal.c
18422 $cat >signal.awk <<'EOP'
18423 BEGIN { ndups = 0 }
18424 $1 ~ /^NSIG$/ { nsig = $2 }
18425 ($1 !~ /^NSIG$/) && (NF == 2) {
18426     if ($2 > maxsig) { maxsig = $2 }
18427     if (sig_name[$2]) {
18428         dup_name[ndups] = $1
18429         dup_num[ndups] = $2
18430         ndups++ 
18431     }
18432     else {
18433         sig_name[$2] = $1
18434         sig_num[$2] = $2
18435     }
18436 }
18437 END { 
18438     if (nsig == 0) {
18439         nsig = maxsig + 1
18440     }
18441     printf("NSIG %d\n", nsig);
18442     for (n = 1; n < nsig; n++) {
18443         if (sig_name[n]) {
18444             printf("%s %d\n", sig_name[n], sig_num[n])
18445         }
18446         else {
18447             printf("NUM%d %d\n", n, n) 
18448         }
18449     }
18450     for (n = 0; n < ndups; n++) {
18451         printf("%s %d\n", dup_name[n], dup_num[n])
18452     }
18453 }
18454 EOP
18455 $cat >signal_cmd <<EOS
18456 $startsh
18457 if $test -s signal.lst; then
18458     echo "Using your existing signal.lst file"
18459         exit 0
18460 fi
18461 xxx="$xxx"
18462 EOS
18463 $cat >>signal_cmd <<'EOS'
18464
18465 set signal
18466 if eval $compile_ok; then
18467         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
18468 else
18469         echo "(I can't seem be able to compile the whole test program)" >&4
18470         echo "(I'll try it in little pieces.)" >&4
18471         set signal -DJUST_NSIG
18472         if eval $compile_ok; then
18473                 $run ./signal$_exe > signal.nsg
18474                 $cat signal.nsg
18475         else
18476                 echo "I can't seem to figure out how many signals you have." >&4
18477                 echo "Guessing 50." >&4
18478                 echo 'NSIG 50' > signal.nsg
18479         fi
18480         : Now look at all the signal names, one at a time.
18481         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18482                 $cat > signal.c <<EOCP
18483 #include <sys/types.h>
18484 #include <signal.h>
18485 #include <stdio.h>
18486 int main() {
18487 printf("$xx %d\n", SIG${xx});
18488 return 0;
18489 }
18490 EOCP
18491                 set signal
18492                 if eval $compile; then
18493                         echo "SIG${xx} found."
18494                         $run ./signal$_exe  >> signal.ls1
18495                 else
18496                         echo "SIG${xx} NOT found."
18497                 fi
18498         done
18499         if $test -s signal.ls1; then
18500                 $cat signal.nsg signal.ls1 |
18501                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
18502         fi
18503
18504 fi
18505 if $test -s signal.lst; then
18506         :
18507 else
18508         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
18509         echo 'kill -l' >signal
18510         set X `csh -f <signal`
18511         $rm -f signal
18512         shift
18513         case $# in
18514         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
18515         esac
18516         echo $@ | $tr ' ' $trnl | \
18517             $awk '{ printf "%s %d\n", $1, ++s; }
18518                   END { printf "NSIG %d\n", ++s }' >signal.lst
18519 fi
18520 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
18521 EOS
18522 chmod a+x signal_cmd
18523 $eunicefix signal_cmd
18524
18525 : generate list of signal names
18526 echo " "
18527 case "$sig_name_init" in
18528 '') doinit=yes ;;
18529 *)  case "$sig_num_init" in
18530     ''|*,*) doinit=yes ;;
18531     esac ;;
18532 esac
18533 case "$doinit" in
18534 yes)
18535         echo "Generating a list of signal names and numbers..." >&4
18536         . ./signal_cmd
18537         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
18538         sig_name=`$awk 'BEGIN { printf "ZERO " }
18539                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
18540         sig_num=`$awk  'BEGIN { printf "0 " }
18541                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
18542         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
18543                              !/^NSIG/   { printf "\"%s\", ", $1 }
18544                              END        { printf "0\n" }' signal.lst`
18545         sig_num_init=`$awk  'BEGIN      { printf "0, " }
18546                              !/^NSIG/   { printf "%d, ", $2}
18547                              END        { printf "0\n"}' signal.lst`
18548         ;;
18549 esac
18550 echo "The following $sig_count signals are available:"
18551 echo " "
18552 echo $sig_name | $awk \
18553 'BEGIN { linelen = 0 }
18554 {
18555         for (i = 1; i <= NF; i++) {
18556                 name = "SIG" $i " "
18557                 linelen = linelen + length(name)
18558                 if (linelen > 70) {
18559                         printf "\n"
18560                         linelen = length(name)
18561                 }
18562                 printf "%s", name
18563         }
18564         printf "\n"
18565 }'
18566 sig_size=`echo $sig_name | awk '{print NF}'`
18567 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
18568
18569 echo " "
18570 case "$sizetype" in
18571 *_t) zzz="$sizetype"    ;;
18572 *)   zzz="filesize"     ;;
18573 esac
18574 echo "Checking the size of $zzz..." >&4 
18575 cat > try.c <<EOCP
18576 #include <sys/types.h>
18577 #include <stdio.h>
18578 int main() {
18579     printf("%d\n", (int)sizeof($sizetype));
18580     exit(0);
18581 }
18582 EOCP
18583 set try
18584 if eval $compile_ok; then
18585         yyy=`$run ./try`
18586         case "$yyy" in
18587         '')     sizesize=4
18588                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
18589                 ;;
18590         *)      sizesize=$yyy
18591                 echo "Your $zzz size is $sizesize bytes."
18592                 ;;
18593         esac
18594 else
18595         sizesize=4
18596         echo "(I can't compile the test program--guessing $sizesize.)" >&4
18597 fi
18598
18599
18600 : check for socklen_t
18601 echo " "
18602 echo "Checking to see if you have socklen_t..." >&4
18603 $cat >try.c <<EOCP
18604 #include <sys/types.h>
18605 #$d_socket HAS_SOCKET
18606 #ifdef HAS_SOCKET
18607 #include <sys/socket.h>
18608 #endif
18609 int main() { socklen_t x = 16; }
18610 EOCP
18611 set try
18612 if eval $compile; then
18613         val="$define"
18614         echo "You have socklen_t."
18615 else
18616         val="$undef"
18617         echo "You do not have socklen_t."
18618         case "$sizetype" in
18619         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
18620         esac
18621 fi
18622 $rm -f try try.*
18623 set d_socklen_t
18624 eval $setvar
18625
18626 : see if this is a socks.h system
18627 set socks.h i_socks
18628 eval $inhdr
18629
18630 : check for type of the size argument to socket calls
18631 case "$d_socket" in
18632 "$define")
18633         $cat <<EOM
18634
18635 Checking to see what type is the last argument of accept().
18636 EOM
18637         yyy=''
18638         case "$d_socklen_t" in
18639         "$define") yyy="$yyy socklen_t"
18640         esac
18641         yyy="$yyy $sizetype int long unsigned"
18642         for xxx in $yyy; do
18643                 case "$socksizetype" in
18644                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
18645                         case "$usesocks" in
18646                         "$define")
18647                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
18648                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
18649                                         socksizetype="$xxx"
18650                                 fi
18651                                 ;;
18652                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
18653                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
18654                                         socksizetype="$xxx"
18655                                 fi
18656                                 ;;
18657                         esac
18658                         ;;
18659                 esac
18660         done
18661 : In case none of those worked, prompt the user.
18662         case "$socksizetype" in
18663         '')     rp='What is the type for socket address structure sizes?'
18664                 dflt='int'
18665                 . ./myread
18666                 socksizetype=$ans
18667                 ;;
18668         esac
18669         ;;
18670 *)      : no sockets, so pick relatively harmless default
18671         socksizetype='int'
18672         ;;
18673 esac
18674
18675 : see what type is used for signed size_t
18676 set ssize_t ssizetype int stdio.h sys/types.h
18677 eval $typedef
18678 dflt="$ssizetype"
18679 $cat > try.c <<EOM
18680 #include <stdio.h>
18681 #include <sys/types.h>
18682 #define Size_t $sizetype
18683 #define SSize_t $dflt
18684 int main()
18685 {
18686         if (sizeof(Size_t) == sizeof(SSize_t))
18687                 printf("$dflt\n");
18688         else if (sizeof(Size_t) == sizeof(int))
18689                 printf("int\n");
18690         else 
18691                 printf("long\n");
18692         exit(0);
18693 }
18694 EOM
18695 echo " "
18696 set try
18697 if eval $compile_ok && $run ./try > /dev/null; then
18698         ssizetype=`$run ./try`
18699         echo "I'll be using $ssizetype for functions returning a byte count." >&4
18700 else
18701         $cat >&4 <<EOM
18702 Help! I can't compile and run the ssize_t test program: please enlighten me!
18703 (This is probably a misconfiguration in your system or libraries, and
18704 you really ought to fix it.  Still, I'll try anyway.)
18705
18706 I need a type that is the same size as $sizetype, but is guaranteed to
18707 be signed.  Common values are ssize_t, int and long.
18708
18709 EOM
18710         rp="What signed type is the same size as $sizetype?"
18711         . ./myread
18712         ssizetype="$ans"
18713 fi
18714 $rm -f try try.*
18715
18716 : see what type of char stdio uses.
18717 echo " "
18718 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
18719 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
18720         echo "Your stdio uses unsigned chars." >&4
18721         stdchar="unsigned char"
18722 else
18723         echo "Your stdio uses signed chars." >&4
18724         stdchar="char"
18725 fi
18726 $rm -f stdioh
18727
18728
18729
18730 : see if time exists
18731 echo " "
18732 if test "X$d_time" = X -o X"$timetype" = X; then
18733     if set time val -f d_time; eval $csym; $val; then
18734                 echo 'time() found.' >&4
18735                 val="$define"
18736                 rp="What is the type returned by time() on this system?"
18737                 set time_t timetype long stdio.h sys/types.h
18738                 eval $typedef_ask
18739     else
18740                 echo 'time() not found, hope that will do.' >&4
18741                 val="$undef"
18742                 timetype='int';
18743     fi
18744     set d_time
18745     eval $setvar
18746 fi
18747
18748 : see what type uids are declared as in the kernel
18749 echo " "
18750 echo "Looking for the type for user ids returned by getuid()."
18751 set uid_t uidtype xxx stdio.h sys/types.h
18752 eval $typedef
18753 case "$uidtype" in
18754 xxx)
18755         xxx=`./findhdr sys/user.h`
18756         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
18757         case $1 in
18758         unsigned) dflt="$1 $2" ;;
18759         *) dflt="$1" ;;
18760         esac
18761         ;;
18762 *) dflt="$uidtype";;
18763 esac
18764 case "$uidtype" in
18765 uid_t)  echo "uid_t found." ;;
18766 *)      rp="What is the type for user ids returned by getuid()?"
18767         . ./myread
18768         uidtype="$ans"
18769         ;;
18770 esac
18771
18772 echo " "
18773 case "$uidtype" in
18774 *_t) zzz="$uidtype"     ;;
18775 *)   zzz="uid"          ;;
18776 esac
18777 echo "Checking the size of $zzz..." >&4 
18778 cat > try.c <<EOCP
18779 #include <sys/types.h>
18780 #include <stdio.h>
18781 int main() {
18782     printf("%d\n", (int)sizeof($uidtype));
18783     exit(0);
18784 }
18785 EOCP
18786 set try
18787 if eval $compile_ok; then
18788         yyy=`$run ./try`
18789         case "$yyy" in
18790         '')     uidsize=4
18791                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
18792                 ;;
18793         *)      uidsize=$yyy
18794                 echo "Your $zzz is $uidsize bytes long."
18795                 ;;
18796         esac
18797 else
18798         uidsize=4
18799         echo "(I can't compile the test program--guessing $uidsize.)" >&4
18800 fi
18801
18802 echo " "
18803 case "$uidtype" in
18804 *_t) zzz="$uidtype"     ;;
18805 *)   zzz="uid"          ;;
18806 esac
18807 echo "Checking the sign of $zzz..." >&4
18808 cat > try.c <<EOCP
18809 #include <sys/types.h>
18810 #include <stdio.h>
18811 int main() {
18812         $uidtype foo = -1;
18813         if (foo < 0)
18814                 printf("-1\n");
18815         else
18816                 printf("1\n");
18817 }
18818 EOCP
18819 set try
18820 if eval $compile; then
18821         yyy=`$run ./try`
18822         case "$yyy" in
18823         '')     uidsign=1
18824                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18825                 ;;
18826         *)      uidsign=$yyy
18827                 case "$uidsign" in
18828                  1) echo "Your $zzz is unsigned." ;;
18829                 -1) echo "Your $zzz is signed."   ;;
18830                 esac
18831                 ;;
18832         esac
18833 else
18834         uidsign=1
18835         echo "(I can't compile the test program--guessing unsigned.)" >&4
18836 fi
18837
18838
18839
18840 echo " "
18841 $echo "Checking the format string to be used for uids..." >&4
18842
18843 case "$uidsign" in
18844 -1)     if $test X"$uidsize" = X"$ivsize"; then
18845                 uidformat="$ivdformat"
18846         else
18847                 if $test X"$uidsize" = X"$longsize"; then
18848                         uidformat='"ld"'
18849                 else
18850                         if $test X"$uidsize" = X"$intsize"; then
18851                                 uidformat='"d"'
18852                         else
18853                                 if $test X"$uidsize" = X"$shortsize"; then
18854                                         uidformat='"hd"'
18855                                 fi
18856                         fi
18857                 fi
18858         fi
18859         ;;
18860 *)      if $test X"$uidsize" = X"$uvsize"; then
18861                 uidformat="$uvuformat"
18862         else
18863                 if $test X"$uidsize" = X"$longsize"; then
18864                         uidformat='"lu"'
18865                 else
18866                         if $test X"$uidsize" = X"$intsize"; then
18867                                 uidformat='"u"'
18868                         else
18869                                 if $test X"$uidsize" = X"$shortsize"; then
18870                                         uidformat='"hu"'
18871                                 fi
18872                         fi
18873                 fi
18874         fi
18875         ;;
18876 esac
18877
18878 : determine compiler compiler
18879 case "$yacc" in
18880 '')
18881         dflt=yacc;;
18882 *)
18883         dflt="$yacc";;
18884 esac
18885 echo " "
18886 comp='yacc'
18887 if $test -f "$byacc$_exe"; then
18888         dflt="$byacc"
18889         comp="byacc or $comp"
18890 fi
18891 if $test -f "$bison$_exe"; then
18892         comp="$comp or bison -y"
18893 fi
18894 rp="Which compiler compiler ($comp) shall I use?"
18895 . ./myread
18896 yacc="$ans"
18897 case "$yacc" in
18898 *bis*)
18899         case "$yacc" in
18900         *-y*) ;;
18901         *)
18902                 yacc="$yacc -y"
18903                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
18904                 ;;
18905         esac
18906         ;;
18907 esac
18908
18909 : see if this is a fp.h system
18910 set fp.h i_fp
18911 eval $inhdr
18912
18913 : see if this is a fp_class.h system
18914 set fp_class.h i_fp_class
18915 eval $inhdr
18916
18917 : see if this is a ieeefp.h system
18918 case "$i_ieeefp" in
18919 '' ) set ieeefp.h i_ieeefp
18920      eval $inhdr
18921      ;;
18922 esac
18923
18924 : see if this is a libutil.h system
18925 set libutil.h i_libutil
18926 eval $inhdr
18927
18928 : see if mach cthreads are available
18929 if test "X$usethreads" = "X$define"; then
18930         set mach/cthreads.h i_machcthr
18931         eval $inhdr
18932 else
18933         i_machcthr="$undef"
18934 fi
18935
18936
18937
18938 : see if this is a math.h system
18939 set math.h i_math
18940 eval $inhdr
18941
18942 : see if this is a mntent.h system
18943 set mntent.h i_mntent
18944 eval $inhdr
18945
18946 : see if ndbm.h is available
18947 set ndbm.h t_ndbm
18948 eval $inhdr
18949
18950 case "$t_ndbm" in
18951 $undef)
18952     # Some Linux distributions such as RedHat 7.1 put the
18953     # ndbm.h header in /usr/include/gdbm/ndbm.h.
18954     if $test -f /usr/include/gdbm/ndbm.h; then
18955         echo '<gdbm/ndbm.h> found.'
18956         ccflags="$ccflags -I/usr/include/gdbm"
18957         cppflags="$cppflags -I/usr/include/gdbm"
18958         t_ndbm=$define
18959     fi
18960     ;;
18961 esac
18962
18963 case "$t_ndbm" in
18964 $define)
18965         : see if dbm_open exists
18966         set dbm_open d_dbm_open
18967         eval $inlibc
18968         case "$d_dbm_open" in
18969         $undef)
18970                 t_ndbm="$undef"
18971                 echo "We won't be including <ndbm.h>"
18972                 ;;
18973         esac
18974         ;;
18975 esac
18976 val="$t_ndbm"
18977 set i_ndbm
18978 eval $setvar
18979
18980 : see if net/errno.h is available
18981 val=''
18982 set net/errno.h val
18983 eval $inhdr
18984
18985 : Unfortunately, it causes problems on some systems.  Arrgh.
18986 case "$val" in
18987 $define)
18988         cat > try.c <<'EOM'
18989 #include <stdio.h>
18990 #include <errno.h>
18991 #include <net/errno.h>
18992 int func()
18993 {
18994         return ENOTSOCK;
18995 }
18996 EOM
18997         if $cc $ccflags -c try.c >/dev/null 2>&1; then
18998                 echo "We'll be including <net/errno.h>." >&4
18999         else
19000                 echo "We won't be including <net/errno.h>." >&4
19001                 val="$undef"
19002         fi
19003         $rm -f try.* try
19004         ;;
19005 esac
19006 set i_neterrno
19007 eval $setvar
19008
19009 : see if netinet/tcp.h is available
19010 set netinet/tcp.h i_netinettcp
19011 eval $inhdr
19012
19013 : see if this is a poll.h system
19014 set poll.h i_poll
19015 eval $inhdr
19016
19017 : see if this is a prot.h system
19018 set prot.h i_prot
19019 eval $inhdr
19020
19021 echo " "
19022 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19023 $cat <<'EOSH' > Cppsym.know
19024 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19025 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19026 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19027 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19028 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19029 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19030 bull c cadmus clipper CMU COFF COMPILER_VERSION
19031 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19032 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19033 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19034 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19035 GLIBC GLIBC_MINOR
19036 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19037 H3050R H3050RX hbullx20 hcx host_mips
19038 hp200 hp300 hp700 HP700 hp800 hp9000
19039 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19040 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19041 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19042 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19043 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19044 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19045 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19046 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19047 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19048 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19049 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19050 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19051 MATH_HAS_NO_SIDE_EFFECTS
19052 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19053 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19054 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19055 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19056 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19057 NetBSD news1500 news1700 news1800 news1900 news3700
19058 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19059 ns32016 ns32332 ns32k nsc32000
19060 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19061 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19062 pc532 pdp11 PGC PIC plexus PORTAR posix
19063 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19064 POSIX_C_SOURCE POSIX_SOURCE POWER
19065 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19066 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19067 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19068 sony sony_news sonyrisc sparc sparclite spectrum
19069 stardent stdc STDC_EXT stratos sun sun3 sun386
19070 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19071 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19072 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19073 sysV68 sysV88 Tek4132 Tek4300 titan
19074 TM3200 TM5400 TM5600
19075 tower tower32 tower32_200 tower32_600 tower32_700
19076 tower32_800 tower32_850 tss
19077 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19078 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19079 unix UNIX95 UNIX99 unixpc unos
19080 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19081 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19082 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19083 USGr4 USGr4_2
19084 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19085 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19086 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19087 z8000
19088 EOSH
19089 # Maybe put other stuff here too.
19090 cat <<EOSH >>Cppsym.know
19091 $osname
19092 EOSH
19093 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19094 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19095 $cat Cppsym.know > Cppsym.c
19096 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19097 $rm -f Cppsym.a Cppsym.b Cppsym.c
19098 cat <<EOSH > Cppsym
19099 $startsh
19100 if $test \$# -gt 0; then
19101     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19102     if $test -s Cppsym.got; then
19103         $rm -f Cppsym.got
19104         exit 0
19105     fi
19106     $rm -f Cppsym.got
19107     exit 1
19108 else
19109     $tr " " "$trnl" | ./Cppsym.try
19110     exit 0
19111 fi
19112 EOSH
19113 chmod +x Cppsym
19114 $eunicefix Cppsym
19115 cat <<EOSH > Cppsym.try
19116 $startsh
19117 cat <<'EOCP' > try.c
19118 #include <stdio.h>
19119 int main() {
19120 EOCP
19121 $awk \\
19122 EOSH
19123 cat <<'EOSH' >> Cppsym.try
19124 'length($1) > 0 {
19125     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19126     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19127     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19128     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19129 }'       >> try.c
19130 echo 'return 0;}' >> try.c
19131 EOSH
19132 cat <<EOSH >> Cppsym.try
19133 ccflags="$ccflags"
19134 case "$osname-$gccversion" in
19135 irix-) ccflags="\$ccflags -woff 1178" ;;
19136 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19137 esac
19138 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19139 EOSH
19140 chmod +x Cppsym.try
19141 $eunicefix Cppsym.try
19142 ./Cppsym < Cppsym.know > Cppsym.true
19143 : now check the C compiler for additional symbols
19144 postprocess_cc_v=''
19145 case "$osname" in
19146 aix) postprocess_cc_v="|$tr , ' '" ;;
19147 esac
19148 $cat >ccsym <<EOS
19149 $startsh
19150 $cat >tmp.c <<EOF
19151 extern int foo;
19152 EOF
19153 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19154 do
19155         case "\$i" in
19156         -D*) echo "\$i" | $sed 's/^-D//';;
19157         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
19158         esac
19159 done
19160 $rm -f try.c
19161 EOS
19162 postprocess_cc_v=''
19163 chmod +x ccsym
19164 $eunicefix ccsym
19165 ./ccsym > ccsym1.raw
19166 if $test -s ccsym1.raw; then
19167        $sort ccsym1.raw | $uniq >ccsym.raw
19168 else
19169        mv ccsym1.raw ccsym.raw
19170 fi
19171
19172 $awk '/\=/ { print $0; next }
19173         { print $0"=1" }' ccsym.raw >ccsym.list
19174 $awk '/\=/ { print $0; next }
19175         { print $0"=1" }' Cppsym.true >ccsym.true
19176 $comm -13 ccsym.true ccsym.list >ccsym.own
19177 $comm -12 ccsym.true ccsym.list >ccsym.com
19178 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19179 also=''
19180 if $test -z ccsym.raw; then
19181         echo "Your C compiler doesn't seem to define any symbols!" >&4
19182         echo " "
19183         echo "However, your C preprocessor defines the following symbols:"
19184         $cat Cppsym.true
19185         ccsymbols=''
19186         cppsymbols=`$cat Cppsym.true`
19187         cppsymbols=`echo $cppsymbols`
19188         cppccsymbols="$cppsymbols"
19189 else
19190         if $test -s ccsym.com; then
19191                 echo "Your C compiler and pre-processor define these symbols:"
19192                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19193                 also='also '
19194                 symbols='ones'
19195                 cppccsymbols=`$cat ccsym.com`
19196                 cppccsymbols=`echo $cppccsymbols`
19197                 $test "$silent" || sleep 1
19198         fi
19199         if $test -s ccsym.cpp; then
19200                 $test "$also" && echo " "
19201                 echo "Your C pre-processor ${also}defines the following symbols:"
19202                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19203                 also='further '
19204                 cppsymbols=`$cat ccsym.cpp`
19205                 cppsymbols=`echo $cppsymbols`
19206                 $test "$silent" || sleep 1
19207         fi
19208         if $test -s ccsym.own; then
19209                 $test "$also" && echo " "
19210                 echo "Your C compiler ${also}defines the following cpp symbols:"
19211                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19212                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19213                 ccsymbols=`$cat ccsym.own`
19214                 ccsymbols=`echo $ccsymbols`
19215                 $test "$silent" || sleep 1
19216         fi
19217 fi
19218
19219 : see if this is a termio system
19220 val="$undef"
19221 val2="$undef"
19222 val3="$undef"
19223 if $test `./findhdr termios.h`; then
19224         set tcsetattr i_termios
19225         eval $inlibc
19226         val3="$i_termios"
19227 fi
19228 echo " "
19229 case "$val3" in
19230 "$define") echo "You have POSIX termios.h... good!" >&4;;
19231 *) if ./Cppsym pyr; then
19232                 case "`/bin/universe`" in
19233                 ucb) if $test `./findhdr sgtty.h`; then
19234                                 val2="$define"
19235                                 echo "<sgtty.h> found." >&4
19236                         else
19237                                 echo "System is pyramid with BSD universe."
19238                                 echo "<sgtty.h> not found--you could have problems." >&4
19239                         fi;;
19240                 *) if $test `./findhdr termio.h`; then
19241                                 val="$define"
19242                                 echo "<termio.h> found." >&4
19243                         else
19244                                 echo "System is pyramid with USG universe."
19245                                 echo "<termio.h> not found--you could have problems." >&4
19246                         fi;;
19247                 esac
19248         elif ./usg; then
19249                 if $test `./findhdr termio.h`; then
19250                         echo "<termio.h> found." >&4
19251                         val="$define"
19252                 elif $test `./findhdr sgtty.h`; then
19253                         echo "<sgtty.h> found." >&4
19254                         val2="$define"
19255                 else
19256 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19257                 fi
19258         else
19259                 if $test `./findhdr sgtty.h`; then
19260                         echo "<sgtty.h> found." >&4
19261                         val2="$define"
19262                 elif $test `./findhdr termio.h`; then
19263                         echo "<termio.h> found." >&4
19264                         val="$define"
19265                 else
19266 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19267                 fi
19268         fi;;
19269 esac
19270 set i_termio; eval $setvar
19271 val=$val2; set i_sgtty; eval $setvar
19272 val=$val3; set i_termios; eval $setvar
19273
19274 : see if stddef is available
19275 set stddef.h i_stddef
19276 eval $inhdr
19277
19278 : see if this is a sunmath.h system
19279 set sunmath.h i_sunmath
19280 eval $inhdr
19281
19282 : see if sys/access.h is available
19283 set sys/access.h i_sysaccess
19284 eval $inhdr
19285
19286 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19287 set sys/filio.h i_sysfilio
19288 eval $inhdr
19289 echo " "
19290 if $test `./findhdr sys/ioctl.h`; then
19291         val="$define"
19292         echo '<sys/ioctl.h> found.' >&4
19293 else
19294         val="$undef"
19295         if $test $i_sysfilio = "$define"; then
19296             echo '<sys/ioctl.h> NOT found.' >&4
19297         else
19298                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19299                 $test $i_termio = "$define" && xxx="termio.h"
19300                 $test $i_termios = "$define" && xxx="termios.h"
19301 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19302         fi
19303 fi
19304 set i_sysioctl
19305 eval $setvar
19306
19307 : see if socket ioctl defs are in sys/sockio.h
19308 echo " "
19309 xxx=`./findhdr sys/sockio.h`
19310 if $test "$xxx"; then
19311         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19312                 val="$define"
19313                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19314         else
19315                 val="$undef"
19316                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19317         fi
19318 else
19319         val="$undef"
19320         $cat <<EOM
19321 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19322 EOM
19323 fi
19324 set i_syssockio
19325 eval $setvar
19326
19327
19328 : see if this is a syslog.h system
19329 set syslog.h i_syslog
19330 eval $inhdr
19331
19332
19333 : see if this is a sys/mode.h system
19334 set sys/mode.h i_sysmode
19335 eval $inhdr
19336
19337 : see if sys/resource.h has to be included
19338 set sys/resource.h i_sysresrc
19339 eval $inhdr
19340
19341 : see if sys/security.h is available
19342 set sys/security.h i_syssecrt
19343 eval $inhdr
19344
19345 : see if this is a sys/statvfs.h system
19346 set sys/statvfs.h i_sysstatvfs
19347 eval $inhdr
19348
19349 : see if this is a sys/un.h system
19350 set sys/un.h i_sysun
19351 eval $inhdr
19352
19353
19354 : see if this is a sys/utsname.h system
19355 set sys/utsname.h i_sysutsname
19356 eval $inhdr
19357
19358 : see if this is a syswait system
19359 set sys/wait.h i_syswait
19360 eval $inhdr
19361
19362 : see if this is a ustat.h system
19363 set ustat.h i_ustat
19364 eval $inhdr
19365
19366 : see if this is an utime system
19367 set utime.h i_utime
19368 eval $inhdr
19369
19370 : see if this is a values.h system
19371 set values.h i_values
19372 eval $inhdr
19373
19374 : see if this is a vfork system
19375 case "$d_vfork" in
19376 "$define")
19377         set vfork.h i_vfork
19378         eval $inhdr
19379         ;;
19380 *)
19381         i_vfork="$undef"
19382         ;;
19383 esac
19384
19385 : see if gdbm.h is available
19386 set gdbm.h t_gdbm
19387 eval $inhdr
19388 case "$t_gdbm" in
19389 $define)
19390         : see if gdbm_open exists
19391         set gdbm_open d_gdbm_open
19392         eval $inlibc
19393         case "$d_gdbm_open" in
19394         $undef)
19395                 t_gdbm="$undef"
19396                 echo "We won't be including <gdbm.h>"
19397                 ;;
19398         esac
19399         ;;
19400 esac
19401 val="$t_gdbm"
19402 set i_gdbm
19403 eval $setvar
19404
19405 echo " "
19406 echo "Looking for extensions..." >&4
19407 : If we are using the old config.sh, known_extensions may contain
19408 : old or inaccurate or duplicate values.
19409 known_extensions=''
19410 nonxs_extensions=''
19411 : We do not use find because it might not be available.
19412 : We do not just use MANIFEST because the user may have dropped
19413 : some additional extensions into the source tree and expect them
19414 : to be built.
19415
19416 : Function to recursively find available extensions, ignoring DynaLoader
19417 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19418 find_extensions='
19419     for xxx in *; do
19420        case "$xxx" in
19421            DynaLoader|dynaload) ;;
19422            *)
19423            if $test -f $xxx/$xxx.xs; then
19424                known_extensions="$known_extensions $1$xxx";
19425            elif $test -f $xxx/Makefile.PL; then
19426                nonxs_extensions="$nonxs_extensions $1$xxx";
19427            else
19428                if $test -d $xxx -a $# -lt 10; then
19429                    set $1$xxx/ $*;
19430                    cd "$xxx";
19431                    eval $find_extensions;
19432                    cd ..;
19433                    shift;
19434                fi;
19435            fi
19436            ;;
19437        esac;
19438     done'
19439 tdir=`pwd`
19440 cd "$rsrc/ext"
19441 set X
19442 shift
19443 eval $find_extensions
19444 # Special case:  Add in threads/shared since it is not picked up by the
19445 # recursive find above (and adding in general recursive finding breaks
19446 # SDBM_File/sdbm).  A.D.  10/25/2001.
19447 # Encode::XX need explicit mentions for the same reason.
19448 # --jhi 2002-03-04
19449 known_extensions="$known_extensions threads/shared Encode/CN Encode/JP Encode/KR Encode/TW"
19450 set X $nonxs_extensions
19451 shift
19452 nonxs_extensions="$*"
19453 set X $known_extensions
19454 shift
19455 known_extensions="$*"
19456 cd "$tdir"
19457
19458 : Now see which are supported on this system.
19459 avail_ext=''
19460 for xxx in $known_extensions ; do
19461         case "$xxx" in
19462         DB_File|db_file)
19463                 case "$i_db" in
19464                 $define) avail_ext="$avail_ext $xxx" ;;
19465                 esac
19466                 ;;
19467         GDBM_File|gdbm_fil)
19468                 case "$i_gdbm" in 
19469                 $define) avail_ext="$avail_ext $xxx" ;;
19470                 esac
19471                 ;;
19472         I18N/Langinfo|i18n_lan)
19473                 case "$i_langinfo$d_nl_langinfo" in 
19474                 $define$define) avail_ext="$avail_ext $xxx" ;;
19475                 esac
19476                 ;;
19477         NDBM_File|ndbm_fil)
19478                 case "$i_ndbm" in
19479                 $define)
19480                     case "$osname-$use64bitint" in
19481                     cygwin-*|hpux-define)
19482                         case "$libs" in
19483                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19484                         esac
19485                         ;;
19486                     *) avail_ext="$avail_ext $xxx" ;;
19487                     esac
19488                     ;;
19489                 esac
19490                 ;;
19491         ODBM_File|odbm_fil) 
19492                 case "${i_dbm}${i_rpcsvcdbm}" in
19493                 *"${define}"*)
19494                     case "$osname-$use64bitint" in
19495                     cygwin-*|hpux-define)
19496                         case "$libs" in
19497                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19498                         esac
19499                         ;;
19500                     *) avail_ext="$avail_ext $xxx" ;;
19501                     esac
19502                     ;;
19503                 esac
19504                 ;;
19505         POSIX|posix)
19506                 case "$useposix" in
19507                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19508                 esac
19509                 ;;
19510         Opcode|opcode)
19511                 case "$useopcode" in
19512                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19513                 esac
19514                 ;;
19515         Socket|socket)
19516                 case "$d_socket" in 
19517                 true|$define|y)
19518                     case "$osname" in
19519                     beos) ;; # not unless BONE
19520                     *) avail_ext="$avail_ext $xxx" ;;
19521                     esac
19522                     ;;
19523                 esac
19524                 ;;
19525         Sys/Syslog|sys/syslog)
19526                 : XXX syslog requires socket
19527                 case "$d_socket" in 
19528                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
19529                 esac
19530                 ;;
19531         Thread|thread)
19532                 case "$usethreads" in
19533                 true|$define|y)
19534                         case "$useithreads" in
19535                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
19536                         esac
19537                 esac
19538                 ;;
19539         threads|threads/shared)
19540                 case "$usethreads" in
19541                 true|$define|y)
19542                         case "$useithreads" in
19543                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
19544                         esac
19545                 esac
19546                 ;;
19547         IPC/SysV|ipc/sysv)
19548                 : XXX Do we need a useipcsysv variable here
19549                 case "${d_msg}${d_sem}${d_shm}" in 
19550                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
19551                 esac
19552                 ;;
19553         *)      avail_ext="$avail_ext $xxx"
19554                 ;;
19555         esac
19556 done
19557
19558 set X $avail_ext
19559 shift
19560 avail_ext="$*"
19561
19562 : Now see which nonxs extensions are supported on this system.
19563 : For now assume all are.
19564 nonxs_ext=''
19565 for xxx in $nonxs_extensions ; do
19566         case "$xxx" in
19567         *)      nonxs_ext="$nonxs_ext $xxx"
19568                 ;;
19569         esac
19570 done
19571
19572 set X $nonxs_ext
19573 shift
19574 nonxs_ext="$*"
19575
19576 case $usedl in
19577 $define)
19578         $cat <<EOM
19579 A number of extensions are supplied with $package.  You may choose to
19580 compile these extensions for dynamic loading (the default), compile
19581 them into the $package executable (static loading), or not include
19582 them at all.  Answer "none" to include no extensions.
19583 Note that DynaLoader is always built and need not be mentioned here.
19584
19585 EOM
19586         case "$dynamic_ext" in
19587         '') dflt="$avail_ext" ;;
19588         *)      dflt="$dynamic_ext"
19589                 # Perhaps we are reusing an old out-of-date config.sh.
19590                 case "$hint" in
19591                 previous)
19592                         if test X"$dynamic_ext" != X"$avail_ext"; then
19593                                 $cat <<EOM
19594 NOTICE:  Your previous config.sh list may be incorrect. 
19595 The extensions now available to you are 
19596         ${avail_ext}
19597 but the default list from your previous config.sh is
19598         ${dynamic_ext} 
19599
19600 EOM
19601                         fi
19602                         ;;
19603                 esac
19604                 ;;
19605         esac
19606         case "$dflt" in
19607         '')     dflt=none;;
19608         esac
19609         rp="What extensions do you wish to load dynamically?"
19610         . ./myread
19611         case "$ans" in
19612         none) dynamic_ext=' ' ;;
19613         *) dynamic_ext="$ans" ;;
19614         esac
19615
19616         case "$static_ext" in
19617         '')
19618                 : Exclude those already listed in dynamic linking
19619                 dflt=''
19620                 for xxx in $avail_ext; do
19621                         case " $dynamic_ext " in
19622                         *" $xxx "*) ;;
19623                         *) dflt="$dflt $xxx" ;;
19624                         esac
19625                 done
19626                 set X $dflt
19627                 shift
19628                 dflt="$*"
19629                 ;;
19630         *)  dflt="$static_ext" 
19631                 ;;
19632         esac
19633
19634         case "$dflt" in
19635         '')     dflt=none;;
19636         esac
19637         rp="What extensions do you wish to load statically?"
19638         . ./myread
19639         case "$ans" in
19640         none) static_ext=' ' ;;
19641         *) static_ext="$ans" ;;
19642         esac
19643         ;;
19644 *)
19645         $cat <<EOM
19646 A number of extensions are supplied with $package.  Answer "none" 
19647 to include no extensions. 
19648 Note that DynaLoader is always built and need not be mentioned here.
19649
19650 EOM
19651         case "$static_ext" in
19652         '') dflt="$avail_ext" ;;
19653         *)      dflt="$static_ext"
19654                 # Perhaps we are reusing an old out-of-date config.sh.
19655                 case "$hint" in
19656                 previous)
19657                         if test X"$static_ext" != X"$avail_ext"; then
19658                                 $cat <<EOM
19659 NOTICE:  Your previous config.sh list may be incorrect. 
19660 The extensions now available to you are 
19661         ${avail_ext}
19662 but the default list from your previous config.sh is
19663         ${static_ext} 
19664
19665 EOM
19666                         fi
19667                         ;;
19668                 esac
19669                 ;;
19670         esac
19671         : Exclude those that are not xs extensions
19672         case "$dflt" in
19673         '')     dflt=none;;
19674         esac
19675         rp="What extensions do you wish to include?"
19676         . ./myread
19677         case "$ans" in
19678         none) static_ext=' ' ;;
19679         *) static_ext="$ans" ;;
19680         esac
19681         ;;
19682 esac
19683
19684 set X $dynamic_ext $static_ext $nonxs_ext
19685 shift
19686 extensions="$*"
19687
19688 : Remove libraries needed only for extensions
19689 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
19690 : The exception is SunOS 4.x, which needs them.
19691 case "${osname}X${osvers}" in
19692 sunos*X4*)
19693     perllibs="$libs"
19694     ;;
19695 *) case "$usedl" in
19696     $define|true|[yY]*)
19697             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
19698             shift
19699             perllibs="$*"
19700             ;;
19701     *)  perllibs="$libs"
19702             ;;
19703     esac
19704     ;;
19705 esac
19706
19707 : Remove build directory name from cppstdin so it can be used from
19708 : either the present location or the final installed location.
19709 echo " "
19710 : Get out of the UU directory to get correct path name.
19711 cd ..
19712 case "$cppstdin" in
19713 `pwd`/cppstdin)
19714         echo "Stripping down cppstdin path name"
19715         cppstdin=cppstdin
19716         ;;
19717 esac
19718 cd UU
19719
19720 : end of configuration questions
19721 echo " "
19722 echo "End of configuration questions."
19723 echo " "
19724
19725 : back to where it started
19726 if test -d ../UU; then
19727         cd ..
19728 fi
19729
19730 : configuration may be patched via a 'config.arch' file
19731 if $test -f config.arch; then
19732         echo "I see a config.arch file, loading it."
19733         . ./config.arch
19734 fi
19735
19736 : configuration may be patched via a 'config.over' file
19737 if $test -f config.over; then
19738         echo " "
19739         dflt=y
19740         rp='I see a config.over file.  Do you wish to load it?'
19741         . UU/myread
19742         case "$ans" in
19743         n*) echo "OK, I'll ignore it.";;
19744         *)      . ./config.over
19745                 echo "Configuration override changes have been loaded."
19746                 ;;
19747         esac
19748 fi
19749
19750 : in case they want portability, strip down executable paths
19751 case "$d_portable" in
19752 "$define")
19753         echo " "
19754         echo "Stripping down executable paths..." >&4
19755         for file in $loclist $trylist; do
19756                 eval temp=\$$file
19757                 eval $file=`basename $temp`
19758         done
19759         ;;
19760 esac
19761
19762 : create config.sh file
19763 echo " "
19764 echo "Creating config.sh..." >&4
19765 $spitshell <<EOT >config.sh
19766 $startsh
19767 #
19768 # This file was produced by running the Configure script. It holds all the
19769 # definitions figured out by Configure. Should you modify one of these values,
19770 # do not forget to propagate your changes by running "Configure -der". You may
19771 # instead choose to run each of the .SH files by yourself, or "Configure -S".
19772 #
19773
19774 # Package name      : $package
19775 # Source directory  : $src
19776 # Configuration time: $cf_time
19777 # Configured by     : $cf_by
19778 # Target system     : $myuname
19779
19780 Author='$Author'
19781 Date='$Date'
19782 Header='$Header'
19783 Id='$Id'
19784 Locker='$Locker'
19785 Log='$Log'
19786 Mcc='$Mcc'
19787 RCSfile='$RCSfile'
19788 Revision='$Revision'
19789 Source='$Source'
19790 State='$State'
19791 _a='$_a'
19792 _exe='$_exe'
19793 _o='$_o'
19794 afs='$afs'
19795 afsroot='$afsroot'
19796 alignbytes='$alignbytes'
19797 ansi2knr='$ansi2knr'
19798 aphostname='$aphostname'
19799 api_revision='$api_revision'
19800 api_subversion='$api_subversion'
19801 api_version='$api_version'
19802 api_versionstring='$api_versionstring'
19803 ar='$ar'
19804 archlib='$archlib'
19805 archlibexp='$archlibexp'
19806 archname64='$archname64'
19807 archname='$archname'
19808 archobjs='$archobjs'
19809 asctime_r_proto='$asctime_r_proto'
19810 awk='$awk'
19811 baserev='$baserev'
19812 bash='$bash'
19813 bin='$bin'
19814 bincompat5005='$bincompat5005'
19815 binexp='$binexp'
19816 bison='$bison'
19817 byacc='$byacc'
19818 byteorder='$byteorder'
19819 c='$c'
19820 castflags='$castflags'
19821 cat='$cat'
19822 cc='$cc'
19823 cccdlflags='$cccdlflags'
19824 ccdlflags='$ccdlflags'
19825 ccflags='$ccflags'
19826 ccflags_uselargefiles='$ccflags_uselargefiles'
19827 ccname='$ccname'
19828 ccsymbols='$ccsymbols'
19829 ccversion='$ccversion'
19830 cf_by='$cf_by'
19831 cf_email='$cf_email'
19832 cf_time='$cf_time'
19833 charsize='$charsize'
19834 chgrp='$chgrp'
19835 chmod='$chmod'
19836 chown='$chown'
19837 clocktype='$clocktype'
19838 comm='$comm'
19839 compress='$compress'
19840 contains='$contains'
19841 cp='$cp'
19842 cpio='$cpio'
19843 cpp='$cpp'
19844 cpp_stuff='$cpp_stuff'
19845 cppccsymbols='$cppccsymbols'
19846 cppflags='$cppflags'
19847 cpplast='$cpplast'
19848 cppminus='$cppminus'
19849 cpprun='$cpprun'
19850 cppstdin='$cppstdin'
19851 cppsymbols='$cppsymbols'
19852 crypt_r_proto='$crypt_r_proto'
19853 cryptlib='$cryptlib'
19854 csh='$csh'
19855 ctermid_r_proto='$ctermid_r_proto'
19856 ctime_r_proto='$ctime_r_proto'
19857 d_Gconvert='$d_Gconvert'
19858 d_PRIEUldbl='$d_PRIEUldbl'
19859 d_PRIFUldbl='$d_PRIFUldbl'
19860 d_PRIGUldbl='$d_PRIGUldbl'
19861 d_PRIXU64='$d_PRIXU64'
19862 d_PRId64='$d_PRId64'
19863 d_PRIeldbl='$d_PRIeldbl'
19864 d_PRIfldbl='$d_PRIfldbl'
19865 d_PRIgldbl='$d_PRIgldbl'
19866 d_PRIi64='$d_PRIi64'
19867 d_PRIo64='$d_PRIo64'
19868 d_PRIu64='$d_PRIu64'
19869 d_PRIx64='$d_PRIx64'
19870 d_SCNfldbl='$d_SCNfldbl'
19871 d__fwalk='$d__fwalk'
19872 d_access='$d_access'
19873 d_accessx='$d_accessx'
19874 d_alarm='$d_alarm'
19875 d_archlib='$d_archlib'
19876 d_asctime_r='$d_asctime_r'
19877 d_atolf='$d_atolf'
19878 d_atoll='$d_atoll'
19879 d_attribut='$d_attribut'
19880 d_bcmp='$d_bcmp'
19881 d_bcopy='$d_bcopy'
19882 d_bincompat5005='$d_bincompat5005'
19883 d_bsd='$d_bsd'
19884 d_bsdgetpgrp='$d_bsdgetpgrp'
19885 d_bsdsetpgrp='$d_bsdsetpgrp'
19886 d_bzero='$d_bzero'
19887 d_casti32='$d_casti32'
19888 d_castneg='$d_castneg'
19889 d_charvspr='$d_charvspr'
19890 d_chown='$d_chown'
19891 d_chroot='$d_chroot'
19892 d_chsize='$d_chsize'
19893 d_class='$d_class'
19894 d_closedir='$d_closedir'
19895 d_cmsghdr_s='$d_cmsghdr_s'
19896 d_const='$d_const'
19897 d_crypt='$d_crypt'
19898 d_crypt_r='$d_crypt_r'
19899 d_csh='$d_csh'
19900 d_ctermid_r='$d_ctermid_r'
19901 d_ctime_r='$d_ctime_r'
19902 d_cuserid='$d_cuserid'
19903 d_dbl_dig='$d_dbl_dig'
19904 d_dbminitproto='$d_dbminitproto'
19905 d_difftime='$d_difftime'
19906 d_dirfd='$d_dirfd'
19907 d_dirnamlen='$d_dirnamlen'
19908 d_dlerror='$d_dlerror'
19909 d_dlopen='$d_dlopen'
19910 d_dlsymun='$d_dlsymun'
19911 d_dosuid='$d_dosuid'
19912 d_drand48_r='$d_drand48_r'
19913 d_drand48proto='$d_drand48proto'
19914 d_dup2='$d_dup2'
19915 d_eaccess='$d_eaccess'
19916 d_endgrent='$d_endgrent'
19917 d_endgrent_r='$d_endgrent_r'
19918 d_endhent='$d_endhent'
19919 d_endhostent_r='$d_endhostent_r'
19920 d_endnent='$d_endnent'
19921 d_endnetent_r='$d_endnetent_r'
19922 d_endpent='$d_endpent'
19923 d_endprotoent_r='$d_endprotoent_r'
19924 d_endpwent='$d_endpwent'
19925 d_endpwent_r='$d_endpwent_r'
19926 d_endsent='$d_endsent'
19927 d_endservent_r='$d_endservent_r'
19928 d_eofnblk='$d_eofnblk'
19929 d_eunice='$d_eunice'
19930 d_fchdir='$d_fchdir'
19931 d_fchmod='$d_fchmod'
19932 d_fchown='$d_fchown'
19933 d_fcntl='$d_fcntl'
19934 d_fcntl_can_lock='$d_fcntl_can_lock'
19935 d_fd_macros='$d_fd_macros'
19936 d_fd_set='$d_fd_set'
19937 d_fds_bits='$d_fds_bits'
19938 d_fgetpos='$d_fgetpos'
19939 d_finite='$d_finite'
19940 d_finitel='$d_finitel'
19941 d_flexfnam='$d_flexfnam'
19942 d_flock='$d_flock'
19943 d_flockproto='$d_flockproto'
19944 d_fork='$d_fork'
19945 d_fp_class='$d_fp_class'
19946 d_fpathconf='$d_fpathconf'
19947 d_fpclass='$d_fpclass'
19948 d_fpclassify='$d_fpclassify'
19949 d_fpclassl='$d_fpclassl'
19950 d_fpos64_t='$d_fpos64_t'
19951 d_frexpl='$d_frexpl'
19952 d_fs_data_s='$d_fs_data_s'
19953 d_fseeko='$d_fseeko'
19954 d_fsetpos='$d_fsetpos'
19955 d_fstatfs='$d_fstatfs'
19956 d_fstatvfs='$d_fstatvfs'
19957 d_fsync='$d_fsync'
19958 d_ftello='$d_ftello'
19959 d_ftime='$d_ftime'
19960 d_getcwd='$d_getcwd'
19961 d_getespwnam='$d_getespwnam'
19962 d_getfsstat='$d_getfsstat'
19963 d_getgrent='$d_getgrent'
19964 d_getgrent_r='$d_getgrent_r'
19965 d_getgrgid_r='$d_getgrgid_r'
19966 d_getgrnam_r='$d_getgrnam_r'
19967 d_getgrps='$d_getgrps'
19968 d_gethbyaddr='$d_gethbyaddr'
19969 d_gethbyname='$d_gethbyname'
19970 d_gethent='$d_gethent'
19971 d_gethname='$d_gethname'
19972 d_gethostbyaddr_r='$d_gethostbyaddr_r'
19973 d_gethostbyname_r='$d_gethostbyname_r'
19974 d_gethostent_r='$d_gethostent_r'
19975 d_gethostprotos='$d_gethostprotos'
19976 d_getitimer='$d_getitimer'
19977 d_getlogin='$d_getlogin'
19978 d_getlogin_r='$d_getlogin_r'
19979 d_getmnt='$d_getmnt'
19980 d_getmntent='$d_getmntent'
19981 d_getnbyaddr='$d_getnbyaddr'
19982 d_getnbyname='$d_getnbyname'
19983 d_getnent='$d_getnent'
19984 d_getnetbyaddr_r='$d_getnetbyaddr_r'
19985 d_getnetbyname_r='$d_getnetbyname_r'
19986 d_getnetent_r='$d_getnetent_r'
19987 d_getnetprotos='$d_getnetprotos'
19988 d_getpagsz='$d_getpagsz'
19989 d_getpbyname='$d_getpbyname'
19990 d_getpbynumber='$d_getpbynumber'
19991 d_getpent='$d_getpent'
19992 d_getpgid='$d_getpgid'
19993 d_getpgrp2='$d_getpgrp2'
19994 d_getpgrp='$d_getpgrp'
19995 d_getppid='$d_getppid'
19996 d_getprior='$d_getprior'
19997 d_getprotobyname_r='$d_getprotobyname_r'
19998 d_getprotobynumber_r='$d_getprotobynumber_r'
19999 d_getprotoent_r='$d_getprotoent_r'
20000 d_getprotoprotos='$d_getprotoprotos'
20001 d_getprpwnam='$d_getprpwnam'
20002 d_getpwent='$d_getpwent'
20003 d_getpwent_r='$d_getpwent_r'
20004 d_getpwnam_r='$d_getpwnam_r'
20005 d_getpwuid_r='$d_getpwuid_r'
20006 d_getsbyname='$d_getsbyname'
20007 d_getsbyport='$d_getsbyport'
20008 d_getsent='$d_getsent'
20009 d_getservbyname_r='$d_getservbyname_r'
20010 d_getservbyport_r='$d_getservbyport_r'
20011 d_getservent_r='$d_getservent_r'
20012 d_getservprotos='$d_getservprotos'
20013 d_getspnam='$d_getspnam'
20014 d_getspnam_r='$d_getspnam_r'
20015 d_gettimeod='$d_gettimeod'
20016 d_gmtime_r='$d_gmtime_r'
20017 d_gnulibc='$d_gnulibc'
20018 d_grpasswd='$d_grpasswd'
20019 d_hasmntopt='$d_hasmntopt'
20020 d_htonl='$d_htonl'
20021 d_index='$d_index'
20022 d_inetaton='$d_inetaton'
20023 d_int64_t='$d_int64_t'
20024 d_isascii='$d_isascii'
20025 d_isfinite='$d_isfinite'
20026 d_isinf='$d_isinf'
20027 d_isnan='$d_isnan'
20028 d_isnanl='$d_isnanl'
20029 d_killpg='$d_killpg'
20030 d_lchown='$d_lchown'
20031 d_ldbl_dig='$d_ldbl_dig'
20032 d_link='$d_link'
20033 d_localtime_r='$d_localtime_r'
20034 d_locconv='$d_locconv'
20035 d_lockf='$d_lockf'
20036 d_longdbl='$d_longdbl'
20037 d_longlong='$d_longlong'
20038 d_lseekproto='$d_lseekproto'
20039 d_lstat='$d_lstat'
20040 d_madvise='$d_madvise'
20041 d_mblen='$d_mblen'
20042 d_mbstowcs='$d_mbstowcs'
20043 d_mbtowc='$d_mbtowc'
20044 d_memchr='$d_memchr'
20045 d_memcmp='$d_memcmp'
20046 d_memcpy='$d_memcpy'
20047 d_memmove='$d_memmove'
20048 d_memset='$d_memset'
20049 d_mkdir='$d_mkdir'
20050 d_mkdtemp='$d_mkdtemp'
20051 d_mkfifo='$d_mkfifo'
20052 d_mkstemp='$d_mkstemp'
20053 d_mkstemps='$d_mkstemps'
20054 d_mktime='$d_mktime'
20055 d_mmap='$d_mmap'
20056 d_modfl='$d_modfl'
20057 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20058 d_mprotect='$d_mprotect'
20059 d_msg='$d_msg'
20060 d_msg_ctrunc='$d_msg_ctrunc'
20061 d_msg_dontroute='$d_msg_dontroute'
20062 d_msg_oob='$d_msg_oob'
20063 d_msg_peek='$d_msg_peek'
20064 d_msg_proxy='$d_msg_proxy'
20065 d_msgctl='$d_msgctl'
20066 d_msgget='$d_msgget'
20067 d_msghdr_s='$d_msghdr_s'
20068 d_msgrcv='$d_msgrcv'
20069 d_msgsnd='$d_msgsnd'
20070 d_msync='$d_msync'
20071 d_munmap='$d_munmap'
20072 d_mymalloc='$d_mymalloc'
20073 d_nice='$d_nice'
20074 d_nl_langinfo='$d_nl_langinfo'
20075 d_nv_preserves_uv='$d_nv_preserves_uv'
20076 d_off64_t='$d_off64_t'
20077 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20078 d_oldpthreads='$d_oldpthreads'
20079 d_oldsock='$d_oldsock'
20080 d_open3='$d_open3'
20081 d_pathconf='$d_pathconf'
20082 d_pause='$d_pause'
20083 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20084 d_phostname='$d_phostname'
20085 d_pipe='$d_pipe'
20086 d_poll='$d_poll'
20087 d_portable='$d_portable'
20088 d_procselfexe='$d_procselfexe'
20089 d_pthread_atfork='$d_pthread_atfork'
20090 d_pthread_yield='$d_pthread_yield'
20091 d_pwage='$d_pwage'
20092 d_pwchange='$d_pwchange'
20093 d_pwclass='$d_pwclass'
20094 d_pwcomment='$d_pwcomment'
20095 d_pwexpire='$d_pwexpire'
20096 d_pwgecos='$d_pwgecos'
20097 d_pwpasswd='$d_pwpasswd'
20098 d_pwquota='$d_pwquota'
20099 d_qgcvt='$d_qgcvt'
20100 d_quad='$d_quad'
20101 d_random_r='$d_random_r'
20102 d_readdir64_r='$d_readdir64_r'
20103 d_readdir='$d_readdir'
20104 d_readdir_r='$d_readdir_r'
20105 d_readlink='$d_readlink'
20106 d_readv='$d_readv'
20107 d_recvmsg='$d_recvmsg'
20108 d_rename='$d_rename'
20109 d_rewinddir='$d_rewinddir'
20110 d_rmdir='$d_rmdir'
20111 d_safebcpy='$d_safebcpy'
20112 d_safemcpy='$d_safemcpy'
20113 d_sanemcmp='$d_sanemcmp'
20114 d_sbrkproto='$d_sbrkproto'
20115 d_sched_yield='$d_sched_yield'
20116 d_scm_rights='$d_scm_rights'
20117 d_seekdir='$d_seekdir'
20118 d_select='$d_select'
20119 d_sem='$d_sem'
20120 d_semctl='$d_semctl'
20121 d_semctl_semid_ds='$d_semctl_semid_ds'
20122 d_semctl_semun='$d_semctl_semun'
20123 d_semget='$d_semget'
20124 d_semop='$d_semop'
20125 d_sendmsg='$d_sendmsg'
20126 d_setegid='$d_setegid'
20127 d_seteuid='$d_seteuid'
20128 d_setgrent='$d_setgrent'
20129 d_setgrent_r='$d_setgrent_r'
20130 d_setgrps='$d_setgrps'
20131 d_sethent='$d_sethent'
20132 d_sethostent_r='$d_sethostent_r'
20133 d_setitimer='$d_setitimer'
20134 d_setlinebuf='$d_setlinebuf'
20135 d_setlocale='$d_setlocale'
20136 d_setlocale_r='$d_setlocale_r'
20137 d_setnent='$d_setnent'
20138 d_setnetent_r='$d_setnetent_r'
20139 d_setpent='$d_setpent'
20140 d_setpgid='$d_setpgid'
20141 d_setpgrp2='$d_setpgrp2'
20142 d_setpgrp='$d_setpgrp'
20143 d_setprior='$d_setprior'
20144 d_setproctitle='$d_setproctitle'
20145 d_setprotoent_r='$d_setprotoent_r'
20146 d_setpwent='$d_setpwent'
20147 d_setpwent_r='$d_setpwent_r'
20148 d_setregid='$d_setregid'
20149 d_setresgid='$d_setresgid'
20150 d_setresuid='$d_setresuid'
20151 d_setreuid='$d_setreuid'
20152 d_setrgid='$d_setrgid'
20153 d_setruid='$d_setruid'
20154 d_setsent='$d_setsent'
20155 d_setservent_r='$d_setservent_r'
20156 d_setsid='$d_setsid'
20157 d_setvbuf='$d_setvbuf'
20158 d_sfio='$d_sfio'
20159 d_shm='$d_shm'
20160 d_shmat='$d_shmat'
20161 d_shmatprototype='$d_shmatprototype'
20162 d_shmctl='$d_shmctl'
20163 d_shmdt='$d_shmdt'
20164 d_shmget='$d_shmget'
20165 d_sigaction='$d_sigaction'
20166 d_sigprocmask='$d_sigprocmask'
20167 d_sigsetjmp='$d_sigsetjmp'
20168 d_sockatmark='$d_sockatmark'
20169 d_sockatmarkproto='$d_sockatmarkproto'
20170 d_socket='$d_socket'
20171 d_socklen_t='$d_socklen_t'
20172 d_sockpair='$d_sockpair'
20173 d_socks5_init='$d_socks5_init'
20174 d_sqrtl='$d_sqrtl'
20175 d_srand48_r='$d_srand48_r'
20176 d_srandom_r='$d_srandom_r'
20177 d_sresgproto='$d_sresgproto'
20178 d_sresuproto='$d_sresuproto'
20179 d_statblks='$d_statblks'
20180 d_statfs_f_flags='$d_statfs_f_flags'
20181 d_statfs_s='$d_statfs_s'
20182 d_statvfs='$d_statvfs'
20183 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20184 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20185 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20186 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20187 d_stdio_stream_array='$d_stdio_stream_array'
20188 d_stdiobase='$d_stdiobase'
20189 d_stdstdio='$d_stdstdio'
20190 d_strchr='$d_strchr'
20191 d_strcoll='$d_strcoll'
20192 d_strctcpy='$d_strctcpy'
20193 d_strerrm='$d_strerrm'
20194 d_strerror='$d_strerror'
20195 d_strerror_r='$d_strerror_r'
20196 d_strftime='$d_strftime'
20197 d_strtod='$d_strtod'
20198 d_strtol='$d_strtol'
20199 d_strtold='$d_strtold'
20200 d_strtoll='$d_strtoll'
20201 d_strtoq='$d_strtoq'
20202 d_strtoul='$d_strtoul'
20203 d_strtoull='$d_strtoull'
20204 d_strtouq='$d_strtouq'
20205 d_strxfrm='$d_strxfrm'
20206 d_suidsafe='$d_suidsafe'
20207 d_symlink='$d_symlink'
20208 d_syscall='$d_syscall'
20209 d_syscallproto='$d_syscallproto'
20210 d_sysconf='$d_sysconf'
20211 d_sysernlst='$d_sysernlst'
20212 d_syserrlst='$d_syserrlst'
20213 d_system='$d_system'
20214 d_tcgetpgrp='$d_tcgetpgrp'
20215 d_tcsetpgrp='$d_tcsetpgrp'
20216 d_telldir='$d_telldir'
20217 d_telldirproto='$d_telldirproto'
20218 d_time='$d_time'
20219 d_times='$d_times'
20220 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20221 d_tm_tm_zone='$d_tm_tm_zone'
20222 d_tmpnam_r='$d_tmpnam_r'
20223 d_truncate='$d_truncate'
20224 d_ttyname_r='$d_ttyname_r'
20225 d_tzname='$d_tzname'
20226 d_u32align='$d_u32align'
20227 d_ualarm='$d_ualarm'
20228 d_umask='$d_umask'
20229 d_uname='$d_uname'
20230 d_union_semun='$d_union_semun'
20231 d_unordered='$d_unordered'
20232 d_usleep='$d_usleep'
20233 d_usleepproto='$d_usleepproto'
20234 d_ustat='$d_ustat'
20235 d_vendorarch='$d_vendorarch'
20236 d_vendorbin='$d_vendorbin'
20237 d_vendorlib='$d_vendorlib'
20238 d_vfork='$d_vfork'
20239 d_void_closedir='$d_void_closedir'
20240 d_voidsig='$d_voidsig'
20241 d_voidtty='$d_voidtty'
20242 d_volatile='$d_volatile'
20243 d_vprintf='$d_vprintf'
20244 d_wait4='$d_wait4'
20245 d_waitpid='$d_waitpid'
20246 d_wcstombs='$d_wcstombs'
20247 d_wctomb='$d_wctomb'
20248 d_writev='$d_writev'
20249 d_xenix='$d_xenix'
20250 date='$date'
20251 db_hashtype='$db_hashtype'
20252 db_prefixtype='$db_prefixtype'
20253 db_version_major='$db_version_major'
20254 db_version_minor='$db_version_minor'
20255 db_version_patch='$db_version_patch'
20256 defvoidused='$defvoidused'
20257 direntrytype='$direntrytype'
20258 dlext='$dlext'
20259 dlsrc='$dlsrc'
20260 doublesize='$doublesize'
20261 drand01='$drand01'
20262 drand48_r_proto='$drand48_r_proto'
20263 dynamic_ext='$dynamic_ext'
20264 eagain='$eagain'
20265 ebcdic='$ebcdic'
20266 echo='$echo'
20267 egrep='$egrep'
20268 emacs='$emacs'
20269 endgrent_r_proto='$endgrent_r_proto'
20270 endhostent_r_proto='$endhostent_r_proto'
20271 endnetent_r_proto='$endnetent_r_proto'
20272 endprotoent_r_proto='$endprotoent_r_proto'
20273 endpwent_r_proto='$endpwent_r_proto'
20274 endservent_r_proto='$endservent_r_proto'
20275 eunicefix='$eunicefix'
20276 exe_ext='$exe_ext'
20277 expr='$expr'
20278 extensions='$extensions'
20279 extras='$extras'
20280 fflushNULL='$fflushNULL'
20281 fflushall='$fflushall'
20282 find='$find'
20283 firstmakefile='$firstmakefile'
20284 flex='$flex'
20285 fpossize='$fpossize'
20286 fpostype='$fpostype'
20287 freetype='$freetype'
20288 from='$from'
20289 full_ar='$full_ar'
20290 full_csh='$full_csh'
20291 full_sed='$full_sed'
20292 gccosandvers='$gccosandvers'
20293 gccversion='$gccversion'
20294 getgrent_r_proto='$getgrent_r_proto'
20295 getgrgid_r_proto='$getgrgid_r_proto'
20296 getgrnam_r_proto='$getgrnam_r_proto'
20297 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20298 gethostbyname_r_proto='$gethostbyname_r_proto'
20299 gethostent_r_proto='$gethostent_r_proto'
20300 getlogin_r_proto='$getlogin_r_proto'
20301 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20302 getnetbyname_r_proto='$getnetbyname_r_proto'
20303 getnetent_r_proto='$getnetent_r_proto'
20304 getprotobyname_r_proto='$getprotobyname_r_proto'
20305 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20306 getprotoent_r_proto='$getprotoent_r_proto'
20307 getpwent_r_proto='$getpwent_r_proto'
20308 getpwnam_r_proto='$getpwnam_r_proto'
20309 getpwuid_r_proto='$getpwuid_r_proto'
20310 getservbyname_r_proto='$getservbyname_r_proto'
20311 getservbyport_r_proto='$getservbyport_r_proto'
20312 getservent_r_proto='$getservent_r_proto'
20313 getspnam_r_proto='$getspnam_r_proto'
20314 gidformat='$gidformat'
20315 gidsign='$gidsign'
20316 gidsize='$gidsize'
20317 gidtype='$gidtype'
20318 glibpth='$glibpth'
20319 gmake='$gmake'
20320 gmtime_r_proto='$gmtime_r_proto'
20321 grep='$grep'
20322 groupcat='$groupcat'
20323 groupstype='$groupstype'
20324 gzip='$gzip'
20325 h_fcntl='$h_fcntl'
20326 h_sysfile='$h_sysfile'
20327 hint='$hint'
20328 hostcat='$hostcat'
20329 i16size='$i16size'
20330 i16type='$i16type'
20331 i32size='$i32size'
20332 i32type='$i32type'
20333 i64size='$i64size'
20334 i64type='$i64type'
20335 i8size='$i8size'
20336 i8type='$i8type'
20337 i_arpainet='$i_arpainet'
20338 i_bsdioctl='$i_bsdioctl'
20339 i_crypt='$i_crypt'
20340 i_db='$i_db'
20341 i_dbm='$i_dbm'
20342 i_dirent='$i_dirent'
20343 i_dld='$i_dld'
20344 i_dlfcn='$i_dlfcn'
20345 i_fcntl='$i_fcntl'
20346 i_float='$i_float'
20347 i_fp='$i_fp'
20348 i_fp_class='$i_fp_class'
20349 i_gdbm='$i_gdbm'
20350 i_grp='$i_grp'
20351 i_ieeefp='$i_ieeefp'
20352 i_inttypes='$i_inttypes'
20353 i_langinfo='$i_langinfo'
20354 i_libutil='$i_libutil'
20355 i_limits='$i_limits'
20356 i_locale='$i_locale'
20357 i_machcthr='$i_machcthr'
20358 i_malloc='$i_malloc'
20359 i_math='$i_math'
20360 i_memory='$i_memory'
20361 i_mntent='$i_mntent'
20362 i_ndbm='$i_ndbm'
20363 i_netdb='$i_netdb'
20364 i_neterrno='$i_neterrno'
20365 i_netinettcp='$i_netinettcp'
20366 i_niin='$i_niin'
20367 i_poll='$i_poll'
20368 i_prot='$i_prot'
20369 i_pthread='$i_pthread'
20370 i_pwd='$i_pwd'
20371 i_rpcsvcdbm='$i_rpcsvcdbm'
20372 i_sfio='$i_sfio'
20373 i_sgtty='$i_sgtty'
20374 i_shadow='$i_shadow'
20375 i_socks='$i_socks'
20376 i_stdarg='$i_stdarg'
20377 i_stddef='$i_stddef'
20378 i_stdlib='$i_stdlib'
20379 i_string='$i_string'
20380 i_sunmath='$i_sunmath'
20381 i_sysaccess='$i_sysaccess'
20382 i_sysdir='$i_sysdir'
20383 i_sysfile='$i_sysfile'
20384 i_sysfilio='$i_sysfilio'
20385 i_sysin='$i_sysin'
20386 i_sysioctl='$i_sysioctl'
20387 i_syslog='$i_syslog'
20388 i_sysmman='$i_sysmman'
20389 i_sysmode='$i_sysmode'
20390 i_sysmount='$i_sysmount'
20391 i_sysndir='$i_sysndir'
20392 i_sysparam='$i_sysparam'
20393 i_sysresrc='$i_sysresrc'
20394 i_syssecrt='$i_syssecrt'
20395 i_sysselct='$i_sysselct'
20396 i_syssockio='$i_syssockio'
20397 i_sysstat='$i_sysstat'
20398 i_sysstatfs='$i_sysstatfs'
20399 i_sysstatvfs='$i_sysstatvfs'
20400 i_systime='$i_systime'
20401 i_systimek='$i_systimek'
20402 i_systimes='$i_systimes'
20403 i_systypes='$i_systypes'
20404 i_sysuio='$i_sysuio'
20405 i_sysun='$i_sysun'
20406 i_sysutsname='$i_sysutsname'
20407 i_sysvfs='$i_sysvfs'
20408 i_syswait='$i_syswait'
20409 i_termio='$i_termio'
20410 i_termios='$i_termios'
20411 i_time='$i_time'
20412 i_unistd='$i_unistd'
20413 i_ustat='$i_ustat'
20414 i_utime='$i_utime'
20415 i_values='$i_values'
20416 i_varargs='$i_varargs'
20417 i_varhdr='$i_varhdr'
20418 i_vfork='$i_vfork'
20419 ignore_versioned_solibs='$ignore_versioned_solibs'
20420 inc_version_list='$inc_version_list'
20421 inc_version_list_init='$inc_version_list_init'
20422 incpath='$incpath'
20423 inews='$inews'
20424 installarchlib='$installarchlib'
20425 installbin='$installbin'
20426 installman1dir='$installman1dir'
20427 installman3dir='$installman3dir'
20428 installprefix='$installprefix'
20429 installprefixexp='$installprefixexp'
20430 installprivlib='$installprivlib'
20431 installscript='$installscript'
20432 installsitearch='$installsitearch'
20433 installsitebin='$installsitebin'
20434 installsitelib='$installsitelib'
20435 installstyle='$installstyle'
20436 installusrbinperl='$installusrbinperl'
20437 installvendorarch='$installvendorarch'
20438 installvendorbin='$installvendorbin'
20439 installvendorlib='$installvendorlib'
20440 intsize='$intsize'
20441 issymlink='$issymlink'
20442 ivdformat='$ivdformat'
20443 ivsize='$ivsize'
20444 ivtype='$ivtype'
20445 known_extensions='$known_extensions'
20446 ksh='$ksh'
20447 ld='$ld'
20448 lddlflags='$lddlflags'
20449 ldflags='$ldflags'
20450 ldflags_uselargefiles='$ldflags_uselargefiles'
20451 ldlibpthname='$ldlibpthname'
20452 less='$less'
20453 lib_ext='$lib_ext'
20454 libc='$libc'
20455 libperl='$libperl'
20456 libpth='$libpth'
20457 libs='$libs'
20458 libsdirs='$libsdirs'
20459 libsfiles='$libsfiles'
20460 libsfound='$libsfound'
20461 libspath='$libspath'
20462 libswanted='$libswanted'
20463 libswanted_uselargefiles='$libswanted_uselargefiles'
20464 line='$line'
20465 lint='$lint'
20466 lkflags='$lkflags'
20467 ln='$ln'
20468 lns='$lns'
20469 localtime_r_proto='$localtime_r_proto'
20470 locincpth='$locincpth'
20471 loclibpth='$loclibpth'
20472 longdblsize='$longdblsize'
20473 longlongsize='$longlongsize'
20474 longsize='$longsize'
20475 lp='$lp'
20476 lpr='$lpr'
20477 ls='$ls'
20478 lseeksize='$lseeksize'
20479 lseektype='$lseektype'
20480 mail='$mail'
20481 mailx='$mailx'
20482 make='$make'
20483 make_set_make='$make_set_make'
20484 mallocobj='$mallocobj'
20485 mallocsrc='$mallocsrc'
20486 malloctype='$malloctype'
20487 man1dir='$man1dir'
20488 man1direxp='$man1direxp'
20489 man1ext='$man1ext'
20490 man3dir='$man3dir'
20491 man3direxp='$man3direxp'
20492 man3ext='$man3ext'
20493 mips_type='$mips_type'
20494 mkdir='$mkdir'
20495 mmaptype='$mmaptype'
20496 modetype='$modetype'
20497 more='$more'
20498 multiarch='$multiarch'
20499 mv='$mv'
20500 myarchname='$myarchname'
20501 mydomain='$mydomain'
20502 myhostname='$myhostname'
20503 myuname='$myuname'
20504 n='$n'
20505 need_va_copy='$need_va_copy'
20506 netdb_hlen_type='$netdb_hlen_type'
20507 netdb_host_type='$netdb_host_type'
20508 netdb_name_type='$netdb_name_type'
20509 netdb_net_type='$netdb_net_type'
20510 nm='$nm'
20511 nm_opt='$nm_opt'
20512 nm_so_opt='$nm_so_opt'
20513 nonxs_ext='$nonxs_ext'
20514 nroff='$nroff'
20515 nvEUformat='$nvEUformat'
20516 nvFUformat='$nvFUformat'
20517 nvGUformat='$nvGUformat'
20518 nv_preserves_uv_bits='$nv_preserves_uv_bits'
20519 nveformat='$nveformat'
20520 nvfformat='$nvfformat'
20521 nvgformat='$nvgformat'
20522 nvsize='$nvsize'
20523 nvtype='$nvtype'
20524 o_nonblock='$o_nonblock'
20525 obj_ext='$obj_ext'
20526 old_pthread_create_joinable='$old_pthread_create_joinable'
20527 optimize='$optimize'
20528 orderlib='$orderlib'
20529 osname='$osname'
20530 osvers='$osvers'
20531 otherlibdirs='$otherlibdirs'
20532 package='$package'
20533 pager='$pager'
20534 passcat='$passcat'
20535 patchlevel='$patchlevel'
20536 path_sep='$path_sep'
20537 perl5='$perl5'
20538 perl='$perl'
20539 perl_patchlevel='$perl_patchlevel'
20540 perladmin='$perladmin'
20541 perllibs='$perllibs'
20542 perlpath='$perlpath'
20543 pg='$pg'
20544 phostname='$phostname'
20545 pidtype='$pidtype'
20546 plibpth='$plibpth'
20547 pm_apiversion='$pm_apiversion'
20548 pmake='$pmake'
20549 pr='$pr'
20550 prefix='$prefix'
20551 prefixexp='$prefixexp'
20552 privlib='$privlib'
20553 privlibexp='$privlibexp'
20554 procselfexe='$procselfexe'
20555 prototype='$prototype'
20556 ptrsize='$ptrsize'
20557 quadkind='$quadkind'
20558 quadtype='$quadtype'
20559 randbits='$randbits'
20560 randfunc='$randfunc'
20561 random_r_proto='$random_r_proto'
20562 randseedtype='$randseedtype'
20563 ranlib='$ranlib'
20564 rd_nodata='$rd_nodata'
20565 readdir64_r_proto='$readdir64_r_proto'
20566 readdir_r_proto='$readdir_r_proto'
20567 revision='$revision'
20568 rm='$rm'
20569 rmail='$rmail'
20570 run='$run'
20571 runnm='$runnm'
20572 sPRIEUldbl='$sPRIEUldbl'
20573 sPRIFUldbl='$sPRIFUldbl'
20574 sPRIGUldbl='$sPRIGUldbl'
20575 sPRIXU64='$sPRIXU64'
20576 sPRId64='$sPRId64'
20577 sPRIeldbl='$sPRIeldbl'
20578 sPRIfldbl='$sPRIfldbl'
20579 sPRIgldbl='$sPRIgldbl'
20580 sPRIi64='$sPRIi64'
20581 sPRIo64='$sPRIo64'
20582 sPRIu64='$sPRIu64'
20583 sPRIx64='$sPRIx64'
20584 sSCNfldbl='$sSCNfldbl'
20585 sched_yield='$sched_yield'
20586 scriptdir='$scriptdir'
20587 scriptdirexp='$scriptdirexp'
20588 sed='$sed'
20589 seedfunc='$seedfunc'
20590 selectminbits='$selectminbits'
20591 selecttype='$selecttype'
20592 sendmail='$sendmail'
20593 setgrent_r_proto='$setgrent_r_proto'
20594 sethostent_r_proto='$sethostent_r_proto'
20595 setlocale_r_proto='$setlocale_r_proto'
20596 setnetent_r_proto='$setnetent_r_proto'
20597 setprotoent_r_proto='$setprotoent_r_proto'
20598 setpwent_r_proto='$setpwent_r_proto'
20599 setservent_r_proto='$setservent_r_proto'
20600 sh='$sh'
20601 shar='$shar'
20602 sharpbang='$sharpbang'
20603 shmattype='$shmattype'
20604 shortsize='$shortsize'
20605 shrpenv='$shrpenv'
20606 shsharp='$shsharp'
20607 sig_count='$sig_count'
20608 sig_name='$sig_name'
20609 sig_name_init='$sig_name_init'
20610 sig_num='$sig_num'
20611 sig_num_init='$sig_num_init'
20612 sig_size='$sig_size'
20613 signal_t='$signal_t'
20614 sitearch='$sitearch'
20615 sitearchexp='$sitearchexp'
20616 sitebin='$sitebin'
20617 sitebinexp='$sitebinexp'
20618 sitelib='$sitelib'
20619 sitelib_stem='$sitelib_stem'
20620 sitelibexp='$sitelibexp'
20621 siteprefix='$siteprefix'
20622 siteprefixexp='$siteprefixexp'
20623 sizesize='$sizesize'
20624 sizetype='$sizetype'
20625 sleep='$sleep'
20626 smail='$smail'
20627 so='$so'
20628 sockethdr='$sockethdr'
20629 socketlib='$socketlib'
20630 socksizetype='$socksizetype'
20631 sort='$sort'
20632 spackage='$spackage'
20633 spitshell='$spitshell'
20634 srand48_r_proto='$srand48_r_proto'
20635 srandom_r_proto='$srandom_r_proto'
20636 src='$src'
20637 ssizetype='$ssizetype'
20638 startperl='$startperl'
20639 startsh='$startsh'
20640 static_ext='$static_ext'
20641 stdchar='$stdchar'
20642 stdio_base='$stdio_base'
20643 stdio_bufsiz='$stdio_bufsiz'
20644 stdio_cnt='$stdio_cnt'
20645 stdio_filbuf='$stdio_filbuf'
20646 stdio_ptr='$stdio_ptr'
20647 stdio_stream_array='$stdio_stream_array'
20648 strerror_r_proto='$strerror_r_proto'
20649 strings='$strings'
20650 submit='$submit'
20651 subversion='$subversion'
20652 sysman='$sysman'
20653 tail='$tail'
20654 tar='$tar'
20655 targetarch='$targetarch'
20656 tbl='$tbl'
20657 tee='$tee'
20658 test='$test'
20659 timeincl='$timeincl'
20660 timetype='$timetype'
20661 tmpnam_r_proto='$tmpnam_r_proto'
20662 to='$to'
20663 touch='$touch'
20664 tr='$tr'
20665 trnl='$trnl'
20666 troff='$troff'
20667 ttyname_r_proto='$ttyname_r_proto'
20668 u16size='$u16size'
20669 u16type='$u16type'
20670 u32size='$u32size'
20671 u32type='$u32type'
20672 u64size='$u64size'
20673 u64type='$u64type'
20674 u8size='$u8size'
20675 u8type='$u8type'
20676 uidformat='$uidformat'
20677 uidsign='$uidsign'
20678 uidsize='$uidsize'
20679 uidtype='$uidtype'
20680 uname='$uname'
20681 uniq='$uniq'
20682 uquadtype='$uquadtype'
20683 use5005threads='$use5005threads'
20684 use64bitall='$use64bitall'
20685 use64bitint='$use64bitint'
20686 usecrosscompile='$usecrosscompile'
20687 usedl='$usedl'
20688 useithreads='$useithreads'
20689 uselargefiles='$uselargefiles'
20690 uselongdouble='$uselongdouble'
20691 usemorebits='$usemorebits'
20692 usemultiplicity='$usemultiplicity'
20693 usemymalloc='$usemymalloc'
20694 usenm='$usenm'
20695 useopcode='$useopcode'
20696 useperlio='$useperlio'
20697 useposix='$useposix'
20698 usereentrant='$usereentrant'
20699 usesfio='$usesfio'
20700 useshrplib='$useshrplib'
20701 usesocks='$usesocks'
20702 usethreads='$usethreads'
20703 usevendorprefix='$usevendorprefix'
20704 usevfork='$usevfork'
20705 usrinc='$usrinc'
20706 uuname='$uuname'
20707 uvXUformat='$uvXUformat'
20708 uvoformat='$uvoformat'
20709 uvsize='$uvsize'
20710 uvtype='$uvtype'
20711 uvuformat='$uvuformat'
20712 uvxformat='$uvxformat'
20713 vendorarch='$vendorarch'
20714 vendorarchexp='$vendorarchexp'
20715 vendorbin='$vendorbin'
20716 vendorbinexp='$vendorbinexp'
20717 vendorlib='$vendorlib'
20718 vendorlib_stem='$vendorlib_stem'
20719 vendorlibexp='$vendorlibexp'
20720 vendorprefix='$vendorprefix'
20721 vendorprefixexp='$vendorprefixexp'
20722 version='$version'
20723 version_patchlevel_string='$version_patchlevel_string'
20724 versiononly='$versiononly'
20725 vi='$vi'
20726 voidflags='$voidflags'
20727 xlibpth='$xlibpth'
20728 xs_apiversion='$xs_apiversion'
20729 yacc='$yacc'
20730 yaccflags='$yaccflags'
20731 zcat='$zcat'
20732 zip='$zip'
20733 EOT
20734
20735 : Add in command line options if available
20736 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
20737
20738 : add special variables
20739 $test -f $src/patchlevel.h && \
20740 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
20741 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
20742 echo "PERL_CONFIG_SH=true" >>config.sh
20743
20744 : propagate old symbols
20745 if $test -f UU/config.sh; then
20746         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
20747         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
20748         $sort | $uniq -u >UU/oldsyms
20749         set X `cat UU/oldsyms`
20750         shift
20751         case $# in
20752         0) ;;
20753         *)
20754                 cat <<EOM
20755 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
20756 EOM
20757                 echo "# Variables propagated from previous config.sh file." >>config.sh
20758                 for sym in `cat UU/oldsyms`; do
20759                         echo "    Propagating $hint variable "'$'"$sym..."
20760                         eval 'tmp="$'"${sym}"'"'
20761                         echo "$tmp" | \
20762                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
20763                 done
20764                 ;;
20765         esac
20766 fi
20767
20768 : Finish up by extracting the .SH files
20769 case "$alldone" in
20770 exit)
20771         $rm -rf UU
20772         echo "Extraction done."
20773         exit 0
20774         ;;
20775 cont)
20776         ;;
20777 '')
20778         dflt=''
20779         nostick=true
20780         $cat <<EOM
20781
20782 If you'd like to make any changes to the config.sh file before I begin
20783 to configure things, do it as a shell escape now (e.g. !vi config.sh).
20784
20785 EOM
20786         rp="Press return or use a shell escape to edit config.sh:"
20787         . UU/myread
20788         nostick=''
20789         case "$ans" in
20790         '') ;;
20791         *) : in case they cannot read
20792                 sh 1>&4 -c "$ans";;
20793         esac
20794         ;;
20795 esac
20796
20797 : if this fails, just run all the .SH files by hand
20798 . ./config.sh
20799
20800 echo " "
20801 exec 1>&4
20802 pwd=`pwd`
20803 . ./UU/extract
20804 cd "$pwd"
20805
20806 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
20807         dflt=y
20808         case "$silent" in
20809         true) ;;
20810         *)
20811                 $cat <<EOM
20812
20813 Now you need to generate make dependencies by running "$make depend".
20814 You might prefer to run it in background: "$make depend > makedepend.out &"
20815 It can take a while, so you might not want to run it right now.
20816
20817 EOM
20818                 ;;
20819         esac
20820         rp="Run $make depend now?"
20821         . UU/myread
20822         case "$ans" in
20823         y*)
20824                 $make depend && echo "Now you must run '$make'."
20825                 ;;
20826         *)
20827                 echo "You must run '$make depend' then '$make'."
20828                 ;;
20829         esac
20830 elif test -f [Mm]akefile; then
20831         echo " "
20832         echo "Now you must run a $make."
20833 else
20834         echo "Configure done."
20835 fi
20836
20837 if $test -f Policy.sh; then
20838     $cat <<EOM
20839
20840 If you compile $package on a different machine or from a different object
20841 directory, copy the Policy.sh file from this object directory to the
20842 new one before you run Configure -- this will help you with most of
20843 the policy defaults.
20844
20845 EOM
20846 fi
20847 if $test -f config.msg; then
20848     echo "Hmm.  I also noted the following information while running:"
20849     echo " "
20850     $cat config.msg >&4
20851     $rm -f config.msg
20852 fi
20853 $rm -f kit*isdone ark*isdone
20854 $rm -rf UU
20855
20856 : End of Configure
20857