f88afcfcf97273a3daead9bb8fcfbc6fda53fbe4
[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 Fri Mar 15 17:38:07 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 d_nv_preserves_uv_bits=''
969 i16size=''
970 i16type=''
971 i32size=''
972 i32type=''
973 i64size=''
974 i64type=''
975 i8size=''
976 i8type=''
977 ivsize=''
978 ivtype=''
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 5.5.640, Perl has two different internal threading implementations,
3444 the 5.005 version (5005threads) and an interpreter-based version
3445 (ithreads) that has one interpreter per thread.  Both are very 
3446 experimental.  This arrangement exists to help developers work out
3447 which one is better.
3448
3449 If you're a casual user, you probably don't want interpreter-threads
3450 at this time.  But if you do, the 'threads' module allows their use,
3451 and the 'Thread' module offers an interface to both 5005threads and
3452 ithreads (whichever has been configured).
3453 EOM
3454         : Default to ithreads unless overridden on command line or with
3455         : old config.sh
3456         dflt='y'
3457         case "$use5005threads" in
3458                 $define|true|[yY]*) dflt='n';;
3459         esac
3460         case "$useithreads" in
3461                 $undef|false|[nN]*) dflt='n';;
3462         esac
3463         rp='Use interpreter-based ithreads?'
3464         . ./myread
3465         case "$ans" in
3466         y|Y)    val="$define" ;;
3467         *)      val="$undef" ;;
3468         esac
3469         set useithreads
3470         eval $setvar
3471         : Now set use5005threads to the opposite value.
3472         case "$useithreads" in
3473         $define) val="$undef" ;;
3474         *) val="$define" ;;
3475         esac
3476         set use5005threads
3477         eval $setvar
3478         ;;
3479 *)
3480         useithreads="$undef"
3481         use5005threads="$undef"
3482         ;;
3483 esac
3484
3485 case "$useithreads$use5005threads" in
3486 "$define$define")
3487         $cat >&4 <<EOM
3488
3489 You cannot have both the ithreads and the 5.005 threads enabled
3490 at the same time.  Disabling the 5.005 threads since they are
3491 much less stable than the ithreads.
3492
3493 EOM
3494         use5005threads="$undef"
3495         ;;
3496 esac
3497
3498 case "$d_oldpthreads" in
3499 '')     : Configure tests would be welcome here.  For now, assume undef.
3500         val="$undef" ;;
3501 *)      val="$d_oldpthreads" ;;
3502 esac
3503 set d_oldpthreads
3504 eval $setvar
3505
3506
3507 case "$usethreads" in
3508 "$define"|true|[yY]*)
3509 : Look for a hint-file generated 'call-back-unit'.  If the
3510 : user has specified that a threading perl is to be built,
3511 : we may need to set or change some other defaults.
3512         if $test -f usethreads.cbu; then
3513                 echo "Your platform has some specific hints for threaded builds, using them..."
3514                 . ./usethreads.cbu
3515         else
3516                 $cat <<EOM
3517 (Your platform doesn't have any specific hints for threaded builds.
3518  Assuming POSIX threads, then.)
3519 EOM
3520         fi
3521         ;;
3522 esac
3523
3524 cat <<EOM
3525
3526 Perl can be built so that multiple Perl interpreters can coexist
3527 within the same Perl executable.
3528 EOM
3529
3530 case "$useithreads" in
3531 $define)
3532         cat <<EOM
3533 This multiple interpreter support is required for interpreter-based threads.
3534 EOM
3535         val="$define"
3536         ;;
3537 *)      case "$usemultiplicity" in
3538         $define|true|[yY]*)     dflt='y';;
3539         *) dflt='n';;
3540         esac
3541         echo " "
3542         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3543         rp='Build Perl for multiplicity?'
3544         . ./myread
3545         case "$ans" in
3546         y|Y)    val="$define" ;;
3547         *)      val="$undef" ;;
3548         esac
3549         ;;
3550 esac
3551 set usemultiplicity
3552 eval $setvar
3553
3554
3555 case "$usemorebits" in
3556 "$define"|true|[yY]*)
3557         use64bitint="$define"
3558         uselongdouble="$define"
3559         usemorebits="$define"
3560         ;;
3561 *)      usemorebits="$undef"
3562         ;;
3563 esac
3564
3565 : make some quick guesses about what we are up against
3566 echo " "
3567 $echo $n "Hmm...  $c"
3568 echo exit 1 >bsd
3569 echo exit 1 >usg
3570 echo exit 1 >v7
3571 echo exit 1 >osf1
3572 echo exit 1 >eunice
3573 echo exit 1 >xenix
3574 echo exit 1 >venix
3575 echo exit 1 >os2
3576 d_bsd="$undef"
3577 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3578 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3579 then
3580         echo "Looks kind of like an OSF/1 system, but we'll see..."
3581         echo exit 0 >osf1
3582 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3583         xxx=`./loc addbib blurfl $pth`
3584         if $test -f $xxx; then
3585         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3586                 echo exit 0 >bsd
3587                 echo exit 0 >usg
3588         else
3589                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3590                         echo "Looks kind of like an extended USG system, but we'll see..."
3591                 else
3592                         echo "Looks kind of like a USG system, but we'll see..."
3593                 fi
3594                 echo exit 0 >usg
3595         fi
3596 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3597         echo "Looks kind of like a BSD system, but we'll see..."
3598         d_bsd="$define"
3599         echo exit 0 >bsd
3600 else
3601         echo "Looks kind of like a Version 7 system, but we'll see..."
3602         echo exit 0 >v7
3603 fi
3604 case "$eunicefix" in
3605 *unixtovms*)
3606         $cat <<'EOI'
3607 There is, however, a strange, musty smell in the air that reminds me of
3608 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3609 EOI
3610         echo exit 0 >eunice
3611         d_eunice="$define"
3612 : it so happens the Eunice I know will not run shell scripts in Unix format
3613         ;;
3614 *)
3615         echo " "
3616         echo "Congratulations.  You aren't running Eunice."
3617         d_eunice="$undef"
3618         ;;
3619 esac
3620 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3621 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3622 : semicolon as a patch separator
3623 case "$p_" in
3624 :) ;;
3625 *)
3626         $cat <<'EOI'
3627 I have the feeling something is not exactly right, however...don't tell me...
3628 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3629 (Or you may be running DOS with DJGPP.)
3630 EOI
3631         echo exit 0 >os2
3632         ;;
3633 esac
3634 if test -f /xenix; then
3635         echo "Actually, this looks more like a XENIX system..."
3636         echo exit 0 >xenix
3637         d_xenix="$define"
3638 else
3639         echo " "
3640         echo "It's not Xenix..."
3641         d_xenix="$undef"
3642 fi
3643 chmod +x xenix
3644 $eunicefix xenix
3645 if test -f /venix; then
3646         echo "Actually, this looks more like a VENIX system..."
3647         echo exit 0 >venix
3648 else
3649         echo " "
3650         if ./xenix; then
3651                 : null
3652         else
3653                 echo "Nor is it Venix..."
3654         fi
3655 fi
3656 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3657 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3658 $rm -f foo
3659
3660 case "$cc" in
3661 '') dflt=cc;;
3662 *) dflt="$cc";;
3663 esac
3664 rp="Use which C compiler?"
3665 . ./myread
3666 cc="$ans"
3667
3668 : See if they have not cc but they do have gcc
3669 . ./trygcc
3670 : Look for a hint-file generated 'call-back-unit'.  Now that the
3671 : user has specified the compiler, we may need to set or change some
3672 : other defaults.
3673 if $test -f cc.cbu; then
3674     . ./cc.cbu
3675 fi
3676 . ./checkcc
3677
3678 echo " "
3679 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3680 $cat >try.c <<EOM
3681 #include <stdio.h>
3682 int main() {
3683 #ifdef __GNUC__
3684 #ifdef __VERSION__
3685         printf("%s\n", __VERSION__);
3686 #else
3687         printf("%s\n", "1");
3688 #endif
3689 #endif
3690         exit(0);
3691 }
3692 EOM
3693 if $cc -o try $ccflags $ldflags try.c; then
3694         gccversion=`$run ./try`
3695         case "$gccversion" in
3696         '') echo "You are not using GNU cc." ;;
3697         *)  echo "You are using GNU cc $gccversion."
3698             ccname=gcc  
3699             ;;
3700         esac
3701 else
3702         echo " "
3703         echo "*** WHOA THERE!!! ***" >&4
3704         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3705         case "$knowitall" in
3706         '')
3707         echo "    You'd better start hunting for one and let me know about it." >&4
3708                 exit 1
3709                 ;;
3710         esac
3711 fi
3712 $rm -f try try.*
3713 case "$gccversion" in
3714 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3715 esac
3716 case "$gccversion" in
3717 '') gccosandvers='' ;;
3718 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3719    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3720    gccshortvers=''
3721    case "$gccosandvers" in
3722    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3723    $osname$osvers) ;; # looking good
3724    $osname*) cat <<EOM >&4
3725
3726 *** WHOA THERE!!! ***
3727
3728     Your gcc has not been compiled for the exact release of
3729     your operating system ($gccosandvers versus $osname$osvers).
3730
3731     In general it is a good idea to keep gcc synchronized with
3732     the operating system because otherwise serious problems
3733     may ensue when trying to compile software, like Perl.
3734
3735     I'm trying to be optimistic here, though, and will continue.
3736     If later during the configuration and build icky compilation
3737     problems appear (headerfile conflicts being the most common
3738     manifestation), I suggest reinstalling the gcc to match
3739     your operating system release.
3740
3741 EOM
3742       ;;
3743    *) gccosandvers='' ;; # failed to parse, better be silent
3744    esac
3745    ;;
3746 esac
3747 case "$ccname" in
3748 '') ccname="$cc" ;;
3749 esac
3750
3751
3752 : decide how portable to be.  Allow command line overrides.
3753 case "$d_portable" in
3754 "$undef") ;;
3755 *)      d_portable="$define" ;;
3756 esac
3757
3758 : set up shell script to do ~ expansion
3759 cat >filexp <<EOSS
3760 $startsh
3761 : expand filename
3762 case "\$1" in
3763  ~/*|~)
3764         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3765         ;;
3766  ~*)
3767         if $test -f /bin/csh; then
3768                 /bin/csh -f -c "glob \$1"
3769                 failed=\$?
3770                 echo ""
3771                 exit \$failed
3772         else
3773                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3774                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3775                 if $test ! -d "\$dir"; then
3776                         me=\`basename \$0\`
3777                         echo "\$me: can't locate home directory for: \$name" >&2
3778                         exit 1
3779                 fi
3780                 case "\$1" in
3781                 */*)
3782                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3783                         ;;
3784                 *)
3785                         echo \$dir
3786                         ;;
3787                 esac
3788         fi
3789         ;;
3790 *)
3791         echo \$1
3792         ;;
3793 esac
3794 EOSS
3795 chmod +x filexp
3796 $eunicefix filexp
3797
3798 : now set up to get a file name
3799 cat <<EOS >getfile
3800 $startsh
3801 EOS
3802 cat <<'EOSC' >>getfile
3803 tilde=''
3804 fullpath=''
3805 already=''
3806 skip=''
3807 none_ok=''
3808 exp_file=''
3809 nopath_ok=''
3810 orig_rp="$rp"
3811 orig_dflt="$dflt"
3812 case "$gfpth" in
3813 '') gfpth='.' ;;
3814 esac
3815
3816 case "$fn" in
3817 *\(*)
3818         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3819         fn=`echo $fn | sed 's/(.*)//'`
3820         ;;
3821 esac
3822
3823 case "$fn" in
3824 *:*)
3825         loc_file=`expr $fn : '.*:\(.*\)'`
3826         fn=`expr $fn : '\(.*\):.*'`
3827         ;;
3828 esac
3829
3830 case "$fn" in
3831 *~*) tilde=true;;
3832 esac
3833 case "$fn" in
3834 */*) fullpath=true;;
3835 esac
3836 case "$fn" in
3837 *+*) skip=true;;
3838 esac
3839 case "$fn" in
3840 *n*) none_ok=true;;
3841 esac
3842 case "$fn" in
3843 *e*) exp_file=true;;
3844 esac
3845 case "$fn" in
3846 *p*) nopath_ok=true;;
3847 esac
3848
3849 case "$fn" in
3850 *f*) type='File';;
3851 *d*) type='Directory';;
3852 *l*) type='Locate';;
3853 esac
3854
3855 what="$type"
3856 case "$what" in
3857 Locate) what='File';;
3858 esac
3859
3860 case "$exp_file" in
3861 '')
3862         case "$d_portable" in
3863         "$define") ;;
3864         *) exp_file=true;;
3865         esac
3866         ;;
3867 esac
3868
3869 cd ..
3870 while test "$type"; do
3871         redo=''
3872         rp="$orig_rp"
3873         dflt="$orig_dflt"
3874         case "$tilde" in
3875         true) rp="$rp (~name ok)";;
3876         esac
3877         . UU/myread
3878         if test -f UU/getfile.ok && \
3879                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3880         then
3881                 value="$ans"
3882                 ansexp="$ans"
3883                 break
3884         fi
3885         case "$ans" in
3886         none)
3887                 value=''
3888                 ansexp=''
3889                 case "$none_ok" in
3890                 true) type='';;
3891                 esac
3892                 ;;
3893         *)
3894                 case "$tilde" in
3895                 '') value="$ans"
3896                         ansexp="$ans";;
3897                 *)
3898                         value=`UU/filexp $ans`
3899                         case $? in
3900                         0)
3901                                 if test "$ans" != "$value"; then
3902                                         echo "(That expands to $value on this system.)"
3903                                 fi
3904                                 ;;
3905                         *) value="$ans";;
3906                         esac
3907                         ansexp="$value"
3908                         case "$exp_file" in
3909                         '') value="$ans";;
3910                         esac
3911                         ;;
3912                 esac
3913                 case "$fullpath" in
3914                 true)
3915                         case "$ansexp" in
3916                         /*) value="$ansexp" ;;
3917                         [a-zA-Z]:/*) value="$ansexp" ;;
3918                         *)
3919                                 redo=true
3920                                 case "$already" in
3921                                 true)
3922                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3923                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3924                                         ;;
3925                                 *)
3926                                 echo "Please give a full path name, starting with slash." >&4
3927                                         case "$tilde" in
3928                                         true)
3929                                 echo "Note that using ~name is ok provided it expands well." >&4
3930                                                 already=true
3931                                                 ;;
3932                                         esac
3933                                 esac
3934                                 ;;
3935                         esac
3936                         ;;
3937                 esac
3938                 case "$redo" in
3939                 '')
3940                         case "$type" in
3941                         File)
3942                                 for fp in $gfpth; do
3943                                         if test "X$fp" = X.; then
3944                                             pf="$ansexp"
3945                                         else    
3946                                             pf="$fp/$ansexp"
3947                                         fi
3948                                         if test -f "$pf"; then
3949                                                 type=''
3950                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3951                                         then
3952                                                 echo "($value is not a plain file, but that's ok.)"
3953                                                 type=''
3954                                         fi
3955                                         if test X"$type" = X; then
3956                                             value="$pf"
3957                                             break
3958                                         fi
3959                                 done
3960                                 ;;
3961                         Directory)
3962                                 for fp in $gfpth; do
3963                                         if test "X$fp" = X.; then
3964                                             dir="$ans"
3965                                             direxp="$ansexp"
3966                                         else    
3967                                             dir="$fp/$ansexp"
3968                                             direxp="$fp/$ansexp"
3969                                         fi
3970                                         if test -d "$direxp"; then
3971                                                 type=''
3972                                                 value="$dir"
3973                                                 break
3974                                         fi
3975                                 done
3976                                 ;;
3977                         Locate)
3978                                 if test -d "$ansexp"; then
3979                                         echo "(Looking for $loc_file in directory $value.)"
3980                                         value="$value/$loc_file"
3981                                         ansexp="$ansexp/$loc_file"
3982                                 fi
3983                                 if test -f "$ansexp"; then
3984                                         type=''
3985                                 fi
3986                                 case "$nopath_ok" in
3987                                 true)   case "$value" in
3988                                         */*) ;;
3989                                         *)      echo "Assuming $value will be in people's path."
3990                                                 type=''
3991                                                 ;;
3992                                         esac
3993                                         ;;
3994                                 esac
3995                                 ;;
3996                         esac
3997
3998                         case "$skip" in
3999                         true) type='';
4000                         esac
4001
4002                         case "$type" in
4003                         '') ;;
4004                         *)
4005                                 if test "$fastread" = yes; then
4006                                         dflt=y
4007                                 else
4008                                         dflt=n
4009                                 fi
4010                                 rp="$what $value doesn't exist.  Use that name anyway?"
4011                                 . UU/myread
4012                                 dflt=''
4013                                 case "$ans" in
4014                                 y*) type='';;
4015                                 *) echo " ";;
4016                                 esac
4017                                 ;;
4018                         esac
4019                         ;;
4020                 esac
4021                 ;;
4022         esac
4023 done
4024 cd UU
4025 ans="$value"
4026 rp="$orig_rp"
4027 dflt="$orig_dflt"
4028 rm -f getfile.ok
4029 test "X$gfpthkeep" != Xy && gfpth=""
4030 EOSC
4031
4032 : What should the include directory be ?
4033 echo " "
4034 $echo $n "Hmm...  $c"
4035 dflt='/usr/include'
4036 incpath=''
4037 mips_type=''
4038 if $test -f /bin/mips && /bin/mips; then
4039         echo "Looks like a MIPS system..."
4040         $cat >usr.c <<'EOCP'
4041 #ifdef SYSTYPE_BSD43
4042 /bsd43
4043 #endif
4044 EOCP
4045         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4046                 dflt='/bsd43/usr/include'
4047                 incpath='/bsd43'
4048                 mips_type='BSD 4.3'
4049         else
4050                 mips_type='System V'
4051         fi
4052         $rm -f usr.c usr.out
4053         echo "and you're compiling with the $mips_type compiler and libraries."
4054         xxx_prompt=y
4055         echo "exit 0" >mips
4056 else
4057         echo "Doesn't look like a MIPS system."
4058         xxx_prompt=n
4059         echo "exit 1" >mips
4060 fi
4061 chmod +x mips
4062 $eunicefix mips
4063 case "$usrinc" in
4064 '') ;;
4065 *) dflt="$usrinc";;
4066 esac
4067 case "$xxx_prompt" in
4068 y)      fn=d/
4069         echo " "
4070         rp='Where are the include files you want to use?'
4071         . ./getfile
4072         usrinc="$ans"
4073         ;;
4074 *)      usrinc="$dflt"
4075         ;;
4076 esac
4077
4078 : see how we invoke the C preprocessor
4079 echo " "
4080 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4081 cat <<'EOT' >testcpp.c
4082 #define ABC abc
4083 #define XYZ xyz
4084 ABC.XYZ
4085 EOT
4086 cd ..
4087 if test ! -f cppstdin; then
4088         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4089                 # AIX cc -E doesn't show the absolute headerfile
4090                 # locations but we'll cheat by using the -M flag.
4091                 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
4092         else
4093                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4094         fi
4095 else
4096         echo "Keeping your $hint cppstdin wrapper."
4097 fi
4098 chmod 755 cppstdin
4099 wrapper=`pwd`/cppstdin
4100 ok='false'
4101 cd UU
4102
4103 if $test "X$cppstdin" != "X" && \
4104         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4105         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4106 then
4107         echo "You used to use $cppstdin $cppminus so we'll use that again."
4108         case "$cpprun" in
4109         '') echo "But let's see if we can live without a wrapper..." ;;
4110         *)
4111                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4112                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4113                 then
4114                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4115                         ok='true'
4116                 else
4117                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4118                 fi
4119                 ;;
4120         esac
4121 else
4122         case "$cppstdin" in
4123         '') ;;
4124         *)
4125                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4126                 ;;
4127         esac
4128 fi
4129
4130 if $ok; then
4131         : nothing
4132 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4133         $cc -E <testcpp.c >testcpp.out 2>&1; \
4134         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4135         echo "Yup, it does."
4136         x_cpp="$cc -E"
4137         x_minus='';
4138 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4139         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4140         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4141         echo "Yup, it does."
4142         x_cpp="$cc -E"
4143         x_minus='-';
4144 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4145         $cc -P <testcpp.c >testcpp.out 2>&1; \
4146         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4147         echo "Yipee, that works!"
4148         x_cpp="$cc -P"
4149         x_minus='';
4150 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4151         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4152         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4153         echo "At long last!"
4154         x_cpp="$cc -P"
4155         x_minus='-';
4156 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4157         $cpp <testcpp.c >testcpp.out 2>&1; \
4158         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4159         echo "It works!"
4160         x_cpp="$cpp"
4161         x_minus='';
4162 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4163         $cpp - <testcpp.c >testcpp.out 2>&1; \
4164         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4165         echo "Hooray, it works!  I was beginning to wonder."
4166         x_cpp="$cpp"
4167         x_minus='-';
4168 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4169         $wrapper <testcpp.c >testcpp.out 2>&1; \
4170         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4171         x_cpp="$wrapper"
4172         x_minus=''
4173         echo "Eureka!"
4174 else
4175         dflt=''
4176         rp="No dice.  I can't find a C preprocessor.  Name one:"
4177         . ./myread
4178         x_cpp="$ans"
4179         x_minus=''
4180         $x_cpp <testcpp.c >testcpp.out 2>&1
4181         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4182                 echo "OK, that will do." >&4
4183         else
4184 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4185                 exit 1
4186         fi
4187 fi
4188
4189 case "$ok" in
4190 false)
4191         cppstdin="$x_cpp"
4192         cppminus="$x_minus"
4193         cpprun="$x_cpp"
4194         cpplast="$x_minus"
4195         set X $x_cpp
4196         shift
4197         case "$1" in
4198         "$cpp")
4199                 echo "Perhaps can we force $cc -E using a wrapper..."
4200                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4201                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4202                 then
4203                         echo "Yup, we can."
4204                         cppstdin="$wrapper"
4205                         cppminus='';
4206                 else
4207                         echo "Nope, we'll have to live without it..."
4208                 fi
4209                 ;;
4210         esac
4211         case "$cpprun" in
4212         "$wrapper")
4213                 cpprun=''
4214                 cpplast=''
4215                 ;;
4216         esac
4217         ;;
4218 esac
4219
4220 case "$cppstdin" in
4221 "$wrapper"|'cppstdin') ;;
4222 *) $rm -f $wrapper;;
4223 esac
4224 $rm -f testcpp.c testcpp.out
4225
4226 : Set private lib path
4227 case "$plibpth" in
4228 '') if ./mips; then
4229                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4230         fi;;
4231 esac
4232 case "$libpth" in
4233 ' ') dlist='';;
4234 '') dlist="$loclibpth $plibpth $glibpth";;
4235 *) dlist="$libpth";;
4236 esac
4237
4238 : Now check and see which directories actually exist, avoiding duplicates
4239 libpth=''
4240 for xxx in $dlist
4241 do
4242     if $test -d $xxx; then
4243                 case " $libpth " in
4244                 *" $xxx "*) ;;
4245                 *) libpth="$libpth $xxx";;
4246                 esac
4247     fi
4248 done
4249 $cat <<'EOM'
4250
4251 Some systems have incompatible or broken versions of libraries.  Among
4252 the directories listed in the question below, please remove any you
4253 know not to be holding relevant libraries, and add any that are needed.
4254 Say "none" for none.
4255
4256 EOM
4257 case "$libpth" in
4258 '') dflt='none';;
4259 *)
4260         set X $libpth
4261         shift
4262         dflt=${1+"$@"}
4263         ;;
4264 esac
4265 rp="Directories to use for library searches?"
4266 . ./myread
4267 case "$ans" in
4268 none) libpth=' ';;
4269 *) libpth="$ans";;
4270 esac
4271
4272 : compute shared library extension
4273 case "$so" in
4274 '')
4275         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4276                 dflt='sl'
4277         else
4278                 dflt='so'
4279         fi
4280         ;;
4281 *) dflt="$so";;
4282 esac
4283 $cat <<EOM
4284
4285 On some systems, shared libraries may be available.  Answer 'none' if
4286 you want to suppress searching of shared libraries for the remainder
4287 of this configuration.
4288
4289 EOM
4290 rp='What is the file extension used for shared libraries?'
4291 . ./myread
4292 so="$ans"
4293
4294 : Define several unixisms.
4295 : Hints files or command line option can be used to override them.
4296 : The convoluted testing is in case hints files set either the old
4297 : or the new name.
4298 case "$_exe" in
4299 '')     case "$exe_ext" in
4300         '')     ;;
4301         *)      _exe="$exe_ext" ;;
4302         esac
4303         ;;
4304 esac
4305 case "$_a" in
4306 '')     case "$lib_ext" in
4307     '') _a='.a';;
4308         *)      _a="$lib_ext" ;;
4309         esac
4310         ;;
4311 esac
4312 case "$_o" in
4313 '') case "$obj_ext" in
4314         '')     _o='.o';;
4315         *)      _o="$obj_ext";;
4316         esac
4317         ;;
4318 esac
4319 case "$p_" in
4320 '') case "$path_sep" in
4321         '')     p_=':';;
4322         *)      p_="$path_sep";;
4323         esac
4324         ;;
4325 esac
4326 exe_ext=$_exe
4327 lib_ext=$_a
4328 obj_ext=$_o
4329 path_sep=$p_
4330
4331 : Which makefile gets called first.  This is used by make depend.
4332 case "$firstmakefile" in
4333 '') firstmakefile='makefile';;
4334 esac
4335
4336 case "$usesocks" in
4337 $define|true|[yY]*)     dflt='y';;
4338 *) dflt='n';;
4339 esac
4340 cat <<EOM
4341
4342 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4343 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4344 to use the PerlIO abstraction layer, this will be implicitly selected.
4345
4346 If this doesn't make any sense to you, just accept the default '$dflt'.
4347 EOM
4348 rp='Build Perl for SOCKS?'
4349 . ./myread
4350 case "$ans" in
4351 y|Y)    val="$define" ;;     
4352 *)      val="$undef" ;;
4353 esac
4354 set usesocks
4355 eval $setvar
4356
4357 case "$usesocks" in
4358 $define|true|[yY]*) useperlio="$define";;
4359 esac
4360
4361 : Looking for optional libraries
4362 echo " "
4363 echo "Checking for optional libraries..." >&4
4364 case "$libs" in
4365 ' '|'') dflt='';;
4366 *) dflt="$libs";;
4367 esac
4368 case "$libswanted" in
4369 '') libswanted='c_s';;
4370 esac
4371 case "$usesocks" in
4372 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4373 esac
4374 libsfound=''
4375 libsfiles=''
4376 libsdirs=''
4377 libspath=''
4378 for thisdir in $libpth $xlibpth; do
4379   test -d $thisdir && libspath="$libspath $thisdir"
4380 done
4381 for thislib in $libswanted; do
4382         for thisdir in $libspath; do
4383             xxx=''
4384             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4385                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4386                 $test -f "$xxx" && eval $libscheck
4387                 $test -f "$xxx" && libstyle=shared
4388             fi
4389             if test ! -f "$xxx"; then
4390                 xxx=$thisdir/lib$thislib.$so
4391                 $test -f "$xxx" && eval $libscheck
4392                 $test -f "$xxx" && libstyle=shared
4393             fi  
4394             if test ! -f "$xxx"; then
4395                 xxx=$thisdir/lib$thislib$_a
4396                 $test -f "$xxx" && eval $libscheck
4397                 $test -f "$xxx" && libstyle=static
4398             fi
4399             if test ! -f "$xxx"; then
4400                 xxx=$thisdir/$thislib$_a
4401                 $test -f "$xxx" && eval $libscheck
4402                 $test -f "$xxx" && libstyle=static
4403             fi
4404             if test ! -f "$xxx"; then
4405                 xxx=$thisdir/lib${thislib}_s$_a
4406                 $test -f "$xxx" && eval $libscheck
4407                 $test -f "$xxx" && libstyle=static
4408                 $test -f "$xxx" && thislib=${thislib}_s
4409             fi
4410             if test ! -f "$xxx"; then
4411                 xxx=$thisdir/Slib$thislib$_a
4412                 $test -f "$xxx" && eval $libscheck
4413                 $test -f "$xxx" && libstyle=static
4414             fi
4415             if $test -f "$xxx"; then
4416                 case "$libstyle" in
4417                 shared) echo "Found -l$thislib (shared)." ;;
4418                 static) echo "Found -l$thislib." ;;
4419                 *)      echo "Found -l$thislib ($libstyle)." ;;
4420                 esac
4421                 case " $dflt " in
4422                 *"-l$thislib "*);;
4423                 *) dflt="$dflt -l$thislib"
4424                    libsfound="$libsfound $xxx"
4425                    yyy=`basename $xxx`
4426                    libsfiles="$libsfiles $yyy"
4427                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4428                    case " $libsdirs " in
4429                    *" $yyy "*) ;;
4430                    *) libsdirs="$libsdirs $yyy" ;;
4431                    esac
4432                    ;;
4433                 esac
4434                 break
4435             fi  
4436         done
4437         if $test ! -f "$xxx"; then
4438             echo "No -l$thislib."
4439         fi
4440 done
4441 set X $dflt
4442 shift
4443 dflt="$*"
4444 case "$libs" in
4445 '') dflt="$dflt";;
4446 *) dflt="$libs";;
4447 esac
4448 case "$dflt" in
4449 ' '|'') dflt='none';;
4450 esac
4451
4452 $cat <<EOM
4453
4454 In order to compile $package on your machine, a number of libraries
4455 are usually needed.  Include any other special libraries here as well.
4456 Say "none" for none.  The default list is almost always right.
4457 EOM
4458
4459 echo " "
4460 rp="What libraries to use?"
4461 . ./myread
4462 case "$ans" in
4463 none) libs=' ';;
4464 *) libs="$ans";;
4465 esac
4466
4467 : determine optimization, if desired, or use for debug flag also
4468 case "$optimize" in
4469 ' '|$undef) dflt='none';;
4470 '') dflt='-O';;
4471 *) dflt="$optimize";;
4472 esac
4473 $cat <<EOH
4474
4475 By default, $package compiles with the -O flag to use the optimizer.
4476 Alternately, you might want to use the symbolic debugger, which uses
4477 the -g flag (on traditional Unix systems).  Either flag can be
4478 specified here.  To use neither flag, specify the word "none".
4479
4480 EOH
4481 rp="What optimizer/debugger flag should be used?"
4482 . ./myread
4483 optimize="$ans"
4484 case "$optimize" in
4485 'none') optimize=" ";;
4486 esac
4487
4488 dflt=''
4489 : We will not override a previous value, but we might want to
4490 : augment a hint file
4491 case "$hint" in
4492 default|recommended)
4493         case "$gccversion" in
4494         1*) dflt='-fpcc-struct-return' ;;
4495         esac
4496         case "$optimize" in
4497         *-g*) dflt="$dflt -DDEBUGGING";;
4498         esac
4499         case "$gccversion" in
4500         2*) if test -d /etc/conf/kconfig.d &&
4501                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4502                 then
4503                         dflt="$dflt -posix"
4504                 fi
4505                 ;;
4506         esac
4507         case "$gccversion" in
4508         1*) ;;
4509         2.[0-8]*) ;;
4510         ?*)     echo " "
4511                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4512                 echo 'int main(void) { return 0; }' > gcctest.c
4513                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4514                         echo "Yes, it does." 2>&1
4515                         case "$ccflags" in
4516                         *strict-aliasing*) 
4517                                 echo "Leaving current flags $ccflags alone." 2>&1
4518                                 ;;
4519                         *) dflt="$dflt -fno-strict-aliasing" ;;
4520                         esac
4521                 else
4522                         echo "Nope, it doesn't, but that's ok." 2>&1
4523                 fi
4524                 ;;
4525         esac
4526         ;;
4527 esac
4528
4529 case "$mips_type" in
4530 *BSD*|'') inclwanted="$locincpth $usrinc";;
4531 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4532 esac
4533 for thisincl in $inclwanted; do
4534         if $test -d $thisincl; then
4535                 if $test x$thisincl != x$usrinc; then
4536                         case "$dflt" in
4537                         *" -I$thisincl "*);;
4538                         *) dflt="$dflt -I$thisincl ";;
4539                         esac
4540                 fi
4541         fi
4542 done
4543
4544 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4545         xxx=true;
4546 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4547         xxx=true;
4548 else
4549         xxx=false;
4550 fi;
4551 if $xxx; then
4552         case "$dflt" in
4553         *$2*);;
4554         *) dflt="$dflt -D$2";;
4555         esac;
4556 fi'
4557
4558 set signal.h LANGUAGE_C; eval $inctest
4559
4560 case "$usesocks" in
4561 $define)
4562         ccflags="$ccflags -DSOCKS"
4563         ;;
4564 esac
4565
4566 case "$hint" in
4567 default|recommended) dflt="$ccflags $dflt" ;;
4568 *) dflt="$ccflags";;
4569 esac
4570
4571 case "$dflt" in
4572 ''|' ') dflt=none;;
4573 esac
4574
4575 $cat <<EOH
4576
4577 Your C compiler may want other flags.  For this question you should include
4578 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4579 but you should NOT include libraries or ld flags like -lwhatever.  If you
4580 want $package to honor its debug switch, you should include -DDEBUGGING here.
4581 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4582
4583 To use no flags, specify the word "none".
4584
4585 EOH
4586 set X $dflt
4587 shift
4588 dflt=${1+"$@"}
4589 rp="Any additional cc flags?"
4590 . ./myread
4591 case "$ans" in
4592 none) ccflags='';;
4593 *) ccflags="$ans";;
4594 esac
4595
4596 : the following weeds options from ccflags that are of no interest to cpp
4597 case "$cppflags" in
4598 '') cppflags="$ccflags" ;;
4599 *)  cppflags="$cppflags $ccflags" ;;
4600 esac
4601 case "$gccversion" in
4602 1*) cppflags="$cppflags -D__GNUC__"
4603 esac
4604 case "$mips_type" in
4605 '');;
4606 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4607 esac
4608 case "$cppflags" in
4609 '');;
4610 *)
4611         echo " "
4612         echo "Let me guess what the preprocessor flags are..." >&4
4613         set X $cppflags
4614         shift
4615         cppflags=''
4616         $cat >cpp.c <<'EOM'
4617 #define BLURFL foo
4618
4619 BLURFL xx LFRULB
4620 EOM
4621         previous=''
4622         for flag in $*
4623         do
4624                 case "$flag" in
4625                 -*) ftry="$flag";;
4626                 *) ftry="$previous $flag";;
4627                 esac
4628                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4629                         >cpp1.out 2>/dev/null && \
4630                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4631                         >cpp2.out 2>/dev/null && \
4632                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4633                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4634                 then
4635                         cppflags="$cppflags $ftry"
4636                         previous=''
4637                 else
4638                         previous="$flag"
4639                 fi
4640         done
4641         set X $cppflags
4642         shift
4643         cppflags=${1+"$@"}
4644         case "$cppflags" in
4645         *-*)  echo "They appear to be: $cppflags";;
4646         esac
4647         $rm -f cpp.c cpp?.out
4648         ;;
4649 esac
4650
4651 : flags used in final linking phase
4652 case "$ldflags" in
4653 '') if ./venix; then
4654                 dflt='-i -z'
4655         else
4656                 dflt=''
4657         fi
4658         case "$ccflags" in
4659         *-posix*) dflt="$dflt -posix" ;;
4660         esac
4661         ;;
4662 *) dflt="$ldflags";;
4663 esac
4664
4665 : Try to guess additional flags to pick up local libraries.
4666 for thislibdir in $libpth; do
4667         case " $loclibpth " in
4668         *" $thislibdir "*)
4669                 case "$dflt " in 
4670                 *"-L$thislibdir "*) ;;
4671                 *)  dflt="$dflt -L$thislibdir" ;;
4672                 esac
4673                 ;;
4674         esac
4675 done
4676
4677 case "$dflt" in
4678 '') dflt='none' ;;
4679 esac
4680
4681 $cat <<EOH
4682
4683 Your C linker may need flags.  For this question you should
4684 include -L/whatever and any other flags used by the C linker, but you
4685 should NOT include libraries like -lwhatever.
4686
4687 Make sure you include the appropriate -L/path flags if your C linker
4688 does not normally search all of the directories you specified above,
4689 namely
4690         $libpth
4691 To use no flags, specify the word "none".
4692
4693 EOH
4694
4695 rp="Any additional ld flags (NOT including libraries)?"
4696 . ./myread
4697 case "$ans" in
4698 none) ldflags='';;
4699 *) ldflags="$ans";;
4700 esac
4701 rmlist="$rmlist pdp11"
4702
4703 : coherency check
4704 echo " "
4705 echo "Checking your choice of C compiler and flags for coherency..." >&4
4706 $cat > try.c <<'EOF'
4707 #include <stdio.h>
4708 int main() { printf("Ok\n"); exit(0); }
4709 EOF
4710 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4711 shift
4712 $cat >try.msg <<'EOM'
4713 I've tried to compile and run the following simple program:
4714
4715 EOM
4716 $cat try.c >> try.msg
4717
4718 $cat >> try.msg <<EOM
4719
4720 I used the command:
4721
4722         $*
4723         $run ./try
4724
4725 and I got the following output:
4726
4727 EOM
4728 dflt=y
4729 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4730         if $sh -c "$run ./try" >>try.msg 2>&1; then
4731                 xxx=`$run ./try`
4732                 case "$xxx" in
4733                 "Ok") dflt=n ;;
4734                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4735                         case " $libs " in
4736                         *" -lsfio "*)
4737                                 cat >> try.msg <<'EOQS'
4738 If $libs contains -lsfio, and sfio is mis-configured, then it
4739 sometimes (apparently) runs and exits with a 0 status, but with no
4740 output!  It may have to do with sfio's use of _exit vs. exit.
4741
4742 EOQS
4743                                 rp="You have a big problem.  Shall I abort Configure"
4744                                 dflt=y
4745                                 ;;
4746                         esac
4747                         ;;
4748                 esac
4749         else
4750                 echo "The program compiled OK, but exited with status $?." >>try.msg
4751                 rp="You have a problem.  Shall I abort Configure"
4752                 dflt=y
4753         fi
4754 else
4755         echo "I can't compile the test program." >>try.msg
4756         rp="You have a BIG problem.  Shall I abort Configure"
4757         dflt=y
4758 fi
4759 case "$dflt" in
4760 y)
4761         $cat try.msg >&4
4762         case "$knowitall" in
4763         '')
4764                 echo "(The supplied flags or libraries might be incorrect.)"
4765                 ;;
4766         *) dflt=n;;
4767         esac
4768         echo " "
4769         . ./myread
4770         case "$ans" in
4771         n*|N*) ;;
4772         *)      echo "Ok.  Stopping Configure." >&4
4773                 exit 1
4774                 ;;
4775         esac
4776         ;;
4777 n) echo "OK, that should do.";;
4778 esac
4779 $rm -f try try.* core
4780
4781 : define a shorthand compile call
4782 compile='
4783 mc_file=$1;
4784 shift;
4785 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4786 : define a shorthand compile call for compilations that should be ok.
4787 compile_ok='
4788 mc_file=$1;
4789 shift;
4790 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4791
4792 : check for lengths of integral types
4793 echo " "
4794 case "$intsize" in
4795 '')
4796         echo "Checking to see how big your integers are..." >&4
4797         $cat >try.c <<'EOCP'
4798 #include <stdio.h>
4799 int main()
4800 {
4801         printf("intsize=%d;\n", (int)sizeof(int));
4802         printf("longsize=%d;\n", (int)sizeof(long));
4803         printf("shortsize=%d;\n", (int)sizeof(short));
4804         exit(0);
4805 }
4806 EOCP
4807         set try
4808         if eval $compile_ok && $run ./try > /dev/null; then
4809                 eval `$run ./try`
4810                 echo "Your integers are $intsize bytes long."
4811                 echo "Your long integers are $longsize bytes long."
4812                 echo "Your short integers are $shortsize bytes long."
4813         else
4814                 $cat >&4 <<EOM
4815 !
4816 Help! I can't compile and run the intsize test program: please enlighten me!
4817 (This is probably a misconfiguration in your system or libraries, and
4818 you really ought to fix it.  Still, I'll try anyway.)
4819 !
4820 EOM
4821                 dflt=4
4822                 rp="What is the size of an integer (in bytes)?"
4823                 . ./myread
4824                 intsize="$ans"
4825                 dflt=$intsize
4826                 rp="What is the size of a long integer (in bytes)?"
4827                 . ./myread
4828                 longsize="$ans"
4829                 dflt=2
4830                 rp="What is the size of a short integer (in bytes)?"
4831                 . ./myread
4832                 shortsize="$ans"
4833         fi
4834         ;;
4835 esac
4836 $rm -f try try.*
4837
4838 : check for void type
4839 echo " "
4840 echo "Checking to see how well your C compiler groks the void type..." >&4
4841 case "$voidflags" in
4842 '')
4843         $cat >try.c <<'EOCP'
4844 #if TRY & 1
4845 void sub() {
4846 #else
4847 sub() {
4848 #endif
4849         extern void moo();      /* function returning void */
4850         void (*goo)();          /* ptr to func returning void */
4851 #if TRY & 8
4852         void *hue;              /* generic ptr */
4853 #endif
4854 #if TRY & 2
4855         void (*foo[10])();
4856 #endif
4857
4858 #if TRY & 4
4859         if(goo == moo) {
4860                 exit(0);
4861         }
4862 #endif
4863         exit(0);
4864 }
4865 int main() { sub(); }
4866 EOCP
4867         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4868                 voidflags=$defvoidused
4869         echo "Good.  It appears to support void to the level $package wants.">&4
4870                 if $contains warning .out >/dev/null 2>&1; then
4871                         echo "However, you might get some warnings that look like this:"
4872                         $cat .out
4873                 fi
4874         else
4875 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4876                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4877                         echo "It supports 1..."
4878                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4879                                 echo "It also supports 2..."
4880                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4881                                         voidflags=7
4882                                         echo "And it supports 4 but not 8 definitely."
4883                                 else
4884                                         echo "It doesn't support 4..."
4885                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4886                                                 voidflags=11
4887                                                 echo "But it supports 8."
4888                                         else
4889                                                 voidflags=3
4890                                                 echo "Neither does it support 8."
4891                                         fi
4892                                 fi
4893                         else
4894                                 echo "It does not support 2..."
4895                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4896                                         voidflags=13
4897                                         echo "But it supports 4 and 8."
4898                                 else
4899                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4900                                                 voidflags=5
4901                                                 echo "And it supports 4 but has not heard about 8."
4902                                         else
4903                                                 echo "However it supports 8 but not 4."
4904                                         fi
4905                                 fi
4906                         fi
4907                 else
4908                         echo "There is no support at all for void."
4909                         voidflags=0
4910                 fi
4911         fi
4912 esac
4913 case "$voidflags" in
4914 "$defvoidused") ;;
4915 *)      $cat >&4 <<'EOM'
4916   Support flag bits are:
4917     1: basic void declarations.
4918     2: arrays of pointers to functions returning void.
4919     4: operations between pointers to and addresses of void functions.
4920     8: generic void pointers.
4921 EOM
4922         dflt="$voidflags";
4923         rp="Your void support flags add up to what?"
4924         . ./myread
4925         voidflags="$ans"
4926         ;;
4927 esac
4928 $rm -f try.* .out
4929
4930 : check for length of pointer
4931 echo " "
4932 case "$ptrsize" in
4933 '')
4934         echo "Checking to see how big your pointers are..." >&4
4935         if test "$voidflags" -gt 7; then
4936                 echo '#define VOID_PTR char *' > try.c
4937         else
4938                 echo '#define VOID_PTR void *' > try.c
4939         fi
4940         $cat >>try.c <<'EOCP'
4941 #include <stdio.h>
4942 int main()
4943 {
4944     printf("%d\n", (int)sizeof(VOID_PTR));
4945     exit(0);
4946 }
4947 EOCP
4948         set try
4949         if eval $compile_ok; then
4950                 ptrsize=`$run ./try`
4951                 echo "Your pointers are $ptrsize bytes long."
4952         else
4953                 dflt='4'
4954                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4955                 rp="What is the size of a pointer (in bytes)?"
4956                 . ./myread
4957                 ptrsize="$ans"
4958         fi
4959         ;;
4960 esac
4961 $rm -f try.c try
4962
4963 : check for long long
4964 echo " "
4965 echo "Checking to see if you have long long..." >&4
4966 echo 'int main() { long long x = 7; return 0; }' > try.c
4967 set try
4968 if eval $compile; then
4969         val="$define"
4970         echo "You have long long."
4971 else
4972         val="$undef"
4973         echo "You do not have long long."
4974 fi
4975 $rm try.*
4976 set d_longlong
4977 eval $setvar
4978
4979 : check for length of long long
4980 case "${d_longlong}${longlongsize}" in
4981 $define)
4982         echo " "
4983         echo "Checking to see how big your long longs are..." >&4
4984         $cat >try.c <<'EOCP'
4985 #include <stdio.h>
4986 int main()
4987 {
4988     printf("%d\n", (int)sizeof(long long));
4989     return(0);
4990 }
4991 EOCP
4992         set try
4993         if eval $compile_ok; then
4994                 longlongsize=`$run ./try`
4995                 echo "Your long longs are $longlongsize bytes long."
4996         else
4997                 dflt='8'
4998                 echo " "
4999                 echo "(I can't seem to compile the test program.  Guessing...)"
5000                 rp="What is the size of a long long (in bytes)?"
5001                 . ./myread
5002                 longlongsize="$ans"
5003         fi
5004         if $test "X$longsize" = "X$longlongsize"; then
5005                 echo "(That isn't any different from an ordinary long.)"
5006         fi      
5007         ;;
5008 esac
5009 $rm -f try.* try
5010
5011 : determine filename position in cpp output
5012 echo " "
5013 echo "Computing filename position in cpp output for #include directives..." >&4
5014 case "$osname" in
5015 vos) testaccess=-e ;;
5016 *)   testaccess=-r ;;
5017 esac
5018 echo '#include <stdio.h>' > foo.c
5019 $cat >fieldn <<EOF
5020 $startsh
5021 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5022 $grep '^[       ]*#.*stdio\.h' | \
5023 while read cline; do
5024         pos=1
5025         set \$cline
5026         while $test \$# -gt 0; do
5027                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5028                         echo "\$pos"
5029                         exit 0
5030                 fi
5031                 shift
5032                 pos=\`expr \$pos + 1\`
5033         done
5034 done
5035 EOF
5036 chmod +x fieldn
5037 fieldn=`./fieldn`
5038 $rm -f foo.c fieldn
5039 case $fieldn in
5040 '') pos='???';;
5041 1) pos=first;;
5042 2) pos=second;;
5043 3) pos=third;;
5044 *) pos="${fieldn}th";;
5045 esac
5046 echo "Your cpp writes the filename in the $pos field of the line."
5047
5048 case "$osname" in
5049 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5050 *)   cppfilter='' ;;
5051 esac
5052 : locate header file
5053 $cat >findhdr <<EOF
5054 $startsh
5055 wanted=\$1
5056 name=''
5057 for usrincdir in $usrinc
5058 do
5059         if test -f \$usrincdir/\$wanted; then
5060                 echo "\$usrincdir/\$wanted"
5061                 exit 0
5062         fi
5063 done
5064 awkprg='{ print \$$fieldn }'
5065 echo "#include <\$wanted>" > foo\$\$.c
5066 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5067 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5068 while read cline; do
5069         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5070         case "\$name" in
5071         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5072         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5073         *) exit 2;;
5074         esac;
5075 done;
5076 #
5077 # status = 0: grep returned 0 lines, case statement not executed
5078 # status = 1: headerfile found
5079 # status = 2: while loop executed, no headerfile found
5080 #
5081 status=\$?
5082 $rm -f foo\$\$.c;
5083 if test \$status -eq 1; then
5084         exit 0;
5085 fi
5086 exit 1
5087 EOF
5088 chmod +x findhdr
5089
5090 : define an alternate in-header-list? function
5091 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5092 cont=true; xxf="echo \"<\$1> found.\" >&4";
5093 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5094 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5095 esac;
5096 case $# in 4) instead=instead;; *) instead="at last";; esac;
5097 while $test "$cont"; do
5098         xxx=`./findhdr $1`
5099         var=$2; eval "was=\$$2";
5100         if $test "$xxx" && $test -r "$xxx";
5101         then eval $xxf;
5102         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5103                 cont="";
5104         else eval $xxnf;
5105         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5106         set $yyy; shift; shift; yyy=$@;
5107         case $# in 0) cont="";;
5108         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5109                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5110         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5111                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5112         esac;
5113 done;
5114 while $test "$yyy";
5115 do set $yyy; var=$2; eval "was=\$$2";
5116         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5117         set $yyy; shift; shift; yyy=$@;
5118 done'
5119
5120 : see if inttypes.h is available
5121 : we want a real compile instead of Inhdr because some systems
5122 : have an inttypes.h which includes non-existent headers
5123 echo " "
5124 $cat >try.c <<EOCP
5125 #include <inttypes.h>
5126 int main() {
5127         static int32_t foo32 = 0x12345678;
5128 }
5129 EOCP
5130 set try
5131 if eval $compile; then
5132         echo "<inttypes.h> found." >&4
5133         val="$define"
5134 else
5135         echo "<inttypes.h> NOT found." >&4
5136         val="$undef"
5137 fi
5138 $rm -f try.c try
5139 set i_inttypes
5140 eval $setvar
5141
5142 : check for int64_t
5143 echo " "
5144 echo "Checking to see if you have int64_t..." >&4
5145 $cat >try.c <<EOCP
5146 #include <sys/types.h>
5147 #$i_inttypes I_INTTYPES
5148 #ifdef I_INTTYPES
5149 #include <inttypes.h>
5150 #endif
5151 int main() { int64_t x = 7; }
5152 EOCP
5153 set try
5154 if eval $compile; then
5155         val="$define"
5156         echo "You have int64_t."
5157 else
5158         val="$undef"
5159         echo "You do not have int64_t."
5160 fi
5161 $rm -f try try.*
5162 set d_int64_t
5163 eval $setvar
5164
5165
5166 echo " "
5167 echo "Checking which 64-bit integer type we could use..." >&4
5168
5169 case "$intsize" in
5170 8) val=int
5171    set quadtype
5172    eval $setvar
5173    val='"unsigned int"'
5174    set uquadtype
5175    eval $setvar
5176    quadkind=1
5177    ;;
5178 *) case "$longsize" in
5179    8) val=long
5180       set quadtype
5181       eval $setvar
5182       val='"unsigned long"'
5183       set uquadtype
5184       eval $setvar
5185       quadkind=2
5186       ;;
5187    *) case "$d_longlong:$longlongsize" in
5188       define:8)
5189         val='"long long"'
5190         set quadtype
5191         eval $setvar
5192         val='"unsigned long long"'
5193         set uquadtype
5194         eval $setvar
5195         quadkind=3
5196         ;;
5197       *) case "$d_int64_t" in
5198          define)
5199            val=int64_t
5200            set quadtype
5201            eval $setvar
5202            val=uint64_t
5203            set uquadtype
5204            eval $setvar
5205            quadkind=4
5206            ;;
5207          esac
5208          ;;
5209       esac
5210       ;;
5211    esac
5212    ;;
5213 esac
5214
5215 case "$quadtype" in
5216 '')     echo "Alas, no 64-bit integer types in sight." >&4
5217         d_quad="$undef"
5218         ;;
5219 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5220         d_quad="$define"
5221         ;;
5222 esac
5223
5224
5225 case "$uselonglong" in
5226 "$define"|true|[yY]*)
5227         cat <<EOM >&4
5228
5229 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5230 EOM
5231         use64bitint="$define"
5232         ;;
5233 esac                          
5234 case "$use64bits" in
5235 "$define"|true|[yY]*)
5236         cat <<EOM >&4
5237
5238 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5239 EOM
5240         use64bitint="$define"
5241         ;;
5242 esac                          
5243 case "$use64bitints" in
5244 "$define"|true|[yY]*)
5245         cat <<EOM >&4
5246
5247 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5248 EOM
5249         use64bitint="$define"
5250         ;;
5251 esac                          
5252 case "$use64bitsint" in
5253 "$define"|true|[yY]*)
5254         cat <<EOM >&4
5255
5256 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5257 EOM
5258         use64bitint="$define"
5259         ;;
5260 esac                          
5261 case "$uselonglongs" in
5262 "$define"|true|[yY]*)
5263         cat <<EOM >&4
5264
5265 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5266 EOM
5267         use64bitint="$define"
5268         ;;
5269 esac                          
5270 case "$use64bitsall" in
5271 "$define"|true|[yY]*)
5272         cat <<EOM >&4
5273
5274 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5275 EOM
5276         use64bitall="$define"
5277         ;;
5278 esac                          
5279
5280 case "$ccflags" in
5281 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5282 esac
5283 case "$use64bitall" in
5284 "$define"|true|[yY]*) use64bitint="$define" ;;
5285 esac
5286
5287 case "$longsize" in
5288 8) cat <<EOM
5289
5290 You have natively 64-bit long integers.
5291 EOM
5292    val="$define"
5293    ;;
5294 *) case "$use64bitint" in
5295    "$define"|true|[yY]*) dflt='y';;
5296    *) dflt='n';;
5297    esac
5298    case "$d_quad" in
5299    "$define") ;;
5300    *) dflt='n' ;;
5301    esac
5302    cat <<EOM
5303
5304 Perl can be built to take advantage of 64-bit integer types
5305 on some systems.  To do so, Configure can be run with -Duse64bitint.
5306 Choosing this option will most probably introduce binary incompatibilities.
5307
5308 If this doesn't make any sense to you, just accept the default '$dflt'.
5309 (The default has been chosen based on your configuration.)
5310 EOM
5311    rp='Try to use 64-bit integers, if available?'
5312    . ./myread
5313    case "$ans" in
5314    [yY]*) val="$define" ;;
5315    *)     val="$undef"  ;;
5316    esac
5317    ;;
5318 esac
5319 set use64bitint
5320 eval $setvar
5321
5322 case "$use64bitall" in
5323 "$define"|true|[yY]*) dflt='y' ;;
5324 *) case "$longsize" in
5325    8) dflt='y' ;;
5326    *) dflt='n' ;;
5327    esac
5328    ;;
5329 esac    
5330 cat <<EOM
5331
5332 You may also choose to try maximal 64-bitness.  It means using as much
5333 64-bitness as possible on the platform.  This in turn means even more
5334 binary incompatibilities.  On the other hand, your platform may not
5335 have any more 64-bitness available than what you already have chosen.
5336
5337 If this doesn't make any sense to you, just accept the default '$dflt'.
5338 (The default has been chosen based on your configuration.)
5339 EOM
5340 rp='Try to use maximal 64-bit support, if available?'
5341 . ./myread
5342 case "$ans" in
5343 [yY]*) val="$define" ;;
5344 *)     val="$undef"  ;;
5345 esac
5346 set use64bitall
5347 eval $setvar
5348 case "$use64bitall" in
5349 "$define")
5350         case "$use64bitint" in
5351         "$undef")
5352                 cat <<EOM
5353
5354 Since you have chosen a maximally 64-bit build, I'm also turning on
5355 the use of 64-bit integers.
5356 EOM
5357                 use64bitint="$define" ;;
5358         esac
5359         ;;
5360 esac
5361
5362 case "$use64bitall" in
5363 "$define"|true|[yY]*)
5364         case "$ptrsize" in
5365         4)      cat <<EOM >&4
5366
5367 *** You have chosen a maximally 64-bit build, but your pointers
5368 *** are only 4 bytes wide, disabling maximal 64-bitness.
5369
5370 EOM
5371                 use64bitall="$undef"
5372                 case "$use64bitint" in
5373                 "$define"|true|[yY]*) ;;
5374                 *)      cat <<EOM >&4
5375
5376 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5377
5378 EOM
5379                         use64bitint="$define"
5380                         ;;
5381                 esac
5382                 ;;
5383         esac
5384         ;;
5385 esac
5386
5387 case "$use64bitint" in
5388 "$define"|true|[yY]*)
5389 : Look for a hint-file generated 'call-back-unit'.  If the
5390 : user has specified that a 64-bit perl is to be built,
5391 : we may need to set or change some other defaults.
5392         if $test -f use64bitint.cbu; then
5393                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5394                 . ./use64bitint.cbu
5395         fi
5396         case "$longsize" in
5397         4) case "$archname64" in
5398            '') archname64=64int ;;
5399            esac
5400            ;;
5401         esac
5402         ;;
5403 esac
5404
5405 case "$use64bitall" in
5406 "$define"|true|[yY]*)
5407 : Look for a hint-file generated 'call-back-unit'.  If the
5408 : user has specified that a maximally 64-bit perl is to be built,
5409 : we may need to set or change some other defaults.
5410         if $test -f use64bitall.cbu; then
5411                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5412                 . ./use64bitall.cbu
5413         fi
5414         case "$longsize" in
5415         4) case "$archname64" in
5416            ''|64int) archname64=64all ;;
5417            esac
5418            ;;
5419         esac
5420         ;;
5421 esac
5422
5423 echo " "
5424 echo "Checking for GNU C Library..." >&4
5425 cat >try.c <<EOM
5426 #include <stdio.h>
5427 int main()
5428 {
5429 #ifdef __GLIBC__
5430     exit(0);
5431 #else
5432     exit(1);
5433 #endif
5434 }
5435 EOM
5436 set try
5437 if eval $compile_ok && $run ./try; then
5438         val="$define"
5439         echo "You are using the GNU C Library"
5440 else
5441         val="$undef"
5442         echo "You are not using the GNU C Library"
5443 fi
5444 $rm -f try try.*
5445 set d_gnulibc
5446 eval $setvar
5447
5448 : see if nm is to be used to determine whether a symbol is defined or not
5449 case "$usenm" in
5450 '')
5451         dflt=''
5452         case "$d_gnulibc" in
5453         "$define")
5454                 echo " "
5455                 echo "nm probably won't work on the GNU C Library." >&4
5456                 dflt=n
5457                 ;;
5458         esac
5459         case "$dflt" in
5460         '') 
5461                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5462                         echo " "
5463                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5464                         echo "'nm' won't be sufficient on this sytem." >&4
5465                         dflt=n
5466                 fi
5467                 ;;
5468         esac
5469         case "$dflt" in
5470         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5471                 if $test $dflt -gt 20; then
5472                         dflt=y
5473                 else
5474                         dflt=n
5475                 fi
5476                 ;;
5477         esac
5478         ;;
5479 *)
5480         case "$usenm" in
5481         true|$define) dflt=y;;
5482         *) dflt=n;;
5483         esac
5484         ;;
5485 esac
5486 $cat <<EOM
5487
5488 I can use $nm to extract the symbols from your C libraries. This
5489 is a time consuming task which may generate huge output on the disk (up
5490 to 3 megabytes) but that should make the symbols extraction faster. The
5491 alternative is to skip the 'nm' extraction part and to compile a small
5492 test program instead to determine whether each symbol is present. If
5493 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5494 this may be the best solution.
5495
5496 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5497
5498 EOM
5499 rp="Shall I use $nm to extract C symbols from the libraries?"
5500 . ./myread
5501 case "$ans" in
5502 [Nn]*) usenm=false;;
5503 *) usenm=true;;
5504 esac
5505
5506 runnm=$usenm
5507 case "$reuseval" in
5508 true) runnm=false;;
5509 esac
5510
5511 : nm options which may be necessary
5512 case "$nm_opt" in
5513 '') if $test -f /mach_boot; then
5514                 nm_opt=''       # Mach
5515         elif $test -d /usr/ccs/lib; then
5516                 nm_opt='-p'     # Solaris (and SunOS?)
5517         elif $test -f /dgux; then
5518                 nm_opt='-p'     # DG-UX
5519         elif $test -f /lib64/rld; then
5520                 nm_opt='-p'     # 64-bit Irix
5521         else
5522                 nm_opt=''
5523         fi;;
5524 esac
5525
5526 : nm options which may be necessary for shared libraries but illegal
5527 : for archive libraries.  Thank you, Linux.
5528 case "$nm_so_opt" in
5529 '')     case "$myuname" in
5530         *linux*)
5531                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5532                         nm_so_opt='--dynamic'
5533                 fi
5534                 ;;
5535         esac
5536         ;;
5537 esac
5538
5539 case "$runnm" in
5540 true)
5541 : get list of predefined functions in a handy place
5542 echo " "
5543 case "$libc" in
5544 '') libc=unknown
5545         case "$libs" in
5546         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5547         esac
5548         ;;
5549 esac
5550 case "$libs" in
5551 '') ;;
5552 *)  for thislib in $libs; do
5553         case "$thislib" in
5554         -lc|-lc_s)
5555                 : Handle C library specially below.
5556                 ;;
5557         -l*)
5558                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5559                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5560                         :
5561                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5562                         :
5563                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5564                         :
5565                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5566                         :
5567                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5568                         :
5569                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5570                         :
5571                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5572                         :
5573                 else
5574                         try=''
5575                 fi
5576                 libnames="$libnames $try"
5577                 ;;
5578         *) libnames="$libnames $thislib" ;;
5579         esac
5580         done
5581         ;;
5582 esac
5583 xxx=normal
5584 case "$libc" in
5585 unknown)
5586         set /lib/libc.$so
5587         for xxx in $libpth; do
5588                 $test -r $1 || set $xxx/libc.$so
5589                 : The messy sed command sorts on library version numbers.
5590                 $test -r $1 || \
5591                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5592                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5593                                 h
5594                                 s/[0-9][0-9]*/0000&/g
5595                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5596                                 G
5597                                 s/\n/ /' | \
5598                          $sort | $sed -e 's/^.* //'`
5599                 eval set \$$#
5600         done
5601         $test -r $1 || set /usr/ccs/lib/libc.$so
5602         $test -r $1 || set /lib/libsys_s$_a
5603         ;;
5604 *)
5605         set blurfl
5606         ;;
5607 esac
5608 if $test -r "$1"; then
5609         echo "Your (shared) C library seems to be in $1."
5610         libc="$1"
5611 elif $test -r /lib/libc && $test -r /lib/clib; then
5612         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5613         xxx=apollo
5614         libc='/lib/clib /lib/libc'
5615         if $test -r /lib/syslib; then
5616                 echo "(Your math library is in /lib/syslib.)"
5617                 libc="$libc /lib/syslib"
5618         fi
5619 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5620         echo "Your C library seems to be in $libc, as you said before."
5621 elif $test -r $incpath/usr/lib/libc$_a; then
5622         libc=$incpath/usr/lib/libc$_a;
5623         echo "Your C library seems to be in $libc.  That's fine."
5624 elif $test -r /lib/libc$_a; then
5625         libc=/lib/libc$_a;
5626         echo "Your C library seems to be in $libc.  You're normal."
5627 else
5628         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5629                 :
5630         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5631                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5632         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5633                 :
5634         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5635                 :
5636         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5637                 :
5638         else
5639                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5640         fi
5641         if $test -r "$tans"; then
5642                 echo "Your C library seems to be in $tans, of all places."
5643                 libc=$tans
5644         else
5645                 libc='blurfl'
5646         fi
5647 fi
5648 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5649         dflt="$libc"
5650         cat <<EOM
5651
5652 If the guess above is wrong (which it might be if you're using a strange
5653 compiler, or your machine supports multiple models), you can override it here.
5654
5655 EOM
5656 else
5657         dflt=''
5658         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5659         cat >&4 <<EOM
5660 I can't seem to find your C library.  I've looked in the following places:
5661
5662 EOM
5663         $sed 's/^/      /' libpath
5664         cat <<EOM
5665
5666 None of these seems to contain your C library. I need to get its name...
5667
5668 EOM
5669 fi
5670 fn=f
5671 rp='Where is your C library?'
5672 . ./getfile
5673 libc="$ans"
5674
5675 echo " "
5676 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5677 set X `cat libnames`
5678 shift
5679 xxx=files
5680 case $# in 1) xxx=file; esac
5681 echo "Extracting names from the following $xxx for later perusal:" >&4
5682 echo " "
5683 $sed 's/^/      /' libnames >&4
5684 echo " "
5685 $echo $n "This may take a while...$c" >&4
5686
5687 for file in $*; do
5688         case $file in
5689         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5690         *) $nm $nm_opt $file 2>/dev/null;;
5691         esac
5692 done >libc.tmp
5693
5694 $echo $n ".$c"
5695 $grep fprintf libc.tmp > libc.ptf
5696 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5697 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5698 xxx='[ADTSIW]'
5699 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5700         eval $xscan;\
5701         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5702                 eval $xrun
5703 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5704         eval $xscan;\
5705         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5706                 eval $xrun
5707 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5708         eval $xscan;\
5709         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5710                 eval $xrun
5711 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5712         eval $xscan;\
5713         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5714                 eval $xrun
5715 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5716         eval $xscan;\
5717         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5718                 eval $xrun
5719 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5720         eval $xscan;\
5721         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5722                 eval $xrun
5723 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5724                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5725         eval $xscan;\
5726         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5727                 eval $xrun
5728 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5729         eval $xscan;\
5730         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5731                 eval $xrun
5732 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5733         eval $xscan;\
5734         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5735                 eval $xrun
5736 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5737         eval $xscan;\
5738         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5739                 eval $xrun
5740 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\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/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5745         eval $xscan;\
5746         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5747                 eval $xrun
5748 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5749         eval $xscan;\
5750         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5751                 eval $xrun
5752 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5753         eval $xscan;\
5754         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5755                 eval $xrun
5756 else
5757         $nm -p $* 2>/dev/null >libc.tmp
5758         $grep fprintf libc.tmp > libc.ptf
5759         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5760                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5761         then
5762                 nm_opt='-p'
5763                 eval $xrun
5764         else
5765                 echo " "
5766                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5767                 com=''
5768                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5769                         for thisname in $libnames $libc; do
5770                                 $ar t $thisname >>libc.tmp
5771                         done
5772                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5773                         echo "Ok." >&4
5774                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5775                         # Repeat libc to extract forwarders to DLL entries too
5776                         for thisname in $libnames $libc; do
5777                                 $ar tv $thisname >>libc.tmp
5778                                 # Revision 50 of EMX has bug in $ar.
5779                                 # it will not extract forwarders to DLL entries
5780                                 # Use emximp which will extract exactly them.
5781                                 emximp -o tmp.imp $thisname \
5782                                     2>/dev/null && \
5783                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5784                                     < tmp.imp >>libc.tmp
5785                                 $rm tmp.imp
5786                         done
5787                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5788                         echo "Ok." >&4
5789                 else
5790                         echo "$ar didn't seem to work right." >&4
5791                         echo "Maybe this is a Cray...trying bld instead..." >&4
5792                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5793                         then
5794                                 for thisname in $libnames; do
5795                                         bld t $libnames | \
5796                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5797                                         $ar t $thisname >>libc.tmp
5798                                 done
5799                                 echo "Ok." >&4
5800                         else
5801                                 echo "That didn't work either.  Giving up." >&4
5802                                 exit 1
5803                         fi
5804                 fi
5805         fi
5806 fi
5807 nm_extract="$com"
5808 if $test -f /lib/syscalls.exp; then
5809         echo " "
5810         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5811         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5812 fi
5813 ;;
5814 esac
5815 $rm -f libnames libpath
5816
5817 : is a C symbol defined?
5818 csym='tlook=$1;
5819 case "$3" in
5820 -v) tf=libc.tmp; tc=""; tdc="";;
5821 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5822 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5823 esac;
5824 tx=yes;
5825 case "$reuseval-$4" in
5826 true-) ;;
5827 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5828 esac;
5829 case "$tx" in
5830 yes)
5831         case "$runnm" in
5832         true)
5833                 if $contains $tlook $tf >/dev/null 2>&1;
5834                 then tval=true;
5835                 else tval=false;
5836                 fi;;
5837         *)
5838                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5839                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5840                 then tval=true;
5841                 else tval=false;
5842                 fi;
5843                 $rm -f t t.c;;
5844         esac;;
5845 *)
5846         case "$tval" in
5847         $define) tval=true;;
5848         *) tval=false;;
5849         esac;;
5850 esac;
5851 eval "$2=$tval"'
5852
5853 : define an is-in-libc? function
5854 inlibc='echo " "; td=$define; tu=$undef;
5855 sym=$1; var=$2; eval "was=\$$2";
5856 tx=yes;
5857 case "$reuseval$was" in
5858 true) ;;
5859 true*) tx=no;;
5860 esac;
5861 case "$tx" in
5862 yes)
5863         set $sym tres -f;
5864         eval $csym;
5865         case "$tres" in
5866         true)
5867                 echo "$sym() found." >&4;
5868                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5869         *)
5870                 echo "$sym() NOT found." >&4;
5871                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5872         esac;;
5873 *)
5874         case "$was" in
5875         $define) echo "$sym() found." >&4;;
5876         *) echo "$sym() NOT found." >&4;;
5877         esac;;
5878 esac'
5879
5880 : see if sqrtl exists
5881 set sqrtl d_sqrtl
5882 eval $inlibc
5883
5884 : check for length of double
5885 echo " "
5886 case "$doublesize" in
5887 '')
5888         echo "Checking to see how big your double precision numbers are..." >&4
5889         $cat >try.c <<'EOCP'
5890 #include <stdio.h>
5891 int main()
5892 {
5893     printf("%d\n", (int)sizeof(double));
5894     exit(0);
5895 }
5896 EOCP
5897         set try
5898         if eval $compile_ok; then
5899                 doublesize=`$run ./try`
5900                 echo "Your double is $doublesize bytes long."
5901         else
5902                 dflt='8'
5903                 echo "(I can't seem to compile the test program.  Guessing...)"
5904                 rp="What is the size of a double precision number (in bytes)?"
5905                 . ./myread
5906                 doublesize="$ans"
5907         fi
5908         ;;
5909 esac
5910 $rm -f try.c try
5911
5912 : check for long doubles
5913 echo " "
5914 echo "Checking to see if you have long double..." >&4
5915 echo 'int main() { long double x = 7.0; }' > try.c
5916 set try
5917 if eval $compile; then
5918         val="$define"
5919         echo "You have long double."
5920 else
5921         val="$undef"
5922         echo "You do not have long double."
5923 fi
5924 $rm try.*
5925 set d_longdbl
5926 eval $setvar
5927
5928 : check for length of long double
5929 case "${d_longdbl}${longdblsize}" in
5930 $define)
5931         echo " "
5932         echo "Checking to see how big your long doubles are..." >&4
5933         $cat >try.c <<'EOCP'
5934 #include <stdio.h>
5935 int main()
5936 {
5937         printf("%d\n", sizeof(long double));
5938 }
5939 EOCP
5940         set try
5941         set try
5942         if eval $compile; then
5943                 longdblsize=`$run ./try`
5944                 echo "Your long doubles are $longdblsize bytes long."
5945         else
5946                 dflt='8'
5947                 echo " "
5948                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5949                 rp="What is the size of a long double (in bytes)?"
5950                 . ./myread
5951                 longdblsize="$ans"
5952         fi
5953         if $test "X$doublesize" = "X$longdblsize"; then
5954                 echo "(That isn't any different from an ordinary double.)"
5955         fi      
5956         ;;
5957 esac
5958 $rm -f try.* try
5959
5960 echo " "
5961
5962 if $test X"$d_longdbl" = X"$define"; then
5963
5964 echo "Checking how to print long doubles..." >&4
5965
5966 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5967         $cat >try.c <<'EOCP'
5968 #include <sys/types.h>
5969 #include <stdio.h>
5970 int main() {
5971   double d = 123.456;
5972   printf("%.3f\n", d);
5973 }
5974 EOCP
5975         set try
5976         if eval $compile; then
5977                 yyy=`$run ./try`
5978                 case "$yyy" in
5979                 123.456)
5980                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5981                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5982                         echo "We will use %f."
5983                         ;;
5984                 esac
5985         fi
5986 fi
5987
5988 if $test X"$sPRIfldbl" = X; then
5989         $cat >try.c <<'EOCP'
5990 #include <sys/types.h>
5991 #include <stdio.h>
5992 int main() {
5993   long double d = 123.456;
5994   printf("%.3Lf\n", d);
5995 }
5996 EOCP
5997         set try
5998         if eval $compile; then
5999                 yyy=`$run ./try`
6000                 case "$yyy" in
6001                 123.456)
6002                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
6003                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
6004                         echo "We will use %Lf."
6005                         ;;
6006                 esac
6007         fi
6008 fi
6009
6010 if $test X"$sPRIfldbl" = X; then
6011         $cat >try.c <<'EOCP'
6012 #include <sys/types.h>
6013 #include <stdio.h>
6014 int main() {
6015   long double d = 123.456;
6016   printf("%.3llf\n", d);
6017 }
6018 EOCP
6019         set try
6020         if eval $compile; then
6021                 yyy=`$run ./try`
6022                 case "$yyy" in
6023                 123.456)
6024                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
6025                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
6026                         echo "We will use %llf."
6027                         ;;
6028                 esac
6029         fi
6030 fi
6031
6032 if $test X"$sPRIfldbl" = X; then
6033         $cat >try.c <<'EOCP'
6034 #include <sys/types.h>
6035 #include <stdio.h>
6036 int main() {
6037   long double d = 123.456;
6038   printf("%.3lf\n", d);
6039 }
6040 EOCP
6041         set try
6042         if eval $compile; then
6043                 yyy=`$run ./try`
6044                 case "$yyy" in
6045                 123.456)
6046                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
6047                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
6048                         echo "We will use %lf."
6049                         ;;
6050                 esac
6051         fi
6052 fi
6053
6054 if $test X"$sPRIfldbl" = X; then
6055         echo "Cannot figure out how to print long doubles." >&4
6056 else
6057         sSCNfldbl=$sPRIfldbl    # expect consistency
6058 fi
6059
6060 $rm -f try try.*
6061
6062 fi # d_longdbl
6063
6064 case "$sPRIfldbl" in
6065 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
6066         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
6067         d_SCNfldbl="$undef";
6068         ;;
6069 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
6070         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
6071         d_SCNfldbl="$define";
6072         ;;
6073 esac
6074
6075 : see if modfl exists
6076 set modfl d_modfl
6077 eval $inlibc
6078
6079 d_modfl_pow32_bug="$undef"
6080
6081 case "$d_longdbl$d_modfl" in
6082 $define$define)
6083         $cat <<EOM
6084 Checking to see whether your modfl() is okay for large values...
6085 EOM
6086 $cat >try.c <<EOCP
6087 #include <math.h> 
6088 #include <stdio.h>
6089 int main() {
6090     long double nv = 4294967303.15;
6091     long double v, w;
6092     v = modfl(nv, &w);         
6093 #ifdef __GLIBC__
6094     printf("glibc");
6095 #endif
6096     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6097     return 0;
6098 }
6099 EOCP
6100         case "$osname:$gccversion" in
6101         aix:)   saveccflags="$ccflags"
6102                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6103         esac
6104         set try
6105         if eval $compile; then
6106                 foo=`$run ./try`
6107                 case "$foo" in
6108                 *" 4294967303.150000 1.150000 4294967302.000000")
6109                         echo >&4 "Your modfl() is broken for large values."
6110                         d_modfl_pow32_bug="$define"
6111                         case "$foo" in
6112                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6113                         ;;
6114                         esac
6115                         ;;
6116                 *" 4294967303.150000 0.150000 4294967303.000000")
6117                         echo >&4 "Your modfl() seems okay for large values."
6118                         ;;
6119                 *)      echo >&4 "I don't understand your modfl() at all."
6120                         d_modfl="$undef"
6121                         ;;
6122                 esac
6123                 $rm -f try.* try core core.try.*
6124         else
6125                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6126                 d_modfl="$undef"
6127         fi
6128         case "$osname:$gccversion" in
6129         aix:)   ccflags="$saveccflags" ;; # restore
6130         esac
6131         ;;
6132 esac
6133
6134 case "$ccflags" in
6135 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6136 esac
6137
6138 case "$uselongdouble" in
6139 $define|true|[yY]*)     dflt='y';;
6140 *) dflt='n';;
6141 esac
6142 cat <<EOM
6143
6144 Perl can be built to take advantage of long doubles which
6145 (if available) may give more accuracy and range for floating point numbers.
6146
6147 If this doesn't make any sense to you, just accept the default '$dflt'.
6148 EOM
6149 rp='Try to use long doubles if available?'
6150 . ./myread
6151 case "$ans" in
6152 y|Y)    val="$define"   ;;
6153 *)      val="$undef"    ;;
6154 esac
6155 set uselongdouble
6156 eval $setvar
6157
6158 case "$uselongdouble" in
6159 true|[yY]*) uselongdouble="$define" ;;
6160 esac
6161
6162 case "$uselongdouble" in
6163 $define)
6164 : Look for a hint-file generated 'call-back-unit'.  If the
6165 : user has specified that long doubles should be used,
6166 : we may need to set or change some other defaults.
6167         if $test -f uselongdouble.cbu; then
6168                 echo "Your platform has some specific hints for long doubles, using them..."
6169                 . ./uselongdouble.cbu
6170         else
6171                 $cat <<EOM
6172 (Your platform doesn't have any specific hints for long doubles.)
6173 EOM
6174         fi
6175         ;;
6176 esac
6177
6178 message=X
6179 case "$uselongdouble:$d_sqrtl:$d_modfl" in
6180 $define:$define:$define)
6181         : You have both
6182         ;;
6183 $define:$define:$undef)
6184         message="I could not find modfl"
6185         ;;
6186 $define:$undef:$define)
6187         message="I could not find sqrtl"
6188         ;;
6189 $define:$undef:$undef)
6190         message="I found neither sqrtl nor modfl"
6191         ;;
6192 esac
6193
6194 if $test "$message" != X; then
6195         $cat <<EOM >&4
6196
6197 *** You requested the use of long doubles but you do not seem to have
6198 *** the mathematic functions for long doubles.
6199 *** ($message)
6200 *** I'm disabling the use of long doubles.
6201
6202 EOM
6203
6204         uselongdouble=$undef
6205 fi
6206
6207 case "$useperlio" in
6208 $define|true|[yY]*|'')  dflt='y';;
6209 *) dflt='n';;
6210 esac
6211 cat <<EOM
6212
6213 Previous version of $package used the standard IO mechanisms as
6214 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
6215 alternate IO mechanisms via the PerlIO abstraction layer, but the
6216 stdio mechanism is still available if needed.  The abstraction layer
6217 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
6218 Using PerlIO with sfio may cause problems with some extension modules.
6219
6220 If this doesn't make any sense to you, just accept the default '$dflt'.
6221 EOM
6222 rp='Use the PerlIO abstraction layer?'
6223 . ./myread
6224 case "$ans" in
6225 y|Y) 
6226         val="$define"
6227         ;;
6228 *)      
6229         echo "Ok, doing things the stdio way."
6230         val="$undef"
6231         ;;
6232 esac
6233 set useperlio
6234 eval $setvar 
6235
6236 case "$usesocks" in
6237 $define|true|[yY]*)
6238         case "$useperlio" in
6239         $define|true|[yY]*) ;;
6240         *)      cat >&4 <<EOM
6241
6242 You are using the SOCKS proxy protocol library which means that you
6243 should also use the PerlIO layer.  You may be headed for trouble.
6244
6245 EOM
6246                 ;;
6247         esac
6248         ;;
6249 esac
6250
6251         
6252 : determine the architecture name
6253 echo " "
6254 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6255         tarch=`arch`"-$osname"
6256 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6257         if uname -m > tmparch 2>&1 ; then
6258                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6259                         -e 's/$/'"-$osname/" tmparch`
6260         else
6261                 tarch="$osname"
6262         fi
6263         $rm -f tmparch
6264 else
6265         tarch="$osname"
6266 fi
6267 case "$myarchname" in
6268 ''|"$tarch") ;;
6269 *)
6270         echo "(Your architecture name used to be $myarchname.)"
6271         archname=''
6272         ;;
6273 esac
6274 case "$targetarch" in
6275 '') ;;
6276 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6277 esac
6278 myarchname="$tarch"
6279 case "$archname" in
6280 '') dflt="$tarch";;
6281 *) dflt="$archname";;
6282 esac
6283 rp='What is your architecture name'
6284 . ./myread
6285 archname="$ans"
6286 case "$usethreads" in
6287 $define)
6288         echo "Threads selected." >&4
6289         case "$archname" in
6290         *-thread*) echo "...and architecture name already has -thread." >&4
6291                 ;;
6292         *)      archname="$archname-thread"
6293                 echo "...setting architecture name to $archname." >&4
6294                 ;;
6295         esac
6296         ;;
6297 esac
6298 case "$usemultiplicity" in
6299 $define)
6300         echo "Multiplicity selected." >&4
6301         case "$archname" in
6302         *-multi*) echo "...and architecture name already has -multi." >&4
6303                 ;;
6304         *)      archname="$archname-multi"
6305                 echo "...setting architecture name to $archname." >&4
6306                 ;;
6307         esac
6308         ;;
6309 esac
6310 case "$use64bitint$use64bitall" in
6311 *"$define"*)
6312         case "$archname64" in
6313         '')
6314                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6315                 ;;
6316         *)
6317                 case "$use64bitint" in
6318                 "$define") echo "64 bit integers selected." >&4 ;;
6319                 esac
6320                 case "$use64bitall" in
6321                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6322                 esac
6323                 case "$archname" in
6324                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6325                         ;;
6326                 *)      archname="$archname-$archname64"
6327                         echo "...setting architecture name to $archname." >&4
6328                         ;;
6329                 esac
6330                 ;;
6331         esac
6332 esac
6333 case "$uselongdouble" in
6334 $define)
6335         echo "Long doubles selected." >&4
6336         case "$longdblsize" in
6337         $doublesize)
6338                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6339                 ;;
6340         *)
6341                 case "$archname" in
6342                 *-ld*) echo "...and architecture name already has -ld." >&4
6343                         ;;
6344                 *)      archname="$archname-ld"
6345                         echo "...setting architecture name to $archname." >&4
6346                         ;;
6347                 esac
6348                 ;;
6349         esac
6350         ;;
6351 esac
6352 case "$useperlio" in
6353 $define)
6354         echo "Perlio selected." >&4
6355         ;;
6356 *)
6357         echo "Perlio not selected, using stdio." >&4
6358         case "$archname" in
6359         *-stdio*) echo "...and architecture name already has -stdio." >&4
6360                 ;;
6361         *)      archname="$archname-stdio"
6362                 echo "...setting architecture name to $archname." >&4
6363                 ;;
6364         esac
6365         ;;
6366 esac
6367
6368 : determine root of directory hierarchy where package will be installed.
6369 case "$prefix" in
6370 '')
6371         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6372         ;;
6373 *)
6374         dflt="$prefix"
6375         ;;
6376 esac
6377 $cat <<EOM
6378
6379 By default, $package will be installed in $dflt/bin, manual pages
6380 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6381 installation directories. Typically this is something like /usr/local.
6382 If you wish to have binaries under /usr/bin but other parts of the
6383 installation under /usr/local, that's ok: you will be prompted
6384 separately for each of the installation directories, the prefix being
6385 only used to set the defaults.
6386
6387 EOM
6388 fn=d~
6389 rp='Installation prefix to use?'
6390 . ./getfile
6391 oldprefix=''
6392 case "$prefix" in
6393 '') ;;
6394 *)
6395         case "$ans" in
6396         "$prefix") ;;
6397         *) oldprefix="$prefix";;
6398         esac
6399         ;;
6400 esac
6401 prefix="$ans"
6402 prefixexp="$ansexp"
6403
6404 case "$afsroot" in
6405 '')     afsroot=/afs ;;
6406 *)      afsroot=$afsroot ;;
6407 esac
6408
6409 : is AFS running?
6410 echo " "
6411 case "$afs" in
6412 $define|true)   afs=true ;;
6413 $undef|false)   afs=false ;;
6414 *)      if test -d $afsroot; then
6415                 afs=true
6416         else
6417                 afs=false
6418         fi
6419         ;;
6420 esac
6421 if $afs; then
6422         echo "AFS may be running... I'll be extra cautious then..." >&4
6423 else
6424         echo "AFS does not seem to be running..." >&4
6425 fi
6426
6427 : determine installation prefix for where package is to be installed.
6428 if $afs; then 
6429 $cat <<EOM
6430
6431 Since you are running AFS, I need to distinguish the directory in which
6432 files will reside from the directory in which they are installed (and from
6433 which they are presumably copied to the former directory by occult means).
6434
6435 EOM
6436         case "$installprefix" in
6437         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6438         *) dflt="$installprefix";;
6439         esac
6440 else
6441 $cat <<EOM
6442
6443 In some special cases, particularly when building $package for distribution,
6444 it is convenient to distinguish between the directory in which files should 
6445 be installed from the directory ($prefix) in which they 
6446 will eventually reside.  For most users, these two directories are the same.
6447
6448 EOM
6449         case "$installprefix" in
6450         '') dflt=$prefix ;;
6451         *) dflt=$installprefix;;
6452         esac
6453 fi
6454 fn=d~
6455 rp='What installation prefix should I use for installing files?'
6456 . ./getfile
6457 installprefix="$ans"
6458 installprefixexp="$ansexp"
6459
6460 : set the prefixit variable, to compute a suitable default value
6461 prefixit='case "$3" in
6462 ""|none)
6463         case "$oldprefix" in
6464         "") eval "$1=\"\$$2\"";;
6465         *)
6466                 case "$3" in
6467                 "") eval "$1=";;
6468                 none)
6469                         eval "tp=\"\$$2\"";
6470                         case "$tp" in
6471                         ""|" ") eval "$1=\"\$$2\"";;
6472                         *) eval "$1=";;
6473                         esac;;
6474                 esac;;
6475         esac;;
6476 *)
6477         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6478         case "$tp" in
6479         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6480         /*-$oldprefix/*|\~*-$oldprefix/*)
6481                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6482         *) eval "$1=\"\$$2\"";;
6483         esac;;
6484 esac'
6485
6486 : get the patchlevel
6487 echo " "
6488 echo "Getting the current patchlevel..." >&4
6489 if $test -r $rsrc/patchlevel.h;then
6490         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6491         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6492         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6493         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6494         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6495         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6496        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6497 else
6498         revision=0
6499         patchlevel=0
6500         subversion=0
6501         api_revision=0
6502         api_version=0
6503         api_subversion=0
6504         perl_patchlevel=0
6505         $echo "(You do not have patchlevel.h.  Eek.)"
6506 fi
6507 if $test -r $rsrc/.patch ; then  
6508         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6509                 perl_patchlevel=`cat $rsrc/.patch`
6510         fi
6511 fi
6512 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6513 version_patchlevel_string="version $patchlevel subversion $subversion"
6514 case "$perl_patchlevel" in
6515 0|'') ;;
6516 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6517 esac
6518
6519 $echo "(You have $package $version_patchlevel_string.)"
6520
6521 case "$osname" in
6522 dos|vms)
6523         : XXX Should be a Configure test for double-dots in filenames.
6524         version=`echo $revision $patchlevel $subversion | \
6525                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6526         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6527                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6528         ;;
6529 *)
6530         version=`echo $revision $patchlevel $subversion | \
6531                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6532         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6533                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6534         ;;
6535 esac
6536 : Special case the 5.005_xx maintenance series, which used 5.005
6537 : without any subversion label as a subdirectory in $sitelib
6538 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6539         api_versionstring='5.005'
6540 fi
6541
6542 : determine installation style
6543 : For now, try to deduce it from prefix unless it is already set.
6544 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6545 case "$installstyle" in
6546 '')     case "$prefix" in
6547                 *perl*) dflt='lib';;
6548                 *) dflt='lib/perl5' ;;
6549         esac
6550         ;;
6551 *)      dflt="$installstyle" ;;
6552 esac
6553 : Probably not worth prompting for this since we prompt for all
6554 : the directories individually, and the prompt would be too long and
6555 : confusing anyway.
6556 installstyle=$dflt
6557
6558 : determine where private library files go
6559 : Usual default is /usr/local/lib/perl5/$version.
6560 : Also allow things like /opt/perl/lib/$version, since 
6561 : /opt/perl/lib/perl5... would be redundant.
6562 : The default "style" setting is made in installstyle.U
6563 case "$installstyle" in
6564 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6565 *)       set dflt privlib lib/$version ;;
6566 esac
6567 eval $prefixit
6568 $cat <<EOM
6569
6570 There are some auxiliary files for $package that need to be put into a
6571 private library directory that is accessible by everyone.
6572
6573 EOM
6574 fn=d~+
6575 rp='Pathname where the private library files will reside?'
6576 . ./getfile
6577 privlib="$ans"
6578 privlibexp="$ansexp"
6579 : Change installation prefix, if necessary.
6580 if $test X"$prefix" != X"$installprefix"; then
6581         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6582 else
6583         installprivlib="$privlibexp"
6584 fi
6585
6586 : set the prefixup variable, to restore leading tilda escape
6587 prefixup='case "$prefixexp" in
6588 "$prefix") ;;
6589 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6590 esac'
6591
6592 : determine where public architecture dependent libraries go
6593 set archlib archlib
6594 eval $prefixit
6595 : privlib default is /usr/local/lib/$package/$version
6596 : archlib default is /usr/local/lib/$package/$version/$archname
6597 : privlib may have an optional trailing /share.
6598 tdflt=`echo $privlib | $sed 's,/share$,,'`
6599 tdflt=$tdflt/$archname
6600 case "$archlib" in
6601 '')     dflt=$tdflt
6602         ;;
6603 *)      dflt="$archlib"
6604     ;;
6605 esac
6606 $cat <<EOM
6607
6608 $spackage contains architecture-dependent library files.  If you are
6609 sharing libraries in a heterogeneous environment, you might store
6610 these files in a separate location.  Otherwise, you can just include
6611 them with the rest of the public library files.
6612
6613 EOM
6614 fn=d+~
6615 rp='Where do you want to put the public architecture-dependent libraries?'
6616 . ./getfile
6617 archlib="$ans"
6618 archlibexp="$ansexp"
6619 if $test X"$archlib" = X"$privlib"; then
6620         d_archlib="$undef"
6621 else
6622         d_archlib="$define"
6623 fi
6624 : Change installation prefix, if necessary.
6625 if $test X"$prefix" != X"$installprefix"; then
6626         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6627 else
6628         installarchlib="$archlibexp"
6629 fi
6630
6631
6632 : Binary compatibility with 5.005 is not possible for builds
6633 : with advanced features
6634 case "$usethreads$usemultiplicity" in
6635 *define*)
6636         bincompat5005="$undef"
6637         d_bincompat5005="$undef"
6638         ;;
6639 *)      $cat <<EOM
6640
6641 This version of Perl can be compiled for binary compatibility with 5.005.
6642 If you decide to do so, you will be able to continue using most of the
6643 extensions that were compiled for Perl 5.005.
6644
6645 EOM
6646         case "$bincompat5005$d_bincompat5005" in
6647         *"$undef"*) dflt=n ;;
6648         *) dflt=y ;;
6649         esac
6650         rp='Binary compatibility with Perl 5.005?'
6651         . ./myread
6652         case "$ans" in
6653         y*) val="$define" ;;
6654         *)  val="$undef" ;;
6655         esac
6656         set d_bincompat5005
6657         eval $setvar
6658         case "$d_bincompat5005" in
6659         "$define")
6660                 bincompat5005="$define"
6661                 ;;
6662         *)      bincompat5005="$undef"
6663                 d_bincompat5005="$undef"
6664                 ;;
6665         esac
6666         ;;
6667 esac
6668
6669
6670 : see if setuid scripts can be secure
6671 $cat <<EOM
6672
6673 Some kernels have a bug that prevents setuid #! scripts from being
6674 secure.  Some sites have disabled setuid #! scripts because of this.
6675
6676 First let's decide if your kernel supports secure setuid #! scripts.
6677 (If setuid #! scripts would be secure but have been disabled anyway,
6678 don't say that they are secure if asked.)
6679
6680 EOM
6681
6682 val="$undef"
6683 if $test -d /dev/fd; then
6684         echo "#!$ls" >reflect
6685         chmod +x,u+s reflect
6686         ./reflect >flect 2>&1
6687         if $contains "/dev/fd" flect >/dev/null; then
6688                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6689                 val="$define"
6690         else
6691                 $cat <<EOM
6692 If you are not sure if they are secure, I can check but I'll need a
6693 username and password different from the one you are using right now.
6694 If you don't have such a username or don't want me to test, simply
6695 enter 'none'.
6696
6697 EOM
6698                 rp='Other username to test security of setuid scripts with?'
6699                 dflt='none'
6700                 . ./myread
6701                 case "$ans" in
6702                 n|none)
6703                         case "$d_suidsafe" in
6704                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6705                                 dflt=n;;
6706                         "$undef")
6707                                 echo "Well, the $hint value is *not* secure." >&4
6708                                 dflt=n;;
6709                         *)      echo "Well, the $hint value *is* secure." >&4
6710                                 dflt=y;;
6711                         esac
6712                         ;;
6713                 *)
6714                         $rm -f reflect flect
6715                         echo "#!$ls" >reflect
6716                         chmod +x,u+s reflect
6717                         echo >flect
6718                         chmod a+w flect
6719                         echo '"su" will (probably) prompt you for '"$ans's password."
6720                         su $ans -c './reflect >flect'
6721                         if $contains "/dev/fd" flect >/dev/null; then
6722                                 echo "Okay, it looks like setuid scripts are secure." >&4
6723                                 dflt=y
6724                         else
6725                                 echo "I don't think setuid scripts are secure." >&4
6726                                 dflt=n
6727                         fi
6728                         ;;
6729                 esac
6730                 rp='Does your kernel have *secure* setuid scripts?'
6731                 . ./myread
6732                 case "$ans" in
6733                 [yY]*)  val="$define";;
6734                 *)      val="$undef";;
6735                 esac
6736         fi
6737 else
6738         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6739         echo "(That's for file descriptors, not floppy disks.)"
6740         val="$undef"
6741 fi
6742 set d_suidsafe
6743 eval $setvar
6744
6745 $rm -f reflect flect
6746
6747 : now see if they want to do setuid emulation
6748 echo " "
6749 val="$undef"
6750 case "$d_suidsafe" in
6751 "$define")
6752         val="$undef"
6753         echo "No need to emulate SUID scripts since they are secure here." >&4
6754         ;;
6755 *)
6756         $cat <<EOM
6757 Some systems have disabled setuid scripts, especially systems where
6758 setuid scripts cannot be secure.  On systems where setuid scripts have
6759 been disabled, the setuid/setgid bits on scripts are currently
6760 useless.  It is possible for $package to detect those bits and emulate
6761 setuid/setgid in a secure fashion.  This emulation will only work if
6762 setuid scripts have been disabled in your kernel.
6763
6764 EOM
6765         case "$d_dosuid" in
6766         "$define") dflt=y ;;
6767         *) dflt=n ;;
6768         esac
6769         rp="Do you want to do setuid/setgid emulation?"
6770         . ./myread
6771         case "$ans" in
6772         [yY]*)  val="$define";;
6773         *)      val="$undef";;
6774         esac
6775         ;;
6776 esac
6777 set d_dosuid
6778 eval $setvar
6779
6780 : see if this is a malloc.h system
6781 set malloc.h i_malloc
6782 eval $inhdr
6783
6784 : see if stdlib is available
6785 set stdlib.h i_stdlib
6786 eval $inhdr
6787
6788 : determine which malloc to compile in
6789 echo " "
6790 case "$usemymalloc" in
6791 [yY]*|true|$define)     dflt='y' ;;
6792 [nN]*|false|$undef)     dflt='n' ;;
6793 *)      case "$ptrsize" in
6794         4) dflt='y' ;;
6795         *) dflt='n' ;;
6796         esac
6797         ;;
6798 esac
6799 rp="Do you wish to attempt to use the malloc that comes with $package?"
6800 . ./myread
6801 usemymalloc="$ans"
6802 case "$ans" in
6803 y*|true)
6804         usemymalloc='y'
6805         mallocsrc='malloc.c'
6806         mallocobj="malloc$_o"
6807         d_mymalloc="$define"
6808         case "$libs" in
6809         *-lmalloc*)
6810                 : Remove malloc from list of libraries to use
6811                 echo "Removing unneeded -lmalloc from library list" >&4
6812                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6813                 shift
6814                 libs="$*"
6815                 echo "libs = $libs" >&4
6816                 ;;
6817         esac
6818         ;;
6819 *)
6820         usemymalloc='n'
6821         mallocsrc=''
6822         mallocobj=''
6823         d_mymalloc="$undef"
6824         ;;
6825 esac
6826
6827 : compute the return types of malloc and free
6828 echo " "
6829 $cat >malloc.c <<END
6830 #$i_malloc I_MALLOC
6831 #$i_stdlib I_STDLIB
6832 #include <stdio.h>
6833 #include <sys/types.h>
6834 #ifdef I_MALLOC
6835 #include <malloc.h>
6836 #endif
6837 #ifdef I_STDLIB
6838 #include <stdlib.h>
6839 #endif
6840 #ifdef TRY_MALLOC
6841 void *malloc();
6842 #endif
6843 #ifdef TRY_FREE
6844 void free();
6845 #endif
6846 END
6847 case "$malloctype" in
6848 '')
6849         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6850                 malloctype='void *'
6851         else
6852                 malloctype='char *'
6853         fi
6854         ;;
6855 esac
6856 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6857
6858 case "$freetype" in
6859 '')
6860         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6861                 freetype='void'
6862         else
6863                 freetype='int'
6864         fi
6865         ;;
6866 esac
6867 echo "Your system uses $freetype free(), it would seem." >&4
6868 $rm -f malloc.[co]
6869 $cat <<EOM
6870
6871 After $package is installed, you may wish to install various
6872 add-on modules and utilities.  Typically, these add-ons will
6873 be installed under $prefix with the rest
6874 of this package.  However, you may wish to install such add-ons
6875 elsewhere under a different prefix.
6876
6877 If you do not wish to put everything under a single prefix, that's
6878 ok.  You will be prompted for the individual locations; this siteprefix
6879 is only used to suggest the defaults.
6880
6881 The default should be fine for most people.
6882
6883 EOM
6884 fn=d~+
6885 rp='Installation prefix to use for add-on modules and utilities?'
6886 : XXX Here might be another good place for an installstyle setting.
6887 case "$siteprefix" in
6888 '') dflt=$prefix ;;
6889 *)  dflt=$siteprefix ;;
6890 esac
6891 . ./getfile
6892 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6893 oldsiteprefix=''
6894 case "$siteprefix" in
6895 '') ;;
6896 *)      case "$ans" in
6897         "$prefix") ;;
6898         *) oldsiteprefix="$prefix";;
6899         esac
6900         ;;
6901 esac
6902 siteprefix="$ans"
6903 siteprefixexp="$ansexp"
6904
6905 : determine where site specific libraries go.
6906 : Usual default is /usr/local/lib/perl5/site_perl/$version
6907 : The default "style" setting is made in installstyle.U
6908 : XXX No longer works with Prefixit stuff.
6909 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6910 case "$sitelib" in
6911 '') case "$installstyle" in
6912         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6913         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6914         esac
6915         ;;
6916 *)      dflt="$sitelib"
6917         ;;
6918 esac
6919 $cat <<EOM
6920
6921 The installation process will create a directory for
6922 site-specific extensions and modules.  Most users find it convenient
6923 to place all site-specific files in this directory rather than in the
6924 main distribution directory.
6925
6926 EOM
6927 fn=d~+
6928 rp='Pathname for the site-specific library files?'
6929 . ./getfile
6930 sitelib="$ans"
6931 sitelibexp="$ansexp"
6932 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6933 : Change installation prefix, if necessary.
6934 if $test X"$prefix" != X"$installprefix"; then
6935         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6936 else
6937         installsitelib="$sitelibexp"
6938 fi
6939
6940 : determine where site specific architecture-dependent libraries go.
6941 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6942 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6943 : sitelib may have an optional trailing /share.
6944 case "$sitearch" in
6945 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6946         dflt="$dflt/$archname"
6947         ;;
6948 *)      dflt="$sitearch"
6949         ;;
6950 esac
6951 set sitearch sitearch none
6952 eval $prefixit
6953 $cat <<EOM
6954
6955 The installation process will also create a directory for
6956 architecture-dependent site-specific extensions and modules.
6957
6958 EOM
6959 fn=d~+
6960 rp='Pathname for the site-specific architecture-dependent library files?'
6961 . ./getfile
6962 sitearch="$ans"
6963 sitearchexp="$ansexp"
6964 : Change installation prefix, if necessary.
6965 if $test X"$prefix" != X"$installprefix"; then
6966         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6967 else
6968         installsitearch="$sitearchexp"
6969 fi
6970
6971 $cat <<EOM
6972
6973 The installation process will also create a directory for
6974 vendor-supplied add-ons.  Vendors who supply perl with their system
6975 may find it convenient to place all vendor-supplied files in this
6976 directory rather than in the main distribution directory.  This will
6977 ease upgrades between binary-compatible maintenance versions of perl.
6978
6979 Of course you may also use these directories in whatever way you see
6980 fit.  For example, you might use them to access modules shared over a
6981 company-wide network.
6982
6983 The default answer should be fine for most people.
6984 This causes further questions about vendor add-ons to be skipped
6985 and no vendor-specific directories will be configured for perl.
6986
6987 EOM
6988 rp='Do you want to configure vendor-specific add-on directories?'
6989 case "$usevendorprefix" in
6990 define|true|[yY]*) dflt=y ;;
6991 *)      : User may have set vendorprefix directly on Configure command line.
6992         case "$vendorprefix" in
6993         ''|' ') dflt=n ;;
6994         *)      dflt=y ;;
6995         esac
6996         ;;
6997 esac
6998 . ./myread
6999 case "$ans" in
7000 [yY]*)  fn=d~+
7001         rp='Installation prefix to use for vendor-supplied add-ons?'
7002         case "$vendorprefix" in
7003         '') dflt='' ;;
7004         *)  dflt=$vendorprefix ;;
7005         esac
7006         . ./getfile
7007         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7008         oldvendorprefix=''
7009         case "$vendorprefix" in
7010         '') ;;
7011         *)      case "$ans" in
7012                 "$prefix") ;;
7013                 *) oldvendorprefix="$prefix";;
7014                 esac
7015                 ;;
7016         esac
7017         usevendorprefix="$define"
7018         vendorprefix="$ans"
7019         vendorprefixexp="$ansexp"
7020         ;;
7021 *)      usevendorprefix="$undef"
7022         vendorprefix=''
7023         vendorprefixexp=''
7024         ;;
7025 esac
7026
7027 case "$vendorprefix" in
7028 '')     d_vendorlib="$undef"
7029         vendorlib=''
7030         vendorlibexp=''
7031         ;;
7032 *)      d_vendorlib="$define"
7033         : determine where vendor-supplied modules go.
7034         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
7035         case "$vendorlib" in
7036         '')
7037                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7038                 case "$installstyle" in
7039                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
7040                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
7041                 esac
7042                 ;;
7043         *)      dflt="$vendorlib"
7044                 ;;
7045         esac
7046         fn=d~+
7047         rp='Pathname for the vendor-supplied library files?'
7048         . ./getfile
7049         vendorlib="$ans"
7050         vendorlibexp="$ansexp"
7051         ;;
7052 esac
7053 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
7054 : Change installation prefix, if necessary.
7055 if $test X"$prefix" != X"$installprefix"; then
7056         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
7057 else
7058         installvendorlib="$vendorlibexp"
7059 fi
7060
7061 case "$vendorprefix" in
7062 '')     d_vendorarch="$undef"
7063         vendorarch=''
7064         vendorarchexp=''
7065         ;;
7066 *)      d_vendorarch="$define"
7067         : determine where vendor-supplied architecture-dependent libraries go.
7068         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
7069         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
7070         : vendorlib may have an optional trailing /share.
7071         case "$vendorarch" in
7072         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
7073                 dflt="$dflt/$archname"
7074                 ;;
7075         *)      dflt="$vendorarch" ;;
7076         esac
7077         fn=d~+
7078         rp='Pathname for vendor-supplied architecture-dependent files?'
7079         . ./getfile
7080         vendorarch="$ans"
7081         vendorarchexp="$ansexp"
7082         ;;
7083 esac
7084 : Change installation prefix, if necessary.
7085 if $test X"$prefix" != X"$installprefix"; then
7086         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
7087 else
7088         installvendorarch="$vendorarchexp"
7089 fi
7090
7091 : Final catch-all directories to search
7092 $cat <<EOM
7093
7094 Lastly, you can have perl look in other directories for extensions and
7095 modules in addition to those already specified.
7096 These directories will be searched after 
7097         $sitearch 
7098         $sitelib 
7099 EOM
7100 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7101 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7102 echo ' '
7103 case "$otherlibdirs" in
7104 ''|' ') dflt='none' ;;
7105 *)      dflt="$otherlibdirs" ;;
7106 esac
7107 $cat <<EOM
7108 Enter a colon-separated set of extra paths to include in perl's @INC
7109 search path, or enter 'none' for no extra paths.
7110
7111 EOM
7112
7113 rp='Colon-separated list of additional directories for perl to search?'
7114 . ./myread
7115 case "$ans" in
7116 ' '|''|none)    otherlibdirs=' ' ;;     
7117 *)      otherlibdirs="$ans" ;;
7118 esac
7119 case "$otherlibdirs" in
7120 ' ') val=$undef ;;
7121 *)      val=$define ;;
7122 esac
7123 set d_perl_otherlibdirs
7124 eval $setvar
7125
7126 : Cruising for prototypes
7127 echo " "
7128 echo "Checking out function prototypes..." >&4
7129 $cat >prototype.c <<'EOCP'
7130 int main(int argc, char *argv[]) {
7131         exit(0);}
7132 EOCP
7133 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7134         echo "Your C compiler appears to support function prototypes."
7135         val="$define"
7136 else
7137         echo "Your C compiler doesn't seem to understand function prototypes."
7138         val="$undef"
7139 fi
7140 set prototype
7141 eval $setvar
7142 $rm -f prototype*
7143
7144 case "$prototype" in
7145 "$define") ;;
7146 *)      ansi2knr='ansi2knr'
7147         echo " "
7148         cat <<EOM >&4
7149
7150 $me:  FATAL ERROR:
7151 This version of $package can only be compiled by a compiler that 
7152 understands function prototypes.  Unfortunately, your C compiler 
7153         $cc $ccflags
7154 doesn't seem to understand them.  Sorry about that.
7155
7156 If GNU cc is available for your system, perhaps you could try that instead.  
7157
7158 Eventually, we hope to support building Perl with pre-ANSI compilers.
7159 If you would like to help in that effort, please contact <perlbug@perl.org>.
7160
7161 Aborting Configure now.
7162 EOM
7163         exit 2
7164         ;;
7165 esac
7166
7167 : determine where public executables go
7168 echo " "
7169 set dflt bin bin
7170 eval $prefixit
7171 fn=d~
7172 rp='Pathname where the public executables will reside?'
7173 . ./getfile
7174 if $test "X$ansexp" != "X$binexp"; then
7175         installbin=''
7176 fi
7177 bin="$ans"
7178 binexp="$ansexp"
7179 : Change installation prefix, if necessary.
7180 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7181 if $test X"$prefix" != X"$installprefix"; then
7182         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7183 else
7184         installbin="$binexp"
7185 fi
7186
7187 echo " "
7188 case "$extras" in
7189 '') dflt='n';;
7190 *) dflt='y';;
7191 esac
7192 cat <<EOM
7193 Perl can be built with extra modules or bundles of modules which
7194 will be fetched from the CPAN and installed alongside Perl.
7195
7196 Notice that you will need access to the CPAN; either via the Internet,
7197 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7198 be asked later to configure the CPAN.pm module which will in turn do
7199 the installation of the rest of the extra modules or bundles.)
7200
7201 Notice also that if the modules require any external software such as
7202 libraries and headers (the libz library and the zlib.h header for the
7203 Compress::Zlib module, for example) you MUST have any such software
7204 already installed, this configuration process will NOT install such
7205 things for you.
7206
7207 If this doesn't make any sense to you, just accept the default '$dflt'.
7208 EOM
7209 rp='Install any extra modules (y or n)?'
7210 . ./myread
7211 case "$ans" in
7212 y|Y)
7213         cat <<EOM
7214
7215 Please list any extra modules or bundles to be installed from CPAN,
7216 with spaces between the names.  The names can be in any format the
7217 'install' command of CPAN.pm will understand.  (Answer 'none',
7218 without the quotes, to install no extra modules or bundles.)
7219 EOM
7220         rp='Extras?'
7221         dflt="$extras"
7222         . ./myread
7223         extras="$ans"
7224 esac
7225 case "$extras" in
7226 ''|'none')
7227         val=''
7228         $rm -f ../extras.lst
7229         ;;
7230 *)      echo "(Saving the list of extras for later...)"
7231         echo "$extras" > ../extras.lst
7232         val="'$extras'"
7233         ;;
7234 esac
7235 set extras
7236 eval $setvar
7237 echo " "
7238
7239 : Find perl5.005 or later.
7240 echo "Looking for a previously installed perl5.005 or later... "
7241 case "$perl5" in
7242 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7243                 : Check if this perl is recent and can load a simple module
7244                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7245                         perl5=$tdir/perl
7246                         break;
7247                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7248                         perl5=$tdir/perl5
7249                         break;
7250                 fi
7251         done
7252         ;;
7253 *)      perl5="$perl5"
7254         ;;
7255 esac
7256 case "$perl5" in
7257 '')     echo "None found.  That's ok.";;
7258 *)      echo "Using $perl5." ;;
7259 esac
7260
7261 : Determine list of previous versions to include in @INC
7262 $cat > getverlist <<EOPL
7263 #!$perl5 -w
7264 use File::Basename;
7265 \$api_versionstring = "$api_versionstring";
7266 \$version = "$version";
7267 \$stem = "$sitelib_stem";
7268 \$archname = "$archname";
7269 EOPL
7270         $cat >> getverlist <<'EOPL'
7271 # Can't have leading @ because metaconfig interprets it as a command!
7272 ;@inc_version_list=();
7273 # XXX Redo to do opendir/readdir? 
7274 if (-d $stem) {
7275     chdir($stem);
7276     ;@candidates = glob("5.*");
7277 }
7278 else {
7279     ;@candidates = ();
7280 }
7281
7282 # XXX ToDo:  These comparisons must be reworked when two-digit
7283 # subversions come along, so that 5.7.10 compares as greater than
7284 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7285 # widespread that we can use the built-in version vectors rather
7286 # than reinventing them here.  For 5.6.0, however, we must
7287 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7288 foreach $d (@candidates) {
7289     if ($d lt $version) {
7290         if ($d ge $api_versionstring) {
7291             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7292         }
7293         elsif ($d ge "5.005") {
7294             unshift(@inc_version_list, grep { -d } $d);
7295         }
7296     }
7297     else {
7298         # Skip newer version.  I.e. don't look in
7299         # 5.7.0 if we're installing 5.6.1.
7300     }
7301 }
7302
7303 if (@inc_version_list) {
7304     print join(' ', @inc_version_list);
7305 }
7306 else {
7307     # Blank space to preserve value for next Configure run.
7308     print " ";
7309 }
7310 EOPL
7311 chmod +x getverlist
7312 case "$inc_version_list" in
7313 '')     if test -x "$perl5$exe_ext"; then
7314                 dflt=`$perl5 getverlist`
7315         else
7316                 dflt='none'
7317         fi
7318         ;;
7319 $undef) dflt='none' ;;
7320 *)  eval dflt=\"$inc_version_list\" ;;
7321 esac
7322 case "$dflt" in
7323 ''|' ') dflt=none ;;
7324 esac
7325 case "$dflt" in
7326 5.005) case "$bincompat5005" in
7327        $define|true|[yY]*) ;;
7328        *) dflt=none ;;
7329        esac
7330        ;;
7331 esac
7332 $cat <<'EOM'
7333
7334 In order to ease the process of upgrading, this version of perl 
7335 can be configured to use modules built and installed with earlier 
7336 versions of perl that were installed under $prefix.  Specify here
7337 the list of earlier versions that this version of perl should check.
7338 If Configure detected no earlier versions of perl installed under
7339 $prefix, then the list will be empty.  Answer 'none' to tell perl
7340 to not search earlier versions.
7341
7342 The default should almost always be sensible, so if you're not sure,
7343 just accept the default.
7344 EOM
7345
7346 rp='List of earlier versions to include in @INC?'
7347 . ./myread
7348 case "$ans" in
7349 [Nn]one|''|' ') inc_version_list=' ' ;;
7350 *) inc_version_list="$ans" ;;
7351 esac
7352 case "$inc_version_list" in
7353 ''|' ') 
7354         inc_version_list_init='0';;
7355 *)      inc_version_list_init=`echo $inc_version_list |
7356                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7357         ;;
7358 esac
7359 $rm -f getverlist
7360
7361 : determine whether to install perl also as /usr/bin/perl
7362
7363 echo " "
7364 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7365         $cat <<EOM
7366 Many scripts expect perl to be installed as /usr/bin/perl.
7367 I can install the perl you are about to compile also as /usr/bin/perl
7368 (in addition to $installbin/perl).
7369 EOM
7370         case "$installusrbinperl" in
7371         "$undef"|[nN]*) dflt='n';;
7372         *)              dflt='y';;
7373         esac
7374         rp="Do you want to install perl as /usr/bin/perl?"
7375         . ./myread
7376         case "$ans" in
7377         [yY]*)  val="$define";;
7378         *)      val="$undef" ;;
7379         esac
7380 else
7381         val="$undef"
7382 fi
7383 set installusrbinperl
7384 eval $setvar
7385
7386 : see if dld is available
7387 set dld.h i_dld
7388 eval $inhdr
7389
7390 : see if dlopen exists
7391 xxx_runnm="$runnm"
7392 runnm=false
7393 set dlopen d_dlopen
7394 eval $inlibc
7395 runnm="$xxx_runnm"
7396
7397 : determine which dynamic loading, if any, to compile in
7398 echo " "
7399 dldir="ext/DynaLoader"
7400 case "$usedl" in
7401 $define|y|true)
7402         dflt='y'
7403         usedl="$define"
7404         ;;
7405 $undef|n|false)
7406         dflt='n'
7407         usedl="$undef"
7408         ;;
7409 *) 
7410         dflt='n'
7411         case "$d_dlopen" in
7412             $define) dflt='y' ;;
7413         esac
7414         case "$i_dld" in
7415             $define) dflt='y' ;;
7416         esac
7417         : Does a dl_xxx.xs file exist for this operating system
7418         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7419         ;;
7420 esac
7421 rp="Do you wish to use dynamic loading?"
7422 . ./myread
7423 usedl="$ans"
7424 case "$ans" in
7425 y*) usedl="$define"
7426         case "$dlsrc" in
7427         '')
7428                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7429                         dflt="$dldir/dl_${osname}.xs"
7430                 elif $test "$d_dlopen" = "$define" ; then
7431                         dflt="$dldir/dl_dlopen.xs"
7432                 elif $test "$i_dld" = "$define" ; then
7433                         dflt="$dldir/dl_dld.xs"
7434                 else
7435                         dflt=''
7436                 fi
7437                 ;;
7438         *)      dflt="$dldir/$dlsrc"
7439                 ;;
7440         esac
7441     echo "The following dynamic loading files are available:"
7442         : Can not go over to $dldir because getfile has path hard-coded in.
7443         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7444         rp="Source file to use for dynamic loading"
7445         fn="fne"
7446         gfpth="$src"
7447         . ./getfile
7448         usedl="$define"
7449         : emulate basename
7450         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7451
7452         $cat << EOM
7453
7454 Some systems may require passing special flags to $cc -c to
7455 compile modules that will be used to create a shared library.
7456 To use no flags, say "none".
7457
7458 EOM
7459     case "$cccdlflags" in
7460     '') case "$gccversion" in
7461                 '') case "$osname" in
7462                         hpux)   dflt='+z' ;;
7463                         next)   dflt='none' ;;
7464                         irix*)  dflt='-KPIC' ;;
7465                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7466                         sunos)  dflt='-pic' ;;
7467                         *)      dflt='none' ;;
7468                     esac
7469                         ;;
7470                 *)  case "$osname" in
7471                         darwin) dflt='none' ;;
7472                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7473                         *)      dflt='-fpic' ;;
7474                     esac ;;
7475             esac ;;
7476         ' ') dflt='none' ;;
7477     *)  dflt="$cccdlflags" ;;
7478     esac
7479     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7480     . ./myread
7481     case "$ans" in
7482     none) cccdlflags=' ' ;;
7483     *) cccdlflags="$ans" ;;
7484     esac
7485
7486     cat << EOM
7487
7488 Some systems use ld to create libraries that can be dynamically loaded,
7489 while other systems (such as those using ELF) use $cc.
7490
7491 EOM
7492         case "$ld" in
7493         '')     $cat >try.c <<'EOM'
7494 /* Test for whether ELF binaries are produced */
7495 #include <fcntl.h>
7496 #include <stdlib.h>
7497 int main() {
7498         char b[4];
7499         int i = open("a.out",O_RDONLY);
7500         if(i == -1) 
7501                 exit(1); /* fail */
7502         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7503                 exit(0); /* succeed (yes, it's ELF) */
7504         else
7505                 exit(1); /* fail */
7506 }
7507 EOM
7508                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7509                         cat <<EOM
7510 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7511 EOM
7512                         dflt="$cc"
7513                 else
7514                         echo "I'll use ld to build dynamic libraries."
7515                         dflt='ld'
7516                 fi
7517                 rm -f try.c a.out
7518                 ;;
7519         *)      dflt="$ld"
7520                 ;;
7521         esac
7522
7523     rp="What command should be used to create dynamic libraries?"
7524     . ./myread
7525         ld="$ans"
7526
7527     cat << EOM
7528
7529 Some systems may require passing special flags to $ld to create a
7530 library that can be dynamically loaded.  If your ld flags include
7531 -L/other/path options to locate libraries outside your loader's normal
7532 search path, you may need to specify those -L options here as well.  To
7533 use no flags, say "none".
7534
7535 EOM
7536     case "$lddlflags" in
7537     '') case "$osname" in
7538                         beos) dflt='-nostart' ;;
7539                         hpux) dflt='-b';
7540                               case "$gccversion" in
7541                               '') dflt="$dflt +vnocompatwarnings" ;;
7542                               esac
7543                               ;;        
7544                         linux|irix*)    dflt='-shared' ;;
7545                         next)  dflt='none' ;;
7546                         solaris) dflt='-G' ;;
7547                         sunos) dflt='-assert nodefinitions' ;;
7548                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7549                 *)     dflt='none' ;;
7550                         esac
7551                         ;;
7552     *) dflt="$lddlflags" ;;
7553     esac
7554
7555         : Try to guess additional flags to pick up local libraries.
7556         : Be careful not to append to a plain 'none'
7557         case "$dflt" in
7558         none) dflt='' ;;
7559         esac
7560         for thisflag in $ldflags; do
7561                 case "$thisflag" in
7562                 -L*|-R*|-Wl,-R*)
7563                         case " $dflt " in
7564                         *" $thisflag "*) ;;
7565                         *) dflt="$dflt $thisflag" ;;
7566                         esac
7567                         ;;
7568                 esac
7569         done
7570
7571         case "$dflt" in
7572         ''|' ') dflt='none' ;;
7573         esac
7574
7575     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7576     . ./myread
7577     case "$ans" in
7578     none) lddlflags=' ' ;;
7579     *) lddlflags="$ans" ;;
7580     esac
7581
7582         cat <<EOM
7583
7584 Some systems may require passing special flags to $cc to indicate that
7585 the resulting executable will use dynamic linking.  To use no flags,
7586 say "none".
7587
7588 EOM
7589     case "$ccdlflags" in
7590     '') case "$osname" in
7591                 hpux)   dflt='-Wl,-E' ;;
7592                 linux)  dflt='-rdynamic' ;;
7593                 next)   dflt='none' ;;
7594                 sunos)  dflt='none' ;;
7595                 *)      dflt='none' ;;
7596             esac ;;
7597     ' ')  dflt='none' ;;
7598     *)  dflt="$ccdlflags" ;;
7599     esac
7600     rp="Any special flags to pass to $cc to use dynamic linking?"
7601     . ./myread
7602     case "$ans" in
7603     none) ccdlflags=' ' ;;
7604     *) ccdlflags="$ans" ;;
7605     esac
7606     ;;
7607 *)  usedl="$undef"
7608         ld='ld'
7609     dlsrc='dl_none.xs'
7610     lddlflags=''
7611     ccdlflags=''
7612     ;;
7613 esac
7614
7615 also=''
7616 case "$usedl" in
7617 $undef)
7618         # No dynamic loading being used, so don't bother even to prompt.
7619         useshrplib='false'
7620         ;;
7621 *)      case "$useshrplib" in
7622         '')     case "$osname" in
7623                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7624                         dflt=y
7625                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7626                         ;;
7627                 next*)
7628                         case "$osvers" in
7629                         4*)     dflt=y
7630                                 also='Building a shared libperl is needed for MAB support.'
7631                                 ;;
7632                         *)      dflt=n
7633                                 ;;
7634                         esac
7635                         ;;
7636                 *)      dflt=n
7637                         ;;
7638                 esac
7639                 ;;
7640         $define|true|[Yy]*)
7641                 dflt=y
7642                 ;;
7643         *)      dflt=n
7644                 ;;
7645         esac
7646         $cat << EOM
7647
7648 The perl executable is normally obtained by linking perlmain.c with
7649 libperl${_a}, any static extensions (usually just DynaLoader), and
7650 any other libraries needed on this system (such as -lm, etc.).  Since
7651 your system supports dynamic loading, it is probably possible to build
7652 a shared libperl.$so.  If you will have more than one executable linked
7653 to libperl.$so, this will significantly reduce the size of each
7654 executable, but it may have a noticeable affect on performance.  The
7655 default is probably sensible for your system.
7656 $also
7657
7658 EOM
7659         rp="Build a shared libperl.$so (y/n)"
7660         . ./myread
7661         case "$ans" in
7662         true|$define|[Yy]*)
7663                 useshrplib='true'  ;;
7664         *)      useshrplib='false' ;;
7665         esac
7666         ;;
7667 esac
7668
7669 case "$useshrplib" in
7670 true)
7671         case "$libperl" in
7672         '')
7673                 # Figure out a good name for libperl.so.  Since it gets stored in
7674                 # a version-specific architecture-dependent library, the version
7675                 # number isn't really that important, except for making cc/ld happy.
7676                 #
7677                 # A name such as libperl.so.3.1
7678                 majmin="libperl.$so.$patchlevel.$subversion"
7679                 # A name such as libperl.so.301
7680                 majonly=`echo $patchlevel $subversion |
7681                         $awk '{printf "%d%02d", $1, $2}'`
7682                 majonly=libperl.$so.$majonly
7683                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7684                 # rely on figuring it out from the naming of libc.
7685                 case "${osname}${osvers}" in
7686                 next4*)
7687                         dflt=libperl.5.$so
7688                         # XXX How handle the --version stuff for MAB?
7689                         ;;
7690                 linux*)  # ld won't link with a bare -lperl otherwise.
7691                         dflt=libperl.$so
7692                         ;;
7693                 cygwin*) # ld links against an importlib
7694                         dflt=libperl$lib_ext
7695                         ;;
7696                 *)      # Try to guess based on whether libc has major.minor.
7697                         case "$libc" in
7698                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7699                         *libc.$so.[0-9]*) dflt=$majonly ;;
7700                         *)      dflt=libperl.$so ;;
7701                         esac
7702                         ;;
7703                 esac
7704                 ;;
7705         *)      dflt=$libperl
7706                 ;;
7707         esac
7708         cat << EOM
7709
7710 I need to select a good name for the shared libperl.  If your system uses
7711 library names with major and minor numbers, then you might want something
7712 like $majmin.  Alternatively, if your system uses a single version
7713 number for shared libraries, then you might want to use $majonly.
7714 Or, your system might be quite happy with a simple libperl.$so.
7715
7716 Since the shared libperl will get installed into a version-specific
7717 architecture-dependent directory, the version number of the shared perl
7718 library probably isn't important, so the default should be o.k.
7719
7720 EOM
7721         rp='What name do you want to give to the shared libperl?'
7722         . ./myread
7723         libperl=$ans
7724         echo "Ok, I'll use $libperl"
7725         ;;
7726 *)
7727         libperl="libperl${_a}"
7728         ;;
7729 esac
7730
7731 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7732 case "$shrpdir" in
7733 '') ;;
7734 *)      $cat >&4 <<EOM
7735 WARNING:  Use of the shrpdir variable for the installation location of
7736 the shared $libperl is not supported.  It was never documented and
7737 will not work in this version.  Let me (perlbug@perl.org)
7738 know of any problems this may cause.
7739
7740 EOM
7741         case "$shrpdir" in
7742         "$archlibexp/CORE")
7743                 $cat >&4 <<EOM
7744 But your current setting of $shrpdir is
7745 the default anyway, so it's harmless.
7746 EOM
7747                 ;;
7748         *)
7749                 $cat >&4 <<EOM
7750 Further, your current attempted setting of $shrpdir
7751 conflicts with the value of $archlibexp/CORE
7752 that installperl will use.
7753 EOM
7754                 ;;
7755         esac
7756         ;;
7757 esac
7758
7759 # How will the perl executable find the installed shared $libperl?
7760 # Add $xxx to ccdlflags.
7761 # If we can't figure out a command-line option, use $shrpenv to
7762 # set env LD_RUN_PATH.  The main perl makefile uses this.
7763 shrpdir=$archlibexp/CORE
7764 xxx=''
7765 tmp_shrpenv=''
7766 if "$useshrplib"; then
7767     case "$osname" in 
7768         aix)
7769                 # We'll set it in Makefile.SH...
7770                 ;;
7771         solaris)
7772                 xxx="-R $shrpdir"
7773                 ;;
7774         freebsd|netbsd)
7775                 xxx="-Wl,-R$shrpdir"
7776                 ;;
7777         bsdos|linux|irix*|dec_osf)
7778                 xxx="-Wl,-rpath,$shrpdir"
7779                 ;;
7780         next)
7781                 # next doesn't like the default...
7782                 ;;
7783         beos)
7784                 # beos doesn't like the default, either.
7785                 ;;
7786         hpux*)
7787                 # hpux doesn't like the default, either.
7788                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7789                 ;;
7790         *)
7791                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7792                 ;;
7793         esac
7794         case "$xxx" in
7795         '') ;;
7796         *)      
7797                 # Only add $xxx if it isn't already in ccdlflags.
7798                 case " $ccdlflags " in
7799                 *" $xxx "*)     ;;
7800                 *)      ccdlflags="$ccdlflags $xxx"
7801                         cat <<EOM >&4
7802
7803 Adding $xxx to the flags
7804 passed to $ld so that the perl executable will find the 
7805 installed shared $libperl.
7806
7807 EOM
7808                         ;;
7809                 esac
7810                 ;;
7811         esac
7812 fi
7813 # Fix ccdlflags in AIX for building external extensions.
7814 # (For building Perl itself bare -bE:perl.exp is needed,
7815 #  Makefile.SH takes care of this.)
7816 case "$osname" in
7817 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7818 esac
7819 # Respect a hint or command-line value.
7820 case "$shrpenv" in
7821 '') shrpenv="$tmp_shrpenv" ;;
7822 esac
7823 case "$ldlibpthname" in
7824 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7825 none)   ldlibpthname='' ;;
7826 esac
7827
7828 : determine where manual pages are on this system
7829 echo " "
7830 case "$sysman" in
7831 '') 
7832         syspath='/usr/share/man/man1 /usr/man/man1'
7833         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7834         syspath="$syspath /usr/man/u_man/man1"
7835         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7836         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7837         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7838         sysman=`./loc . /usr/man/man1 $syspath`
7839         ;;
7840 esac
7841 if $test -d "$sysman"; then
7842         echo "System manual is in $sysman." >&4
7843 else
7844         echo "Could not find manual pages in source form." >&4
7845 fi
7846
7847 : determine where manual pages go
7848 set man1dir man1dir none
7849 eval $prefixit
7850 $cat <<EOM
7851
7852 $spackage has manual pages available in source form.
7853 EOM
7854 case "$nroff" in
7855 nroff)
7856         echo "However, you don't have nroff, so they're probably useless to you."
7857         case "$man1dir" in
7858         '') man1dir="none";;
7859         esac;;
7860 esac
7861 echo "If you don't want the manual sources installed, answer 'none'."
7862 case "$man1dir" in
7863 ' ') dflt=none
7864         ;;
7865 '')
7866         lookpath="$prefixexp/share/man/man1"
7867         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7868         lookpath="$lookpath $prefixexp/man/p_man/man1"
7869         lookpath="$lookpath $prefixexp/man/u_man/man1"
7870         lookpath="$lookpath $prefixexp/man/man.1"
7871         case "$sysman" in
7872         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7873         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7874         esac
7875         set dflt
7876         eval $prefixup
7877         ;;
7878 *)  dflt="$man1dir"
7879         ;;
7880 esac
7881 echo " "
7882 fn=dn+~
7883 rp="Where do the main $spackage manual pages (source) go?"
7884 . ./getfile
7885 if $test "X$man1direxp" != "X$ansexp"; then
7886         installman1dir=''
7887 fi
7888 man1dir="$ans"
7889 man1direxp="$ansexp"
7890 case "$man1dir" in
7891 '')     man1dir=' '
7892         installman1dir='';;
7893 esac
7894
7895 : Change installation prefix, if necessary.
7896 if $test X"$prefix" != X"$installprefix"; then
7897         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7898 else
7899         installman1dir="$man1direxp"
7900 fi
7901
7902 : What suffix to use on installed man pages
7903
7904 case "$man1dir" in
7905 ' ')
7906         man1ext='0'
7907         ;;
7908 *)
7909         rp="What suffix should be used for the main $spackage man pages?"
7910         case "$man1ext" in
7911         '')     case "$man1dir" in
7912                 *1)  dflt=1 ;;
7913                 *1p) dflt=1p ;;
7914                 *1pm) dflt=1pm ;;
7915                 *l) dflt=l;;
7916                 *n) dflt=n;;
7917                 *o) dflt=o;;
7918                 *p) dflt=p;;
7919                 *C) dflt=C;;
7920                 *L) dflt=L;;
7921                 *L1) dflt=L1;;
7922                 *) dflt=1;;
7923                 esac
7924                 ;;
7925         *)      dflt="$man1ext";;
7926         esac
7927         . ./myread
7928         man1ext="$ans"
7929         ;;
7930 esac
7931
7932 : see if we can have long filenames
7933 echo " "
7934 first=123456789abcdef
7935 $rm -f $first
7936 if (echo hi >$first) 2>/dev/null; then
7937         if $test -f 123456789abcde; then
7938                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7939                 val="$undef"
7940         else
7941                 echo 'You can have filenames longer than 14 characters.'>&4
7942                 val="$define"
7943         fi
7944 else
7945         $cat <<'EOM'
7946 You can't have filenames longer than 14 chars.
7947 You can't even think about them!
7948 EOM
7949         val="$undef"
7950 fi 
7951 set d_flexfnam
7952 eval $setvar
7953 $rm -rf 123456789abcde*
7954
7955 : determine where library module manual pages go
7956 set man3dir man3dir none
7957 eval $prefixit
7958 $cat <<EOM
7959
7960 $spackage has manual pages for many of the library modules.
7961 EOM
7962
7963 case "$nroff" in
7964 nroff)
7965         $cat <<'EOM'
7966 However, you don't have nroff, so they're probably useless to you.
7967 EOM
7968         case "$man3dir" in
7969         '') man3dir="none";;
7970         esac;;
7971 esac
7972
7973 case "$d_flexfnam" in
7974 undef)
7975         $cat <<'EOM'
7976 However, your system can't handle the long file names like File::Basename.3. 
7977 EOM
7978         case "$man3dir" in
7979         '') man3dir="none";;
7980         esac;;
7981 esac
7982
7983 echo "If you don't want the manual sources installed, answer 'none'."
7984 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7985 case "$man3dir" in
7986 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7987         if $test -d "$privlib/man/man3"; then
7988                 cat <<EOM >&4
7989
7990 WARNING:  Previous versions of perl installed man3 pages into
7991 $privlib/man/man3.  This version will suggest a 
7992 new default of $dflt.  
7993 EOM
7994                 tdflt=$dflt
7995                 dflt='n'
7996                 rp='Do you wish to preserve the old behavior?(y/n)'
7997                 . ./myread
7998                 case "$ans" in
7999                 y*) dflt="$privlib/man/man3" ;;
8000                 *)  dflt=$tdflt ;;
8001                 esac
8002     fi
8003         ;;
8004 *)      dflt="$man3dir" ;;
8005 esac
8006 case "$dflt" in
8007 ' ') dflt=none ;;
8008 esac
8009 echo " "
8010 fn=dn+~
8011 rp="Where do the $package library man pages (source) go?"
8012 . ./getfile
8013 man3dir="$ans"
8014 man3direxp="$ansexp"
8015 case "$man3dir" in
8016 '')     man3dir=' '
8017         installman3dir='';;
8018 esac
8019
8020 : Change installation prefix, if necessary.
8021 if $test X"$prefix" != X"$installprefix"; then
8022         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8023 else
8024         installman3dir="$man3direxp"
8025 fi
8026
8027 : What suffix to use on installed man pages
8028 case "$man3dir" in
8029 ' ')
8030         man3ext='0'
8031         ;;
8032 *)
8033         rp="What suffix should be used for the $package library man pages?"
8034         case "$man3ext" in
8035         '')     case "$man3dir" in
8036                 *3)  dflt=3 ;;
8037                 *3p) dflt=3p ;;
8038                 *3pm) dflt=3pm ;;
8039                 *l) dflt=l;;
8040                 *n) dflt=n;;
8041                 *o) dflt=o;;
8042                 *p) dflt=p;;
8043                 *C) dflt=C;;
8044                 *L) dflt=L;;
8045                 *L3) dflt=L3;;
8046                 *) dflt=3;;
8047                 esac
8048                 ;;
8049         *)      dflt="$man3ext";;
8050         esac
8051         . ./myread
8052         man3ext="$ans"
8053         ;;
8054 esac
8055
8056 : see if we have to deal with yellow pages, now NIS.
8057 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8058         if $test -f /usr/etc/nibindd; then
8059                 echo " "
8060                 echo "I'm fairly confident you're on a NeXT."
8061                 echo " "
8062                 rp='Do you get the hosts file via NetInfo?'
8063                 dflt=y
8064                 case "$hostcat" in
8065                 nidump*) ;;
8066                 '') ;;
8067                 *) dflt=n;;
8068                 esac
8069                 . ./myread
8070                 case "$ans" in
8071                 y*) hostcat='nidump hosts .';;
8072                 *)      case "$hostcat" in
8073                         nidump*) hostcat='';;
8074                         esac
8075                         ;;
8076                 esac
8077         fi
8078         case "$hostcat" in
8079         nidump*) ;;
8080         *)
8081                 case "$hostcat" in
8082                 *ypcat*) dflt=y;;
8083                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8084                                 dflt=y
8085                         else
8086                                 dflt=n
8087                         fi;;
8088                 *) dflt=n;;
8089                 esac
8090                 echo " "
8091                 rp='Are you getting the hosts file via yellow pages?'
8092                 . ./myread
8093                 case "$ans" in
8094                 y*) hostcat='ypcat hosts';;
8095                 *) hostcat='cat /etc/hosts';;
8096                 esac
8097                 ;;
8098         esac
8099 fi
8100 case "$hostcat" in
8101 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8102 esac
8103 case "$groupcat" in
8104 '') test -f /etc/group && groupcat='cat /etc/group';;
8105 esac
8106 case "$passcat" in
8107 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8108 esac
8109
8110 : now get the host name
8111 echo " "
8112 echo "Figuring out host name..." >&4
8113 case "$myhostname" in
8114 '') cont=true
8115         echo 'Maybe "hostname" will work...'
8116         if tans=`sh -c hostname 2>&1` ; then
8117                 myhostname=$tans
8118                 phostname=hostname
8119                 cont=''
8120         fi
8121         ;;
8122 *) cont='';;
8123 esac
8124 if $test "$cont"; then
8125         if ./xenix; then
8126                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8127                 if tans=`cat /etc/systemid 2>&1` ; then
8128                         myhostname=$tans
8129                         phostname='cat /etc/systemid'
8130                         echo "Whadyaknow.  Xenix always was a bit strange..."
8131                         cont=''
8132                 fi
8133         elif $test -r /etc/systemid; then
8134                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8135         fi
8136 fi
8137 if $test "$cont"; then
8138         echo 'No, maybe "uuname -l" will work...'
8139         if tans=`sh -c 'uuname -l' 2>&1` ; then
8140                 myhostname=$tans
8141                 phostname='uuname -l'
8142         else
8143                 echo 'Strange.  Maybe "uname -n" will work...'
8144                 if tans=`sh -c 'uname -n' 2>&1` ; then
8145                         myhostname=$tans
8146                         phostname='uname -n'
8147                 else
8148                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8149                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8150                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8151                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8152                         else
8153                                 case "$myhostname" in
8154                                 '') echo "Does this machine have an identity crisis or something?"
8155                                         phostname='';;
8156                                 *)
8157                                         echo "Well, you said $myhostname before..."
8158                                         phostname='echo $myhostname';;
8159                                 esac
8160                         fi
8161                 fi
8162         fi
8163 fi
8164 case "$myhostname" in
8165 '') myhostname=noname ;;
8166 esac
8167 : you do not want to know about this
8168 set $myhostname
8169 myhostname=$1
8170
8171 : verify guess
8172 if $test "$myhostname" ; then
8173         dflt=y
8174         rp='Your host name appears to be "'$myhostname'".'" Right?"
8175         . ./myread
8176         case "$ans" in
8177         y*) ;;
8178         *) myhostname='';;
8179         esac
8180 fi
8181
8182 : bad guess or no guess
8183 while $test "X$myhostname" = X ; do
8184         dflt=''
8185         rp="Please type the (one word) name of your host:"
8186         . ./myread
8187         myhostname="$ans"
8188 done
8189
8190 : translate upper to lower if necessary
8191 case "$myhostname" in
8192 *[A-Z]*)
8193         echo "(Normalizing case in your host name)"
8194         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8195         ;;
8196 esac
8197
8198 case "$myhostname" in
8199 *.*)
8200         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8201         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8202         echo "(Trimming domain name from host name--host name is now $myhostname)"
8203         ;;
8204 *) case "$mydomain" in
8205         '')
8206                 {
8207                         test "X$hostcat" = "Xypcat hosts" &&
8208                         ypmatch "$myhostname" hosts 2>/dev/null |\
8209                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8210                         $test -s hosts
8211                 } || {
8212                         test "X$hostcat" != "X" &&
8213                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8214                                         /[       ]$myhostname[  . ]/p" > hosts
8215                 }
8216                 tmp_re="[       . ]"
8217                 if $test -f hosts; then
8218                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8219                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8220                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8221                                 hosts | $sort | $uniq | \
8222                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8223                         case `$echo X$dflt` in
8224                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8225                                 dflt=.
8226                                 ;;
8227                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8228                                 ;;
8229                         esac
8230                 else
8231                         echo "(I cannot locate a hosts database anywhere)"
8232                         dflt=.
8233                 fi
8234                 case "$dflt" in
8235                 .)
8236                         tans=`./loc resolv.conf X /etc /usr/etc`
8237                         if $test -f "$tans"; then
8238                                 echo "(Attempting domain name extraction from $tans)"
8239                                 dflt=.`$sed -n -e 's/   / /g' \
8240                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8241                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8242                                 case "$dflt" in
8243                                 .) dflt=.`$sed -n -e 's/        / /g' \
8244                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8245                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8246                                         ;;
8247                                 esac
8248                         fi
8249                         ;;
8250                 esac
8251                 case "$dflt" in
8252                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8253                         dflt=.`sh -c domainname 2>/dev/null`
8254                         case "$dflt" in
8255                         '') dflt='.';;
8256                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8257                         esac
8258                         ;;
8259                 esac
8260                 case "$dflt$osname" in
8261                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8262                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8263                         ;;
8264                 esac
8265                 case "$dflt" in
8266                 .) echo "(Lost all hope -- silly guess then)"
8267                         dflt='.nonet'
8268                         ;;
8269                 esac
8270                 $rm -f hosts
8271                 ;;
8272         *) dflt="$mydomain";;
8273         esac;;
8274 esac
8275 echo " "
8276 rp="What is your domain name?"
8277 . ./myread
8278 tans="$ans"
8279 case "$ans" in
8280 '') ;;
8281 .*) ;;
8282 *) tans=".$tans";;
8283 esac
8284 mydomain="$tans"
8285
8286 : translate upper to lower if necessary
8287 case "$mydomain" in
8288 *[A-Z]*)
8289         echo "(Normalizing case in your domain name)"
8290         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8291         ;;
8292 esac
8293
8294 : a little sanity check here
8295 case "$phostname" in
8296 '') ;;
8297 *)
8298         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8299         $myhostname$mydomain|$myhostname) ;;
8300         *)
8301                 case "$phostname" in
8302                 sed*)
8303                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8304                         ;;
8305                 *)
8306                         echo "(That doesn't agree with your $phostname command, by the way.)"
8307                         ;;
8308                 esac
8309         ;;
8310         esac
8311         ;;
8312 esac
8313
8314 $cat <<EOM
8315
8316 I need to get your e-mail address in Internet format if possible, i.e.
8317 something like user@host.domain. Please answer accurately since I have
8318 no easy means to double check it. The default value provided below
8319 is most probably close to reality but may not be valid from outside
8320 your organization...
8321
8322 EOM
8323 cont=x
8324 while test "$cont"; do
8325         case "$cf_email" in
8326         '') dflt="$cf_by@$myhostname$mydomain";;
8327         *) dflt="$cf_email";;
8328         esac
8329         rp='What is your e-mail address?'
8330         . ./myread
8331         cf_email="$ans"
8332         case "$cf_email" in
8333         *@*.*) cont='' ;;
8334         *)
8335                 rp='Address does not look like an Internet one.  Use it anyway?'
8336                 case "$fastread" in
8337                 yes) dflt=y ;;
8338                 *) dflt=n ;;
8339                 esac
8340                 . ./myread
8341                 case "$ans" in
8342                 y*) cont='' ;;
8343                 *) echo " " ;;
8344                 esac
8345                 ;;
8346         esac
8347 done
8348
8349 $cat <<EOM
8350
8351 If you or somebody else will be maintaining perl at your site, please
8352 fill in the correct e-mail address here so that they may be contacted
8353 if necessary. Currently, the "perlbug" program included with perl
8354 will send mail to this address in addition to perlbug@perl.org. You may
8355 enter "none" for no administrator.
8356
8357 EOM
8358 case "$perladmin" in
8359 '') dflt="$cf_email";;
8360 *) dflt="$perladmin";;
8361 esac
8362 rp='Perl administrator e-mail address'
8363 . ./myread
8364 perladmin="$ans"
8365
8366 : determine whether to only install version-specific parts.
8367 echo " "
8368 $cat <<EOM
8369 Do you want to install only the version-specific parts of the perl
8370 distribution?  Usually you do *not* want to do this.
8371 EOM
8372 case "$versiononly" in
8373 "$define"|[Yy]*|true) dflt='y' ;;
8374 *) dflt='n';
8375 esac
8376 rp="Do you want to install only the version-specific parts of perl?"
8377 . ./myread
8378 case "$ans" in
8379 [yY]*)  val="$define";;
8380 *)      val="$undef" ;;
8381 esac
8382 set versiononly
8383 eval $setvar
8384
8385 : figure out how to guarantee perl startup
8386 case "$startperl" in
8387 '')
8388         case "$sharpbang" in
8389         *!)
8390                 $cat <<EOH
8391
8392 I can use the #! construct to start perl on your system. This will
8393 make startup of perl scripts faster, but may cause problems if you
8394 want to share those scripts and perl is not in a standard place
8395 ($binexp/perl) on all your platforms. The alternative is to force
8396 a shell by starting the script with a single ':' character.
8397
8398 EOH
8399                 case "$versiononly" in
8400                 "$define")      dflt="$binexp/perl$version";;  
8401                 *)              dflt="$binexp/perl";;
8402                 esac
8403                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8404                 . ./myread
8405                 case "$ans" in
8406                 none)   startperl=": # use perl";;
8407                 *)      startperl="#!$ans"
8408                         if $test 30 -lt `echo "$ans" | wc -c`; then
8409                                 $cat >&4 <<EOM
8410
8411 WARNING:  Some systems limit the #! command to 32 characters.
8412 If you experience difficulty running Perl scripts with #!, try
8413 installing Perl in a directory with a shorter pathname.
8414
8415 EOM
8416                         fi ;;
8417                 esac
8418                 ;;
8419         *) startperl=": # use perl"
8420                 ;;
8421         esac
8422         ;;
8423 esac
8424 echo "I'll use $startperl to start perl scripts."
8425
8426 : figure best path for perl in scripts
8427 case "$perlpath" in
8428 '')
8429         case "$versiononly" in
8430         "$define")      perlpath="$binexp/perl$version";;
8431         *)              perlpath="$binexp/perl";;
8432         esac
8433         case "$startperl" in
8434         *!*) ;;
8435         *)
8436                 $cat <<EOH
8437
8438 I will use the "eval 'exec'" idiom to start Perl on your system.
8439 I can use the full path of your Perl binary for this purpose, but
8440 doing so may cause problems if you want to share those scripts and
8441 Perl is not always in a standard place ($binexp/perl).
8442
8443 EOH
8444                 dflt="$binexp/perl"
8445                 rp="What path shall I use in \"eval 'exec'\"?"
8446                 . ./myread
8447                 perlpath="$ans"
8448                 ;;
8449         esac
8450         ;;
8451 esac
8452 case "$startperl" in
8453 *!*)    ;;
8454 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8455 esac
8456
8457 : determine where public executable scripts go
8458 set scriptdir scriptdir
8459 eval $prefixit
8460 case "$scriptdir" in
8461 '')
8462         dflt="$bin"
8463         : guess some guesses
8464         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8465         $test -d /usr/share/bin     && dflt=/usr/share/bin
8466         $test -d /usr/local/script  && dflt=/usr/local/script
8467         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8468         $test -d $prefixexp/script  && dflt=$prefixexp/script
8469         set dflt
8470         eval $prefixup
8471         ;;
8472 *)  dflt="$scriptdir"
8473         ;;
8474 esac
8475 $cat <<EOM
8476  
8477 Some installations have a separate directory just for executable scripts so
8478 that they can mount it across multiple architectures but keep the scripts in
8479 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8480 Or you might just lump your scripts in with all your other executables.
8481  
8482 EOM
8483 fn=d~
8484 rp='Where do you keep publicly executable scripts?'
8485 . ./getfile
8486 if $test "X$ansexp" != "X$scriptdirexp"; then
8487         installscript=''
8488 fi
8489 scriptdir="$ans"
8490 scriptdirexp="$ansexp"
8491 : Change installation prefix, if necessary.
8492 if $test X"$prefix" != X"$installprefix"; then
8493         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8494 else
8495         installscript="$scriptdirexp"
8496 fi
8497
8498 : determine where add-on public executables go
8499 case "$sitebin" in
8500 '')     dflt=$siteprefix/bin ;;
8501 *)      dflt=$sitebin ;;
8502 esac
8503 fn=d~
8504 rp='Pathname where the add-on public executables should be installed?'
8505 . ./getfile
8506 sitebin="$ans"
8507 sitebinexp="$ansexp"
8508 : Change installation prefix, if necessary.
8509 if $test X"$prefix" != X"$installprefix"; then
8510         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8511 else
8512         installsitebin="$sitebinexp"
8513 fi
8514
8515 : define an is-a-typedef? function
8516 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8517 case "$inclist" in
8518 "") inclist="sys/types.h";;
8519 esac;
8520 eval "varval=\$$var";
8521 case "$varval" in
8522 "")
8523         $rm -f temp.c;
8524         for inc in $inclist; do
8525                 echo "#include <$inc>" >>temp.c;
8526         done;
8527         echo "#ifdef $type" >> temp.c;
8528         echo "printf(\"We have $type\");" >> temp.c;
8529         echo "#endif" >> temp.c;
8530         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8531         if $contains $type temp.E >/dev/null 2>&1; then
8532                 eval "$var=\$type";
8533         else
8534                 eval "$var=\$def";
8535         fi;
8536         $rm -f temp.?;;
8537 *) eval "$var=\$varval";;
8538 esac'
8539
8540 : define an is-a-typedef? function that prompts if the type is not available.
8541 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8542 case "$inclist" in
8543 "") inclist="sys/types.h";;
8544 esac;
8545 eval "varval=\$$var";
8546 case "$varval" in
8547 "")
8548         $rm -f temp.c;
8549         for inc in $inclist; do
8550                 echo "#include <$inc>" >>temp.c;
8551         done;
8552         echo "#ifdef $type" >> temp.c;
8553         echo "printf(\"We have $type\");" >> temp.c;
8554         echo "#endif" >> temp.c;
8555         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8556         echo " " ;
8557         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8558         if $contains $type temp.E >/dev/null 2>&1; then
8559                 echo "$type found." >&4;
8560                 eval "$var=\$type";
8561         else
8562                 echo "$type NOT found." >&4;
8563                 dflt="$def";
8564                 . ./myread ;
8565                 eval "$var=\$ans";
8566         fi;
8567         $rm -f temp.?;;
8568 *) eval "$var=\$varval";;
8569 esac'
8570
8571 : see what type lseek is declared as in the kernel
8572 rp="What is the type used for lseek's offset on this system?"
8573 set off_t lseektype long stdio.h sys/types.h
8574 eval $typedef_ask
8575
8576 echo " "
8577 echo "Checking to see how big your file offsets are..." >&4
8578 $cat >try.c <<EOCP
8579 #include <sys/types.h>
8580 #include <stdio.h>
8581 int main()
8582 {
8583     printf("%d\n", (int)sizeof($lseektype));
8584     return(0); 
8585 }
8586 EOCP
8587 set try
8588 if eval $compile_ok; then
8589         lseeksize=`$run ./try`
8590         echo "Your file offsets are $lseeksize bytes long."
8591 else
8592         dflt=$longsize
8593         echo " "
8594         echo "(I can't seem to compile the test program.  Guessing...)"
8595         rp="What is the size of your file offsets (in bytes)?"
8596         . ./myread
8597         lseeksize="$ans"
8598 fi
8599 $rm -f try.c try
8600
8601 : see what type file positions are declared as in the library
8602 rp="What is the type for file position used by fsetpos()?"
8603 set fpos_t fpostype long stdio.h sys/types.h
8604 eval $typedef_ask
8605
8606 echo " "
8607 case "$fpostype" in
8608 *_t) zzz="$fpostype"    ;;
8609 *)   zzz="fpos_t"       ;;
8610 esac
8611 echo "Checking the size of $zzz..." >&4 
8612 cat > try.c <<EOCP
8613 #include <sys/types.h>
8614 #include <stdio.h>
8615 int main() {
8616     printf("%d\n", (int)sizeof($fpostype));
8617     exit(0);
8618 }
8619 EOCP
8620 set try
8621 if eval $compile_ok; then
8622         yyy=`$run ./try`
8623         case "$yyy" in
8624         '')     fpossize=4
8625                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8626                 ;;
8627         *)      fpossize=$yyy
8628                 echo "Your $zzz is $fpossize bytes long."
8629                 ;;
8630         esac
8631 else
8632         dflt="$longsize"
8633         echo " " >&4
8634         echo "(I can't compile the test program.  Guessing...)" >&4
8635         rp="What is the size of your file positions (in bytes)?"
8636         . ./myread
8637         fpossize="$ans"
8638 fi
8639
8640
8641
8642 # Backward compatibility (uselfs is deprecated).
8643 case "$uselfs" in
8644 "$define"|true|[yY]*)
8645         cat <<EOM >&4
8646
8647 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8648 EOM
8649         uselargefiles="$define"
8650         ;;
8651 esac                          
8652
8653 case "$lseeksize:$fpossize" in
8654 8:8) cat <<EOM
8655
8656 You can have files larger than 2 gigabytes.
8657 EOM
8658    val="$define" ;;
8659 *)    case "$uselargefiles" in
8660    "$undef"|false|[nN]*) dflt='n' ;;
8661    *)   dflt='y' ;;
8662    esac
8663    cat <<EOM
8664
8665 Perl can be built to understand large files (files larger than 2 gigabytes)
8666 on some systems.  To do so, Configure can be run with -Duselargefiles.
8667
8668 If this doesn't make any sense to you, just accept the default '$dflt'.
8669 EOM
8670    rp='Try to understand large files, if available?'
8671    . ./myread
8672    case "$ans" in
8673    y|Y)         val="$define" ;;
8674    *)           val="$undef"  ;;
8675    esac
8676    ;;
8677 esac
8678 set uselargefiles
8679 eval $setvar
8680 case "$uselargefiles" in
8681 "$define")
8682 : Look for a hint-file generated 'call-back-unit'.  If the
8683 : user has specified that a large files perl is to be built,
8684 : we may need to set or change some other defaults.
8685         if $test -f uselargefiles.cbu; then
8686                 echo "Your platform has some specific hints for large file builds, using them..."
8687                 . ./uselargefiles.cbu
8688                 echo " "
8689                 echo "Rechecking to see how big your file offsets are..." >&4
8690                 $cat >try.c <<EOCP
8691 #include <sys/types.h>
8692 #include <stdio.h>
8693 int main()
8694 {
8695     printf("%d\n", (int)sizeof($lseektype));
8696     return(0); 
8697 }
8698 EOCP
8699                 set try
8700                 if eval $compile_ok; then
8701                         lseeksize=`$run ./try`
8702                         $echo "Your file offsets are now $lseeksize bytes long."
8703                 else
8704                         dflt="$lseeksize"
8705                         echo " "
8706                         echo "(I can't seem to compile the test program.  Guessing...)"
8707                         rp="What is the size of your file offsets (in bytes)?"
8708                         . ./myread
8709                         lseeksize="$ans"
8710                 fi
8711                 case "$fpostype" in
8712                 *_t) zzz="$fpostype"    ;;
8713                 *)   zzz="fpos_t"       ;;
8714                 esac
8715                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8716                 $cat > try.c <<EOCP
8717 #include <sys/types.h>
8718 #include <stdio.h>
8719 int main() {
8720     printf("%d\n", (int)sizeof($fpostype));
8721     exit(0);
8722 }
8723 EOCP
8724                 set try
8725                 if eval $compile_ok; then
8726                         yyy=`$run ./try`
8727                         dflt="$lseeksize"
8728                         case "$yyy" in
8729                         '')     echo " "
8730                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8731                                 ;;
8732                         *)      fpossize=$yyy
8733                                 echo " $fpossize bytes." >&4
8734                                 ;;
8735                         esac
8736                 else
8737                         dflt="$fpossize"
8738                         echo " "
8739                         echo "(I can't compile the test program.  Guessing...)" >&4
8740                         rp="What is the size of your file positions (in bytes)?"
8741                         . ./myread
8742                         fpossize="$ans"
8743                 fi
8744                 $rm -f try.c try
8745         fi
8746         ;;
8747 esac
8748
8749 case "$vendorprefix" in
8750 '')     d_vendorbin="$undef"
8751         vendorbin=''
8752         vendorbinexp=''
8753         ;;
8754 *)      d_vendorbin="$define"
8755         : determine where vendor-supplied executables go.
8756         case "$vendorbin" in
8757         '') dflt=$vendorprefix/bin ;;
8758         *)      dflt="$vendorbin" ;;
8759         esac
8760         fn=d~+
8761         rp='Pathname for the vendor-supplied executables directory?'
8762         . ./getfile
8763         vendorbin="$ans"
8764         vendorbinexp="$ansexp"
8765         ;;
8766 esac
8767 : Change installation prefix, if necessary.
8768 if $test X"$prefix" != X"$installprefix"; then
8769         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8770 else
8771         installvendorbin="$vendorbinexp"
8772 fi
8773
8774 : see if qgcvt exists
8775 set qgcvt d_qgcvt
8776 eval $inlibc
8777
8778 : Check how to convert floats to strings.
8779
8780 if test "X$d_Gconvert" = X; then
8781
8782 echo " "
8783 echo "Checking for an efficient way to convert floats to strings."
8784 echo " " > try.c
8785 case "$uselongdouble" in
8786 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8787 esac
8788 case "$d_longdbl" in
8789 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8790 esac
8791 case "$d_PRIgldbl" in
8792 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8793 esac
8794 $cat >>try.c <<EOP
8795 #ifdef TRY_gconvert
8796 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8797 char *myname = "gconvert";
8798 #endif
8799 #ifdef TRY_gcvt
8800 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8801 char *myname = "gcvt";
8802 #endif
8803 #ifdef TRY_qgcvt
8804 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8805 char *myname = "qgcvt";
8806 #define DOUBLETYPE long double
8807 #endif
8808 #ifdef TRY_sprintf
8809 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8810 #ifdef HAS_PRIgldbl
8811 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8812 #else
8813 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8814 #endif
8815 #else
8816 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8817 #endif
8818 char *myname = "sprintf";
8819 #endif
8820
8821 #ifndef DOUBLETYPE
8822 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8823 #define DOUBLETYPE long double
8824 #else
8825 #define DOUBLETYPE double
8826 #endif
8827 #endif
8828
8829 #include <stdio.h>
8830
8831 #define I_STDLIB $i_stdlib
8832 #ifdef I_STDLIB
8833 #include <stdlib.h>
8834 #endif
8835
8836 int
8837 checkit(expect, got)
8838 char *expect;
8839 char *got;
8840 {
8841     if (strcmp(expect, got)) {
8842                 printf("%s oddity:  Expected %s, got %s\n",
8843                         myname, expect, got);
8844                 exit(1);
8845         }
8846 }
8847
8848 int main()
8849
8850         char buf[64]; 
8851         buf[63] = '\0';
8852
8853         /* This must be 1st test on (which?) platform */
8854         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8855         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8856         checkit("0.1", buf);
8857
8858         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
8859         checkit("0.01", buf);
8860
8861         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
8862         checkit("0.001", buf);
8863
8864         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
8865         checkit("0.0001", buf);
8866
8867         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8868         if (strlen(buf) > 5)
8869             checkit("9e-005", buf); /* for Microsoft ?? */
8870         else
8871             checkit("9e-05", buf);
8872
8873         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8874         checkit("1", buf);
8875
8876         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8877         checkit("1.1", buf);
8878
8879         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8880         checkit("1.01", buf);
8881
8882         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8883         checkit("1.001", buf);
8884
8885         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8886         checkit("1.0001", buf);
8887
8888         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8889         checkit("1.00001", buf);
8890
8891         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8892         checkit("1.000001", buf);
8893
8894         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8895         checkit("0", buf);
8896
8897         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8898         checkit("-1", 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         /* Some Linux gcvt's give -1.e+5 here. */
8905         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8906         checkit("-100000", buf);
8907
8908         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8909         checkit("123.456", buf);
8910
8911         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8912         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
8913         /* 34 should be enough to scare even long double
8914          * places into using the e notation. */
8915         if (strlen(buf) > 5)
8916             checkit("1e+034", buf); /* for Microsoft */
8917         else
8918             checkit("1e+34", buf);
8919
8920         /* For Perl, if you add additional tests here, also add them to
8921          * t/base/num.t for benefit of platforms not using Configure or
8922          * overriding d_Gconvert */
8923
8924         exit(0);
8925 }
8926 EOP
8927 : first add preferred functions to our list
8928 xxx_list=""
8929 for xxx_convert in $gconvert_preference; do
8930     case $xxx_convert in
8931     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
8932     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
8933     esac 
8934 done
8935 : then add any others
8936 for xxx_convert in gconvert gcvt sprintf; do
8937     case "$xxx_list" in
8938     *$xxx_convert*) ;;
8939     *) xxx_list="$xxx_list $xxx_convert" ;;
8940     esac 
8941 done
8942
8943 case "$d_longdbl$uselongdouble" in
8944 "$define$define")
8945     : again, add prefered functions to our list first
8946     xxx_ld_list=""
8947     for xxx_convert in $gconvert_ld_preference; do
8948         case $xxx_convert in
8949         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8950         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
8951         esac
8952     done
8953     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
8954     for xxx_convert in qgcvt sprintf $xxx_list; do
8955         case "$xxx_ld_list" in
8956         $xxx_convert*|*" $xxx_convert"*) ;;
8957         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8958         esac
8959     done
8960     : if sprintf cannot do long doubles, move it to the end
8961     if test "$d_PRIgldbl" != "$define"; then
8962         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
8963     fi
8964     : if no qgcvt, remove it
8965     if test "$d_qgcvt" != "$define"; then
8966         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
8967     fi
8968     : use the ld_list
8969     xxx_list="$xxx_ld_list"
8970     ;;
8971 esac
8972
8973 for xxx_convert in $xxx_list; do
8974         echo "Trying $xxx_convert..."
8975         $rm -f try try$_o
8976         set try -DTRY_$xxx_convert
8977         if eval $compile; then
8978                 echo "$xxx_convert() found." >&4
8979                 if $run ./try; then
8980                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8981                         break;
8982                 else
8983                         echo "...But $xxx_convert didn't work as I expected."
8984                         xxx_convert=''
8985                 fi
8986         else
8987                 echo "$xxx_convert NOT found." >&4
8988         fi
8989 done
8990
8991 if test X$xxx_convert = X; then
8992     echo "*** WHOA THERE!!! ***" >&4
8993     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
8994     xxx_convert=sprintf
8995 fi
8996
8997 case "$xxx_convert" in
8998 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8999 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9000 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9001 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9002    "$define$define$define")
9003       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9004    "$define$define$undef")
9005       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9006    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9007    esac
9008    ;;  
9009 esac
9010
9011 fi
9012
9013 : see if _fwalk exists
9014 set fwalk d__fwalk
9015 eval $inlibc
9016
9017 : Initialize h_fcntl
9018 h_fcntl=false
9019
9020 : Initialize h_sysfile
9021 h_sysfile=false
9022
9023 : access call always available on UNIX
9024 set access d_access
9025 eval $inlibc
9026
9027 : locate the flags for 'access()'
9028 case "$d_access" in
9029 "$define")
9030         echo " "
9031         $cat >access.c <<'EOCP'
9032 #include <sys/types.h>
9033 #ifdef I_FCNTL
9034 #include <fcntl.h>
9035 #endif
9036 #ifdef I_SYS_FILE
9037 #include <sys/file.h>
9038 #endif
9039 #ifdef I_UNISTD
9040 #include <unistd.h>
9041 #endif
9042 int main() {
9043         exit(R_OK);
9044 }
9045 EOCP
9046         : check sys/file.h first, no particular reason here
9047         if $test `./findhdr sys/file.h` && \
9048                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9049                 h_sysfile=true;
9050                 echo "<sys/file.h> defines the *_OK access constants." >&4
9051         elif $test `./findhdr fcntl.h` && \
9052                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9053                 h_fcntl=true;
9054                 echo "<fcntl.h> defines the *_OK access constants." >&4
9055         elif $test `./findhdr unistd.h` && \
9056                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9057                 echo "<unistd.h> defines the *_OK access constants." >&4
9058         else
9059                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9060         fi
9061         ;;
9062 esac
9063 $rm -f access*
9064
9065 : see if accessx exists
9066 set accessx d_accessx
9067 eval $inlibc
9068
9069 : see if alarm exists
9070 set alarm d_alarm
9071 eval $inlibc
9072
9073 : define a fucntion to check prototypes
9074 $cat > protochk <<EOSH
9075 $startsh
9076 cc="$cc"
9077 optimize="$optimize"
9078 ccflags="$ccflags"
9079 prototype="$prototype"
9080 define="$define"
9081 rm=$rm
9082 EOSH
9083
9084 $cat >> protochk <<'EOSH'
9085
9086 $rm -f try.c
9087 foo="$1"
9088 shift
9089 while test $# -ge 2; do
9090         case "$1" in
9091                 $define) echo "#include <$2>" >> try.c ;;
9092                 literal) echo "$2" >> try.c ;;
9093         esac
9094     shift 2
9095 done
9096 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9097 cat >> try.c <<'EOCP'
9098 #ifdef CAN_PROTOTYPE
9099 #define _(args) args
9100 #else
9101 #define _(args) ()
9102 #endif
9103 EOCP
9104 echo "$foo" >> try.c
9105 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9106 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9107 status=$?
9108 $rm -f try.[co]
9109 exit $status
9110 EOSH
9111 chmod +x protochk
9112 $eunicefix protochk
9113
9114 : see if sys/types.h has to be included
9115 set sys/types.h i_systypes
9116 eval $inhdr
9117
9118 : see if sys/select.h has to be included
9119 set sys/select.h i_sysselct
9120 eval $inhdr
9121
9122 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9123 while $test $# -ge 2; do
9124         case "$1" in
9125         $define) echo "#include <$2>";;
9126         esac ;
9127     shift 2;
9128 done > try.c;
9129 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9130 set try;
9131 if eval $compile; then
9132         val="$define";
9133 else
9134         val="$undef";
9135 fi;
9136 set $varname;
9137 eval $setvar;
9138 $rm -f try.c try.o'
9139
9140 : see if we should include time.h, sys/time.h, or both
9141 echo " "
9142 if test "X$timeincl" = X; then
9143         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9144         $echo $n "I'm now running the test program...$c"
9145         $cat >try.c <<'EOCP'
9146 #include <sys/types.h>
9147 #ifdef I_TIME
9148 #include <time.h>
9149 #endif
9150 #ifdef I_SYSTIME
9151 #ifdef SYSTIMEKERNEL
9152 #define KERNEL
9153 #endif
9154 #include <sys/time.h>
9155 #endif
9156 #ifdef I_SYSSELECT
9157 #include <sys/select.h>
9158 #endif
9159 int main()
9160 {
9161         struct tm foo;
9162 #ifdef S_TIMEVAL
9163         struct timeval bar;
9164 #endif
9165 #ifdef S_TIMEZONE
9166         struct timezone tzp;
9167 #endif
9168         if (foo.tm_sec == foo.tm_sec)
9169                 exit(0);
9170 #ifdef S_TIMEVAL
9171         if (bar.tv_sec == bar.tv_sec)
9172                 exit(0);
9173 #endif
9174         exit(1);
9175 }
9176 EOCP
9177         flags=''
9178         for s_timezone in '-DS_TIMEZONE' ''; do
9179         sysselect=''
9180         for s_timeval in '-DS_TIMEVAL' ''; do
9181         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9182         for i_time in '' '-DI_TIME'; do
9183         for i_systime in '-DI_SYSTIME' ''; do
9184                 case "$flags" in
9185                 '') $echo $n ".$c"
9186                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9187                         if eval $compile; then
9188                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9189                                 shift
9190                                 flags="$*"
9191                                 echo " "
9192                                 $echo $n "Succeeded with $flags$c"
9193                         fi
9194                         ;;
9195                 esac
9196         done
9197         done
9198         done
9199         done
9200         done
9201         timeincl=''
9202         echo " "
9203         case "$flags" in
9204         *SYSTIMEKERNEL*) i_systimek="$define"
9205                 timeincl=`./findhdr sys/time.h`
9206                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9207         *) i_systimek="$undef";;
9208         esac
9209         case "$flags" in
9210         *I_TIME*) i_time="$define"
9211                 timeincl=`./findhdr time.h`" $timeincl"
9212                 echo "We'll include <time.h>." >&4;;
9213         *) i_time="$undef";;
9214         esac
9215         case "$flags" in
9216         *I_SYSTIME*) i_systime="$define"
9217                 timeincl=`./findhdr sys/time.h`" $timeincl"
9218                 echo "We'll include <sys/time.h>." >&4;;
9219         *) i_systime="$undef";;
9220         esac
9221         $rm -f try.c try
9222 fi
9223 : see if struct tm knows about tm_zone
9224 case "$i_systime$i_time" in
9225 *$define*) 
9226         echo " "
9227         echo "Checking to see if your struct tm has tm_zone field..." >&4
9228         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9229         eval $hasfield
9230         ;;
9231 *)      val="$undef"
9232         set d_tm_tm_zone
9233         eval $setvar
9234         ;;
9235 esac
9236 case "$d_tm_tm_zone" in
9237 "$define")      echo "Yes, it does."   ;;
9238 *)              echo "No, it doesn't." ;;
9239 esac
9240 : see if struct tm knows about tm_gmtoff
9241 case "$i_systime$i_time" in
9242 *$define*) 
9243         echo " "
9244         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9245         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9246         eval $hasfield
9247         ;;
9248 *)      val="$undef"
9249         set d_tm_tm_gmtoff
9250         eval $setvar
9251         ;;
9252 esac
9253 case "$d_tm_tm_gmtoff" in
9254 "$define")      echo "Yes, it does."   ;;
9255 *)              echo "No, it doesn't." ;;
9256 esac
9257
9258 : see if asctime_r exists
9259 set asctime_r d_asctime_r
9260 eval $inlibc
9261 case "$d_asctime_r" in
9262 "$define")
9263         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
9264         case "$asctime_r_proto" in
9265         ''|0) try='char* asctime_r(const struct tm*, char*);'
9266         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9267         esac
9268         case "$asctime_r_proto" in
9269         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9270         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9271         esac
9272         case "$asctime_r_proto" in
9273         ''|0) try='int asctime_r(const struct tm*, char*);'
9274         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9275         esac
9276         case "$asctime_r_proto" in
9277         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9278         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9279         esac
9280         case "$asctime_r_proto" in
9281         '')     d_asctime_r=undef
9282                 asctime_r_proto=0
9283                 echo "Disabling asctime_r, cannot determine prototype." ;;
9284         * )     case "$asctime_r_proto" in
9285                 REENTRANT_PROTO*) ;;
9286                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9287                 esac
9288                 echo "Prototype: $try" ;;
9289         esac
9290         ;;
9291 *)      asctime_r_proto=0
9292         ;;
9293 esac
9294
9295 : see if atolf exists
9296 set atolf d_atolf
9297 eval $inlibc
9298
9299 : see if atoll exists
9300 set atoll d_atoll
9301 eval $inlibc
9302
9303 : Look for GNU-cc style attribute checking
9304 echo " "
9305 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9306 $cat >attrib.c <<'EOCP'
9307 #include <stdio.h>
9308 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9309 EOCP
9310 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9311         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9312                 echo "Your C compiler doesn't fully support __attribute__."
9313                 val="$undef"
9314         else
9315                 echo "Your C compiler supports __attribute__."
9316                 val="$define"
9317         fi
9318 else
9319         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9320         val="$undef"
9321 fi
9322 set d_attribut
9323 eval $setvar
9324 $rm -f attrib*
9325
9326 : see if bcmp exists
9327 set bcmp d_bcmp
9328 eval $inlibc
9329
9330 : see if bcopy exists
9331 set bcopy d_bcopy
9332 eval $inlibc
9333
9334 : see if this is a unistd.h system
9335 set unistd.h i_unistd
9336 eval $inhdr
9337
9338 : see if getpgrp exists
9339 set getpgrp d_getpgrp
9340 eval $inlibc
9341
9342 case "$d_getpgrp" in
9343 "$define")
9344         echo " "
9345         echo "Checking to see which flavor of getpgrp is in use..."
9346         $cat >try.c <<EOP
9347 #$i_unistd I_UNISTD
9348 #include <sys/types.h>
9349 #ifdef I_UNISTD
9350 #  include <unistd.h>
9351 #endif
9352 int main()
9353 {
9354         if (getuid() == 0) {
9355                 printf("(I see you are running Configure as super-user...)\n");
9356                 setuid(1);
9357         }
9358 #ifdef TRY_BSD_PGRP
9359         if (getpgrp(1) == 0)
9360                 exit(0);
9361 #else
9362         if (getpgrp() > 0)
9363                 exit(0);
9364 #endif
9365         exit(1);
9366 }
9367 EOP
9368         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9369                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9370                 val="$define"
9371         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9372                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9373                 val="$undef"
9374         else
9375                 echo "I can't seem to compile and run the test program."
9376                 if ./usg; then
9377                         xxx="a USG one, i.e. you use getpgrp()."
9378                 else
9379                         # SVR4 systems can appear rather BSD-ish.
9380                         case "$i_unistd" in
9381                         $undef)
9382                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9383                                 val="$define"
9384                                 ;;
9385                         $define)
9386                                 xxx="probably a USG one, i.e. you use getpgrp()."
9387                                 val="$undef"
9388                                 ;;
9389                         esac
9390                 fi
9391                 echo "Assuming your getpgrp is $xxx" >&4
9392         fi
9393         ;;
9394 *) val="$undef";;
9395 esac
9396 set d_bsdgetpgrp
9397 eval $setvar
9398 $rm -f try try.*
9399
9400 : see if setpgrp exists
9401 set setpgrp d_setpgrp
9402 eval $inlibc
9403
9404 case "$d_setpgrp" in
9405 "$define")
9406         echo " "
9407         echo "Checking to see which flavor of setpgrp is in use..."
9408         $cat >try.c <<EOP
9409 #$i_unistd I_UNISTD
9410 #include <sys/types.h>
9411 #ifdef I_UNISTD
9412 #  include <unistd.h>
9413 #endif
9414 int main()
9415 {
9416         if (getuid() == 0) {
9417                 printf("(I see you are running Configure as super-user...)\n");
9418                 setuid(1);
9419         }
9420 #ifdef TRY_BSD_PGRP
9421         if (-1 == setpgrp(1, 1))
9422                 exit(0);
9423 #else
9424         if (setpgrp() != -1)
9425                 exit(0);
9426 #endif
9427         exit(1);
9428 }
9429 EOP
9430         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9431                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9432                 val="$define"
9433         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9434                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9435                 val="$undef"
9436         else
9437                 echo "(I can't seem to compile and run the test program.)"
9438                 if ./usg; then
9439                         xxx="a USG one, i.e. you use setpgrp()."
9440                 else
9441                         # SVR4 systems can appear rather BSD-ish.
9442                         case "$i_unistd" in
9443                         $undef)
9444                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9445                                 val="$define"
9446                                 ;;
9447                         $define)
9448                                 xxx="probably a USG one, i.e. you use setpgrp()."
9449                                 val="$undef"
9450                                 ;;
9451                         esac
9452                 fi
9453                 echo "Assuming your setpgrp is $xxx" >&4
9454         fi
9455         ;;
9456 *) val="$undef";;
9457 esac
9458 set d_bsdsetpgrp
9459 eval $setvar
9460 $rm -f try try.*
9461 : see if bzero exists
9462 set bzero d_bzero
9463 eval $inlibc
9464
9465 : see if signal is declared as pointer to function returning int or void
9466 echo " "
9467 xxx=`./findhdr signal.h`
9468 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9469 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9470         echo "You have int (*signal())() instead of void." >&4
9471         val="$undef"
9472 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9473         echo "You have void (*signal())()." >&4
9474         val="$define"
9475 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9476         echo "You have int (*signal())() instead of void." >&4
9477         val="$undef"
9478 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9479         echo "You have void (*signal())()." >&4
9480         val="$define"
9481 else
9482         case "$d_voidsig" in
9483         '')
9484         echo "I can't determine whether signal handler returns void or int..." >&4
9485                 dflt=void
9486                 rp="What type does your signal handler return?"
9487                 . ./myread
9488                 case "$ans" in
9489                 v*) val="$define";;
9490                 *) val="$undef";;
9491                 esac;;
9492         "$define")
9493                 echo "As you already told me, signal handler returns void." >&4
9494                 val="$define"
9495                 ;;
9496         *)      echo "As you already told me, signal handler returns int." >&4
9497                 val="$undef"
9498                 ;;
9499         esac
9500 fi
9501 set d_voidsig
9502 eval $setvar
9503 case "$d_voidsig" in
9504 "$define") signal_t="void";;
9505 *) signal_t="int";;
9506 esac
9507 $rm -f $$.tmp
9508
9509 : check for ability to cast large floats to 32-bit ints.
9510 echo " "
9511 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9512 if $test "$intsize" -ge 4; then
9513         xxx=int
9514 else
9515         xxx=long
9516 fi
9517 $cat >try.c <<EOCP
9518 #include <stdio.h>
9519 #include <sys/types.h>
9520 #include <signal.h>
9521 $signal_t blech(s) int s; { exit(3); }
9522 int main()
9523 {
9524         $xxx i32;
9525         double f, g;
9526         int result = 0;
9527         char str[16];
9528         signal(SIGFPE, blech);
9529
9530         /* Don't let compiler optimize the test away.  Store the number 
9531            in a writable string for gcc to pass to sscanf under HP/UX.
9532         */
9533         sprintf(str, "2147483647");
9534         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9535         g = 10 * f;
9536         i32  = ($xxx) g;
9537
9538         /* x86 processors will probably give 0x8000 0000, which is a
9539        sign change.  We don't want that.  We want to mimic SPARC
9540            behavior here, which is to preserve the sign and give
9541            back 0x7fff ffff.
9542         */
9543         if (i32 != ($xxx) f)
9544                 result |= 1;
9545         exit(result);
9546 }
9547 EOCP
9548 set try
9549 if eval $compile_ok; then
9550         $run ./try
9551         yyy=$?
9552 else
9553         echo "(I can't seem to compile the test program--assuming it can't)"
9554         yyy=1
9555 fi
9556 case "$yyy" in
9557 0)      val="$define"
9558         echo "Yup, it can."
9559         ;;
9560 *)      val="$undef"
9561         echo "Nope, it can't."
9562         ;;
9563 esac
9564 set d_casti32
9565 eval $setvar
9566 $rm -f try try.*
9567
9568 : check for ability to cast negative floats to unsigned
9569 echo " "
9570 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9571 $cat >try.c <<EOCP
9572 #include <stdio.h>
9573 #include <sys/types.h>
9574 #include <signal.h>
9575 $signal_t blech(s) int s; { exit(7); }
9576 $signal_t blech_in_list(s) int s; { exit(4); }
9577 unsigned long dummy_long(p) unsigned long p; { return p; }
9578 unsigned int dummy_int(p) unsigned int p; { return p; }
9579 unsigned short dummy_short(p) unsigned short p; { return p; }
9580 int main()
9581 {
9582         double f;
9583         unsigned long along;
9584         unsigned int aint;
9585         unsigned short ashort;
9586         int result = 0;
9587         char str[16];
9588         
9589         /* Frustrate gcc-2.7.2's optimizer which failed this test with
9590            a direct f = -123. assignment.  gcc-2.8.0 reportedly
9591            optimized the whole file away
9592         */
9593         /* Store the number in a writable string for gcc to pass to 
9594            sscanf under HP/UX.
9595         */
9596         sprintf(str, "-123");
9597         sscanf(str, "%lf", &f);  /* f = -123.; */
9598
9599         signal(SIGFPE, blech);
9600         along = (unsigned long)f;
9601         aint = (unsigned int)f;
9602         ashort = (unsigned short)f;
9603         if (along != (unsigned long)-123)
9604                 result |= 1;
9605         if (aint != (unsigned int)-123)
9606                 result |= 1;
9607         if (ashort != (unsigned short)-123)
9608                 result |= 1;
9609         sprintf(str, "1073741824.");
9610         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9611         f = f + f;
9612         along = 0;
9613         along = (unsigned long)f;
9614         if (along != 0x80000000)
9615                 result |= 2;
9616         f -= 1.;
9617         along = 0;
9618         along = (unsigned long)f;
9619         if (along != 0x7fffffff)
9620                 result |= 1;
9621         f += 2.;
9622         along = 0;
9623         along = (unsigned long)f;
9624         if (along != 0x80000001)
9625                 result |= 2;
9626         if (result)
9627                 exit(result);
9628         signal(SIGFPE, blech_in_list);
9629         sprintf(str, "123.");
9630         sscanf(str, "%lf", &f);  /* f = 123.; */
9631         along = dummy_long((unsigned long)f);
9632         aint = dummy_int((unsigned int)f);
9633         ashort = dummy_short((unsigned short)f);
9634         if (along != (unsigned long)123)
9635                 result |= 4;
9636         if (aint != (unsigned int)123)
9637                 result |= 4;
9638         if (ashort != (unsigned short)123)
9639                 result |= 4;
9640         exit(result);
9641
9642 }
9643 EOCP
9644 set try
9645 if eval $compile_ok; then
9646         $run ./try
9647         castflags=$?
9648 else
9649         echo "(I can't seem to compile the test program--assuming it can't)"
9650         castflags=7
9651 fi
9652 case "$castflags" in
9653 0)      val="$define"
9654         echo "Yup, it can."
9655         ;;
9656 *)      val="$undef"
9657         echo "Nope, it can't."
9658         ;;
9659 esac
9660 set d_castneg
9661 eval $setvar
9662 $rm -f try.*
9663
9664 : see if vprintf exists
9665 echo " "
9666 if set vprintf val -f d_vprintf; eval $csym; $val; then
9667         echo 'vprintf() found.' >&4
9668         val="$define"
9669         $cat >try.c <<'EOF'
9670 #include <varargs.h>
9671
9672 int main() { xxx("foo"); }
9673
9674 xxx(va_alist)
9675 va_dcl
9676 {
9677         va_list args;
9678         char buf[10];
9679
9680         va_start(args);
9681         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9682 }
9683 EOF
9684         set try
9685         if eval $compile && $run ./try; then
9686                 echo "Your vsprintf() returns (int)." >&4
9687                 val2="$undef"
9688         else
9689                 echo "Your vsprintf() returns (char*)." >&4
9690                 val2="$define"
9691         fi
9692 else
9693         echo 'vprintf() NOT found.' >&4
9694                 val="$undef"
9695                 val2="$undef"
9696 fi
9697 $rm -f try try.*
9698 set d_vprintf
9699 eval $setvar
9700 val=$val2
9701 set d_charvspr
9702 eval $setvar
9703
9704 : see if chown exists
9705 set chown d_chown
9706 eval $inlibc
9707
9708 : see if chroot exists
9709 set chroot d_chroot
9710 eval $inlibc
9711
9712 : see if chsize exists
9713 set chsize d_chsize
9714 eval $inlibc
9715
9716 : see if class exists
9717 set class d_class
9718 eval $inlibc
9719
9720 hasstruct='varname=$1; struct=$2; shift; shift;
9721 while $test $# -ge 2; do
9722         case "$1" in
9723         $define) echo "#include <$2>";;
9724         esac ;
9725     shift 2;
9726 done > try.c;
9727 echo "int main () { struct $struct foo; }" >> try.c;
9728 set try;
9729 if eval $compile; then
9730         val="$define";
9731 else
9732         val="$undef";
9733 fi;
9734 set $varname;
9735 eval $setvar;
9736 $rm -f try.c try.o'
9737
9738 socketlib=''
9739 sockethdr=''
9740 : see whether socket exists
9741 echo " "
9742 $echo $n "Hmm... $c" >&4
9743 if set socket val -f d_socket; eval $csym; $val; then
9744         echo "Looks like you have Berkeley networking support." >&4
9745         d_socket="$define"
9746         if set setsockopt val -f; eval $csym; $val; then
9747                 d_oldsock="$undef"
9748         else
9749                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9750                 d_oldsock="$define"
9751         fi
9752 else
9753         if $contains socklib libc.list >/dev/null 2>&1; then
9754                 echo "Looks like you have Berkeley networking support." >&4
9755                 d_socket="$define"
9756                 : we will have to assume that it supports the 4.2 BSD interface
9757                 d_oldsock="$undef"
9758         else
9759                 echo "You don't have Berkeley networking in libc$_a..." >&4
9760                 if test "X$d_socket" = "X$define"; then
9761                    echo "...but you seem to believe that you have sockets." >&4
9762                 else
9763                         for net in net socket
9764                         do
9765                                 if test -f /usr/lib/lib$net$_a; then
9766                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9767                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9768                                         if $contains socket libc.list >/dev/null 2>&1; then
9769                                                 d_socket="$define"
9770                                                 socketlib="-l$net"
9771                                                 case "$net" in
9772                                                 net)
9773                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9774                                                         sockethdr="-I/usr/netinclude"
9775                                                         ;;
9776                                                 esac
9777                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
9778                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9779                                                         d_oldsock="$undef"
9780                                                 else
9781                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9782                                                         d_oldsock="$define"
9783                                                 fi
9784                                                 break
9785                                         fi
9786                                 fi
9787                         done
9788                         if test "X$d_socket" != "X$define"; then
9789                            echo "or anywhere else I see." >&4
9790                            d_socket="$undef"
9791                            d_oldsock="$undef"
9792                         fi
9793                 fi
9794         fi
9795 fi
9796
9797 : see if socketpair exists
9798 set socketpair d_sockpair
9799 eval $inlibc
9800
9801
9802 echo " "
9803 echo "Checking the availability of certain socket constants..." >&4
9804 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9805         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9806         $cat >try.c <<EOF
9807 #include <sys/types.h>
9808 #include <sys/socket.h>
9809 int main() {
9810     int i = $ENUM;
9811 }
9812 EOF
9813         val="$undef"
9814         set try; if eval $compile; then
9815                 val="$define"
9816         fi
9817         set d_${enum}; eval $setvar
9818         $rm -f try.c try
9819 done
9820
9821 : see if this is a sys/uio.h system
9822 set sys/uio.h i_sysuio
9823 eval $inhdr
9824
9825
9826 echo " "
9827 echo "Checking to see if your system supports struct cmsghdr..." >&4
9828 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9829 eval $hasstruct
9830 case "$d_cmsghdr_s" in
9831 "$define")      echo "Yes, it does."   ;;
9832 *)              echo "No, it doesn't." ;;
9833 esac
9834
9835
9836 : check for const keyword
9837 echo " "
9838 echo 'Checking to see if your C compiler knows about "const"...' >&4
9839 $cat >const.c <<'EOCP'
9840 typedef struct spug { int drokk; } spug;
9841 int main()
9842 {
9843         const char *foo;
9844         const spug y;
9845 }
9846 EOCP
9847 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9848         val="$define"
9849         echo "Yup, it does."
9850 else
9851         val="$undef"
9852         echo "Nope, it doesn't."
9853 fi
9854 set d_const
9855 eval $setvar
9856
9857 : see if crypt exists
9858 echo " "
9859 set crypt d_crypt
9860 eval $inlibc
9861 case "$d_crypt" in
9862 $define) cryptlib='' ;;
9863 *)      if set crypt val -f d_crypt; eval $csym; $val; then
9864                 echo 'crypt() found.' >&4
9865                 val="$define"
9866                 cryptlib=''
9867         else
9868                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9869                 if $test -z "$cryptlib"; then
9870                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9871                 else
9872                         cryptlib=-lcrypt
9873                 fi
9874                 if $test -z "$cryptlib"; then
9875                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9876                 else
9877                         cryptlib=-lcrypt
9878                 fi
9879                 if $test -z "$cryptlib"; then
9880                         cryptlib=`./loc libcrypt$_a "" $libpth`
9881                 else
9882                         cryptlib=-lcrypt
9883                 fi
9884                 if $test -z "$cryptlib"; then
9885                         echo 'crypt() NOT found.' >&4
9886                         val="$undef"
9887                 else
9888                         val="$define"
9889                 fi
9890         fi
9891         set d_crypt
9892         eval $setvar
9893         ;;
9894 esac
9895
9896 : see if this is a crypt.h system
9897 set crypt.h i_crypt
9898 eval $inhdr
9899
9900 : see if crypt_r exists
9901 set crypt_r d_crypt_r
9902 eval $inlibc
9903 case "$d_crypt_r" in
9904 "$define")
9905         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
9906         case "$crypt_r_proto" in
9907         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
9908         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
9909         esac
9910         case "$crypt_r_proto" in
9911         '')     d_crypt_r=undef
9912                 crypt_r_proto=0
9913                 echo "Disabling crypt_r, cannot determine prototype." ;;
9914         * )     case "$crypt_r_proto" in
9915                 REENTRANT_PROTO*) ;;
9916                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
9917                 esac
9918                 echo "Prototype: $try" ;;
9919         esac
9920         ;;
9921 *)      crypt_r_proto=0
9922         ;;
9923 esac
9924
9925 : get csh whereabouts
9926 case "$csh" in
9927 'csh') val="$undef" ;;
9928 *) val="$define" ;;
9929 esac
9930 set d_csh
9931 eval $setvar
9932 : Respect a hint or command line value for full_csh.
9933 case "$full_csh" in
9934 '') full_csh=$csh ;;
9935 esac
9936
9937 : see if ctermid_r exists
9938 set ctermid_r d_ctermid_r
9939 eval $inlibc
9940 case "$d_ctermid_r" in
9941 "$define")
9942         hdrs="$i_systypes sys/types.h define stdio.h $i_stdio stdio.h"
9943         case "$ctermid_r_proto" in
9944         ''|0) try='char* ctermid_r(char*);'
9945         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
9946         esac
9947         case "$ctermid_r_proto" in
9948         '')     d_ctermid_r=undef
9949                 ctermid_r_proto=0
9950                 echo "Disabling ctermid_r, cannot determine prototype." ;;
9951         * )     case "$ctermid_r_proto" in
9952                 REENTRANT_PROTO*) ;;
9953                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
9954                 esac
9955                 echo "Prototype: $try" ;;
9956         esac
9957         ;;
9958 *)      ctermid_r_proto=0
9959         ;;
9960 esac
9961
9962 : see if ctime_r exists
9963 set ctime_r d_ctime_r
9964 eval $inlibc
9965 case "$d_ctime_r" in
9966 "$define")
9967         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
9968         case "$ctime_r_proto" in
9969         ''|0) try='char* ctime_r(const time_t*, char*);'
9970         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
9971         esac
9972         case "$ctime_r_proto" in
9973         ''|0) try='char* ctime_r(const time_t*, char*, int);'
9974         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
9975         esac
9976         case "$ctime_r_proto" in
9977         ''|0) try='int ctime_r(const time_t*, char*);'
9978         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
9979         esac
9980         case "$ctime_r_proto" in
9981         ''|0) try='int ctime_r(const time_t*, char*, int);'
9982         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
9983         esac
9984         case "$ctime_r_proto" in
9985         '')     d_ctime_r=undef
9986                 ctime_r_proto=0
9987                 echo "Disabling ctime_r, cannot determine prototype." ;;
9988         * )     case "$ctime_r_proto" in
9989                 REENTRANT_PROTO*) ;;
9990                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
9991                 esac
9992                 echo "Prototype: $try" ;;
9993         esac
9994         ;;
9995 *)      ctime_r_proto=0
9996         ;;
9997 esac
9998
9999 : see if cuserid exists
10000 set cuserid d_cuserid
10001 eval $inlibc
10002
10003 : see if this is a limits.h system
10004 set limits.h i_limits
10005 eval $inhdr
10006
10007 : see if this is a float.h system
10008 set float.h i_float
10009 eval $inhdr
10010
10011 : See if number of significant digits in a double precision number is known
10012 echo " "
10013 $cat >dbl_dig.c <<EOM
10014 #$i_limits I_LIMITS
10015 #$i_float I_FLOAT
10016 #ifdef I_LIMITS
10017 #include <limits.h>
10018 #endif
10019 #ifdef I_FLOAT
10020 #include <float.h>
10021 #endif
10022 #ifdef DBL_DIG
10023 printf("Contains DBL_DIG");
10024 #endif
10025 EOM
10026 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10027 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10028         echo "DBL_DIG found." >&4
10029         val="$define"
10030 else
10031         echo "DBL_DIG NOT found." >&4
10032         val="$undef"
10033 fi
10034 $rm -f dbl_dig.?
10035 set d_dbl_dig
10036 eval $setvar
10037
10038 hasproto='varname=$1; func=$2; shift; shift;
10039 while $test $# -ge 2; do
10040         case "$1" in
10041         $define) echo "#include <$2>";;
10042         esac ;
10043     shift 2;
10044 done > try.c;
10045 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
10046 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
10047         echo "$func() prototype found.";
10048         val="$define";
10049 else
10050         echo "$func() prototype NOT found.";
10051         val="$undef";
10052 fi;
10053 set $varname;
10054 eval $setvar;
10055 $rm -f try.c tryout.c'
10056
10057 : see if dbm.h is available
10058 : see if dbmclose exists
10059 set dbmclose d_dbmclose
10060 eval $inlibc
10061
10062 case "$d_dbmclose" in
10063 $define)
10064         set dbm.h i_dbm
10065         eval $inhdr
10066         case "$i_dbm" in
10067         $define)
10068                 val="$undef"
10069                 set i_rpcsvcdbm
10070                 eval $setvar
10071                 ;;
10072         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10073                 eval $inhdr
10074                 ;;
10075         esac
10076         ;;
10077 *)      echo "We won't be including <dbm.h>"
10078         val="$undef"
10079         set i_dbm
10080         eval $setvar
10081         val="$undef"
10082         set i_rpcsvcdbm
10083         eval $setvar
10084         ;;
10085 esac
10086
10087 : see if prototype for dbminit is available
10088 echo " "
10089 set d_dbminitproto dbminit $i_dbm dbm.h
10090 eval $hasproto
10091
10092 : see if difftime exists
10093 set difftime d_difftime
10094 eval $inlibc
10095
10096 : see if this is a dirent system
10097 echo " "
10098 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10099         val="$define"
10100         echo "<dirent.h> found." >&4
10101 else
10102         val="$undef"
10103         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10104                 echo "<sys/dir.h> found." >&4
10105                 echo " "
10106         else
10107                 xinc=`./findhdr sys/ndir.h`
10108         fi
10109         echo "<dirent.h> NOT found." >&4
10110 fi
10111 set i_dirent
10112 eval $setvar
10113
10114 : Look for type of directory structure.
10115 echo " "
10116 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10117
10118 case "$direntrytype" in
10119 ''|' ')
10120         case "$i_dirent" in
10121         $define) guess1='struct dirent' ;;
10122         *) guess1='struct direct'  ;;
10123         esac
10124         ;;
10125 *)      guess1="$direntrytype"
10126         ;;
10127 esac
10128
10129 case "$guess1" in
10130 'struct dirent') guess2='struct direct' ;;
10131 *) guess2='struct dirent' ;;
10132 esac
10133                 
10134 if $contains "$guess1" try.c >/dev/null 2>&1; then
10135         direntrytype="$guess1"
10136         echo "Your directory entries are $direntrytype." >&4
10137 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10138         direntrytype="$guess2"
10139         echo "Your directory entries seem to be $direntrytype." >&4
10140 else
10141         echo "I don't recognize your system's directory entries." >&4
10142         rp="What type is used for directory entries on this system?"
10143         dflt="$guess1"
10144         . ./myread
10145         direntrytype="$ans"
10146 fi
10147 $rm -f try.c
10148
10149
10150 : see if the directory entry stores field length
10151 echo " "
10152 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10153 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10154         echo "Good, your directory entry keeps length information in d_namlen." >&4
10155         val="$define"
10156 else
10157         echo "Your directory entry does not know about the d_namlen field." >&4
10158         val="$undef"
10159 fi
10160 set d_dirnamlen
10161 eval $setvar
10162 $rm -f try.c
10163
10164 : see if this is an sysdir system
10165 set sys/dir.h i_sysdir
10166 eval $inhdr
10167
10168 : see if this is an sysndir system
10169 set sys/ndir.h i_sysndir
10170 eval $inhdr
10171
10172 : Look for dirfd
10173 echo " "
10174 $cat >dirfd.c <<EOM
10175 #include <stdio.h>
10176 #$i_dirent I_DIRENT             /**/
10177 #$i_sysdir I_SYS_DIR            /**/
10178 #$i_sysndir I_SYS_NDIR          /**/
10179 #$i_systypes I_SYS_TYPES        /**/
10180 #if defined(I_SYS_TYPES)
10181 #include <sys/types.h>
10182 #endif
10183 #if defined(I_DIRENT)
10184 #include <dirent.h>
10185 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10186 #include <sys/dir.h>
10187 #endif
10188 #else
10189 #ifdef I_SYS_NDIR
10190 #include <sys/ndir.h>
10191 #else
10192 #ifdef I_SYS_DIR
10193 #ifdef hp9000s500
10194 #include <ndir.h>       /* may be wrong in the future */
10195 #else
10196 #include <sys/dir.h>
10197 #endif
10198 #endif
10199 #endif
10200 #endif 
10201 int main() {
10202         DIR *dirp = opendir(".");
10203         if (dirfd(dirp) >= 0)
10204                 exit(0);
10205         else
10206                 exit(1);
10207 }
10208 EOM
10209 set dirfd
10210 if eval $compile; then
10211         val="$define"
10212 fi
10213 case "$val" in
10214 $define)        echo "dirfd() found." >&4       ;;
10215 *)              echo "dirfd() NOT found." >&4   ;;
10216 esac
10217 set d_dirfd
10218 eval $setvar
10219 $rm -f dirfd*
10220
10221 : see if dlerror exists
10222 xxx_runnm="$runnm"
10223 runnm=false
10224 set dlerror d_dlerror
10225 eval $inlibc
10226 runnm="$xxx_runnm"
10227
10228 : see if dlfcn is available
10229 set dlfcn.h i_dlfcn
10230 eval $inhdr
10231
10232 case "$usedl" in
10233 $define|y|true)
10234         $cat << EOM
10235
10236 On a few systems, the dynamically loaded modules that perl generates and uses
10237 will need a different extension than shared libs. The default will probably
10238 be appropriate.
10239
10240 EOM
10241         case "$dlext" in
10242         '')     dflt="$so" ;;
10243         *)      dflt="$dlext" ;;
10244         esac
10245         rp='What is the extension of dynamically loaded modules'
10246         . ./myread
10247         dlext="$ans"
10248         ;;
10249 *)
10250         dlext="none"
10251         ;;
10252 esac
10253
10254 : Check if dlsym need a leading underscore
10255 echo " "
10256 val="$undef"
10257
10258 case "$dlsrc" in
10259 dl_dlopen.xs)
10260         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10261         $cat >dyna.c <<'EOM'
10262 fred () { }
10263 EOM
10264
10265 $cat >fred.c<<EOM
10266
10267 #include <stdio.h>
10268 #$i_dlfcn I_DLFCN
10269 #ifdef I_DLFCN
10270 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10271 #else
10272 #include <sys/types.h>
10273 #include <nlist.h>
10274 #include <link.h>
10275 #endif
10276
10277 extern int fred() ;
10278
10279 int main()
10280 {
10281     void * handle ;
10282     void * symbol ;
10283 #ifndef RTLD_LAZY
10284     int mode = 1 ;
10285 #else
10286     int mode = RTLD_LAZY ;
10287 #endif
10288     handle = dlopen("./dyna.$dlext", mode) ;
10289     if (handle == NULL) {
10290         printf ("1\n") ;
10291         fflush (stdout) ;
10292         exit(0);
10293     }
10294     symbol = dlsym(handle, "fred") ;
10295     if (symbol == NULL) {
10296         /* try putting a leading underscore */
10297         symbol = dlsym(handle, "_fred") ;
10298         if (symbol == NULL) {
10299             printf ("2\n") ;
10300             fflush (stdout) ;
10301             exit(0);
10302         }
10303         printf ("3\n") ;
10304     }
10305     else
10306         printf ("4\n") ;
10307     fflush (stdout) ;
10308     exit(0);
10309 }
10310 EOM
10311         : Call the object file tmp-dyna.o in case dlext=o.
10312         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10313                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10314                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10315                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10316                 xxx=`$run ./fred`
10317                 case $xxx in
10318                 1)      echo "Test program failed using dlopen." >&4
10319                         echo "Perhaps you should not use dynamic loading." >&4;;
10320                 2)      echo "Test program failed using dlsym." >&4
10321                         echo "Perhaps you should not use dynamic loading." >&4;;
10322                 3)      echo "dlsym needs a leading underscore" >&4
10323                         val="$define" ;;
10324                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10325                 esac
10326         else
10327                 echo "I can't compile and run the test program." >&4
10328                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10329         fi
10330         ;;
10331 esac
10332                 
10333 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10334
10335 set d_dlsymun
10336 eval $setvar
10337
10338 : see if drand48_r exists
10339 set drand48_r d_drand48_r
10340 eval $inlibc
10341 case "$d_drand48_r" in
10342 "$define")
10343         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10344         case "$drand48_r_proto" in
10345         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10346         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10347         esac
10348         case "$drand48_r_proto" in
10349         '')     d_drand48_r=undef
10350                 drand48_r_proto=0
10351                 echo "Disabling drand48_r, cannot determine prototype." ;;
10352         * )     case "$drand48_r_proto" in
10353                 REENTRANT_PROTO*) ;;
10354                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10355                 esac
10356                 echo "Prototype: $try" ;;
10357         esac
10358         ;;
10359 *)      drand48_r_proto=0
10360         ;;
10361 esac
10362
10363 : see if prototype for drand48 is available
10364 echo " "
10365 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10366 eval $hasproto
10367
10368 : see if dup2 exists
10369 set dup2 d_dup2
10370 eval $inlibc
10371
10372 : see if eaccess exists
10373 set eaccess d_eaccess
10374 eval $inlibc
10375
10376 : see if endgrent exists
10377 set endgrent d_endgrent
10378 eval $inlibc
10379
10380 : see if this is an grp system
10381 set grp.h i_grp
10382 eval $inhdr
10383
10384 case "$i_grp" in
10385 $define)
10386         xxx=`./findhdr grp.h`
10387         $cppstdin $cppflags $cppminus < $xxx >$$.h
10388
10389         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10390                 val="$define"
10391         else
10392                 val="$undef"
10393         fi
10394         set d_grpasswd
10395         eval $setvar
10396
10397         $rm -f $$.h
10398         ;;
10399 *)
10400         val="$undef";
10401         set d_grpasswd; eval $setvar
10402         ;;
10403 esac
10404
10405 : see if endgrent_r exists
10406 set endgrent_r d_endgrent_r
10407 eval $inlibc
10408 case "$d_endgrent_r" in
10409 "$define")
10410         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10411         case "$endgrent_r_proto" in
10412         ''|0) try='int endgrent_r(FILE**);'
10413         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10414         esac
10415         case "$endgrent_r_proto" in
10416         ''|0) try='void endgrent_r(FILE**);'
10417         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10418         esac
10419         case "$endgrent_r_proto" in
10420         '')     d_endgrent_r=undef
10421                 endgrent_r_proto=0
10422                 echo "Disabling endgrent_r, cannot determine prototype." ;;
10423         * )     case "$endgrent_r_proto" in
10424                 REENTRANT_PROTO*) ;;
10425                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10426                 esac
10427                 echo "Prototype: $try" ;;
10428         esac
10429         ;;
10430 *)      endgrent_r_proto=0
10431         ;;
10432 esac
10433
10434 : see if endhostent exists
10435 set endhostent d_endhent
10436 eval $inlibc
10437
10438 : see if this is a netdb.h system
10439 set netdb.h i_netdb
10440 eval $inhdr
10441
10442 : see if endhostent_r exists
10443 set endhostent_r d_endhostent_r
10444 eval $inlibc
10445 case "$d_endhostent_r" in
10446 "$define")
10447         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10448         case "$endhostent_r_proto" in
10449         ''|0) try='int endhostent_r(struct hostent_data*);'
10450         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_S ;;
10451         esac
10452         case "$endhostent_r_proto" in
10453         ''|0) try='void endhostent_r(struct hostent_data*);'
10454         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_S ;;
10455         esac
10456         case "$endhostent_r_proto" in
10457         '')     d_endhostent_r=undef
10458                 endhostent_r_proto=0
10459                 echo "Disabling endhostent_r, cannot determine prototype." ;;
10460         * )     case "$endhostent_r_proto" in
10461                 REENTRANT_PROTO*) ;;
10462                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
10463                 esac
10464                 echo "Prototype: $try" ;;
10465         esac
10466         ;;
10467 *)      endhostent_r_proto=0
10468         ;;
10469 esac
10470
10471 : see if endnetent exists
10472 set endnetent d_endnent
10473 eval $inlibc
10474
10475 : see if endnetent_r exists
10476 set endnetent_r d_endnetent_r
10477 eval $inlibc
10478 case "$d_endnetent_r" in
10479 "$define")
10480         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10481         case "$endnetent_r_proto" in
10482         ''|0) try='int endnetent_r(struct netent_data*);'
10483         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_S ;;
10484         esac
10485         case "$endnetent_r_proto" in
10486         ''|0) try='void endnetent_r(struct netent_data*);'
10487         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_S ;;
10488         esac
10489         case "$endnetent_r_proto" in
10490         '')     d_endnetent_r=undef
10491                 endnetent_r_proto=0
10492                 echo "Disabling endnetent_r, cannot determine prototype." ;;
10493         * )     case "$endnetent_r_proto" in
10494                 REENTRANT_PROTO*) ;;
10495                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
10496                 esac
10497                 echo "Prototype: $try" ;;
10498         esac
10499         ;;
10500 *)      endnetent_r_proto=0
10501         ;;
10502 esac
10503
10504 : see if endprotoent exists
10505 set endprotoent d_endpent
10506 eval $inlibc
10507
10508 : see if endprotoent_r exists
10509 set endprotoent_r d_endprotoent_r
10510 eval $inlibc
10511 case "$d_endprotoent_r" in
10512 "$define")
10513         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10514         case "$endprotoent_r_proto" in
10515         ''|0) try='int endprotoent_r(struct protoent_data*);'
10516         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_S ;;
10517         esac
10518         case "$endprotoent_r_proto" in
10519         ''|0) try='void endprotoent_r(struct protoent_data*);'
10520         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_S ;;
10521         esac
10522         case "$endprotoent_r_proto" in
10523         '')     d_endprotoent_r=undef
10524                 endprotoent_r_proto=0
10525                 echo "Disabling endprotoent_r, cannot determine prototype." ;;
10526         * )     case "$endprotoent_r_proto" in
10527                 REENTRANT_PROTO*) ;;
10528                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
10529                 esac
10530                 echo "Prototype: $try" ;;
10531         esac
10532         ;;
10533 *)      endprotoent_r_proto=0
10534         ;;
10535 esac
10536
10537 : see if endpwent exists
10538 set endpwent d_endpwent
10539 eval $inlibc
10540
10541 : see if this is a pwd.h system
10542 set pwd.h i_pwd
10543 eval $inhdr
10544
10545 case "$i_pwd" in
10546 $define)
10547         xxx=`./findhdr pwd.h`
10548         $cppstdin $cppflags $cppminus < $xxx >$$.h
10549
10550         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10551                 val="$define"
10552         else
10553                 val="$undef"
10554         fi
10555         set d_pwquota
10556         eval $setvar
10557
10558         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10559                 val="$define"
10560         else
10561                 val="$undef"
10562         fi
10563         set d_pwage
10564         eval $setvar
10565
10566         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10567                 val="$define"
10568         else
10569                 val="$undef"
10570         fi
10571         set d_pwchange
10572         eval $setvar
10573
10574         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10575                 val="$define"
10576         else
10577                 val="$undef"
10578         fi
10579         set d_pwclass
10580         eval $setvar
10581
10582         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10583                 val="$define"
10584         else
10585                 val="$undef"
10586         fi
10587         set d_pwexpire
10588         eval $setvar
10589
10590         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10591                 val="$define"
10592         else
10593                 val="$undef"
10594         fi
10595         set d_pwcomment
10596         eval $setvar
10597
10598         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10599                 val="$define"
10600         else
10601                 val="$undef"
10602         fi
10603         set d_pwgecos
10604         eval $setvar
10605
10606         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10607                 val="$define"
10608         else
10609                 val="$undef"
10610         fi
10611         set d_pwpasswd
10612         eval $setvar
10613
10614         $rm -f $$.h
10615         ;;
10616 *)
10617         val="$undef"; 
10618         set d_pwquota; eval $setvar
10619         set d_pwage; eval $setvar
10620         set d_pwchange; eval $setvar
10621         set d_pwclass; eval $setvar
10622         set d_pwexpire; eval $setvar
10623         set d_pwcomment; eval $setvar
10624         set d_pwgecos; eval $setvar
10625         set d_pwpasswd; eval $setvar
10626         ;;
10627 esac
10628
10629 : see if endpwent_r exists
10630 set endpwent_r d_endpwent_r
10631 eval $inlibc
10632 case "$d_endpwent_r" in
10633 "$define")
10634         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
10635         case "$endpwent_r_proto" in
10636         ''|0) try='int endpwent_r(FILE**);'
10637         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
10638         esac
10639         case "$endpwent_r_proto" in
10640         ''|0) try='void endpwent_r(FILE**);'
10641         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
10642         esac
10643         case "$endpwent_r_proto" in
10644         '')     d_endpwent_r=undef
10645                 endpwent_r_proto=0
10646                 echo "Disabling endpwent_r, cannot determine prototype." ;;
10647         * )     case "$endpwent_r_proto" in
10648                 REENTRANT_PROTO*) ;;
10649                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
10650                 esac
10651                 echo "Prototype: $try" ;;
10652         esac
10653         ;;
10654 *)      endpwent_r_proto=0
10655         ;;
10656 esac
10657
10658 : see if endservent exists
10659 set endservent d_endsent
10660 eval $inlibc
10661
10662 : see if endservent_r exists
10663 set endservent_r d_endservent_r
10664 eval $inlibc
10665 case "$d_endservent_r" in
10666 "$define")
10667         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10668         case "$endservent_r_proto" in
10669         ''|0) try='int endservent_r(struct servent_data*);'
10670         ./protochk "extern $try" $hdrs && endservent_r_proto=I_S ;;
10671         esac
10672         case "$endservent_r_proto" in
10673         ''|0) try='void endservent_r(struct servent_data*);'
10674         ./protochk "extern $try" $hdrs && endservent_r_proto=V_S ;;
10675         esac
10676         case "$endservent_r_proto" in
10677         '')     d_endservent_r=undef
10678                 endservent_r_proto=0
10679                 echo "Disabling endservent_r, cannot determine prototype." ;;
10680         * )     case "$endservent_r_proto" in
10681                 REENTRANT_PROTO*) ;;
10682                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
10683                 esac
10684                 echo "Prototype: $try" ;;
10685         esac
10686         ;;
10687 *)      endservent_r_proto=0
10688         ;;
10689 esac
10690
10691 : Locate the flags for 'open()'
10692 echo " "
10693 $cat >try.c <<'EOCP'
10694 #include <sys/types.h>
10695 #ifdef I_FCNTL
10696 #include <fcntl.h>
10697 #endif
10698 #ifdef I_SYS_FILE
10699 #include <sys/file.h>
10700 #endif
10701 int main() {
10702         if(O_RDONLY);
10703 #ifdef O_TRUNC
10704         exit(0);
10705 #else
10706         exit(1);
10707 #endif
10708 }
10709 EOCP
10710 : check sys/file.h first to get FREAD on Sun
10711 if $test `./findhdr sys/file.h` && \
10712                 set try -DI_SYS_FILE && eval $compile; then
10713         h_sysfile=true;
10714         echo "<sys/file.h> defines the O_* constants..." >&4
10715         if $run ./try; then
10716                 echo "and you have the 3 argument form of open()." >&4
10717                 val="$define"
10718         else
10719                 echo "but not the 3 argument form of open().  Oh, well." >&4
10720                 val="$undef"
10721         fi
10722 elif $test `./findhdr fcntl.h` && \
10723                 set try -DI_FCNTL && eval $compile; then
10724         h_fcntl=true;
10725         echo "<fcntl.h> defines the O_* constants..." >&4
10726         if $run ./try; then
10727                 echo "and you have the 3 argument form of open()." >&4
10728                 val="$define"
10729         else
10730                 echo "but not the 3 argument form of open().  Oh, well." >&4
10731                 val="$undef"
10732         fi
10733 else
10734         val="$undef"
10735         echo "I can't find the O_* constant definitions!  You got problems." >&4
10736 fi
10737 set d_open3
10738 eval $setvar
10739 $rm -f try try.*
10740
10741 : see which of string.h or strings.h is needed
10742 echo " "
10743 strings=`./findhdr string.h`
10744 if $test "$strings" && $test -r "$strings"; then
10745         echo "Using <string.h> instead of <strings.h>." >&4
10746         val="$define"
10747 else
10748         val="$undef"
10749         strings=`./findhdr strings.h`
10750         if $test "$strings" && $test -r "$strings"; then
10751                 echo "Using <strings.h> instead of <string.h>." >&4
10752         else
10753                 echo "No string header found -- You'll surely have problems." >&4
10754         fi
10755 fi
10756 set i_string
10757 eval $setvar
10758 case "$i_string" in
10759 "$undef") strings=`./findhdr strings.h`;;
10760 *)        strings=`./findhdr string.h`;;
10761 esac
10762
10763 : see if this is a sys/file.h system
10764 val=''
10765 set sys/file.h val
10766 eval $inhdr
10767
10768 : do we need to include sys/file.h ?
10769 case "$val" in
10770 "$define")
10771         echo " "
10772         if $h_sysfile; then
10773                 val="$define"
10774                 echo "We'll be including <sys/file.h>." >&4
10775         else
10776                 val="$undef"
10777                 echo "We won't be including <sys/file.h>." >&4
10778         fi
10779         ;;
10780 *)
10781         h_sysfile=false
10782         ;;
10783 esac
10784 set i_sysfile
10785 eval $setvar
10786
10787 : see if fcntl.h is there
10788 val=''
10789 set fcntl.h val
10790 eval $inhdr
10791
10792 : see if we can include fcntl.h
10793 case "$val" in
10794 "$define")
10795         echo " "
10796         if $h_fcntl; then
10797                 val="$define"
10798                 echo "We'll be including <fcntl.h>." >&4
10799         else
10800                 val="$undef"
10801                 if $h_sysfile; then
10802         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
10803                 else
10804                         echo "We won't be including <fcntl.h>." >&4
10805                 fi
10806         fi
10807         ;;
10808 *)
10809         h_fcntl=false
10810         val="$undef"
10811         ;;
10812 esac
10813 set i_fcntl
10814 eval $setvar
10815
10816 : check for non-blocking I/O stuff
10817 case "$h_sysfile" in
10818 true) echo "#include <sys/file.h>" > head.c;;
10819 *)
10820        case "$h_fcntl" in
10821        true) echo "#include <fcntl.h>" > head.c;;
10822        *) echo "#include <sys/fcntl.h>" > head.c;;
10823        esac
10824        ;;
10825 esac
10826 echo " "
10827 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
10828 case "$o_nonblock" in
10829 '')
10830         $cat head.c > try.c
10831         $cat >>try.c <<EOCP
10832 #include <stdio.h>
10833 #include <stdlib.h>
10834 #$i_fcntl I_FCNTL
10835 #ifdef I_FCNTL
10836 #include <fcntl.h>
10837 #endif
10838 int main() {
10839 #ifdef O_NONBLOCK
10840         printf("O_NONBLOCK\n");
10841         exit(0);
10842 #endif
10843 #ifdef O_NDELAY
10844         printf("O_NDELAY\n");
10845         exit(0);
10846 #endif
10847 #ifdef FNDELAY
10848         printf("FNDELAY\n");
10849         exit(0);
10850 #endif
10851         exit(0);
10852 }
10853 EOCP
10854         set try
10855         if eval $compile_ok; then
10856                 o_nonblock=`$run ./try`
10857                 case "$o_nonblock" in
10858                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
10859                 *) echo "Seems like we can use $o_nonblock.";;
10860                 esac
10861         else
10862                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
10863         fi
10864         ;;
10865 *) echo "Using $hint value $o_nonblock.";;
10866 esac
10867 $rm -f try try.* .out core
10868
10869 echo " "
10870 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
10871 case "$eagain" in
10872 '')
10873         $cat head.c > try.c
10874         $cat >>try.c <<EOCP
10875 #include <errno.h>
10876 #include <sys/types.h>
10877 #include <signal.h>
10878 #include <stdio.h> 
10879 #include <stdlib.h> 
10880 #$i_fcntl I_FCNTL
10881 #ifdef I_FCNTL
10882 #include <fcntl.h>
10883 #endif
10884 #define MY_O_NONBLOCK $o_nonblock
10885 #ifndef errno  /* XXX need better Configure test */
10886 extern int errno;
10887 #endif
10888 #$i_unistd I_UNISTD
10889 #ifdef I_UNISTD
10890 #include <unistd.h>
10891 #endif
10892 #$i_string I_STRING
10893 #ifdef I_STRING
10894 #include <string.h>
10895 #else
10896 #include <strings.h>
10897 #endif
10898 $signal_t blech(x) int x; { exit(3); }
10899 EOCP
10900         $cat >> try.c <<'EOCP'
10901 int main()
10902 {
10903         int pd[2];
10904         int pu[2];
10905         char buf[1];
10906         char string[100];
10907
10908         pipe(pd);       /* Down: child -> parent */
10909         pipe(pu);       /* Up: parent -> child */
10910         if (0 != fork()) {
10911                 int ret;
10912                 close(pd[1]);   /* Parent reads from pd[0] */
10913                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
10914 #ifdef F_SETFL
10915                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
10916                         exit(1);
10917 #else
10918                 exit(4);
10919 #endif
10920                 signal(SIGALRM, blech);
10921                 alarm(5);
10922                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
10923                         exit(2);
10924                 sprintf(string, "%d\n", ret);
10925                 write(2, string, strlen(string));
10926                 alarm(0);
10927 #ifdef EAGAIN
10928                 if (errno == EAGAIN) {
10929                         printf("EAGAIN\n");
10930                         goto ok;
10931                 }
10932 #endif
10933 #ifdef EWOULDBLOCK
10934                 if (errno == EWOULDBLOCK)
10935                         printf("EWOULDBLOCK\n");
10936 #endif
10937         ok:
10938                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
10939                 sleep(2);                               /* Give it time to close our pipe */
10940                 alarm(5);
10941                 ret = read(pd[0], buf, 1);      /* Should read EOF */
10942                 alarm(0);
10943                 sprintf(string, "%d\n", ret);
10944                 write(4, string, strlen(string));
10945                 exit(0);
10946         }
10947
10948         close(pd[0]);                   /* We write to pd[1] */
10949         close(pu[1]);                   /* We read from pu[0] */
10950         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
10951         close(pd[1]);                   /* Pipe pd is now fully closed! */
10952         exit(0);                                /* Bye bye, thank you for playing! */
10953 }
10954 EOCP
10955         set try
10956         if eval $compile_ok; then
10957                 echo "$startsh" >mtry
10958                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
10959                 chmod +x mtry
10960                 ./mtry >/dev/null 2>&1
10961                 case $? in
10962                 0) eagain=`$cat try.out`;;
10963                 1) echo "Could not perform non-blocking setting!";;
10964                 2) echo "I did a successful read() for something that was not there!";;
10965                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
10966                 4) echo "Could not find F_SETFL!";;
10967                 *) echo "Something terribly wrong happened during testing.";;
10968                 esac
10969                 rd_nodata=`$cat try.ret`
10970                 echo "A read() system call with no data present returns $rd_nodata."
10971                 case "$rd_nodata" in
10972                 0|-1) ;;
10973                 *)
10974                         echo "(That's peculiar, fixing that to be -1.)"
10975                         rd_nodata=-1
10976                         ;;
10977                 esac
10978                 case "$eagain" in
10979                 '')
10980                         echo "Forcing errno EAGAIN on read() with no data available."
10981                         eagain=EAGAIN
10982                         ;;
10983                 *)
10984                         echo "Your read() sets errno to $eagain when no data is available."
10985                         ;;
10986                 esac
10987                 status=`$cat try.err`
10988                 case "$status" in
10989                 0) echo "And it correctly returns 0 to signal EOF.";;
10990                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
10991                 *) echo "However, your read() returns '$status' on EOF??";;
10992                 esac
10993                 val="$define"
10994                 if test "$status" = "$rd_nodata"; then
10995                         echo "WARNING: you can't distinguish between EOF and no data!"
10996                         val="$undef"
10997                 fi
10998         else
10999                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11000                 eagain=EAGAIN
11001         fi
11002         set d_eofnblk
11003         eval $setvar
11004         ;;
11005 *)
11006         echo "Using $hint value $eagain."
11007         echo "Your read() returns $rd_nodata when no data is present."
11008         case "$d_eofnblk" in
11009         "$define") echo "And you can see EOF because read() returns 0.";;
11010         "$undef") echo "But you can't see EOF status from read() returned value.";;
11011         *)
11012                 echo "(Assuming you can't see EOF status from read anyway.)"
11013                 d_eofnblk=$undef
11014                 ;;
11015         esac
11016         ;;
11017 esac
11018 $rm -f try try.* .out core head.c mtry
11019
11020 : see if fchdir exists
11021 set fchdir d_fchdir
11022 eval $inlibc
11023
11024 : see if fchmod exists
11025 set fchmod d_fchmod
11026 eval $inlibc
11027
11028 : see if fchown exists
11029 set fchown d_fchown
11030 eval $inlibc
11031
11032 : see if this is an fcntl system
11033 set fcntl d_fcntl
11034 eval $inlibc
11035
11036 echo " "
11037 : See if fcntl-based locking works.
11038 $cat >try.c <<EOCP
11039 #include <stdlib.h>
11040 #include <unistd.h>
11041 #include <fcntl.h>
11042 #include <signal.h>
11043 $signal_t blech(x) int x; { exit(3); }
11044 int main() {
11045 #if defined(F_SETLK) && defined(F_SETLKW)
11046      struct flock flock;
11047      int retval, fd;
11048      fd = open("try.c", O_RDONLY);
11049      flock.l_type = F_RDLCK;
11050      flock.l_whence = SEEK_SET;
11051      flock.l_start = flock.l_len = 0;
11052      signal(SIGALRM, blech);
11053      alarm(10);
11054      retval = fcntl(fd, F_SETLK, &flock);
11055      close(fd);
11056      (retval < 0 ? exit(2) : exit(0));
11057 #else
11058      exit(2);
11059 #endif
11060 }
11061 EOCP
11062 echo "Checking if fcntl-based file locking works... "
11063 case "$d_fcntl" in
11064 "$define")
11065         set try
11066         if eval $compile_ok; then
11067                 if $run ./try; then
11068                         echo "Yes, it seems to work."
11069                         val="$define"
11070                 else
11071                         echo "Nope, it didn't work."
11072                         val="$undef"
11073                         case "$?" in
11074                         3) $cat >&4 <<EOM
11075 ***
11076 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11077 *** This is (almost) impossible.
11078 *** If your NFS lock daemons are not feeling well, something like
11079 *** this may happen, please investigate.  Cannot continue, aborting.
11080 ***
11081 EOM
11082                                 exit 1
11083                                 ;;
11084                         esac
11085                 fi
11086         else
11087                 echo "I'm unable to compile the test program, so I'll assume not."
11088                 val="$undef"
11089         fi
11090         ;;
11091 *) val="$undef";
11092         echo "Nope, since you don't even have fcntl()."
11093         ;;
11094 esac
11095 set d_fcntl_can_lock
11096 eval $setvar
11097 $rm -f try*
11098
11099
11100 : check for fd_set items
11101 $cat <<EOM
11102
11103 Checking to see how well your C compiler handles fd_set and friends ...
11104 EOM
11105 $cat >try.c <<EOCP
11106 #$i_systime I_SYS_TIME
11107 #$i_sysselct I_SYS_SELECT
11108 #$d_socket HAS_SOCKET
11109 #include <sys/types.h>
11110 #ifdef HAS_SOCKET
11111 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11112 #endif
11113 #ifdef I_SYS_TIME
11114 #include <sys/time.h>
11115 #endif
11116 #ifdef I_SYS_SELECT
11117 #include <sys/select.h>
11118 #endif
11119 int main() {
11120         fd_set fds;
11121
11122 #ifdef TRYBITS
11123         if(fds.fds_bits);
11124 #endif
11125
11126 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11127         exit(0);
11128 #else
11129         exit(1);
11130 #endif
11131 }
11132 EOCP
11133 set try -DTRYBITS
11134 if eval $compile; then
11135         d_fds_bits="$define"
11136         d_fd_set="$define"
11137         echo "Well, your system knows about the normal fd_set typedef..." >&4
11138         if $run ./try; then
11139                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11140                 d_fd_macros="$define"
11141         else
11142                 $cat >&4 <<'EOM'
11143 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
11144 EOM
11145                 d_fd_macros="$undef"
11146         fi
11147 else
11148         $cat <<'EOM'
11149 Hmm, your compiler has some difficulty with fd_set.  Checking further...
11150 EOM
11151         set try
11152         if eval $compile; then
11153                 d_fds_bits="$undef"
11154                 d_fd_set="$define"
11155                 echo "Well, your system has some sort of fd_set available..." >&4
11156                 if $run ./try; then
11157                         echo "and you have the normal fd_set macros." >&4
11158                         d_fd_macros="$define"
11159                 else
11160                         $cat <<'EOM'
11161 but not the normal fd_set macros!  Gross!  More work for me...
11162 EOM
11163                         d_fd_macros="$undef"
11164                 fi
11165         else
11166         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
11167                 d_fd_set="$undef"
11168                 d_fds_bits="$undef"
11169                 d_fd_macros="$undef"
11170         fi
11171 fi
11172 $rm -f try try.*
11173
11174 : see if fgetpos exists
11175 set fgetpos d_fgetpos
11176 eval $inlibc
11177
11178 : see if finite exists
11179 set finite d_finite
11180 eval $inlibc
11181
11182 : see if finitel exists
11183 set finitel d_finitel
11184 eval $inlibc
11185
11186 : see if flock exists
11187 set flock d_flock
11188 eval $inlibc
11189
11190 : see if prototype for flock is available
11191 echo " "
11192 set d_flockproto flock $i_sysfile sys/file.h
11193 eval $hasproto
11194
11195 : see if fork exists
11196 set fork d_fork
11197 eval $inlibc
11198
11199 : see if fp_class exists
11200 set fp_class d_fp_class
11201 eval $inlibc
11202
11203 : see if pathconf exists
11204 set pathconf d_pathconf
11205 eval $inlibc
11206
11207 : see if fpathconf exists
11208 set fpathconf d_fpathconf
11209 eval $inlibc
11210
11211 : see if fpclass exists
11212 set fpclass d_fpclass
11213 eval $inlibc
11214
11215 : see if fpclassify exists
11216 set fpclassify d_fpclassify
11217 eval $inlibc
11218
11219 : see if fpclassl exists
11220 set fpclassl d_fpclassl
11221 eval $inlibc
11222
11223
11224 : check for fpos64_t
11225 echo " "
11226 echo "Checking to see if you have fpos64_t..." >&4
11227 $cat >try.c <<EOCP
11228 #include <stdio.h>
11229 int main() { fpos64_t x = 7; }
11230 EOCP
11231 set try
11232 if eval $compile; then
11233         val="$define"
11234         echo "You have fpos64_t."
11235 else
11236         val="$undef"
11237         echo "You do not have fpos64_t."
11238         case "$fpossize" in
11239         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11240         esac
11241 fi
11242 $rm -f try.* try
11243 set d_fpos64_t
11244 eval $setvar
11245
11246 : see if frexpl exists
11247 set frexpl d_frexpl
11248 eval $inlibc
11249
11250 : see if this is a sys/param system
11251 set sys/param.h i_sysparam
11252 eval $inhdr
11253
11254 : see if this is a sys/mount.h system
11255 set sys/mount.h i_sysmount
11256 eval $inhdr
11257
11258
11259 echo " "
11260 echo "Checking to see if your system supports struct fs_data..." >&4
11261 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11262 eval $hasstruct
11263 case "$d_fs_data_s" in
11264 "$define")      echo "Yes, it does."   ;;
11265 *)              echo "No, it doesn't." ;;
11266 esac
11267
11268 : see if fseeko exists
11269 set fseeko d_fseeko
11270 eval $inlibc
11271 case "$longsize" in
11272 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11273 esac
11274
11275 : see if fsetpos exists
11276 set fsetpos d_fsetpos
11277 eval $inlibc
11278
11279
11280 : see if fstatfs exists
11281 set fstatfs d_fstatfs
11282 eval $inlibc
11283
11284
11285 : see if statvfs exists
11286 set statvfs d_statvfs
11287 eval $inlibc
11288
11289 : see if fstatvfs exists
11290 set fstatvfs d_fstatvfs
11291 eval $inlibc
11292
11293
11294 : see if fsync exists
11295 set fsync d_fsync
11296 eval $inlibc
11297
11298 : see if ftello exists
11299 set ftello d_ftello
11300 eval $inlibc
11301 case "$longsize" in
11302 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11303 esac
11304
11305 : see if getcwd exists
11306 set getcwd d_getcwd
11307 eval $inlibc
11308
11309 : see if getespwnam exists
11310 set getespwnam d_getespwnam
11311 eval $inlibc
11312
11313
11314 : see if getfsstat exists
11315 set getfsstat d_getfsstat
11316 eval $inlibc
11317
11318 : see if getgrent exists
11319 set getgrent d_getgrent
11320 eval $inlibc
11321
11322 : see if getgrent_r exists
11323 set getgrent_r d_getgrent_r
11324 eval $inlibc
11325 case "$d_getgrent_r" in
11326 "$define")
11327         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11328         case "$getgrent_r_proto" in
11329         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
11330         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
11331         esac
11332         case "$getgrent_r_proto" in
11333         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
11334         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
11335         esac
11336         case "$getgrent_r_proto" in
11337         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
11338         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
11339         esac
11340         case "$getgrent_r_proto" in
11341         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
11342         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
11343         esac
11344         case "$getgrent_r_proto" in
11345         ''|0) try='int getgrent_r(struct group*, char*, int);'
11346         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
11347         esac
11348         case "$getgrent_r_proto" in
11349         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
11350         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
11351         esac
11352         case "$getgrent_r_proto" in
11353         '')     d_getgrent_r=undef
11354                 getgrent_r_proto=0
11355                 echo "Disabling getgrent_r, cannot determine prototype." ;;
11356         * )     case "$getgrent_r_proto" in
11357                 REENTRANT_PROTO*) ;;
11358                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
11359                 esac
11360                 echo "Prototype: $try" ;;
11361         esac
11362         ;;
11363 *)      getgrent_r_proto=0
11364         ;;
11365 esac
11366
11367 : see if getgrgid_r exists
11368 set getgrgid_r d_getgrgid_r
11369 eval $inlibc
11370 case "$d_getgrgid_r" in
11371 "$define")
11372         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11373         case "$getgrgid_r_proto" in
11374         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
11375         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
11376         esac
11377         case "$getgrgid_r_proto" in
11378         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
11379         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
11380         esac
11381         case "$getgrgid_r_proto" in
11382         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
11383         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
11384         esac
11385         case "$getgrgid_r_proto" in
11386         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
11387         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
11388         esac
11389         case "$getgrgid_r_proto" in
11390         '')     d_getgrgid_r=undef
11391                 getgrgid_r_proto=0
11392                 echo "Disabling getgrgid_r, cannot determine prototype." ;;
11393         * )     case "$getgrgid_r_proto" in
11394                 REENTRANT_PROTO*) ;;
11395                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
11396                 esac
11397                 echo "Prototype: $try" ;;
11398         esac
11399         ;;
11400 *)      getgrgid_r_proto=0
11401         ;;
11402 esac
11403
11404 : see if getgrnam_r exists
11405 set getgrnam_r d_getgrnam_r
11406 eval $inlibc
11407 case "$d_getgrnam_r" in
11408 "$define")
11409         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11410         case "$getgrnam_r_proto" in
11411         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
11412         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
11413         esac
11414         case "$getgrnam_r_proto" in
11415         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
11416         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
11417         esac
11418         case "$getgrnam_r_proto" in
11419         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
11420         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
11421         esac
11422         case "$getgrnam_r_proto" in
11423         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
11424         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
11425         esac
11426         case "$getgrnam_r_proto" in
11427         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
11428         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
11429         esac
11430         case "$getgrnam_r_proto" in
11431         '')     d_getgrnam_r=undef
11432                 getgrnam_r_proto=0
11433                 echo "Disabling getgrnam_r, cannot determine prototype." ;;
11434         * )     case "$getgrnam_r_proto" in
11435                 REENTRANT_PROTO*) ;;
11436                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
11437                 esac
11438                 echo "Prototype: $try" ;;
11439         esac
11440         ;;
11441 *)      getgrnam_r_proto=0
11442         ;;
11443 esac
11444
11445 : see if gethostbyaddr exists
11446 set gethostbyaddr d_gethbyaddr
11447 eval $inlibc
11448
11449 : see if gethostbyname exists
11450 set gethostbyname d_gethbyname
11451 eval $inlibc
11452
11453 : see if gethostent exists
11454 set gethostent d_gethent
11455 eval $inlibc
11456
11457 : see how we will look up host name
11458 echo " "
11459 call=''
11460 if set gethostname val -f d_gethname; eval $csym; $val; then
11461         echo 'gethostname() found.' >&4
11462         d_gethname="$define"
11463         call=gethostname
11464 fi
11465 if set uname val -f d_uname; eval $csym; $val; then
11466         if ./xenix; then
11467                 $cat <<'EOM'
11468 uname() was found, but you're running xenix, and older versions of xenix
11469 have a broken uname(). If you don't really know whether your xenix is old
11470 enough to have a broken system call, use the default answer.
11471
11472 EOM
11473                 dflt=y
11474                 case "$d_uname" in
11475                 "$define") dflt=n;;
11476                 esac
11477                 rp='Is your uname() broken?'
11478                 . ./myread
11479                 case "$ans" in
11480                 n*) d_uname="$define"; call=uname;;
11481                 esac
11482         else
11483                 echo 'uname() found.' >&4
11484                 d_uname="$define"
11485                 case "$call" in
11486                 '') call=uname ;;
11487                 esac
11488         fi
11489 fi
11490 case "$d_gethname" in
11491 '') d_gethname="$undef";;
11492 esac
11493 case "$d_uname" in
11494 '') d_uname="$undef";;
11495 esac
11496 case "$d_uname$d_gethname" in
11497 *define*)
11498         dflt=n
11499         cat <<EOM
11500  
11501 Every now and then someone has a $call() that lies about the hostname
11502 but can't be fixed for political or economic reasons.  If you wish, I can
11503 pretend $call() isn't there and maybe compute hostname at run-time
11504 thanks to the '$phostname' command.
11505
11506 EOM
11507         rp="Shall I ignore $call() from now on?"
11508         . ./myread
11509         case "$ans" in
11510         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
11511         esac;;
11512 esac
11513 case "$phostname" in
11514 '') aphostname='';;
11515 *) case "$aphostname" in
11516         /*) ;;
11517         *) set X $phostname
11518                 shift
11519                 file=$1
11520                 shift
11521                 file=`./loc $file $file $pth`
11522                 aphostname=`echo $file $*`
11523                 ;;
11524         esac
11525         ;;
11526 esac
11527 case "$d_uname$d_gethname" in
11528 *define*) ;;
11529 *)
11530         case "$phostname" in
11531         '')
11532                 echo "There will be no way for $package to get your hostname." >&4;;
11533         *)
11534         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
11535                 ;;
11536         esac;;
11537 esac
11538 case "$d_phostname" in
11539 '') d_phostname="$undef";;
11540 esac
11541
11542 : see if gethostbyaddr_r exists
11543 set gethostbyaddr_r d_gethostbyaddr_r
11544 eval $inlibc
11545 case "$d_gethostbyaddr_r" in
11546 "$define")
11547         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11548         case "$gethostbyaddr_r_proto" in
11549         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
11550         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
11551         esac
11552         case "$gethostbyaddr_r_proto" in
11553         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
11554         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
11555         esac
11556         case "$gethostbyaddr_r_proto" in
11557         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
11558         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
11559         esac
11560         case "$gethostbyaddr_r_proto" in
11561         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
11562         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
11563         esac
11564         case "$gethostbyaddr_r_proto" in
11565         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
11566         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
11567         esac
11568         case "$gethostbyaddr_r_proto" in
11569         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
11570         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
11571         esac
11572         case "$gethostbyaddr_r_proto" in
11573         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
11574         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
11575         esac
11576         case "$gethostbyaddr_r_proto" in
11577         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
11578         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
11579         esac
11580         case "$gethostbyaddr_r_proto" in
11581         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
11582         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
11583         esac
11584         case "$gethostbyaddr_r_proto" in
11585         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
11586         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
11587         esac
11588         case "$gethostbyaddr_r_proto" in
11589         '')     d_gethostbyaddr_r=undef
11590                 gethostbyaddr_r_proto=0
11591                 echo "Disabling gethostbyaddr_r, cannot determine prototype." ;;
11592         * )     case "$gethostbyaddr_r_proto" in
11593                 REENTRANT_PROTO*) ;;
11594                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
11595                 esac
11596                 echo "Prototype: $try" ;;
11597         esac
11598         ;;
11599 *)      gethostbyaddr_r_proto=0
11600         ;;
11601 esac
11602
11603 : see if gethostbyname_r exists
11604 set gethostbyname_r d_gethostbyname_r
11605 eval $inlibc
11606 case "$d_gethostbyname_r" in
11607 "$define")
11608         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11609         case "$gethostbyname_r_proto" in
11610         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
11611         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
11612         esac
11613         case "$gethostbyname_r_proto" in
11614         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
11615         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
11616         esac
11617         case "$gethostbyname_r_proto" in
11618         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
11619         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
11620         esac
11621         case "$gethostbyname_r_proto" in
11622         '')     d_gethostbyname_r=undef
11623                 gethostbyname_r_proto=0
11624                 echo "Disabling gethostbyname_r, cannot determine prototype." ;;
11625         * )     case "$gethostbyname_r_proto" in
11626                 REENTRANT_PROTO*) ;;
11627                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
11628                 esac
11629                 echo "Prototype: $try" ;;
11630         esac
11631         ;;
11632 *)      gethostbyname_r_proto=0
11633         ;;
11634 esac
11635
11636 : see if gethostent_r exists
11637 set gethostent_r d_gethostent_r
11638 eval $inlibc
11639 case "$d_gethostent_r" in
11640 "$define")
11641         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11642         case "$gethostent_r_proto" in
11643         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
11644         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
11645         esac
11646         case "$gethostent_r_proto" in
11647         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
11648         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
11649         esac
11650         case "$gethostent_r_proto" in
11651         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
11652         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
11653         esac
11654         case "$gethostent_r_proto" in
11655         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
11656         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
11657         esac
11658         case "$gethostent_r_proto" in
11659         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
11660         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
11661         esac
11662         case "$gethostent_r_proto" in
11663         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
11664         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
11665         esac
11666         case "$gethostent_r_proto" in
11667         '')     d_gethostent_r=undef
11668                 gethostent_r_proto=0
11669                 echo "Disabling gethostent_r, cannot determine prototype." ;;
11670         * )     case "$gethostent_r_proto" in
11671                 REENTRANT_PROTO*) ;;
11672                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
11673                 esac
11674                 echo "Prototype: $try" ;;
11675         esac
11676         ;;
11677 *)      gethostent_r_proto=0
11678         ;;
11679 esac
11680
11681 : see if prototypes for various gethostxxx netdb.h functions are available
11682 echo " "
11683 set d_gethostprotos gethostent $i_netdb netdb.h
11684 eval $hasproto
11685
11686 : see if getitimer exists
11687 set getitimer d_getitimer
11688 eval $inlibc
11689
11690 : see if getlogin exists
11691 set getlogin d_getlogin
11692 eval $inlibc
11693
11694 : see if getlogin_r exists
11695 set getlogin_r d_getlogin_r
11696 eval $inlibc
11697 case "$d_getlogin_r" in
11698 "$define")
11699         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
11700         case "$getlogin_r_proto" in
11701         ''|0) try='int getlogin_r(char*, size_t);'
11702         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
11703         esac
11704         case "$getlogin_r_proto" in
11705         ''|0) try='int getlogin_r(char*, int);'
11706         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
11707         esac
11708         case "$getlogin_r_proto" in
11709         ''|0) try='char* getlogin_r(char*, size_t);'
11710         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
11711         esac
11712         case "$getlogin_r_proto" in
11713         ''|0) try='char* getlogin_r(char*, int);'
11714         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
11715         esac
11716         case "$getlogin_r_proto" in
11717         '')     d_getlogin_r=undef
11718                 getlogin_r_proto=0
11719                 echo "Disabling getlogin_r, cannot determine prototype." ;;
11720         * )     case "$getlogin_r_proto" in
11721                 REENTRANT_PROTO*) ;;
11722                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
11723                 esac
11724                 echo "Prototype: $try" ;;
11725         esac
11726         ;;
11727 *)      getlogin_r_proto=0
11728         ;;
11729 esac
11730
11731 : see if getmnt exists
11732 set getmnt d_getmnt
11733 eval $inlibc
11734
11735 : see if getmntent exists
11736 set getmntent d_getmntent
11737 eval $inlibc
11738
11739 : see if getnetbyaddr exists
11740 set getnetbyaddr d_getnbyaddr
11741 eval $inlibc
11742
11743 : see if getnetbyname exists
11744 set getnetbyname d_getnbyname
11745 eval $inlibc
11746
11747 : see if getnetent exists
11748 set getnetent d_getnent
11749 eval $inlibc
11750
11751 : see if getnetbyaddr_r exists
11752 set getnetbyaddr_r d_getnetbyaddr_r
11753 eval $inlibc
11754 case "$d_getnetbyaddr_r" in
11755 "$define")
11756         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11757         case "$getnetbyaddr_r_proto" in
11758         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
11759         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
11760         esac
11761         case "$getnetbyaddr_r_proto" in
11762         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
11763         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
11764         esac
11765         case "$getnetbyaddr_r_proto" in
11766         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
11767         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
11768         esac
11769         case "$getnetbyaddr_r_proto" in
11770         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
11771         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
11772         esac
11773         case "$getnetbyaddr_r_proto" in
11774         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
11775         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
11776         esac
11777         case "$getnetbyaddr_r_proto" in
11778         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
11779         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
11780         esac
11781         case "$getnetbyaddr_r_proto" in
11782         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
11783         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
11784         esac
11785         case "$getnetbyaddr_r_proto" in
11786         '')     d_getnetbyaddr_r=undef
11787                 getnetbyaddr_r_proto=0
11788                 echo "Disabling getnetbyaddr_r, cannot determine prototype." ;;
11789         * )     case "$getnetbyaddr_r_proto" in
11790                 REENTRANT_PROTO*) ;;
11791                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
11792                 esac
11793                 echo "Prototype: $try" ;;
11794         esac
11795         ;;
11796 *)      getnetbyaddr_r_proto=0
11797         ;;
11798 esac
11799
11800 : see if getnetbyname_r exists
11801 set getnetbyname_r d_getnetbyname_r
11802 eval $inlibc
11803 case "$d_getnetbyname_r" in
11804 "$define")
11805         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11806         case "$getnetbyname_r_proto" in
11807         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
11808         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
11809         esac
11810         case "$getnetbyname_r_proto" in
11811         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
11812         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
11813         esac
11814         case "$getnetbyname_r_proto" in
11815         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
11816         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
11817         esac
11818         case "$getnetbyname_r_proto" in
11819         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
11820         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
11821         esac
11822         case "$getnetbyname_r_proto" in
11823         '')     d_getnetbyname_r=undef
11824                 getnetbyname_r_proto=0
11825                 echo "Disabling getnetbyname_r, cannot determine prototype." ;;
11826         * )     case "$getnetbyname_r_proto" in
11827                 REENTRANT_PROTO*) ;;
11828                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
11829                 esac
11830                 echo "Prototype: $try" ;;
11831         esac
11832         ;;
11833 *)      getnetbyname_r_proto=0
11834         ;;
11835 esac
11836
11837 : see if getnetent_r exists
11838 set getnetent_r d_getnetent_r
11839 eval $inlibc
11840 case "$d_getnetent_r" in
11841 "$define")
11842         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11843         case "$getnetent_r_proto" in
11844         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
11845         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
11846         esac
11847         case "$getnetent_r_proto" in
11848         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
11849         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
11850         esac
11851         case "$getnetent_r_proto" in
11852         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
11853         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
11854         esac
11855         case "$getnetent_r_proto" in
11856         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
11857         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
11858         esac
11859         case "$getnetent_r_proto" in
11860         ''|0) try='int getnetent_r(struct netent*, char*, int);'
11861         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
11862         esac
11863         case "$getnetent_r_proto" in
11864         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
11865         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
11866         esac
11867         case "$getnetent_r_proto" in
11868         '')     d_getnetent_r=undef
11869                 getnetent_r_proto=0
11870                 echo "Disabling getnetent_r, cannot determine prototype." ;;
11871         * )     case "$getnetent_r_proto" in
11872                 REENTRANT_PROTO*) ;;
11873                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
11874                 esac
11875                 echo "Prototype: $try" ;;
11876         esac
11877         ;;
11878 *)      getnetent_r_proto=0
11879         ;;
11880 esac
11881
11882 : see if prototypes for various getnetxxx netdb.h functions are available
11883 echo " "
11884 set d_getnetprotos getnetent $i_netdb netdb.h
11885 eval $hasproto
11886
11887 : see if getpagesize exists
11888 set getpagesize d_getpagsz
11889 eval $inlibc
11890
11891
11892 : see if getprotobyname exists
11893 set getprotobyname d_getpbyname
11894 eval $inlibc
11895
11896 : see if getprotobynumber exists
11897 set getprotobynumber d_getpbynumber
11898 eval $inlibc
11899
11900 : see if getprotoent exists
11901 set getprotoent d_getpent
11902 eval $inlibc
11903
11904 : see if getpgid exists
11905 set getpgid d_getpgid
11906 eval $inlibc
11907
11908 : see if getpgrp2 exists
11909 set getpgrp2 d_getpgrp2
11910 eval $inlibc
11911
11912 : see if getppid exists
11913 set getppid d_getppid
11914 eval $inlibc
11915
11916 : see if getpriority exists
11917 set getpriority d_getprior
11918 eval $inlibc
11919
11920 : see if getprotobyname_r exists
11921 set getprotobyname_r d_getprotobyname_r
11922 eval $inlibc
11923 case "$d_getprotobyname_r" in
11924 "$define")
11925         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11926         case "$getprotobyname_r_proto" in
11927         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
11928         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
11929         esac
11930         case "$getprotobyname_r_proto" in
11931         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
11932         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
11933         esac
11934         case "$getprotobyname_r_proto" in
11935         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
11936         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
11937         esac
11938         case "$getprotobyname_r_proto" in
11939         '')     d_getprotobyname_r=undef
11940                 getprotobyname_r_proto=0
11941                 echo "Disabling getprotobyname_r, cannot determine prototype." ;;
11942         * )     case "$getprotobyname_r_proto" in
11943                 REENTRANT_PROTO*) ;;
11944                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
11945                 esac
11946                 echo "Prototype: $try" ;;
11947         esac
11948         ;;
11949 *)      getprotobyname_r_proto=0
11950         ;;
11951 esac
11952
11953 : see if getprotobynumber_r exists
11954 set getprotobynumber_r d_getprotobynumber_r
11955 eval $inlibc
11956 case "$d_getprotobynumber_r" in
11957 "$define")
11958         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11959         case "$getprotobynumber_r_proto" in
11960         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
11961         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
11962         esac
11963         case "$getprotobynumber_r_proto" in
11964         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
11965         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
11966         esac
11967         case "$getprotobynumber_r_proto" in
11968         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
11969         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
11970         esac
11971         case "$getprotobynumber_r_proto" in
11972         '')     d_getprotobynumber_r=undef
11973                 getprotobynumber_r_proto=0
11974                 echo "Disabling getprotobynumber_r, cannot determine prototype." ;;
11975         * )     case "$getprotobynumber_r_proto" in
11976                 REENTRANT_PROTO*) ;;
11977                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
11978                 esac
11979                 echo "Prototype: $try" ;;
11980         esac
11981         ;;
11982 *)      getprotobynumber_r_proto=0
11983         ;;
11984 esac
11985
11986 : see if getprotoent_r exists
11987 set getprotoent_r d_getprotoent_r
11988 eval $inlibc
11989 case "$d_getprotoent_r" in
11990 "$define")
11991         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11992         case "$getprotoent_r_proto" in
11993         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
11994         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
11995         esac
11996         case "$getprotoent_r_proto" in
11997         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
11998         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
11999         esac
12000         case "$getprotoent_r_proto" in
12001         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12002         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12003         esac
12004         case "$getprotoent_r_proto" in
12005         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12006         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12007         esac
12008         case "$getprotoent_r_proto" in
12009         '')     d_getprotoent_r=undef
12010                 getprotoent_r_proto=0
12011                 echo "Disabling getprotoent_r, cannot determine prototype." ;;
12012         * )     case "$getprotoent_r_proto" in
12013                 REENTRANT_PROTO*) ;;
12014                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12015                 esac
12016                 echo "Prototype: $try" ;;
12017         esac
12018         ;;
12019 *)      getprotoent_r_proto=0
12020         ;;
12021 esac
12022
12023 : see if prototypes for various getprotoxxx netdb.h functions are available
12024 echo " "
12025 set d_getprotoprotos getprotoent $i_netdb netdb.h
12026 eval $hasproto
12027
12028 : see if getprpwnam exists
12029 set getprpwnam d_getprpwnam
12030 eval $inlibc
12031
12032 : see if getpwent exists
12033 set getpwent d_getpwent
12034 eval $inlibc
12035
12036 : see if getpwent_r exists
12037 set getpwent_r d_getpwent_r
12038 eval $inlibc
12039 case "$d_getpwent_r" in
12040 "$define")
12041         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12042         case "$getpwent_r_proto" in
12043         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12044         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12045         esac
12046         case "$getpwent_r_proto" in
12047         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12048         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12049         esac
12050         case "$getpwent_r_proto" in
12051         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12052         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12053         esac
12054         case "$getpwent_r_proto" in
12055         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12056         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12057         esac
12058         case "$getpwent_r_proto" in
12059         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12060         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12061         esac
12062         case "$getpwent_r_proto" in
12063         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12064         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12065         esac
12066         case "$getpwent_r_proto" in
12067         '')     d_getpwent_r=undef
12068                 getpwent_r_proto=0
12069                 echo "Disabling getpwent_r, cannot determine prototype." ;;
12070         * )     case "$getpwent_r_proto" in
12071                 REENTRANT_PROTO*) ;;
12072                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12073                 esac
12074                 echo "Prototype: $try" ;;
12075         esac
12076         ;;
12077 *)      getpwent_r_proto=0
12078         ;;
12079 esac
12080
12081 : see if getpwnam_r exists
12082 set getpwnam_r d_getpwnam_r
12083 eval $inlibc
12084 case "$d_getpwnam_r" in
12085 "$define")
12086         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12087         case "$getpwnam_r_proto" in
12088         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12089         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12090         esac
12091         case "$getpwnam_r_proto" in
12092         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
12093         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
12094         esac
12095         case "$getpwnam_r_proto" in
12096         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
12097         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
12098         esac
12099         case "$getpwnam_r_proto" in
12100         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
12101         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
12102         esac
12103         case "$getpwnam_r_proto" in
12104         '')     d_getpwnam_r=undef
12105                 getpwnam_r_proto=0
12106                 echo "Disabling getpwnam_r, cannot determine prototype." ;;
12107         * )     case "$getpwnam_r_proto" in
12108                 REENTRANT_PROTO*) ;;
12109                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
12110                 esac
12111                 echo "Prototype: $try" ;;
12112         esac
12113         ;;
12114 *)      getpwnam_r_proto=0
12115         ;;
12116 esac
12117
12118 : see if getpwuid_r exists
12119 set getpwuid_r d_getpwuid_r
12120 eval $inlibc
12121 case "$d_getpwuid_r" in
12122 "$define")
12123         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12124         case "$getpwuid_r_proto" in
12125         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
12126         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
12127         esac
12128         case "$getpwuid_r_proto" in
12129         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
12130         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
12131         esac
12132         case "$getpwuid_r_proto" in
12133         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
12134         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
12135         esac
12136         case "$getpwuid_r_proto" in
12137         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
12138         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
12139         esac
12140         case "$getpwuid_r_proto" in
12141         '')     d_getpwuid_r=undef
12142                 getpwuid_r_proto=0
12143                 echo "Disabling getpwuid_r, cannot determine prototype." ;;
12144         * )     case "$getpwuid_r_proto" in
12145                 REENTRANT_PROTO*) ;;
12146                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
12147                 esac
12148                 echo "Prototype: $try" ;;
12149         esac
12150         ;;
12151 *)      getpwuid_r_proto=0
12152         ;;
12153 esac
12154
12155
12156 : see if getservbyname exists
12157 set getservbyname d_getsbyname
12158 eval $inlibc
12159
12160 : see if getservbyport exists
12161 set getservbyport d_getsbyport
12162 eval $inlibc
12163
12164 : see if getservent exists
12165 set getservent d_getsent
12166 eval $inlibc
12167
12168 : see if getservbyname_r exists
12169 set getservbyname_r d_getservbyname_r
12170 eval $inlibc
12171 case "$d_getservbyname_r" in
12172 "$define")
12173         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12174         case "$getservbyname_r_proto" in
12175         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
12176         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
12177         esac
12178         case "$getservbyname_r_proto" in
12179         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
12180         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
12181         esac
12182         case "$getservbyname_r_proto" in
12183         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
12184         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
12185         esac
12186         case "$getservbyname_r_proto" in
12187         '')     d_getservbyname_r=undef
12188                 getservbyname_r_proto=0
12189                 echo "Disabling getservbyname_r, cannot determine prototype." ;;
12190         * )     case "$getservbyname_r_proto" in
12191                 REENTRANT_PROTO*) ;;
12192                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
12193                 esac
12194                 echo "Prototype: $try" ;;
12195         esac
12196         ;;
12197 *)      getservbyname_r_proto=0
12198         ;;
12199 esac
12200
12201 : see if getservbyport_r exists
12202 set getservbyport_r d_getservbyport_r
12203 eval $inlibc
12204 case "$d_getservbyport_r" in
12205 "$define")
12206         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12207         case "$getservbyport_r_proto" in
12208         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
12209         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
12210         esac
12211         case "$getservbyport_r_proto" in
12212         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
12213         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
12214         esac
12215         case "$getservbyport_r_proto" in
12216         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
12217         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
12218         esac
12219         case "$getservbyport_r_proto" in
12220         '')     d_getservbyport_r=undef
12221                 getservbyport_r_proto=0
12222                 echo "Disabling getservbyport_r, cannot determine prototype." ;;
12223         * )     case "$getservbyport_r_proto" in
12224                 REENTRANT_PROTO*) ;;
12225                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
12226                 esac
12227                 echo "Prototype: $try" ;;
12228         esac
12229         ;;
12230 *)      getservbyport_r_proto=0
12231         ;;
12232 esac
12233
12234 : see if getservent_r exists
12235 set getservent_r d_getservent_r
12236 eval $inlibc
12237 case "$d_getservent_r" in
12238 "$define")
12239         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12240         case "$getservent_r_proto" in
12241         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
12242         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
12243         esac
12244         case "$getservent_r_proto" in
12245         ''|0) try='int getservent_r(struct servent*, char*, int);'
12246         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
12247         esac
12248         case "$getservent_r_proto" in
12249         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
12250         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
12251         esac
12252         case "$getservent_r_proto" in
12253         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
12254         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
12255         esac
12256         case "$getservent_r_proto" in
12257         '')     d_getservent_r=undef
12258                 getservent_r_proto=0
12259                 echo "Disabling getservent_r, cannot determine prototype." ;;
12260         * )     case "$getservent_r_proto" in
12261                 REENTRANT_PROTO*) ;;
12262                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
12263                 esac
12264                 echo "Prototype: $try" ;;
12265         esac
12266         ;;
12267 *)      getservent_r_proto=0
12268         ;;
12269 esac
12270
12271 : see if prototypes for various getservxxx netdb.h functions are available
12272 echo " "
12273 set d_getservprotos getservent $i_netdb netdb.h
12274 eval $hasproto
12275
12276 : see if getspnam exists
12277 set getspnam d_getspnam
12278 eval $inlibc
12279
12280 : see if this is a shadow.h system
12281 set shadow.h i_shadow
12282 eval $inhdr
12283
12284 : see if getspnam_r exists
12285 set getspnam_r d_getspnam_r
12286 eval $inlibc
12287 case "$d_getspnam_r" in
12288 "$define")
12289         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
12290         case "$getspnam_r_proto" in
12291         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
12292         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
12293         esac
12294         case "$getspnam_r_proto" in
12295         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
12296         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
12297         esac
12298         case "$getspnam_r_proto" in
12299         '')     d_getspnam_r=undef
12300                 getspnam_r_proto=0
12301                 echo "Disabling getspnam_r, cannot determine prototype." ;;
12302         * )     case "$getspnam_r_proto" in
12303                 REENTRANT_PROTO*) ;;
12304                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
12305                 esac
12306                 echo "Prototype: $try" ;;
12307         esac
12308         ;;
12309 *)      getspnam_r_proto=0
12310         ;;
12311 esac
12312
12313 : see if gettimeofday or ftime exists
12314 set gettimeofday d_gettimeod
12315 eval $inlibc
12316 case "$d_gettimeod" in
12317 "$undef")
12318         set ftime d_ftime 
12319         eval $inlibc
12320         ;;
12321 *)
12322         val="$undef"; set d_ftime; eval $setvar
12323         ;;
12324 esac
12325 case "$d_gettimeod$d_ftime" in
12326 "$undef$undef")
12327         echo " "
12328         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
12329         ;;
12330 esac
12331
12332 : see if gmtime_r exists
12333 set gmtime_r d_gmtime_r
12334 eval $inlibc
12335 case "$d_gmtime_r" in
12336 "$define")
12337         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
12338         case "$gmtime_r_proto" in
12339         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
12340         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
12341         esac
12342         case "$gmtime_r_proto" in
12343         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
12344         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
12345         esac
12346         case "$gmtime_r_proto" in
12347         '')     d_gmtime_r=undef
12348                 gmtime_r_proto=0
12349                 echo "Disabling gmtime_r, cannot determine prototype." ;;
12350         * )     case "$gmtime_r_proto" in
12351                 REENTRANT_PROTO*) ;;
12352                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
12353                 esac
12354                 echo "Prototype: $try" ;;
12355         esac
12356         ;;
12357 *)      gmtime_r_proto=0
12358         ;;
12359 esac
12360
12361 : see if hasmntopt exists
12362 set hasmntopt d_hasmntopt
12363 eval $inlibc
12364
12365 : see if this is a netinet/in.h or sys/in.h system
12366 set netinet/in.h i_niin sys/in.h i_sysin
12367 eval $inhdr
12368
12369 : see if arpa/inet.h has to be included
12370 set arpa/inet.h i_arpainet
12371 eval $inhdr
12372
12373 : see if htonl --and friends-- exists
12374 val=''
12375 set htonl val
12376 eval $inlibc
12377
12378 : Maybe they are macros.
12379 case "$val" in
12380 $undef)
12381         $cat >htonl.c <<EOM
12382 #include <stdio.h>
12383 #include <sys/types.h>
12384 #$i_niin I_NETINET_IN
12385 #$i_sysin I_SYS_IN
12386 #$i_arpainet I_ARPA_INET
12387 #ifdef I_NETINET_IN
12388 #include <netinet/in.h>
12389 #endif
12390 #ifdef I_SYS_IN
12391 #include <sys/in.h>
12392 #endif
12393 #ifdef I_ARPA_INET
12394 #include <arpa/inet.h>
12395 #endif
12396 #ifdef htonl
12397 printf("Defined as a macro.");
12398 #endif
12399 EOM
12400         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
12401         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
12402                 val="$define"
12403                 echo "But it seems to be defined as a macro." >&4
12404         fi
12405         $rm -f htonl.?
12406         ;;
12407 esac
12408 set d_htonl
12409 eval $setvar
12410
12411 : index or strchr
12412 echo " "
12413 if set index val -f; eval $csym; $val; then
12414         if set strchr val -f d_strchr; eval $csym; $val; then
12415                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
12416                         val="$define"
12417                         vali="$undef"
12418                         echo "strchr() found." >&4
12419                 else
12420                         val="$undef"
12421                         vali="$define"
12422                         echo "index() found." >&4
12423                 fi
12424         else
12425                 val="$undef"
12426                 vali="$define"
12427                 echo "index() found." >&4
12428         fi
12429 else
12430         if set strchr val -f d_strchr; eval $csym; $val; then
12431                 val="$define"
12432                 vali="$undef"
12433                 echo "strchr() found." >&4
12434         else
12435                 echo "No index() or strchr() found!" >&4
12436                 val="$undef"
12437                 vali="$undef"
12438         fi
12439 fi
12440 set d_strchr; eval $setvar
12441 val="$vali"
12442 set d_index; eval $setvar
12443
12444 : check whether inet_aton exists
12445 set inet_aton d_inetaton
12446 eval $inlibc
12447
12448 : Look for isascii
12449 echo " "
12450 $cat >isascii.c <<'EOCP'
12451 #include <stdio.h>
12452 #include <ctype.h>
12453 int main() {
12454         int c = 'A';
12455         if (isascii(c))
12456                 exit(0);
12457         else
12458                 exit(1);
12459 }
12460 EOCP
12461 set isascii
12462 if eval $compile; then
12463         echo "isascii() found." >&4
12464         val="$define"
12465 else
12466         echo "isascii() NOT found." >&4
12467         val="$undef"
12468 fi
12469 set d_isascii
12470 eval $setvar
12471 $rm -f isascii*
12472
12473 : see if isfinite exists
12474 set isfinite d_isfinite
12475 eval $inlibc
12476
12477 : see if isinf exists
12478 set isinf d_isinf
12479 eval $inlibc
12480
12481 : see if isnan exists
12482 set isnan d_isnan
12483 eval $inlibc
12484
12485 : see if isnanl exists
12486 set isnanl d_isnanl
12487 eval $inlibc
12488
12489 : see if killpg exists
12490 set killpg d_killpg
12491 eval $inlibc
12492
12493 : see if lchown exists
12494 echo " "
12495 $cat > try.c <<'EOCP'
12496 /* System header to define __stub macros and hopefully few prototypes,
12497     which can conflict with char lchown(); below.  */
12498 #include <assert.h>
12499 /* Override any gcc2 internal prototype to avoid an error.  */
12500 /* We use char because int might match the return type of a gcc2
12501    builtin and then its argument prototype would still apply.  */
12502 char lchown();
12503 int main() {
12504     /*  The GNU C library defines this for functions which it implements
12505         to always fail with ENOSYS.  Some functions are actually named
12506         something starting with __ and the normal name is an alias.  */
12507 #if defined (__stub_lchown) || defined (__stub___lchown)
12508 choke me
12509 #else
12510 lchown();
12511 #endif
12512 ; return 0; }
12513 EOCP
12514 set try
12515 if eval $compile; then
12516     $echo "lchown() found." >&4
12517     val="$define"
12518 else
12519     $echo "lchown() NOT found." >&4
12520     val="$undef"
12521 fi
12522 set d_lchown
12523 eval $setvar
12524
12525 : See if number of significant digits in a double precision number is known
12526 echo " "
12527 $cat >ldbl_dig.c <<EOM
12528 #$i_limits I_LIMITS
12529 #$i_float I_FLOAT
12530 #ifdef I_LIMITS
12531 #include <limits.h>
12532 #endif
12533 #ifdef I_FLOAT
12534 #include <float.h>
12535 #endif
12536 #ifdef LDBL_DIG
12537 printf("Contains LDBL_DIG");
12538 #endif
12539 EOM
12540 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
12541 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
12542         echo "LDBL_DIG found." >&4
12543         val="$define"
12544 else
12545         echo "LDBL_DIG NOT found." >&4
12546         val="$undef"
12547 fi
12548 $rm -f ldbl_dig.?
12549 set d_ldbl_dig
12550 eval $setvar
12551
12552 : see if link exists
12553 set link d_link
12554 eval $inlibc
12555
12556 : see if localtime_r exists
12557 set localtime_r d_localtime_r
12558 eval $inlibc
12559 case "$d_localtime_r" in
12560 "$define")
12561         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
12562         case "$localtime_r_proto" in
12563         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
12564         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
12565         esac
12566         case "$localtime_r_proto" in
12567         ''|0) try='int localtime_r(const time_t*, struct tm*);'
12568         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
12569         esac
12570         case "$localtime_r_proto" in
12571         '')     d_localtime_r=undef
12572                 localtime_r_proto=0
12573                 echo "Disabling localtime_r, cannot determine prototype." ;;
12574         * )     case "$localtime_r_proto" in
12575                 REENTRANT_PROTO*) ;;
12576                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
12577                 esac
12578                 echo "Prototype: $try" ;;
12579         esac
12580         ;;
12581 *)      localtime_r_proto=0
12582         ;;
12583 esac
12584
12585 : see if localeconv exists
12586 set localeconv d_locconv
12587 eval $inlibc
12588
12589 : see if lockf exists
12590 set lockf d_lockf
12591 eval $inlibc
12592
12593 : see if prototype for lseek is available
12594 echo " "
12595 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
12596 eval $hasproto
12597
12598 : see if lstat exists
12599 set lstat d_lstat
12600 eval $inlibc
12601
12602 : see if madvise exists
12603 set madvise d_madvise
12604 eval $inlibc
12605
12606 : see if mblen exists
12607 set mblen d_mblen
12608 eval $inlibc
12609
12610 : see if mbstowcs exists
12611 set mbstowcs d_mbstowcs
12612 eval $inlibc
12613
12614 : see if mbtowc exists
12615 set mbtowc d_mbtowc
12616 eval $inlibc
12617
12618 : see if memchr exists
12619 set memchr d_memchr
12620 eval $inlibc
12621
12622 : see if memcmp exists
12623 set memcmp d_memcmp
12624 eval $inlibc
12625
12626 : see if memcpy exists
12627 set memcpy d_memcpy
12628 eval $inlibc
12629
12630 : see if memmove exists
12631 set memmove d_memmove
12632 eval $inlibc
12633
12634 : see if memset exists
12635 set memset d_memset
12636 eval $inlibc
12637
12638 : see if mkdir exists
12639 set mkdir d_mkdir
12640 eval $inlibc
12641
12642 : see if mkdtemp exists
12643 set mkdtemp d_mkdtemp
12644 eval $inlibc
12645
12646 : see if mkfifo exists
12647 set mkfifo d_mkfifo
12648 eval $inlibc
12649
12650 : see if mkstemp exists
12651 set mkstemp d_mkstemp
12652 eval $inlibc
12653
12654 : see if mkstemps exists
12655 set mkstemps d_mkstemps
12656 eval $inlibc
12657
12658 : see if mktime exists
12659 set mktime d_mktime
12660 eval $inlibc
12661
12662 : see if this is a sys/mman.h system
12663 set sys/mman.h i_sysmman
12664 eval $inhdr
12665
12666 : see if mmap exists
12667 set mmap d_mmap
12668 eval $inlibc
12669 : see what shmat returns
12670 : default to something harmless
12671 mmaptype='void *'
12672 case "$i_sysmman$d_mmap" in
12673 "$define$define")
12674         $cat >mmap.c <<'END'
12675 #include <sys/mman.h>
12676 void *mmap();
12677 END
12678         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12679                 mmaptype='void *'
12680         else
12681                 mmaptype='caddr_t'
12682         fi
12683         echo "and it returns ($mmaptype)." >&4
12684         ;;
12685 esac
12686
12687
12688
12689 : see if mprotect exists
12690 set mprotect d_mprotect
12691 eval $inlibc
12692
12693 : see if msgctl exists
12694 set msgctl d_msgctl
12695 eval $inlibc
12696
12697 : see if msgget exists
12698 set msgget d_msgget
12699 eval $inlibc
12700
12701 : see if msgsnd exists
12702 set msgsnd d_msgsnd
12703 eval $inlibc
12704
12705 : see if msgrcv exists
12706 set msgrcv d_msgrcv
12707 eval $inlibc
12708
12709 : see how much of the 'msg*(2)' library is present.
12710 h_msg=true
12711 echo " "
12712 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
12713 *"$undef"*) h_msg=false;;
12714 esac
12715 case "$osname" in
12716 freebsd)
12717     case "`ipcs 2>&1`" in
12718     "SVID messages"*"not configured"*)
12719         echo "Your $osname does not have the msg*(2) configured." >&4
12720         h_msg=false
12721         val="$undef"
12722         set msgctl d_msgctl
12723         eval $setvar
12724         set msgget d_msgget
12725         eval $setvar
12726         set msgsnd d_msgsnd
12727         eval $setvar
12728         set msgrcv d_msgrcv
12729         eval $setvar
12730         ;;
12731     esac
12732     ;;
12733 esac
12734 : we could also check for sys/ipc.h ...
12735 if $h_msg && $test `./findhdr sys/msg.h`; then
12736         echo "You have the full msg*(2) library." >&4
12737         val="$define"
12738 else
12739         echo "You don't have the full msg*(2) library." >&4
12740         val="$undef"
12741 fi
12742 set d_msg
12743 eval $setvar
12744
12745
12746 echo " "
12747 echo "Checking to see if your system supports struct msghdr..." >&4
12748 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
12749 eval $hasstruct
12750 case "$d_msghdr_s" in
12751 "$define")      echo "Yes, it does."   ;;
12752 *)              echo "No, it doesn't." ;;
12753 esac
12754
12755
12756 : see if msync exists
12757 set msync d_msync
12758 eval $inlibc
12759
12760 : see if munmap exists
12761 set munmap d_munmap
12762 eval $inlibc
12763
12764 : see if nice exists
12765 set nice d_nice
12766 eval $inlibc
12767
12768 : see if this is a langinfo.h system
12769 set langinfo.h i_langinfo
12770 eval $inhdr
12771
12772 : see if nl_langinfo exists
12773 set nl_langinfo d_nl_langinfo
12774 eval $inlibc
12775
12776 : check for length of character
12777 echo " "
12778 case "$charsize" in
12779 '')
12780         echo "Checking to see how big your characters are (hey, you never know)..." >&4
12781         $cat >try.c <<'EOCP'
12782 #include <stdio.h>
12783 int main()
12784 {
12785     printf("%d\n", (int)sizeof(char));
12786     exit(0);
12787 }
12788 EOCP
12789         set try
12790         if eval $compile_ok; then
12791                 dflt=`$run ./try`
12792         else
12793                 dflt='1'
12794                 echo "(I can't seem to compile the test program.  Guessing...)"
12795         fi
12796         ;;
12797 *)
12798         dflt="$charsize"
12799         ;;
12800 esac
12801 rp="What is the size of a character (in bytes)?"
12802 . ./myread
12803 charsize="$ans"
12804 $rm -f try.c try
12805
12806 : check for volatile keyword
12807 echo " "
12808 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12809 $cat >try.c <<'EOCP'
12810 int main()
12811 {
12812         typedef struct _goo_struct goo_struct;
12813         goo_struct * volatile goo = ((goo_struct *)0);
12814         struct _goo_struct {
12815                 long long_int;
12816                 int reg_int;
12817                 char char_var;
12818         };
12819         typedef unsigned short foo_t;
12820         char *volatile foo;
12821         volatile int bar;
12822         volatile foo_t blech;
12823         foo = foo;
12824 }
12825 EOCP
12826 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12827         val="$define"
12828         echo "Yup, it does."
12829 else
12830         val="$undef"
12831         echo "Nope, it doesn't."
12832 fi
12833 set d_volatile
12834 eval $setvar
12835 $rm -f try.*
12836
12837
12838 echo " "
12839 $echo "Choosing the C types to be used for Perl's internal types..." >&4
12840
12841 case "$use64bitint:$d_quad:$quadtype" in
12842 define:define:?*)
12843         ivtype="$quadtype"
12844         uvtype="$uquadtype"
12845         ivsize=8
12846         uvsize=8
12847         ;;
12848 *)      ivtype="long"
12849         uvtype="unsigned long"
12850         ivsize=$longsize
12851         uvsize=$longsize
12852         ;;
12853 esac
12854
12855 case "$uselongdouble:$d_longdbl" in
12856 define:define)
12857         nvtype="long double"
12858         nvsize=$longdblsize
12859         ;;
12860 *)      nvtype=double
12861         nvsize=$doublesize
12862         ;;
12863 esac
12864
12865 $echo "(IV will be "$ivtype", $ivsize bytes)"
12866 $echo "(UV will be "$uvtype", $uvsize bytes)"
12867 $echo "(NV will be "$nvtype", $nvsize bytes)"
12868
12869 $cat >try.c <<EOCP
12870 #$i_inttypes I_INTTYPES
12871 #ifdef I_INTTYPES
12872 #include <inttypes.h>
12873 #endif
12874 #include <stdio.h>
12875 int main() {
12876 #ifdef INT8
12877    int8_t i =  INT8_MAX;
12878   uint8_t u = UINT8_MAX;
12879   printf("int8_t\n");
12880 #endif
12881 #ifdef INT16
12882    int16_t i =  INT16_MAX;
12883   uint16_t i = UINT16_MAX;
12884   printf("int16_t\n");
12885 #endif
12886 #ifdef INT32
12887    int32_t i =  INT32_MAX;
12888   uint32_t u = UINT32_MAX;
12889   printf("int32_t\n");
12890 #endif
12891 }
12892 EOCP
12893
12894 case "$i8type" in
12895 '')     case "$charsize" in
12896         1)      i8type=char
12897                 u8type="unsigned char"
12898                 i8size=$charsize
12899                 u8size=$charsize
12900                 ;;
12901         esac
12902         ;;
12903 esac
12904 case "$i8type" in
12905 '')     set try -DINT8
12906         if eval $compile; then
12907                 case "`$run ./try`" in
12908                 int8_t) i8type=int8_t
12909                         u8type=uint8_t
12910                         i8size=1
12911                         u8size=1
12912                         ;;
12913                 esac
12914         fi
12915         ;;
12916 esac
12917 case "$i8type" in
12918 '')     if $test $charsize -ge 1; then
12919                 i8type=char
12920                 u8type="unsigned char"
12921                 i8size=$charsize
12922                 u8size=$charsize
12923         fi
12924         ;;
12925 esac
12926
12927 case "$i16type" in
12928 '')     case "$shortsize" in
12929         2)      i16type=short
12930                 u16type="unsigned short"
12931                 i16size=$shortsize
12932                 u16size=$shortsize
12933                 ;;
12934         esac
12935         ;;
12936 esac
12937 case "$i16type" in
12938 '')     set try -DINT16
12939         if eval $compile; then
12940                 case "`$run ./try`" in
12941                 int16_t)
12942                         i16type=int16_t
12943                         u16type=uint16_t
12944                         i16size=2
12945                         u16size=2
12946                         ;;
12947                 esac
12948         fi
12949         ;;
12950 esac
12951 case "$i16type" in
12952 '')     if $test $shortsize -ge 2; then
12953                 i16type=short
12954                 u16type="unsigned short"
12955                 i16size=$shortsize
12956                 u16size=$shortsize
12957         fi
12958         ;;
12959 esac
12960
12961 case "$i32type" in
12962 '')     case "$longsize" in
12963         4)      i32type=long
12964                 u32type="unsigned long"
12965                 i32size=$longsize
12966                 u32size=$longsize
12967                 ;;
12968         *)      case "$intsize" in
12969                 4)      i32type=int
12970                         u32type="unsigned int"
12971                         i32size=$intsize
12972                         u32size=$intsize
12973                         ;;
12974                 esac
12975                 ;;
12976         esac
12977         ;;
12978 esac
12979 case "$i32type" in
12980 '')     set try -DINT32
12981         if eval $compile; then
12982                 case "`$run ./try`" in
12983                 int32_t)
12984                         i32type=int32_t
12985                         u32type=uint32_t
12986                         i32size=4
12987                         u32size=4
12988                         ;;
12989                 esac
12990         fi
12991         ;;
12992 esac
12993 case "$i32type" in
12994 '')     if $test $intsize -ge 4; then
12995                 i32type=int
12996                 u32type="unsigned int"
12997                 i32size=$intsize
12998                 u32size=$intsize
12999         fi
13000         ;;
13001 esac
13002
13003 case "$i64type" in
13004 '')     case "$d_quad:$quadtype" in
13005         define:?*)
13006                 i64type="$quadtype"
13007                 u64type="$uquadtype"
13008                 i64size=8
13009                 u64size=8
13010                 ;;
13011         esac
13012         ;;
13013 esac
13014
13015 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
13016 : volatile so that the compiler has to store it out to memory.
13017 if test X"$d_volatile" = X"$define"; then
13018         volatile=volatile
13019 fi
13020 $cat <<EOP >try.c
13021 #include <stdio.h>
13022 #include <sys/types.h>
13023 #include <signal.h>
13024 #ifdef SIGFPE
13025 $volatile int bletched = 0;
13026 $signal_t blech(s) int s; { bletched = 1; }
13027 #endif
13028 int main() {
13029     $uvtype u = 0;
13030     $nvtype d;
13031     int     n = 8 * $uvsize;
13032     int     i;
13033 #ifdef SIGFPE
13034     signal(SIGFPE, blech);
13035 #endif
13036
13037     for (i = 0; i < n; i++) {
13038       u = u << 1 | ($uvtype)1;
13039       d = ($nvtype)u;
13040       if (($uvtype)d != u)
13041         break;
13042       if (d <= 0)
13043         break;
13044       d = ($nvtype)(u - 1);
13045       if (($uvtype)d != (u - 1))
13046         break;
13047 #ifdef SIGFPE
13048       if (bletched) {
13049         break;
13050 #endif
13051       } 
13052     }
13053     printf("%d\n", ((i == n) ? -n : i));
13054     exit(0);
13055 }
13056 EOP
13057 set try
13058
13059 d_nv_preserves_uv="$undef"
13060 if eval $compile; then
13061         d_nv_preserves_uv_bits="`$run ./try`"
13062 fi
13063 case "$d_nv_preserves_uv_bits" in
13064 \-[1-9]*)       
13065         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
13066         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
13067         d_nv_preserves_uv="$define"
13068         ;;
13069 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
13070         d_nv_preserves_uv="$undef" ;;
13071 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
13072         d_nv_preserves_uv_bits="$undef" ;;
13073 esac
13074
13075 $rm -f try.* try
13076
13077
13078 : check for off64_t
13079 echo " "
13080 echo "Checking to see if you have off64_t..." >&4
13081 $cat >try.c <<EOCP
13082 #include <sys/types.h>
13083 #include <unistd.h>
13084 int main() { off64_t x = 7; }
13085 EOCP
13086 set try
13087 if eval $compile; then
13088         val="$define"
13089         echo "You have off64_t."
13090 else
13091         val="$undef"
13092         echo "You do not have off64_t."
13093         case "$lseeksize" in
13094         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
13095         esac
13096 fi
13097 $rm -f try.* try
13098 set d_off64_t
13099 eval $setvar
13100
13101 : see if POSIX threads are available
13102 set pthread.h i_pthread
13103 eval $inhdr
13104
13105
13106
13107
13108 : how to create joinable pthreads
13109 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13110         echo " "
13111         echo "Checking what constant to use for creating joinable pthreads..." >&4 
13112         $cat >try.c <<'EOCP'
13113 #include <pthread.h>
13114 int main() {
13115     int detachstate = JOINABLE;
13116 }
13117 EOCP
13118         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
13119         if eval $compile; then
13120                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
13121                 val="$undef" # Yes, undef.
13122                 set d_old_pthread_create_joinable
13123                 eval $setvar
13124                 val=""
13125                 set old_pthread_create_joinable
13126                 eval $setvar
13127         else
13128                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
13129                 if eval $compile; then
13130                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13131                         val="$define"
13132                         set d_old_pthread_create_joinable
13133                         eval $setvar
13134                         val=PTHREAD_CREATE_UNDETACHED
13135                         set old_pthread_create_joinable
13136                         eval $setvar
13137                 else            
13138                         set try -DJOINABLE=__UNDETACHED
13139                         if eval $compile; then
13140                                 echo "You seem to use __UNDETACHED." >&4
13141                                 val="$define"
13142                                 set d_old_pthread_create_joinable
13143                                 eval $setvar
13144                                 val=__UNDETACHED
13145                                 set old_pthread_create_joinable
13146                                 eval $setvar
13147                         else
13148                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
13149                                 val="$define"
13150                                 set d_old_pthread_create_joinable
13151                                 eval $setvar
13152                                 val=0
13153                                 set old_pthread_create_joinable
13154                                 eval $setvar
13155                         fi
13156                 fi
13157         fi
13158         $rm -f try try.*
13159 else
13160     d_old_pthread_create_joinable="$undef"
13161     old_pthread_create_joinable=""
13162 fi
13163
13164 : see if pause exists
13165 set pause d_pause
13166 eval $inlibc
13167
13168 : see if pipe exists
13169 set pipe d_pipe
13170 eval $inlibc
13171
13172 : see if poll exists
13173 set poll d_poll
13174 eval $inlibc
13175
13176 : see if readlink exists
13177 set readlink d_readlink
13178 eval $inlibc
13179
13180 echo " "
13181 procselfexe=''
13182 val="$undef"
13183 case "$d_readlink" in
13184 "$define")
13185         if $issymlink /proc/self/exe ; then
13186                 $ls -l /proc/self/exe > reflect
13187                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13188                         echo "You have Linux-like /proc/self/exe."
13189                         procselfexe='"/proc/self/exe"'
13190                         val="$define"
13191                 fi
13192         fi
13193         if $issymlink /proc/curproc/file ; then
13194                 $ls -l /proc/curproc/file > reflect
13195                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13196                         echo "You have BSD-like /proc/curproc/file."
13197                         procselfexe='"/proc/curproc/file"'
13198                         val="$define"
13199                 fi
13200         fi
13201         ;;
13202 esac
13203 $rm -f reflect
13204 set d_procselfexe
13205 eval $setvar
13206
13207 : see whether the pthread_atfork exists
13208 $cat >try.c <<EOP
13209 #include <pthread.h>
13210 #include <stdio.h>
13211 int main() {
13212 #ifdef  PTHREAD_ATFORK
13213         pthread_atfork(NULL,NULL,NULL);
13214 #endif
13215 }
13216 EOP
13217
13218 : see if pthread_atfork exists
13219 set try -DPTHREAD_ATFORK
13220 if eval $compile; then
13221     val="$define"
13222 else
13223     val="$undef"
13224 fi
13225 case "$usethreads" in
13226 $define)
13227         case "$val" in
13228         $define) echo 'pthread_atfork found.' >&4        ;;
13229         *)       echo 'pthread_atfork NOT found.' >&4    ;;
13230         esac
13231 esac
13232 set d_pthread_atfork
13233 eval $setvar
13234
13235
13236 : see whether the various POSIXish _yields exist
13237 $cat >try.c <<EOP
13238 #include <pthread.h>
13239 #include <stdio.h>
13240 int main() {
13241 #ifdef SCHED_YIELD
13242         sched_yield();
13243 #else
13244 #ifdef PTHREAD_YIELD
13245         pthread_yield();
13246 #else
13247 #ifdef PTHREAD_YIELD_NULL
13248         pthread_yield(NULL);
13249 #endif
13250 #endif
13251 #endif
13252 }
13253 EOP
13254 : see if sched_yield exists
13255 set try -DSCHED_YIELD
13256 if eval $compile; then
13257     val="$define"
13258     sched_yield='sched_yield()'
13259 else
13260     val="$undef"
13261 fi
13262 case "$usethreads" in
13263 $define)
13264         case "$val" in
13265         $define) echo 'sched_yield() found.' >&4        ;;
13266         *)       echo 'sched_yield() NOT found.' >&4    ;;
13267         esac
13268 esac
13269 set d_sched_yield
13270 eval $setvar
13271
13272 : see if pthread_yield exists
13273 set try -DPTHREAD_YIELD
13274 if eval $compile; then
13275     val="$define"
13276     case "$sched_yield" in
13277     '') sched_yield='pthread_yield()' ;;
13278     esac
13279 else
13280     set try -DPTHREAD_YIELD_NULL
13281     if eval $compile; then
13282         val="$define"
13283         case "$sched_yield" in
13284         '') sched_yield='pthread_yield(NULL)' ;;
13285         esac
13286     else
13287         val="$undef"
13288     fi
13289 fi
13290 case "$usethreads" in
13291 $define)
13292         case "$val" in
13293         $define) echo 'pthread_yield() found.' >&4      ;;
13294         *)       echo 'pthread_yield() NOT found.' >&4  ;;
13295         esac
13296         ;;
13297 esac
13298 set d_pthread_yield
13299 eval $setvar
13300
13301 case "$sched_yield" in
13302 '') sched_yield=undef ;;
13303 esac
13304
13305 $rm -f try try.*
13306
13307 : see if random_r exists
13308 set random_r d_random_r
13309 eval $inlibc
13310 case "$d_random_r" in
13311 "$define")
13312         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
13313         case "$random_r_proto" in
13314         ''|0) try='int random_r(int*, struct random_data*);'
13315         ./protochk "extern $try" $hdrs && random_r_proto=I_TS ;;
13316         esac
13317         case "$random_r_proto" in
13318         '')     d_random_r=undef
13319                 random_r_proto=0
13320                 echo "Disabling random_r, cannot determine prototype." ;;
13321         * )     case "$random_r_proto" in
13322                 REENTRANT_PROTO*) ;;
13323                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
13324                 esac
13325                 echo "Prototype: $try" ;;
13326         esac
13327         ;;
13328 *)      random_r_proto=0
13329         ;;
13330 esac
13331
13332 : see if readdir and friends exist
13333 set readdir d_readdir
13334 eval $inlibc
13335 set seekdir d_seekdir
13336 eval $inlibc
13337 set telldir d_telldir
13338 eval $inlibc
13339 set rewinddir d_rewinddir
13340 eval $inlibc
13341
13342 : see if readdir64_r exists
13343 set readdir64_r d_readdir64_r
13344 eval $inlibc
13345 case "$d_readdir64_r" in
13346 "$define")
13347         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
13348         case "$readdir64_r_proto" in
13349         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
13350         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
13351         esac
13352         case "$readdir64_r_proto" in
13353         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
13354         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
13355         esac
13356         case "$readdir64_r_proto" in
13357         '')     d_readdir64_r=undef
13358                 readdir64_r_proto=0
13359                 echo "Disabling readdir64_r, cannot determine prototype." ;;
13360         * )     case "$readdir64_r_proto" in
13361                 REENTRANT_PROTO*) ;;
13362                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
13363                 esac
13364                 echo "Prototype: $try" ;;
13365         esac
13366         ;;
13367 *)      readdir64_r_proto=0
13368         ;;
13369 esac
13370
13371 : see if readdir_r exists
13372 set readdir_r d_readdir_r
13373 eval $inlibc
13374 case "$d_readdir_r" in
13375 "$define")
13376         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
13377         case "$readdir_r_proto" in
13378         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
13379         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
13380         esac
13381         case "$readdir_r_proto" in
13382         ''|0) try='int readdir_r(DIR*, struct dirent*);'
13383         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
13384         esac
13385         case "$readdir_r_proto" in
13386         '')     d_readdir_r=undef
13387                 readdir_r_proto=0
13388                 echo "Disabling readdir_r, cannot determine prototype." ;;
13389         * )     case "$readdir_r_proto" in
13390                 REENTRANT_PROTO*) ;;
13391                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
13392                 esac
13393                 echo "Prototype: $try" ;;
13394         esac
13395         ;;
13396 *)      readdir_r_proto=0
13397         ;;
13398 esac
13399
13400 : see if readv exists
13401 set readv d_readv
13402 eval $inlibc
13403
13404 : see if recvmsg exists
13405 set recvmsg d_recvmsg
13406 eval $inlibc
13407
13408 : see if rename exists
13409 set rename d_rename
13410 eval $inlibc
13411
13412 : see if rmdir exists
13413 set rmdir d_rmdir
13414 eval $inlibc
13415
13416 : see if memory.h is available.
13417 val=''
13418 set memory.h val
13419 eval $inhdr
13420
13421 : See if it conflicts with string.h
13422 case "$val" in
13423 $define)
13424         case "$strings" in
13425         '') ;;
13426         *)
13427                 $cppstdin $cppflags $cppminus < $strings > mem.h
13428                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
13429                         echo " "
13430                         echo "We won't be including <memory.h>."
13431                         val="$undef"
13432                 fi
13433                 $rm -f mem.h
13434                 ;;
13435         esac
13436 esac
13437 set i_memory
13438 eval $setvar
13439
13440 : can bcopy handle overlapping blocks?
13441 echo " "
13442 val="$undef"
13443 case "$d_memmove" in
13444 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
13445 *)      case "$d_bcopy" in
13446         "$define")
13447                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
13448                 $cat >try.c <<EOCP
13449 #$i_memory I_MEMORY
13450 #$i_stdlib I_STDLIB
13451 #$i_string I_STRING
13452 #$i_unistd I_UNISTD
13453 EOCP
13454         $cat >>try.c <<'EOCP'
13455 #include <stdio.h>
13456 #ifdef I_MEMORY
13457 #  include <memory.h>
13458 #endif
13459 #ifdef I_STDLIB
13460 #  include <stdlib.h>
13461 #endif
13462 #ifdef I_STRING
13463 #  include <string.h>
13464 #else
13465 #  include <strings.h>
13466 #endif
13467 #ifdef I_UNISTD
13468 #  include <unistd.h>  /* Needed for NetBSD */
13469 #endif
13470 int main()
13471 {
13472 char buf[128], abc[128];
13473 char *b;
13474 int len;
13475 int off;
13476 int align;
13477
13478 /* Copy "abcde..." string to char abc[] so that gcc doesn't
13479    try to store the string in read-only memory. */
13480 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
13481
13482 for (align = 7; align >= 0; align--) {
13483         for (len = 36; len; len--) {
13484                 b = buf+align;
13485                 bcopy(abc, b, len);
13486                 for (off = 1; off <= len; off++) {
13487                         bcopy(b, b+off, len);
13488                         bcopy(b+off, b, len);
13489                         if (bcmp(b, abc, len))
13490                                 exit(1);
13491                 }
13492         }
13493 }
13494 exit(0);
13495 }
13496 EOCP
13497                 set try
13498                 if eval $compile_ok; then
13499                         if ./try 2>/dev/null; then
13500                                 echo "Yes, it can."
13501                                 val="$define"
13502                         else
13503                                 echo "It can't, sorry."
13504                         fi
13505                 else
13506                         echo "(I can't compile the test program, so we'll assume not...)"
13507                 fi
13508                 ;;
13509         esac
13510         $rm -f try.* try core
13511         ;;
13512 esac
13513 set d_safebcpy
13514 eval $setvar
13515
13516 : can memcpy handle overlapping blocks?
13517 echo " "
13518 val="$undef"
13519 case "$d_memmove" in
13520 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
13521 *)      case "$d_memcpy" in
13522         "$define")
13523                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
13524                 $cat >try.c <<EOCP
13525 #$i_memory I_MEMORY
13526 #$i_stdlib I_STDLIB
13527 #$i_string I_STRING
13528 #$i_unistd I_UNISTD
13529 EOCP
13530         $cat >>try.c <<'EOCP'
13531 #include <stdio.h>
13532 #ifdef I_MEMORY
13533 #  include <memory.h>
13534 #endif
13535 #ifdef I_STDLIB
13536 #  include <stdlib.h>
13537 #endif
13538 #ifdef I_STRING
13539 #  include <string.h>
13540 #else
13541 #  include <strings.h>
13542 #endif
13543 #ifdef I_UNISTD
13544 #  include <unistd.h>  /* Needed for NetBSD */
13545 #endif
13546 int main()
13547 {
13548 char buf[128], abc[128];
13549 char *b;
13550 int len;
13551 int off;
13552 int align;
13553
13554 /* Copy "abcde..." string to char abc[] so that gcc doesn't
13555    try to store the string in read-only memory. */
13556 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
13557
13558 for (align = 7; align >= 0; align--) {
13559         for (len = 36; len; len--) {
13560                 b = buf+align;
13561                 memcpy(b, abc, len);
13562                 for (off = 1; off <= len; off++) {
13563                         memcpy(b+off, b, len);
13564                         memcpy(b, b+off, len);
13565                         if (memcmp(b, abc, len))
13566                                 exit(1);
13567                 }
13568         }
13569 }
13570 exit(0);
13571 }
13572 EOCP
13573                 set try
13574                 if eval $compile_ok; then
13575                         if ./try 2>/dev/null; then
13576                                 echo "Yes, it can."
13577                                 val="$define"
13578                         else
13579                                 echo "It can't, sorry."
13580                         fi
13581                 else
13582                         echo "(I can't compile the test program, so we'll assume not...)"
13583                 fi
13584                 ;;
13585         esac
13586         $rm -f try.* try core
13587         ;;
13588 esac
13589 set d_safemcpy
13590 eval $setvar
13591
13592 : can memcmp be trusted to compare relative magnitude?
13593 val="$undef"
13594 case "$d_memcmp" in
13595 "$define")
13596         echo " "
13597         echo "Checking if your memcmp() can compare relative magnitude..." >&4
13598         $cat >try.c <<EOCP
13599 #$i_memory I_MEMORY
13600 #$i_stdlib I_STDLIB
13601 #$i_string I_STRING
13602 #$i_unistd I_UNISTD
13603 EOCP
13604         $cat >>try.c <<'EOCP'
13605 #include <stdio.h>
13606 #ifdef I_MEMORY
13607 #  include <memory.h>
13608 #endif
13609 #ifdef I_STDLIB
13610 #  include <stdlib.h>
13611 #endif
13612 #ifdef I_STRING
13613 #  include <string.h>
13614 #else
13615 #  include <strings.h>
13616 #endif
13617 #ifdef I_UNISTD
13618 #  include <unistd.h>  /* Needed for NetBSD */
13619 #endif
13620 int main()
13621 {
13622 char a = -1;
13623 char b = 0;
13624 if ((a < b) && memcmp(&a, &b, 1) < 0)
13625         exit(1);
13626 exit(0);
13627 }
13628 EOCP
13629         set try
13630         if eval $compile_ok; then
13631                 if $run ./try 2>/dev/null; then
13632                         echo "Yes, it can."
13633                         val="$define"
13634                 else
13635                         echo "No, it can't (it uses signed chars)."
13636                 fi
13637         else
13638                 echo "(I can't compile the test program, so we'll assume not...)"
13639         fi
13640         ;;
13641 esac
13642 $rm -f try.* try core
13643 set d_sanemcmp
13644 eval $setvar
13645
13646 : see if prototype for sbrk is available
13647 echo " "
13648 set d_sbrkproto sbrk $i_unistd unistd.h
13649 eval $hasproto
13650
13651 : see if select exists
13652 set select d_select
13653 eval $inlibc
13654
13655 : see if semctl exists
13656 set semctl d_semctl
13657 eval $inlibc
13658
13659 : see if semget exists
13660 set semget d_semget
13661 eval $inlibc
13662
13663 : see if semop exists
13664 set semop d_semop
13665 eval $inlibc
13666
13667 : see how much of the 'sem*(2)' library is present.
13668 h_sem=true
13669 echo " "
13670 case "$d_semctl$d_semget$d_semop" in
13671 *"$undef"*) h_sem=false;;
13672 esac
13673 case "$osname" in
13674 freebsd)
13675     case "`ipcs 2>&1`" in
13676     "SVID messages"*"not configured"*)
13677         echo "Your $osname does not have the sem*(2) configured." >&4
13678         h_sem=false
13679         val="$undef"
13680         set semctl d_semctl
13681         eval $setvar
13682         set semget d_semget
13683         eval $setvar
13684         set semop d_semop
13685         eval $setvar
13686         ;;
13687     esac
13688     ;;
13689 esac
13690 : we could also check for sys/ipc.h ...
13691 if $h_sem && $test `./findhdr sys/sem.h`; then
13692         echo "You have the full sem*(2) library." >&4
13693         val="$define"
13694 else
13695         echo "You don't have the full sem*(2) library." >&4
13696         val="$undef"
13697 fi
13698 set d_sem
13699 eval $setvar
13700
13701 : see whether sys/sem.h defines union semun
13702 echo " "
13703 $cat > try.c <<'END'
13704 #include <sys/types.h>
13705 #include <sys/ipc.h>
13706 #include <sys/sem.h>
13707 int main () { union semun semun; semun.buf = 0; }
13708 END
13709 set try
13710 if eval $compile; then
13711     echo "You have union semun in <sys/sem.h>." >&4
13712     val="$define"
13713 else
13714     echo "You do not have union semun in <sys/sem.h>." >&4
13715     val="$undef"
13716 fi
13717 $rm -f try try.c try.h
13718 set d_union_semun
13719 eval $setvar
13720
13721 : see how to do semctl IPC_STAT
13722 case "$d_sem" in
13723 $define)
13724     : see whether semctl IPC_STAT can use union semun
13725     echo " "
13726     $cat > try.h <<END
13727 #ifndef S_IRUSR
13728 #   ifdef S_IREAD
13729 #       define S_IRUSR S_IREAD
13730 #       define S_IWUSR S_IWRITE
13731 #       define S_IXUSR S_IEXEC
13732 #   else
13733 #       define S_IRUSR 0400
13734 #       define S_IWUSR 0200
13735 #       define S_IXUSR 0100
13736 #   endif
13737 #   define S_IRGRP (S_IRUSR>>3)
13738 #   define S_IWGRP (S_IWUSR>>3)
13739 #   define S_IXGRP (S_IXUSR>>3)
13740 #   define S_IROTH (S_IRUSR>>6)
13741 #   define S_IWOTH (S_IWUSR>>6)
13742 #   define S_IXOTH (S_IXUSR>>6)
13743 #endif
13744 #ifndef S_IRWXU
13745 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
13746 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
13747 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
13748 #endif
13749 END
13750
13751     $cat > try.c <<END
13752 #include <sys/types.h>
13753 #include <sys/ipc.h>
13754 #include <sys/sem.h>
13755 #include <sys/stat.h>
13756 #include <stdio.h>
13757 #include <errno.h>
13758 #include "try.h"
13759 #ifndef errno
13760 extern int errno;
13761 #endif
13762 #$d_union_semun HAS_UNION_SEMUN
13763 int main() {
13764     union semun
13765 #ifndef HAS_UNION_SEMUN
13766     {
13767         int val;
13768         struct semid_ds *buf;
13769         unsigned short *array;
13770     }
13771 #endif
13772     arg;
13773     int sem, st;
13774
13775 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
13776     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
13777     if (sem > -1) {
13778         struct semid_ds argbuf;
13779         arg.buf = &argbuf;
13780 #       ifdef IPC_STAT
13781         st = semctl(sem, 0, IPC_STAT, arg);
13782         if (st == 0)
13783             printf("semun\n");
13784         else
13785 #       endif /* IPC_STAT */
13786             printf("semctl IPC_STAT failed: errno = %d\n", errno);
13787 #       ifdef IPC_RMID
13788         if (semctl(sem, 0, IPC_RMID, arg) != 0)
13789 #       endif /* IPC_RMID */
13790             printf("semctl IPC_RMID failed: errno = %d\n", errno);
13791     } else
13792 #endif /* IPC_PRIVATE && ... */
13793         printf("semget failed: errno = %d\n", errno);
13794   return 0;
13795 }
13796 END
13797     val="$undef"
13798     set try
13799     if eval $compile; then
13800         xxx=`$run ./try`
13801         case "$xxx" in
13802         semun) val="$define" ;;
13803         esac
13804     fi
13805     $rm -f try try.c
13806     set d_semctl_semun
13807     eval $setvar
13808     case "$d_semctl_semun" in
13809     $define)
13810         echo "You can use union semun for semctl IPC_STAT." >&4
13811         also='also'
13812         ;;
13813     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
13814         also=''
13815         ;;
13816     esac
13817
13818     : see whether semctl IPC_STAT can use struct semid_ds pointer
13819     $cat > try.c <<'END'
13820 #include <sys/types.h>
13821 #include <sys/ipc.h>
13822 #include <sys/sem.h>
13823 #include <sys/stat.h>
13824 #include "try.h"
13825 #include <stdio.h>
13826 #include <errno.h>
13827 #ifndef errno
13828 extern int errno;
13829 #endif
13830 int main() {
13831     struct semid_ds arg;
13832     int sem, st;
13833
13834 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
13835     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
13836     if (sem > -1) {
13837 #       ifdef IPC_STAT
13838         st = semctl(sem, 0, IPC_STAT, &arg);
13839         if (st == 0)
13840             printf("semid_ds\n");
13841         else
13842 #       endif /* IPC_STAT */
13843             printf("semctl IPC_STAT failed: errno = %d\n", errno);
13844 #       ifdef IPC_RMID
13845         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
13846 #       endif /* IPC_RMID */
13847             printf("semctl IPC_RMID failed: errno = %d\n", errno);
13848     } else
13849 #endif /* IPC_PRIVATE && ... */
13850         printf("semget failed: errno = %d\n", errno);
13851
13852     return 0;
13853 }
13854 END
13855     val="$undef"
13856     set try
13857     if eval $compile; then
13858         xxx=`$run ./try`
13859         case "$xxx" in
13860         semid_ds) val="$define" ;;
13861         esac
13862     fi
13863     $rm -f try try.c
13864     set d_semctl_semid_ds
13865     eval $setvar
13866     case "$d_semctl_semid_ds" in
13867     $define)
13868         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
13869         ;;
13870     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
13871         ;;
13872     esac
13873     $rm -f try.h
13874     ;;
13875 *)  val="$undef"
13876
13877     # We do not have the full sem*(2) library, so assume we can not
13878     # use either.
13879
13880     set d_semctl_semun
13881     eval $setvar
13882
13883     set d_semctl_semid_ds
13884     eval $setvar
13885     ;;
13886 esac
13887
13888 : see if sendmsg exists
13889 set sendmsg d_sendmsg
13890 eval $inlibc
13891
13892 : see if setegid exists
13893 set setegid d_setegid
13894 eval $inlibc
13895
13896 : see if seteuid exists
13897 set seteuid d_seteuid
13898 eval $inlibc
13899
13900 : see if setgrent exists
13901 set setgrent d_setgrent
13902 eval $inlibc
13903
13904 : see if setgrent_r exists
13905 set setgrent_r d_setgrent_r
13906 eval $inlibc
13907 case "$d_setgrent_r" in
13908 "$define")
13909         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13910         case "$setgrent_r_proto" in
13911         ''|0) try='int setgrent_r(FILE**);'
13912         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
13913         esac
13914         case "$setgrent_r_proto" in
13915         ''|0) try='void setgrent_r(FILE**);'
13916         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
13917         esac
13918         case "$setgrent_r_proto" in
13919         '')     d_setgrent_r=undef
13920                 setgrent_r_proto=0
13921                 echo "Disabling setgrent_r, cannot determine prototype." ;;
13922         * )     case "$setgrent_r_proto" in
13923                 REENTRANT_PROTO*) ;;
13924                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
13925                 esac
13926                 echo "Prototype: $try" ;;
13927         esac
13928         ;;
13929 *)      setgrent_r_proto=0
13930         ;;
13931 esac
13932
13933 : see if sethostent exists
13934 set sethostent d_sethent
13935 eval $inlibc
13936
13937 : see if sethostent_r exists
13938 set sethostent_r d_sethostent_r
13939 eval $inlibc
13940 case "$d_sethostent_r" in
13941 "$define")
13942         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13943         case "$sethostent_r_proto" in
13944         ''|0) try='int sethostent_r(int, struct hostent_data*);'
13945         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
13946         esac
13947         case "$sethostent_r_proto" in
13948         ''|0) try='void sethostent_r(int, struct hostent_data*);'
13949         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
13950         esac
13951         case "$sethostent_r_proto" in
13952         '')     d_sethostent_r=undef
13953                 sethostent_r_proto=0
13954                 echo "Disabling sethostent_r, cannot determine prototype." ;;
13955         * )     case "$sethostent_r_proto" in
13956                 REENTRANT_PROTO*) ;;
13957                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
13958                 esac
13959                 echo "Prototype: $try" ;;
13960         esac
13961         ;;
13962 *)      sethostent_r_proto=0
13963         ;;
13964 esac
13965
13966 : see if setitimer exists
13967 set setitimer d_setitimer
13968 eval $inlibc
13969
13970 : see if setlinebuf exists
13971 set setlinebuf d_setlinebuf
13972 eval $inlibc
13973
13974 : see if setlocale exists
13975 set setlocale d_setlocale
13976 eval $inlibc
13977
13978 : see if locale.h is available
13979 set locale.h i_locale
13980 eval $inhdr
13981
13982 : see if setlocale_r exists
13983 set setlocale_r d_setlocale_r
13984 eval $inlibc
13985 case "$d_setlocale_r" in
13986 "$define")
13987         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
13988         case "$setlocale_r_proto" in
13989         ''|0) try='int setlocale_r(int, const char*, char*, int);'
13990         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
13991         esac
13992         case "$setlocale_r_proto" in
13993         '')     d_setlocale_r=undef
13994                 setlocale_r_proto=0
13995                 echo "Disabling setlocale_r, cannot determine prototype." ;;
13996         * )     case "$setlocale_r_proto" in
13997                 REENTRANT_PROTO*) ;;
13998                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
13999                 esac
14000                 echo "Prototype: $try" ;;
14001         esac
14002         ;;
14003 *)      setlocale_r_proto=0
14004         ;;
14005 esac
14006
14007 : see if setnetent exists
14008 set setnetent d_setnent
14009 eval $inlibc
14010
14011 : see if setnetent_r exists
14012 set setnetent_r d_setnetent_r
14013 eval $inlibc
14014 case "$d_setnetent_r" in
14015 "$define")
14016         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14017         case "$setnetent_r_proto" in
14018         ''|0) try='int setnetent_r(int, struct netent_data*);'
14019         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
14020         esac
14021         case "$setnetent_r_proto" in
14022         ''|0) try='void setnetent_r(int, struct netent_data*);'
14023         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
14024         esac
14025         case "$setnetent_r_proto" in
14026         '')     d_setnetent_r=undef
14027                 setnetent_r_proto=0
14028                 echo "Disabling setnetent_r, cannot determine prototype." ;;
14029         * )     case "$setnetent_r_proto" in
14030                 REENTRANT_PROTO*) ;;
14031                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
14032                 esac
14033                 echo "Prototype: $try" ;;
14034         esac
14035         ;;
14036 *)      setnetent_r_proto=0
14037         ;;
14038 esac
14039
14040 : see if setprotoent exists
14041 set setprotoent d_setpent
14042 eval $inlibc
14043
14044 : see if setpgid exists
14045 set setpgid d_setpgid
14046 eval $inlibc
14047
14048 : see if setpgrp2 exists
14049 set setpgrp2 d_setpgrp2
14050 eval $inlibc
14051
14052 : see if setpriority exists
14053 set setpriority d_setprior
14054 eval $inlibc
14055
14056 : see if setproctitle exists
14057 set setproctitle d_setproctitle
14058 eval $inlibc
14059
14060 : see if setprotoent_r exists
14061 set setprotoent_r d_setprotoent_r
14062 eval $inlibc
14063 case "$d_setprotoent_r" in
14064 "$define")
14065         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14066         case "$setprotoent_r_proto" in
14067         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
14068         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
14069         esac
14070         case "$setprotoent_r_proto" in
14071         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
14072         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
14073         esac
14074         case "$setprotoent_r_proto" in
14075         '')     d_setprotoent_r=undef
14076                 setprotoent_r_proto=0
14077                 echo "Disabling setprotoent_r, cannot determine prototype." ;;
14078         * )     case "$setprotoent_r_proto" in
14079                 REENTRANT_PROTO*) ;;
14080                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
14081                 esac
14082                 echo "Prototype: $try" ;;
14083         esac
14084         ;;
14085 *)      setprotoent_r_proto=0
14086         ;;
14087 esac
14088
14089 : see if setpwent exists
14090 set setpwent d_setpwent
14091 eval $inlibc
14092
14093 : see if setpwent_r exists
14094 set setpwent_r d_setpwent_r
14095 eval $inlibc
14096 case "$d_setpwent_r" in
14097 "$define")
14098         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14099         case "$setpwent_r_proto" in
14100         ''|0) try='int setpwent_r(FILE**);'
14101         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
14102         esac
14103         case "$setpwent_r_proto" in
14104         ''|0) try='void setpwent_r(FILE**);'
14105         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
14106         esac
14107         case "$setpwent_r_proto" in
14108         '')     d_setpwent_r=undef
14109                 setpwent_r_proto=0
14110                 echo "Disabling setpwent_r, cannot determine prototype." ;;
14111         * )     case "$setpwent_r_proto" in
14112                 REENTRANT_PROTO*) ;;
14113                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
14114                 esac
14115                 echo "Prototype: $try" ;;
14116         esac
14117         ;;
14118 *)      setpwent_r_proto=0
14119         ;;
14120 esac
14121
14122 : see if setregid exists
14123 set setregid d_setregid
14124 eval $inlibc
14125 set setresgid d_setresgid
14126 eval $inlibc
14127
14128 : see if setreuid exists
14129 set setreuid d_setreuid
14130 eval $inlibc
14131 set setresuid d_setresuid
14132 eval $inlibc
14133
14134 : see if setrgid exists
14135 set setrgid d_setrgid
14136 eval $inlibc
14137
14138 : see if setruid exists
14139 set setruid d_setruid
14140 eval $inlibc
14141
14142 : see if setservent exists
14143 set setservent d_setsent
14144 eval $inlibc
14145
14146 : see if setservent_r exists
14147 set setservent_r d_setservent_r
14148 eval $inlibc
14149 case "$d_setservent_r" in
14150 "$define")
14151         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14152         case "$setservent_r_proto" in
14153         ''|0) try='int setservent_r(int, struct servent_data*);'
14154         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
14155         esac
14156         case "$setservent_r_proto" in
14157         ''|0) try='void setservent_r(int, struct servent_data*);'
14158         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
14159         esac
14160         case "$setservent_r_proto" in
14161         '')     d_setservent_r=undef
14162                 setservent_r_proto=0
14163                 echo "Disabling setservent_r, cannot determine prototype." ;;
14164         * )     case "$setservent_r_proto" in
14165                 REENTRANT_PROTO*) ;;
14166                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
14167                 esac
14168                 echo "Prototype: $try" ;;
14169         esac
14170         ;;
14171 *)      setservent_r_proto=0
14172         ;;
14173 esac
14174
14175 : see if setsid exists
14176 set setsid d_setsid
14177 eval $inlibc
14178
14179 : see if setvbuf exists
14180 set setvbuf d_setvbuf
14181 eval $inlibc
14182
14183 : see if sfio.h is available
14184 set sfio.h i_sfio
14185 eval $inhdr
14186
14187
14188 : see if sfio library is available
14189 case "$i_sfio" in
14190 $define)
14191         val=''
14192         set sfreserve val
14193         eval $inlibc
14194         ;;
14195 *)
14196         val="$undef"
14197         ;;
14198 esac
14199 : Ok, but do we want to use it.
14200 case "$val" in
14201 $define)
14202         case "$usesfio" in
14203         true|$define|[yY]*) dflt='y';;
14204         *) dflt='n';;
14205         esac
14206         echo "$package can use the sfio library, but it is experimental."
14207         case "$useperlio" in
14208         "$undef")
14209             echo "For sfio also the PerlIO abstraction layer is needed."
14210             echo "Earlier you said you wouldn't want that."
14211             ;;
14212         esac
14213         rp="You seem to have sfio available, do you want to try using it?"
14214         . ./myread
14215         case "$ans" in
14216         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
14217                 useperlio="$define"
14218                 val="$define"
14219                 ;;
14220         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
14221                 val="$undef"
14222                 ;;
14223         esac
14224         ;;
14225 *)      case "$usesfio" in
14226         true|$define|[yY]*)
14227                 echo "Sorry, cannot find sfio on this machine." >&4
14228                 echo "Ignoring your setting of usesfio=$usesfio." >&4
14229                 val="$undef"
14230                 ;;
14231         esac
14232         ;;
14233 esac
14234 set d_sfio
14235 eval $setvar
14236 case "$d_sfio" in
14237 $define) usesfio='true';;
14238 *) usesfio='false';;
14239 esac
14240 case "$d_sfio" in
14241 $define) ;;
14242 *)      : Remove sfio from list of libraries to use
14243         case "$libs" in
14244         *-lsfio*)
14245                 echo "Removing unneeded -lsfio from library list" >&4
14246                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
14247                 shift
14248                 libs="$*"
14249                 echo "libs = $libs" >&4
14250                 ;;
14251         esac
14252 ;;
14253 esac
14254
14255
14256 : see if shmctl exists
14257 set shmctl d_shmctl
14258 eval $inlibc
14259
14260 : see if shmget exists
14261 set shmget d_shmget
14262 eval $inlibc
14263
14264 : see if shmat exists
14265 set shmat d_shmat
14266 eval $inlibc
14267 : see what shmat returns
14268 case "$d_shmat" in
14269 "$define")
14270         $cat >shmat.c <<'END'
14271 #include <sys/shm.h>
14272 void *shmat();
14273 END
14274         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
14275                 shmattype='void *'
14276         else
14277                 shmattype='char *'
14278         fi
14279         echo "and it returns ($shmattype)." >&4
14280         : see if a prototype for shmat is available
14281         xxx=`./findhdr sys/shm.h`
14282         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
14283         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
14284                 val="$define"
14285         else
14286                 val="$undef"
14287         fi
14288         $rm -f shmat.[co]
14289         ;;
14290 *)
14291         val="$undef"
14292         ;;
14293 esac
14294 set d_shmatprototype
14295 eval $setvar
14296
14297 : see if shmdt exists
14298 set shmdt d_shmdt
14299 eval $inlibc
14300
14301 : see how much of the 'shm*(2)' library is present.
14302 h_shm=true
14303 echo " "
14304 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
14305 *"$undef"*) h_shm=false;;
14306 esac
14307 case "$osname" in
14308 freebsd)
14309     case "`ipcs 2>&1`" in
14310     "SVID shared memory"*"not configured"*)
14311         echo "Your $osname does not have the shm*(2) configured." >&4
14312         h_shm=false
14313         val="$undef"
14314         set shmctl d_shmctl
14315         evat $setvar
14316         set shmget d_shmget
14317         evat $setvar
14318         set shmat d_shmat
14319         evat $setvar
14320         set shmdt d_shmdt
14321         evat $setvar
14322         ;;
14323     esac
14324     ;;
14325 esac
14326 : we could also check for sys/ipc.h ...
14327 if $h_shm && $test `./findhdr sys/shm.h`; then
14328         echo "You have the full shm*(2) library." >&4
14329         val="$define"
14330 else
14331         echo "You don't have the full shm*(2) library." >&4
14332         val="$undef"
14333 fi
14334 set d_shm
14335 eval $setvar
14336
14337 echo " "
14338 : see if we have sigaction
14339 if set sigaction val -f d_sigaction; eval $csym; $val; then
14340         echo 'sigaction() found.' >&4
14341         $cat > try.c <<'EOP'
14342 #include <stdio.h>
14343 #include <sys/types.h>
14344 #include <signal.h>
14345 int main()
14346 {
14347     struct sigaction act, oact;
14348     act.sa_flags = 0;
14349     oact.sa_handler = 0;
14350     /* so that act and oact are used */
14351     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
14352 }
14353 EOP
14354         set try
14355         if eval $compile_ok; then
14356                 val="$define"
14357         else
14358                 echo "But you don't seem to have a useable struct sigaction." >&4
14359                 val="$undef"
14360         fi
14361 else
14362         echo 'sigaction NOT found.' >&4
14363         val="$undef"
14364 fi
14365 set d_sigaction; eval $setvar
14366 $rm -f try try$_o try.c
14367
14368 : see if sigprocmask exists
14369 set sigprocmask d_sigprocmask
14370 eval $inlibc
14371
14372 : see if sigsetjmp exists
14373 echo " "
14374 case "$d_sigsetjmp" in
14375 '')
14376         $cat >try.c <<'EOP'
14377 #include <setjmp.h>
14378 sigjmp_buf env;
14379 int set = 1;
14380 int main()
14381 {
14382         if (sigsetjmp(env,1))
14383                 exit(set);
14384         set = 0;
14385         siglongjmp(env, 1);
14386         exit(1);
14387 }
14388 EOP
14389         set try
14390         if eval $compile; then
14391                 if $run ./try >/dev/null 2>&1; then
14392                         echo "POSIX sigsetjmp found." >&4
14393                         val="$define"
14394                 else
14395                         $cat >&4 <<EOM
14396 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
14397 I'll ignore them.
14398 EOM
14399                         val="$undef"
14400                 fi
14401         else
14402                 echo "sigsetjmp not found." >&4
14403                 val="$undef"
14404         fi
14405         ;;
14406 *) val="$d_sigsetjmp"
14407         case "$d_sigsetjmp" in
14408         $define) echo "POSIX sigsetjmp found." >&4;;
14409         $undef) echo "sigsetjmp not found." >&4;;
14410         esac
14411         ;;
14412 esac
14413 set d_sigsetjmp
14414 eval $setvar
14415 $rm -f try.c try
14416
14417 : see if sockatmark exists
14418 set sockatmark d_sockatmark
14419 eval $inlibc
14420
14421 : see if prototype for sockatmark is available
14422 echo " "
14423 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
14424 eval $hasproto
14425
14426 : see if socks5_init exists
14427 set socks5_init d_socks5_init
14428 eval $inlibc
14429
14430 : see if srand48_r exists
14431 set srand48_r d_srand48_r
14432 eval $inlibc
14433 case "$d_srand48_r" in
14434 "$define")
14435         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14436         case "$srand48_r_proto" in
14437         ''|0) try='int srand48_r(long, struct drand48_data*);'
14438         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
14439         esac
14440         case "$srand48_r_proto" in
14441         '')     d_srand48_r=undef
14442                 srand48_r_proto=0
14443                 echo "Disabling srand48_r, cannot determine prototype." ;;
14444         * )     case "$srand48_r_proto" in
14445                 REENTRANT_PROTO*) ;;
14446                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
14447                 esac
14448                 echo "Prototype: $try" ;;
14449         esac
14450         ;;
14451 *)      srand48_r_proto=0
14452         ;;
14453 esac
14454
14455 : see if srandom_r exists
14456 set srandom_r d_srandom_r
14457 eval $inlibc
14458 case "$d_srandom_r" in
14459 "$define")
14460         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14461         case "$srandom_r_proto" in
14462         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
14463         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
14464         esac
14465         case "$srandom_r_proto" in
14466         '')     d_srandom_r=undef
14467                 srandom_r_proto=0
14468                 echo "Disabling srandom_r, cannot determine prototype." ;;
14469         * )     case "$srandom_r_proto" in
14470                 REENTRANT_PROTO*) ;;
14471                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
14472                 esac
14473                 echo "Prototype: $try" ;;
14474         esac
14475         ;;
14476 *)      srandom_r_proto=0
14477         ;;
14478 esac
14479
14480 : see if prototype for setresgid is available
14481 echo " "
14482 set d_sresgproto setresgid $i_unistd unistd.h
14483 eval $hasproto
14484
14485 : see if prototype for setresuid is available
14486 echo " "
14487 set d_sresuproto setresuid $i_unistd unistd.h
14488 eval $hasproto
14489
14490 : see if sys/stat.h is available
14491 set sys/stat.h i_sysstat
14492 eval $inhdr
14493
14494
14495 : see if stat knows about block sizes
14496 echo " "
14497 echo "Checking to see if your struct stat has st_blocks field..." >&4
14498 set d_statblks stat st_blocks $i_sysstat sys/stat.h
14499 eval $hasfield
14500
14501
14502 : see if this is a sys/vfs.h system
14503 set sys/vfs.h i_sysvfs
14504 eval $inhdr
14505
14506
14507 : see if this is a sys/statfs.h system
14508 set sys/statfs.h i_sysstatfs
14509 eval $inhdr
14510
14511
14512 echo " "
14513 echo "Checking to see if your system supports struct statfs..." >&4
14514 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
14515 eval $hasstruct
14516 case "$d_statfs_s" in
14517 "$define")      echo "Yes, it does."   ;;
14518 *)              echo "No, it doesn't." ;;
14519 esac
14520
14521
14522
14523 : see if struct statfs knows about f_flags
14524 case "$d_statfs_s" in
14525 define) 
14526         echo " "
14527         echo "Checking to see if your struct statfs has f_flags field..." >&4
14528         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
14529         eval $hasfield
14530         ;;
14531 *)      val="$undef"
14532         set d_statfs_f_flags
14533         eval $setvar
14534         ;;
14535 esac
14536 case "$d_statfs_f_flags" in
14537 "$define")      echo "Yes, it does."   ;;
14538 *)              echo "No, it doesn't." ;;
14539 esac
14540
14541 : see if _ptr and _cnt from stdio act std
14542 echo " "
14543
14544 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14545         echo "(Looks like you have stdio.h from BSD.)"
14546         case "$stdio_ptr" in
14547         '') stdio_ptr='((fp)->_p)'
14548                 ptr_lval=$define
14549                 ;;
14550         *)      ptr_lval=$d_stdio_ptr_lval;;
14551         esac
14552         case "$stdio_cnt" in
14553         '') stdio_cnt='((fp)->_r)'
14554                 cnt_lval=$define
14555                 ;;
14556         *)      cnt_lval=$d_stdio_cnt_lval;;
14557         esac
14558         case "$stdio_base" in
14559         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
14560         esac
14561         case "$stdio_bufsiz" in
14562         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
14563         esac
14564 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
14565         echo "(Looks like you have stdio.h from Linux.)"
14566         case "$stdio_ptr" in
14567         '') stdio_ptr='((fp)->_IO_read_ptr)'
14568                 ptr_lval=$define
14569                 ;;
14570         *)      ptr_lval=$d_stdio_ptr_lval;;
14571         esac
14572         case "$stdio_cnt" in
14573         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
14574                 cnt_lval=$undef
14575                 ;;
14576         *)      cnt_lval=$d_stdio_cnt_lval;;
14577         esac
14578         case "$stdio_base" in
14579         '') stdio_base='((fp)->_IO_read_base)';;
14580         esac
14581         case "$stdio_bufsiz" in
14582         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
14583         esac
14584 else
14585         case "$stdio_ptr" in
14586         '') stdio_ptr='((fp)->_ptr)'
14587                 ptr_lval=$define
14588                 ;;
14589         *)      ptr_lval=$d_stdio_ptr_lval;;
14590         esac
14591         case "$stdio_cnt" in
14592         '') stdio_cnt='((fp)->_cnt)'
14593                 cnt_lval=$define
14594                 ;;
14595         *)      cnt_lval=$d_stdio_cnt_lval;;
14596         esac
14597         case "$stdio_base" in
14598         '') stdio_base='((fp)->_base)';;
14599         esac
14600         case "$stdio_bufsiz" in
14601         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
14602         esac
14603 fi
14604
14605 : test whether _ptr and _cnt really work
14606 echo "Checking how std your stdio is..." >&4
14607 $cat >try.c <<EOP
14608 #include <stdio.h>
14609 #define FILE_ptr(fp)    $stdio_ptr
14610 #define FILE_cnt(fp)    $stdio_cnt
14611 int main() {
14612         FILE *fp = fopen("try.c", "r");
14613         char c = getc(fp);
14614         if (
14615                 18 <= FILE_cnt(fp) &&
14616                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
14617         )
14618                 exit(0);
14619         exit(1);
14620 }
14621 EOP
14622 val="$undef"
14623 set try
14624 if eval $compile && $to try.c; then
14625         if $run ./try; then
14626                 echo "Your stdio acts pretty std."
14627                 val="$define"
14628         else
14629                 echo "Your stdio isn't very std."
14630         fi
14631 else
14632         echo "Your stdio doesn't appear very std."
14633 fi
14634 $rm -f try.c try
14635 set d_stdstdio
14636 eval $setvar
14637
14638 : Can _ptr be used as an lvalue?
14639 case "$d_stdstdio$ptr_lval" in
14640 $define$define) val=$define ;;
14641 *) val=$undef ;;
14642 esac
14643 set d_stdio_ptr_lval
14644 eval $setvar
14645
14646 : Can _cnt be used as an lvalue?
14647 case "$d_stdstdio$cnt_lval" in
14648 $define$define) val=$define ;;
14649 *) val=$undef ;;
14650 esac
14651 set d_stdio_cnt_lval
14652 eval $setvar
14653
14654
14655 : test whether setting _ptr sets _cnt as a side effect
14656 d_stdio_ptr_lval_sets_cnt="$undef"
14657 d_stdio_ptr_lval_nochange_cnt="$undef"
14658 case "$d_stdio_ptr_lval$d_stdstdio" in
14659 $define$define)
14660         echo "Checking to see what happens if we set the stdio ptr..." >&4
14661 $cat >try.c <<EOP
14662 #include <stdio.h>
14663 /* Can we scream? */
14664 /* Eat dust sed :-) */
14665 /* In the buffer space, no one can hear you scream. */
14666 #define FILE_ptr(fp)    $stdio_ptr
14667 #define FILE_cnt(fp)    $stdio_cnt
14668 #include <sys/types.h>
14669 int main() {
14670         FILE *fp = fopen("try.c", "r");
14671         int c;
14672         char *ptr;
14673         size_t cnt;
14674         if (!fp) {
14675             puts("Fail even to read");
14676             exit(1);
14677         }
14678         c = getc(fp); /* Read away the first # */
14679         if (c == EOF) {
14680             puts("Fail even to read");
14681             exit(1);
14682         }
14683         if (!(
14684                 18 <= FILE_cnt(fp) &&
14685                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
14686         )) {
14687                 puts("Fail even to read");
14688                 exit (1);
14689         }
14690         ptr = (char*) FILE_ptr(fp);
14691         cnt = (size_t)FILE_cnt(fp);
14692
14693         FILE_ptr(fp) += 42;
14694
14695         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
14696                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
14697                 exit (1);
14698         }
14699         if (FILE_cnt(fp) <= 20) {
14700                 printf ("Fail (<20 chars to test)");
14701                 exit (1);
14702         }
14703         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
14704                 puts("Fail compare");
14705                 exit (1);
14706         }
14707         if (cnt == FILE_cnt(fp)) {
14708                 puts("Pass_unchanged");
14709                 exit (0);
14710         }       
14711         if (FILE_cnt(fp) == (cnt - 42)) {
14712                 puts("Pass_changed");
14713                 exit (0);
14714         }
14715         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
14716         return 1;
14717
14718 }
14719 EOP
14720         set try
14721         if eval $compile && $to try.c; then
14722                 case `$run ./try` in
14723                 Pass_changed)
14724                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
14725                         d_stdio_ptr_lval_sets_cnt="$define" ;;
14726                 Pass_unchanged)
14727                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
14728                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
14729                 Fail*)
14730                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
14731                 *)
14732                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
14733         esac
14734         else
14735                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
14736         fi
14737         $rm -f try.c try
14738         ;;
14739 esac
14740
14741 : see if _base is also standard
14742 val="$undef"
14743 case "$d_stdstdio" in
14744 $define)
14745         $cat >try.c <<EOP
14746 #include <stdio.h>
14747 #define FILE_base(fp)   $stdio_base
14748 #define FILE_bufsiz(fp) $stdio_bufsiz
14749 int main() {
14750         FILE *fp = fopen("try.c", "r");
14751         char c = getc(fp);
14752         if (
14753                 19 <= FILE_bufsiz(fp) &&
14754                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
14755         )
14756                 exit(0);
14757         exit(1);
14758 }
14759 EOP
14760         set try
14761         if eval $compile && $to try.c; then
14762                 if $run ./try; then
14763                         echo "And its _base field acts std."
14764                         val="$define"
14765                 else
14766                         echo "But its _base field isn't std."
14767                 fi
14768         else
14769                 echo "However, it seems to be lacking the _base field."
14770         fi
14771         $rm -f try.c try
14772         ;;
14773 esac
14774 set d_stdiobase
14775 eval $setvar
14776
14777 $cat >&4 <<EOM
14778 Checking how to access stdio streams by file descriptor number...
14779 EOM
14780 case "$stdio_stream_array" in
14781 '')     $cat >try.c <<EOCP
14782 #include <stdio.h>
14783 int main() {
14784   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
14785     printf("yes\n");
14786 }
14787 EOCP
14788         for s in _iob __iob __sF
14789         do
14790                 set try -DSTDIO_STREAM_ARRAY=$s
14791                 if eval $compile; then
14792                         case "`$run ./try`" in
14793                         yes)    stdio_stream_array=$s; break ;;
14794                         esac
14795                 fi
14796         done
14797         $rm -f try.* try$exe_ext
14798 esac
14799 case "$stdio_stream_array" in
14800 '')     $cat >&4 <<EOM
14801 I can't figure out how to access stdio streams by file descriptor number.
14802 EOM
14803         d_stdio_stream_array="$undef"
14804         ;;
14805 *)      $cat >&4 <<EOM
14806 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
14807 EOM
14808         d_stdio_stream_array="$define"
14809         ;;
14810 esac
14811
14812 : see if strcoll exists
14813 set strcoll d_strcoll
14814 eval $inlibc
14815
14816 : check for structure copying
14817 echo " "
14818 echo "Checking to see if your C compiler can copy structs..." >&4
14819 $cat >try.c <<'EOCP'
14820 int main()
14821 {
14822         struct blurfl {
14823                 int dyick;
14824         } foo, bar;
14825
14826         foo = bar;
14827 }
14828 EOCP
14829 if $cc -c try.c >/dev/null 2>&1 ; then
14830         val="$define"
14831         echo "Yup, it can."
14832 else
14833         val="$undef"
14834         echo "Nope, it can't."
14835 fi
14836 set d_strctcpy
14837 eval $setvar
14838 $rm -f try.*
14839
14840 : see if strerror and/or sys_errlist[] exist
14841 echo " "
14842 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
14843     if set strerror val -f d_strerror; eval $csym; $val; then
14844                 echo 'strerror() found.' >&4
14845                 d_strerror="$define"
14846                 d_strerrm='strerror(e)'
14847                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
14848                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
14849                         d_syserrlst="$define"
14850                 else
14851                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
14852                         d_syserrlst="$undef"
14853                 fi
14854     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
14855                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
14856                 echo 'strerror() found in string header.' >&4
14857                 d_strerror="$define"
14858                 d_strerrm='strerror(e)'
14859                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
14860                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
14861                                 d_syserrlst="$define"
14862                 else
14863                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
14864                         d_syserrlst="$undef"
14865                 fi
14866     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
14867                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
14868                 d_strerror="$undef"
14869                 d_syserrlst="$define"
14870                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
14871     else
14872                 echo 'strerror() and sys_errlist[] NOT found.' >&4
14873                 d_strerror="$undef"
14874                 d_syserrlst="$undef"
14875                 d_strerrm='"unknown"'
14876     fi
14877 fi
14878
14879 : see if strerror_r exists
14880 set strerror_r d_strerror_r
14881 eval $inlibc
14882 case "$d_strerror_r" in
14883 "$define")
14884         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
14885         case "$strerror_r_proto" in
14886         ''|0) try='int strerror_r(int, char*, size_t);'
14887         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
14888         esac
14889         case "$strerror_r_proto" in
14890         ''|0) try='int strerror_r(int, char*, int);'
14891         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
14892         esac
14893         case "$strerror_r_proto" in
14894         ''|0) try='char* strerror_r(int, char*, size_t);'
14895         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
14896         esac
14897         case "$strerror_r_proto" in
14898         '')     d_strerror_r=undef
14899                 strerror_r_proto=0
14900                 echo "Disabling strerror_r, cannot determine prototype." ;;
14901         * )     case "$strerror_r_proto" in
14902                 REENTRANT_PROTO*) ;;
14903                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
14904                 esac
14905                 echo "Prototype: $try" ;;
14906         esac
14907         ;;
14908 *)      strerror_r_proto=0
14909         ;;
14910 esac
14911
14912 : see if strftime exists
14913 set strftime d_strftime
14914 eval $inlibc
14915
14916 : see if strtod exists
14917 set strtod d_strtod
14918 eval $inlibc
14919
14920 : see if strtol exists
14921 set strtol d_strtol
14922 eval $inlibc
14923
14924 : see if strtold exists
14925 set strtold d_strtold
14926 eval $inlibc
14927
14928 : see if strtoll exists
14929 set strtoll d_strtoll
14930 eval $inlibc
14931
14932 case "$d_longlong-$d_strtoll" in
14933 "$define-$define")
14934         $cat <<EOM
14935 Checking whether your strtoll() works okay...
14936 EOM
14937         $cat >try.c <<'EOCP'
14938 #include <errno.h>
14939 #ifdef __hpux
14940 #define strtoll __strtoll
14941 #endif
14942 #ifdef __EMX__
14943 #define strtoll _strtoll
14944 #endif
14945 #include <stdio.h>
14946 extern long long int strtoll(char *s, char **, int); 
14947 static int bad = 0;
14948 int check(char *s, long long ell, int een) {
14949         long long gll;
14950         errno = 0;
14951         gll = strtoll(s, 0, 10);
14952         if (!((gll == ell) && (errno == een)))
14953                 bad++;
14954 }
14955 int main() {
14956         check(" 1",                                      1LL, 0);
14957         check(" 0",                                      0LL, 0);
14958         check("-1",                                     -1LL, 0);
14959         check("-9223372036854775808", -9223372036854775808LL, 0);
14960         check("-9223372036854775808", -9223372036854775808LL, 0);
14961         check(" 9223372036854775807",  9223372036854775807LL, 0);
14962         check("-9223372036854775808", -9223372036854775808LL, 0);
14963         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
14964         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
14965         if (!bad)
14966                 printf("ok\n");
14967 }
14968 EOCP
14969         set try
14970         if eval $compile; then
14971                 yyy=`$run ./try`
14972                 case "$yyy" in
14973                 ok) echo "Your strtoll() seems to be working okay." ;;
14974                 *) cat <<EOM >&4
14975 Your strtoll() doesn't seem to be working okay.
14976 EOM
14977                    d_strtoll="$undef"
14978                    ;;
14979                 esac
14980         else
14981                 echo "(I can't seem to compile the test program--assuming it doesn't)"
14982                 d_strtoll="$undef"
14983         fi
14984         ;;
14985 esac
14986
14987 : see if strtoq exists
14988 set strtoq d_strtoq
14989 eval $inlibc
14990
14991 : see if strtoul exists
14992 set strtoul d_strtoul
14993 eval $inlibc
14994
14995 case "$d_strtoul" in
14996 "$define")
14997         $cat <<EOM
14998 Checking whether your strtoul() works okay...
14999 EOM
15000         $cat >try.c <<'EOCP'
15001 #include <errno.h>
15002 #include <stdio.h>
15003 extern unsigned long int strtoul(char *s, char **, int); 
15004 static int bad = 0;
15005 void check(char *s, unsigned long eul, int een) {
15006         unsigned long gul;
15007         errno = 0;
15008         gul = strtoul(s, 0, 10);
15009         if (!((gul == eul) && (errno == een)))
15010                 bad++;
15011 }
15012 int main() {
15013         check(" 1", 1L, 0);
15014         check(" 0", 0L, 0);
15015 EOCP
15016         case "$longsize" in
15017         8)
15018             $cat >>try.c <<'EOCP'
15019         check("18446744073709551615", 18446744073709551615UL, 0);
15020         check("18446744073709551616", 18446744073709551615UL, ERANGE);
15021 #if 0 /* strtoul() for /^-/ strings is undefined. */
15022         check("-1", 18446744073709551615UL, 0);
15023         check("-18446744073709551614", 2, 0);
15024         check("-18446744073709551615", 1, 0);
15025         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
15026         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
15027 #endif
15028 EOCP
15029                 ;;
15030         4)
15031                     $cat >>try.c <<'EOCP'
15032         check("4294967295", 4294967295UL, 0);
15033         check("4294967296", 4294967295UL, ERANGE);
15034 #if 0 /* strtoul() for /^-/ strings is undefined. */
15035         check("-1", 4294967295UL, 0);
15036         check("-4294967294", 2, 0);
15037         check("-4294967295", 1, 0);
15038         check("-4294967296", 4294967295UL, ERANGE);
15039         check("-4294967297", 4294967295UL, ERANGE);
15040 #endif
15041 EOCP
15042                 ;;
15043         *)
15044 : Should we write these tests to be more portable by sprintf-ing
15045 : ~0 and then manipulating that char string as input for strtol?
15046                 ;;
15047         esac
15048         $cat >>try.c <<'EOCP'
15049         if (!bad)
15050                 printf("ok\n");
15051         return 0;
15052 }
15053 EOCP
15054         set try
15055         if eval $compile; then
15056                 case "`$run ./try`" in
15057                 ok) echo "Your strtoul() seems to be working okay." ;;
15058                 *) cat <<EOM >&4
15059 Your strtoul() doesn't seem to be working okay.
15060 EOM
15061                    d_strtoul="$undef"
15062                    ;;
15063                 esac
15064         fi
15065         ;;
15066 esac
15067
15068 : see if strtoull exists
15069 set strtoull d_strtoull
15070 eval $inlibc
15071
15072 case "$d_longlong-$d_strtoull" in
15073 "$define-$define")
15074         $cat <<EOM
15075 Checking whether your strtoull() works okay...
15076 EOM
15077         $cat >try.c <<'EOCP'
15078 #include <errno.h>
15079 #ifdef __hpux
15080 #define strtoull __strtoull
15081 #endif
15082 #include <stdio.h>
15083 extern unsigned long long int strtoull(char *s, char **, int); 
15084 static int bad = 0;
15085 int check(char *s, long long eull, int een) {
15086         long long gull;
15087         errno = 0;
15088         gull = strtoull(s, 0, 10);
15089         if (!((gull == eull) && (errno == een)))
15090                 bad++;
15091 }
15092 int main() {
15093         check(" 1",                                        1LL, 0);
15094         check(" 0",                                        0LL, 0);
15095         check("18446744073709551615",  18446744073709551615ULL, 0);
15096         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
15097 #if 0 /* strtoull() for /^-/ strings is undefined. */
15098         check("-1",                    18446744073709551615ULL, 0);
15099         check("-18446744073709551614",                     2LL, 0);
15100         check("-18446744073709551615",                     1LL, 0);
15101         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
15102         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
15103 #endif
15104         if (!bad)
15105                 printf("ok\n");
15106 }
15107 EOCP
15108         set try
15109         if eval $compile; then
15110                 case "`$run ./try`" in
15111                 ok) echo "Your strtoull() seems to be working okay." ;;
15112                 *) cat <<EOM >&4
15113 Your strtoull() doesn't seem to be working okay.
15114 EOM
15115                    d_strtoull="$undef"
15116                    ;;
15117                 esac
15118         fi
15119         ;;
15120 esac
15121
15122 : see if strtouq exists
15123 set strtouq d_strtouq
15124 eval $inlibc
15125
15126 case "$d_strtouq" in
15127 "$define")
15128         $cat <<EOM
15129 Checking whether your strtouq() works okay...
15130 EOM
15131         $cat >try.c <<'EOCP'
15132 #include <errno.h>
15133 #include <stdio.h>
15134 extern unsigned long long int strtouq(char *s, char **, int); 
15135 static int bad = 0;
15136 void check(char *s, unsigned long long eull, int een) {
15137         unsigned long long gull;
15138         errno = 0;
15139         gull = strtouq(s, 0, 10);
15140         if (!((gull == eull) && (errno == een)))
15141                 bad++;
15142 }
15143 int main() {
15144         check(" 1",                                        1LL, 0);
15145         check(" 0",                                        0LL, 0);
15146         check("18446744073709551615",  18446744073709551615ULL, 0);
15147         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
15148 #if 0 /* strtouq() for /^-/ strings is undefined. */
15149         check("-1",                    18446744073709551615ULL, 0);
15150         check("-18446744073709551614",                     2LL, 0);
15151         check("-18446744073709551615",                     1LL, 0);
15152         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
15153         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
15154 #endif
15155         if (!bad)
15156                 printf("ok\n");
15157         return 0;
15158 }
15159 EOCP
15160         set try
15161         if eval $compile; then
15162                 case "`$run ./try`" in
15163                 ok) echo "Your strtouq() seems to be working okay." ;;
15164                 *) cat <<EOM >&4
15165 Your strtouq() doesn't seem to be working okay.
15166 EOM
15167                    d_strtouq="$undef"
15168                    ;;
15169                 esac
15170         fi
15171         ;;
15172 esac
15173
15174 : see if strxfrm exists
15175 set strxfrm d_strxfrm
15176 eval $inlibc
15177
15178 : see if symlink exists
15179 set symlink d_symlink
15180 eval $inlibc
15181
15182 : see if syscall exists
15183 set syscall d_syscall
15184 eval $inlibc
15185
15186 : see if prototype for syscall is available
15187 echo " "
15188 set d_syscallproto syscall $i_unistd unistd.h
15189 eval $hasproto
15190
15191 : see if sysconf exists
15192 set sysconf d_sysconf
15193 eval $inlibc
15194
15195 : see if system exists
15196 set system d_system
15197 eval $inlibc
15198
15199 : see if tcgetpgrp exists
15200 set tcgetpgrp d_tcgetpgrp
15201 eval $inlibc
15202
15203 : see if tcsetpgrp exists
15204 set tcsetpgrp d_tcsetpgrp
15205 eval $inlibc
15206
15207 : see if prototype for telldir is available
15208 echo " "
15209 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
15210 eval $hasproto
15211
15212 : see if this is a sys/times.h system
15213 set sys/times.h i_systimes
15214 eval $inhdr
15215
15216 : see if times exists
15217 echo " "
15218 if set times val -f d_times; eval $csym; $val; then
15219         echo 'times() found.' >&4
15220         d_times="$define"
15221         inc=''
15222         case "$i_systimes" in
15223         "$define") inc='sys/times.h';;
15224         esac
15225         rp="What is the type returned by times() on this system?"
15226         set clock_t clocktype long stdio.h sys/types.h $inc
15227         eval $typedef_ask
15228 else
15229         echo 'times() NOT found, hope that will do.' >&4
15230         d_times="$undef"
15231         clocktype='int'
15232 fi
15233
15234 : see if tmpnam_r exists
15235 set tmpnam_r d_tmpnam_r
15236 eval $inlibc
15237 case "$d_tmpnam_r" in
15238 "$define")
15239         hdrs="$i_systypes sys/types.h define stdio.h $i_stdio stdio.h"
15240         case "$tmpnam_r_proto" in
15241         ''|0) try='char* tmpnam_r(char*);'
15242         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
15243         esac
15244         case "$tmpnam_r_proto" in
15245         '')     d_tmpnam_r=undef
15246                 tmpnam_r_proto=0
15247                 echo "Disabling tmpnam_r, cannot determine prototype." ;;
15248         * )     case "$tmpnam_r_proto" in
15249                 REENTRANT_PROTO*) ;;
15250                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
15251                 esac
15252                 echo "Prototype: $try" ;;
15253         esac
15254         ;;
15255 *)      tmpnam_r_proto=0
15256         ;;
15257 esac
15258
15259 : see if truncate exists
15260 set truncate d_truncate
15261 eval $inlibc
15262
15263 : see if ttyname_r exists
15264 set ttyname_r d_ttyname_r
15265 eval $inlibc
15266 case "$d_ttyname_r" in
15267 "$define")
15268         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
15269         case "$ttyname_r_proto" in
15270         ''|0) try='int ttyname_r(int, char*, size_t);'
15271         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
15272         esac
15273         case "$ttyname_r_proto" in
15274         ''|0) try='int ttyname_r(int, char*, int);'
15275         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
15276         esac
15277         case "$ttyname_r_proto" in
15278         ''|0) try='char* ttyname_r(int, char*, int);'
15279         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
15280         esac
15281         case "$ttyname_r_proto" in
15282         '')     d_ttyname_r=undef
15283                 ttyname_r_proto=0
15284                 echo "Disabling ttyname_r, cannot determine prototype." ;;
15285         * )     case "$ttyname_r_proto" in
15286                 REENTRANT_PROTO*) ;;
15287                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
15288                 esac
15289                 echo "Prototype: $try" ;;
15290         esac
15291         ;;
15292 *)      ttyname_r_proto=0
15293         ;;
15294 esac
15295
15296 : see if tzname[] exists
15297 echo " "
15298 if set tzname val -a d_tzname; eval $csym; $val; then
15299         val="$define"
15300         echo 'tzname[] found.' >&4
15301 else
15302         val="$undef"
15303         echo 'tzname[] NOT found.' >&4
15304 fi
15305 set d_tzname
15306 eval $setvar
15307
15308 case "$osname" in
15309 next|rhapsody|darwin) multiarch="$define" ;;
15310 esac
15311 case "$multiarch" in
15312 ''|[nN]*) multiarch="$undef" ;;
15313 esac
15314
15315 : check for ordering of bytes in a long
15316 echo " "
15317 case "$usecrosscompile$multiarch" in
15318 *$define*)
15319         $cat <<EOM
15320 You seem to be either cross-compiling or doing a multiarchitecture build,
15321 skipping the byteorder check.
15322
15323 EOM
15324         byteorder='ffff'
15325         ;;
15326 *)
15327         case "$byteorder" in
15328         '')
15329                 $cat <<'EOM'
15330 In the following, larger digits indicate more significance.  A big-endian
15331 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
15332 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
15333 machines may have weird orders like 3412.  A Cray will report 87654321,
15334 an Alpha will report 12345678. If the test program works the default is
15335 probably right.
15336 I'm now running the test program...
15337 EOM
15338                 $cat >try.c <<'EOCP'
15339 #include <stdio.h>
15340 int main()
15341 {
15342         int i;
15343         union {
15344                 unsigned long l;
15345                 char c[sizeof(long)];
15346         } u;
15347
15348         if (sizeof(long) > 4)
15349                 u.l = (0x08070605L << 32) | 0x04030201L;
15350         else
15351                 u.l = 0x04030201L;
15352         for (i = 0; i < sizeof(long); i++)
15353                 printf("%c", u.c[i]+'0');
15354         printf("\n");
15355         exit(0);
15356 }
15357 EOCP
15358                 xxx_prompt=y
15359                 set try
15360                 if eval $compile && ./try > /dev/null; then
15361                         dflt=`$run ./try`
15362                         case "$dflt" in
15363                         [1-4][1-4][1-4][1-4]|12345678|87654321)
15364                                 echo "(The test program ran ok.)"
15365                                 echo "byteorder=$dflt"
15366                                 xxx_prompt=n
15367                         ;;
15368                         ????|????????) echo "(The test program ran ok.)" ;;
15369                         *) echo "(The test program didn't run right for some reason.)" ;;
15370                         esac
15371                 else
15372                         dflt='4321'
15373                         cat <<'EOM'
15374 (I can't seem to compile the test program.  Guessing big-endian...)
15375 EOM
15376                 fi
15377                 case "$xxx_prompt" in
15378                 y)
15379                         rp="What is the order of bytes in a long?"
15380                         . ./myread
15381                         byteorder="$ans"
15382                         ;;
15383                 *)      byteorder=$dflt
15384                         ;;
15385                 esac
15386                 ;;
15387         esac
15388         $rm -f try.c try
15389         ;;
15390 esac
15391
15392
15393 $cat <<EOM
15394
15395 Checking to see whether you can access character data unalignedly...
15396 EOM
15397 case "$d_u32align" in
15398 '')   $cat >try.c <<EOCP
15399 #include <stdio.h>
15400 #define U32 $u32type
15401 #define BYTEORDER 0x$byteorder
15402 #define U8 $u8type
15403 #include <signal.h>
15404 #ifdef SIGBUS
15405 $signal_t bletch(s) int s; { exit(4); }
15406 #endif
15407 int main() {
15408 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
15409     U8 buf[8];
15410     U32 *up;
15411     int i;
15412
15413     if (sizeof(U32) != 4) {
15414         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
15415         exit(1);
15416     }
15417
15418     fflush(stdout);
15419
15420 #ifdef SIGBUS
15421     signal(SIGBUS, bletch);
15422 #endif
15423
15424     buf[0] = 0;
15425     buf[1] = 0;
15426     buf[2] = 0;
15427     buf[3] = 1;
15428     buf[5] = 0;
15429     buf[6] = 0;
15430     buf[7] = 0;
15431     buf[8] = 1;
15432
15433     for (i = 0; i < 4; i++) {
15434         up = (U32*)(buf + i);
15435         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
15436                (*up == 1 << (8*(3-i)))  /* little-endian */
15437               )
15438            )
15439         {
15440             printf("read failed (%x)\n", *up);
15441             exit(2);
15442         }
15443     }
15444
15445     /* write test */
15446     for (i = 0; i < 4; i++) {
15447         up = (U32*)(buf + i);
15448         *up = 0xBeef;
15449         if (*up != 0xBeef) {
15450             printf("write failed (%x)\n", *up);
15451             exit(3);
15452         }
15453     }
15454
15455     exit(0);
15456 #else
15457     printf("1\n");
15458     exit(1);
15459 #endif
15460     return 0;
15461 }
15462 EOCP
15463 set try
15464 if eval $compile_ok; then
15465         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
15466         $run ./try 2>&1 >/dev/null
15467         case "$?" in
15468         0)      cat >&4 <<EOM
15469 You can access character data pretty unalignedly.
15470 EOM
15471                 d_u32align="$undef"
15472                 ;;
15473         *)      cat >&4 <<EOM
15474 It seems that you must access character data in an aligned manner.
15475 EOM
15476                 d_u32align="$define"
15477                 ;;
15478         esac
15479 else
15480         rp='Can you access character data at unaligned addresses?'
15481         dflt='n'
15482         . ./myread
15483         case "$ans" in
15484         [yY]*)  d_u32align="$undef"  ;;
15485         *)      d_u32align="$define" ;;
15486         esac
15487 fi
15488 $rm -f core core.try.* try.core
15489 ;;
15490 esac
15491
15492 : see if ualarm exists
15493 set ualarm d_ualarm
15494 eval $inlibc
15495
15496 : see if umask exists
15497 set umask d_umask
15498 eval $inlibc
15499
15500 : see if unordered exists
15501 set unordered d_unordered
15502 eval $inlibc
15503
15504 : see if usleep exists
15505 set usleep d_usleep
15506 eval $inlibc
15507
15508 : see if prototype for usleep is available
15509 echo " "
15510 set d_usleepproto usleep $i_unistd unistd.h
15511 eval $hasproto
15512
15513 : see if ustat exists
15514 set ustat d_ustat
15515 eval $inlibc
15516
15517 : backward compatibility for d_hvfork
15518 if test X$d_hvfork != X; then
15519         d_vfork="$d_hvfork"
15520         d_hvfork=''
15521 fi
15522 : see if there is a vfork
15523 val=''
15524 set vfork val
15525 eval $inlibc
15526
15527 : Ok, but do we want to use it. vfork is reportedly unreliable in 
15528 : perl on Solaris 2.x, and probably elsewhere.
15529 case "$val" in
15530 $define)
15531         echo " "
15532         case "$usevfork" in
15533         false) dflt='n';;
15534         *) dflt='y';;
15535         esac
15536         cat <<'EOM'
15537  
15538 Perl can only use a vfork() that doesn't suffer from strict
15539 restrictions on calling functions or modifying global data in
15540 the child.  For example, glibc-2.1 contains such a vfork()
15541 that is unsuitable.  If your system provides a proper fork()
15542 call, chances are that you do NOT want perl to use vfork().
15543
15544 EOM
15545         rp="Do you still want to use vfork()?"
15546         . ./myread
15547         case "$ans" in
15548         y|Y) ;;
15549         *)
15550                 echo "Ok, we won't use vfork()."
15551                 val="$undef"
15552                 ;;
15553         esac
15554         ;;
15555 esac
15556 set d_vfork
15557 eval $setvar
15558 case "$d_vfork" in
15559 $define) usevfork='true';;
15560 *) usevfork='false';;
15561 esac
15562
15563 : see if closedir exists
15564 set closedir d_closedir
15565 eval $inlibc
15566
15567 case "$d_closedir" in
15568 "$define")
15569         echo " "
15570         echo "Checking whether closedir() returns a status..." >&4
15571         cat > try.c <<EOM
15572 #$i_dirent I_DIRENT             /**/
15573 #$i_sysdir I_SYS_DIR            /**/
15574 #$i_sysndir I_SYS_NDIR          /**/
15575 #$i_systypes I_SYS_TYPES        /**/
15576
15577 #if defined(I_SYS_TYPES)
15578 #include <sys/types.h>
15579 #endif
15580 #if defined(I_DIRENT)
15581 #include <dirent.h>
15582 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
15583 #include <sys/dir.h>
15584 #endif
15585 #else
15586 #ifdef I_SYS_NDIR
15587 #include <sys/ndir.h>
15588 #else
15589 #ifdef I_SYS_DIR
15590 #ifdef hp9000s500
15591 #include <ndir.h>       /* may be wrong in the future */
15592 #else
15593 #include <sys/dir.h>
15594 #endif
15595 #endif
15596 #endif
15597 #endif 
15598 int main() { return closedir(opendir(".")); }
15599 EOM
15600         set try
15601         if eval $compile_ok; then
15602                 if $run ./try > /dev/null 2>&1 ; then
15603                         echo "Yes, it does."
15604                         val="$undef"
15605                 else
15606                         echo "No, it doesn't."
15607                         val="$define"
15608                 fi
15609         else
15610                 echo "(I can't seem to compile the test program--assuming it doesn't)"
15611                 val="$define"
15612         fi
15613         ;;
15614 *)
15615         val="$undef";
15616         ;;
15617 esac
15618 set d_void_closedir
15619 eval $setvar
15620 $rm -f try try.*
15621 : see if there is a wait4
15622 set wait4 d_wait4
15623 eval $inlibc
15624
15625 : see if waitpid exists
15626 set waitpid d_waitpid
15627 eval $inlibc
15628
15629 : see if wcstombs exists
15630 set wcstombs d_wcstombs
15631 eval $inlibc
15632
15633 : see if wctomb exists
15634 set wctomb d_wctomb
15635 eval $inlibc
15636
15637 : see if writev exists
15638 set writev d_writev
15639 eval $inlibc
15640
15641 : preserve RCS keywords in files with variable substitution, grrr
15642 Date='$Date'
15643 Id='$Id'
15644 Log='$Log'
15645 RCSfile='$RCSfile'
15646 Revision='$Revision'
15647
15648 : check for alignment requirements
15649 echo " "
15650 case "$usecrosscompile$multiarch" in
15651 *$define*)
15652         $cat <<EOM
15653 You seem to be either cross-compiling or doing a multiarchitecture build,
15654 skipping the memory alignment check.
15655
15656 EOM
15657         case "$alignbytes" in
15658         '') alignbytes=8 ;;
15659         esac
15660         ;;
15661 *)
15662         case "$alignbytes" in
15663         '') echo "Checking alignment constraints..." >&4
15664                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
15665                         $cat >try.c <<'EOCP'
15666 typedef long double NV;
15667 EOCP
15668                 else
15669                         $cat >try.c <<'EOCP'
15670 typedef double NV;
15671 EOCP
15672                 fi
15673                 $cat >>try.c <<'EOCP'
15674 #include <stdio.h>
15675 struct foobar {
15676         char foo;
15677         NV bar;
15678 } try_algn;
15679 int main()
15680 {
15681     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
15682     return(0);
15683 }
15684 EOCP
15685                 set try
15686                 if eval $compile_ok; then
15687                         dflt=`$run ./try`
15688                 else
15689                         dflt='8'
15690                         echo "(I can't seem to compile the test program...)"
15691                 fi
15692                 ;;
15693         *) dflt="$alignbytes"
15694                 ;;
15695         esac
15696         rp="Doubles must be aligned on a how-many-byte boundary?"
15697         . ./myread
15698         alignbytes="$ans"
15699         $rm -f try.c try
15700         ;;
15701 esac
15702
15703
15704 : set the base revision
15705 baserev=5.0
15706
15707 : how do we catenate cpp tokens here?
15708 echo " "
15709 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
15710 $cat >cpp_stuff.c <<'EOCP'
15711 #define RCAT(a,b)a/**/b
15712 #define ACAT(a,b)a ## b
15713 RCAT(Rei,ser)
15714 ACAT(Cir,cus)
15715 EOCP
15716 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
15717 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
15718         echo "Oh!  Smells like ANSI's been here." >&4
15719         echo "We can catify or stringify, separately or together!"
15720         cpp_stuff=42
15721 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
15722         echo "Ah, yes!  The good old days!" >&4
15723         echo "However, in the good old days we don't know how to stringify and"
15724         echo "catify at the same time."
15725         cpp_stuff=1
15726 else
15727         $cat >&4 <<EOM
15728 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
15729 to have to edit the values of CAT[2-5] in config.h...
15730 EOM
15731         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
15732 fi
15733 $rm -f cpp_stuff.*
15734
15735 : see if this is a db.h system
15736 set db.h i_db
15737 eval $inhdr
15738
15739 case "$i_db" in
15740 $define)
15741         : Check db version.
15742         echo " "
15743         echo "Checking Berkeley DB version ..." >&4
15744         $cat >try.c <<EOCP
15745 #$d_const HASCONST
15746 #ifndef HASCONST
15747 #define const
15748 #endif
15749 #include <sys/types.h>
15750 #include <stdio.h>
15751 #include <db.h>
15752 int main(int argc, char *argv[])
15753 {
15754 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
15755     int Major, Minor, Patch ;
15756     unsigned long Version ;
15757     (void)db_version(&Major, &Minor, &Patch) ;
15758     if (argc == 2) {
15759         printf("%d %d %d %d %d %d\n",
15760                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
15761                Major, Minor, Patch);
15762         exit(0);
15763     }
15764     printf("You have Berkeley DB Version 2 or greater.\n");
15765
15766     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
15767                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
15768     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
15769                 Major, Minor, Patch) ;
15770
15771     /* check that db.h & libdb are compatible */
15772     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
15773         printf("db.h and libdb are incompatible.\n") ;
15774         exit(3);        
15775     }
15776
15777     printf("db.h and libdb are compatible.\n") ;
15778
15779     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
15780                 + DB_VERSION_PATCH ;
15781
15782     /* needs to be >= 2.3.4 */
15783     if (Version < 2003004) {
15784     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
15785         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
15786         exit(2);        
15787     }
15788
15789     exit(0);
15790 #else
15791 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
15792     if (argc == 2) {
15793         printf("1 0 0\n");
15794         exit(0);
15795     }
15796     printf("You have Berkeley DB Version 1.\n");
15797     exit(0);    /* DB version < 2: the coast is clear. */
15798 #else
15799     exit(1);    /* <db.h> not Berkeley DB? */
15800 #endif
15801 #endif
15802 }
15803 EOCP
15804         set try
15805         if eval $compile_ok && $run ./try; then
15806                 echo 'Looks OK.' >&4
15807                 set `$run ./try 1`
15808                 db_version_major=$1
15809                 db_version_minor=$2
15810                 db_version_patch=$3
15811         else
15812                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
15813                 i_db=$undef
15814                 case " $libs " in
15815                 *"-ldb "*)
15816                         : Remove db from list of libraries to use
15817                         echo "Removing unusable -ldb from library list" >&4
15818                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
15819                         shift
15820                         libs="$*"
15821                         echo "libs = $libs" >&4
15822                         ;;
15823                 esac
15824         fi
15825         $rm -f try.*
15826         ;;
15827 esac
15828
15829 case "$i_db" in
15830 define)
15831         : Check the return type needed for hash 
15832         echo " "
15833         echo "Checking return type needed for hash for Berkeley DB ..." >&4
15834         $cat >try.c <<EOCP
15835 #$d_const HASCONST
15836 #ifndef HASCONST
15837 #define const
15838 #endif
15839 #include <sys/types.h>
15840 #include <db.h>
15841
15842 #ifndef DB_VERSION_MAJOR
15843 u_int32_t hash_cb (ptr, size)
15844 const void *ptr;
15845 size_t size;
15846 {
15847 }
15848 HASHINFO info;
15849 int main()
15850 {
15851         info.hash = hash_cb;
15852 }
15853 #endif
15854 EOCP
15855         if $cc $ccflags -c try.c >try.out 2>&1 ; then
15856                 if $contains warning try.out >>/dev/null 2>&1 ; then
15857                         db_hashtype='int'
15858                 else
15859                         db_hashtype='u_int32_t'
15860                 fi
15861         else
15862                 : XXX Maybe we should just give up here.
15863                 db_hashtype=u_int32_t
15864                 $cat try.out >&4
15865                 echo "Help:  I can't seem to compile the db test program." >&4
15866                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
15867         fi
15868         $rm -f try.*
15869         echo "Your version of Berkeley DB uses $db_hashtype for hash."
15870         ;;
15871 *)      db_hashtype=u_int32_t
15872         ;;
15873 esac
15874 case "$i_db" in
15875 define)
15876         : Check the return type needed for prefix 
15877         echo " "
15878         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
15879         cat >try.c <<EOCP
15880 #$d_const HASCONST
15881 #ifndef HASCONST
15882 #define const
15883 #endif
15884 #include <sys/types.h>
15885 #include <db.h>
15886
15887 #ifndef DB_VERSION_MAJOR
15888 size_t prefix_cb (key1, key2)
15889 const DBT *key1;
15890 const DBT *key2;
15891 {
15892 }
15893 BTREEINFO info;
15894 int main()
15895 {
15896         info.prefix = prefix_cb;
15897 }
15898 #endif
15899 EOCP
15900         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
15901                 if $contains warning try.out >>/dev/null 2>&1 ; then
15902                         db_prefixtype='int'
15903                 else
15904                         db_prefixtype='size_t'
15905                 fi
15906         else
15907                 db_prefixtype='size_t'
15908                 : XXX Maybe we should just give up here.
15909                 $cat try.out >&4
15910                 echo "Help:  I can't seem to compile the db test program." >&4
15911                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
15912         fi
15913         $rm -f try.*
15914         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
15915         ;;
15916 *)      db_prefixtype='size_t'
15917         ;;
15918 esac
15919
15920
15921 : How can we generate normalized random numbers ?
15922 echo " "
15923 echo "Looking for a random number function..." >&4
15924 case "$randfunc" in
15925 '')
15926         if set drand48 val -f; eval $csym; $val; then
15927                 dflt="drand48"
15928                 echo "Good, found drand48()." >&4
15929         elif set random val -f; eval $csym; $val; then
15930                 dflt="random"
15931                 echo "OK, found random()." >&4
15932         else
15933                 dflt="rand"
15934                 echo "Yick, looks like I have to use rand()." >&4
15935         fi
15936         echo " "
15937         ;;
15938 *)
15939         dflt="$randfunc"
15940         ;;
15941 esac
15942 cont=true
15943
15944 case "$ccflags" in
15945 *-Dmy_rand=*|*-Dmy_srand=*)
15946         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
15947         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
15948         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
15949         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
15950         ;;
15951 esac
15952
15953 while $test "$cont"; do
15954         rp="Use which function to generate random numbers?"
15955         . ./myread
15956         if $test "$ans" = "$dflt"; then
15957                 : null
15958         else
15959                 randbits=''
15960         fi
15961         randfunc="$ans"
15962         if set $ans val -f; eval $csym; $val; then
15963                 cont=''
15964         else
15965                 dflt=y
15966                 rp="I cannot find function $ans. Use that name anyway?"
15967                 . ./myread
15968                 dflt=rand
15969                 case "$ans" in
15970                         [yY]*) cont='';;
15971                 esac
15972         fi
15973         case "$cont" in
15974         '')
15975                 case "$randfunc" in
15976                 drand48)
15977                         drand01="drand48()"
15978                         seedfunc="srand48"
15979                         randbits=48
15980                         randseedtype=long
15981                         ;;
15982                 rand|random)
15983                         case "$randbits" in
15984                         '')
15985 echo "Checking to see how many bits your $randfunc() function produces..." >&4
15986                                 $cat >try.c <<EOCP
15987 #$i_unistd I_UNISTD
15988 #$i_stdlib I_STDLIB
15989 #include <stdio.h>
15990 #ifdef I_UNISTD
15991 #  include <unistd.h>
15992 #endif
15993 #ifdef I_STDLIB
15994 #  include <stdlib.h>
15995 #endif
15996 int main()
15997 {
15998         register int i;
15999         register unsigned long tmp;
16000         register unsigned long max = 0L;
16001
16002         for (i = 1000; i; i--) {
16003                 tmp = (unsigned long) $randfunc();
16004                 if (tmp > max) max = tmp;
16005         }
16006         for (i = 0; max; i++)
16007                 max /= 2;
16008         printf("%d\n",i);
16009 }
16010 EOCP
16011                                 set try
16012                                 if eval $compile_ok; then
16013                                         dflt=`try`
16014                                 else
16015                                         dflt='?'
16016                                         echo "(I can't seem to compile the test program...)"
16017                                 fi
16018                                 ;;
16019                         *)
16020                                 dflt="$randbits"
16021                                 ;;
16022                         esac
16023                         rp="How many bits does your $randfunc() function produce?"
16024                         . ./myread
16025                         randbits="$ans"
16026                         $rm -f try.c try
16027                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
16028                         seedfunc="s$randfunc"
16029                         randseedtype=unsigned
16030                         ;;
16031                 *)
16032                         dflt="31"
16033                         rp="How many bits does your $randfunc() function produce?"
16034                         . ./myread
16035                         randbits="$ans"
16036                         seedfunc="s$randfunc"
16037                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
16038                         if set $seedfunc val -f; eval $csym; $val; then
16039                                 echo "(Using $seedfunc() to seed random generator)"
16040                         else
16041                                 echo "(Warning: no $seedfunc() to seed random generator)"
16042                                 seedfunc=rand
16043                         fi
16044                         randseedtype=unsigned
16045                         ;;
16046                 esac
16047                 ;;
16048         esac
16049 done
16050
16051 echo " "
16052 echo "Determining whether or not we are on an EBCDIC system..." >&4
16053 $cat >try.c <<'EOM'
16054 int main()
16055 {
16056   if ('M'==0xd4) return 0;
16057   return 1;
16058 }
16059 EOM
16060
16061 val=$undef
16062 set try
16063 if eval $compile_ok; then
16064         if $run ./try; then
16065                 echo "You seem to speak EBCDIC." >&4
16066                 val="$define"
16067         else
16068                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
16069         fi
16070 else
16071         echo "I'm unable to compile the test program." >&4
16072         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
16073 fi
16074 $rm -f try try.*
16075 set ebcdic
16076 eval $setvar
16077
16078 echo " "
16079 $cat >&4 <<EOM
16080 Checking how to flush all pending stdio output...
16081 EOM
16082 # I only know how to find the first 32 possibly open files on SunOS.
16083 # See also hints/sunos_4_1.sh and util.c  --AD
16084 case "$osname" in
16085 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
16086 esac
16087 $cat >>try.c <<EOCP
16088 #include <stdio.h>
16089 #$i_unistd I_UNISTD
16090 #ifdef I_UNISTD
16091 # include <unistd.h>
16092 #endif
16093 #$d_sysconf HAS_SYSCONF
16094 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
16095 #ifdef HAS_STDIO_STREAM_ARRAY
16096 # define STDIO_STREAM_ARRAY $stdio_stream_array
16097 #endif
16098 int main() {
16099   FILE* p;
16100   unlink("try.out");
16101   p = fopen("try.out", "w");
16102 #ifdef TRY_FPUTC
16103   fputc('x', p);
16104 #else
16105 # ifdef TRY_FPRINTF
16106   fprintf(p, "x");
16107 # endif
16108 #endif
16109 #ifdef TRY_FFLUSH_NULL
16110   fflush(NULL);
16111 #endif
16112 #ifdef TRY_FFLUSH_ALL
16113   {
16114     long open_max = -1;
16115 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
16116     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
16117 # else
16118 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
16119     open_max = sysconf(_SC_OPEN_MAX);
16120 #  else
16121 #   ifdef FOPEN_MAX
16122     open_max = FOPEN_MAX;
16123 #   else
16124 #    ifdef OPEN_MAX
16125     open_max = OPEN_MAX;
16126 #    else
16127 #     ifdef _NFILE
16128     open_max = _NFILE;
16129 #     endif
16130 #    endif
16131 #   endif
16132 #  endif
16133 # endif 
16134 # ifdef HAS_STDIO_STREAM_ARRAY
16135     if (open_max > 0) {
16136       long i;
16137       for (i = 0; i < open_max; i++)
16138             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
16139                 STDIO_STREAM_ARRAY[i]._file < open_max &&
16140                 STDIO_STREAM_ARRAY[i]._flag)
16141                 fflush(&STDIO_STREAM_ARRAY[i]);
16142     }   
16143   }
16144 # endif
16145 #endif
16146   _exit(42);
16147 }
16148 EOCP
16149 : first we have to find out how _not_ to flush
16150 $to try.c
16151 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
16152     output=''
16153     set try -DTRY_FPUTC
16154     if eval $compile; then
16155             $run ./try 2>/dev/null
16156             code="$?"
16157             $from try.out
16158             if $test ! -s try.out -a "X$code" = X42; then
16159                 output=-DTRY_FPUTC
16160             fi
16161     fi
16162     case "$output" in
16163     '')
16164             set try -DTRY_FPRINTF
16165             if eval $compile; then
16166                     $run ./try 2>/dev/null
16167                     code="$?"
16168                     $from try.out
16169                     if $test ! -s try.out -a "X$code" = X42; then
16170                         output=-DTRY_FPRINTF
16171                     fi
16172             fi
16173         ;;
16174     esac
16175 fi
16176 : check for fflush NULL behaviour
16177 case "$fflushNULL" in
16178 '')     set try -DTRY_FFLUSH_NULL $output
16179         if eval $compile; then
16180                 $run ./try 2>/dev/null
16181                 code="$?"
16182                 $from try.out
16183                 if $test -s try.out -a "X$code" = X42; then
16184                         fflushNULL="`$cat try.out`"
16185                 else
16186                         if $test "X$code" != X42; then
16187                                 $cat >&4 <<EOM
16188 (If this test failed, don't worry, we'll try another method shortly.)
16189 EOM
16190                         fi
16191                 fi
16192         fi
16193         $rm -f core try.core core.try.*
16194         case "$fflushNULL" in
16195         x)      $cat >&4 <<EOM
16196 Your fflush(NULL) works okay for output streams.
16197 Let's see if it clobbers input pipes...
16198 EOM
16199 # As of mid-March 2000 all versions of Solaris appear to have a stdio
16200 # bug that improperly flushes the input end of pipes.  So we avoid the
16201 # autoflush on fork/system/exec support for now. :-(
16202 $cat >tryp.c <<EOCP
16203 #include <stdio.h>
16204 int
16205 main(int argc, char **argv)
16206 {
16207     char buf[1024];
16208     int i;
16209     char *bp = buf;
16210     while (1) {
16211         while ((i = getc(stdin)) != -1
16212                && (*bp++ = i) != '\n'
16213                && bp < &buf[1024])
16214         /* DO NOTHING */ ;
16215         *bp = '\0';
16216         fprintf(stdout, "%s", buf);
16217         fflush(NULL);
16218         if (i == -1)
16219             return 0;
16220         bp = buf;
16221     }
16222 }
16223 EOCP
16224                 fflushNULL="$define"
16225                 set tryp
16226                 if eval $compile; then
16227                     $rm -f tryp.out
16228                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
16229                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
16230                        $cat >&4 <<EOM
16231 fflush(NULL) seems to behave okay with input streams.
16232 EOM
16233                         fflushNULL="$define"
16234                     else
16235                         $cat >&4 <<EOM
16236 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
16237 EOM
16238                         fflushNULL="$undef"
16239                     fi
16240                 fi
16241                 $rm -f core tryp.c tryp.core core.tryp.*
16242                 ;;
16243         '')     $cat >&4 <<EOM
16244 Your fflush(NULL) isn't working (contrary to ANSI C).
16245 EOM
16246                 fflushNULL="$undef"
16247                 ;;
16248         *)      $cat >&4 <<EOM
16249 Cannot figure out whether your fflush(NULL) works or not.
16250 I'm assuming it doesn't (contrary to ANSI C).
16251 EOM
16252                 fflushNULL="$undef"
16253                 ;;
16254         esac
16255         ;;
16256 $define|true|[yY]*)
16257         fflushNULL="$define"
16258         ;;
16259 *)
16260         fflushNULL="$undef"
16261         ;;
16262 esac
16263 : check explicit looping only if NULL did not work, and if the pipe
16264 : bug does not show up on an explicit flush too
16265 case "$fflushNULL" in
16266 "$undef")
16267         $cat >tryp.c <<EOCP
16268 #include <stdio.h>
16269 int
16270 main(int argc, char **argv)
16271 {
16272     char buf[1024];
16273     int i;
16274     char *bp = buf;
16275     while (1) {
16276         while ((i = getc(stdin)) != -1
16277                && (*bp++ = i) != '\n'
16278                && bp < &buf[1024])
16279         /* DO NOTHING */ ;
16280         *bp = '\0';
16281         fprintf(stdout, "%s", buf);
16282         fflush(stdin);
16283         if (i == -1)
16284             return 0;
16285         bp = buf;
16286     }
16287 }
16288 EOCP
16289         set tryp
16290         if eval $compile; then
16291             $rm -f tryp.out
16292             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
16293             if cmp tryp.c tryp.out >/dev/null 2>&1; then
16294                $cat >&4 <<EOM
16295 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
16296 EOM
16297                 : now check for fflushall behaviour
16298                 case "$fflushall" in
16299                 '')     set try -DTRY_FFLUSH_ALL $output
16300                         if eval $compile; then
16301                                 $cat >&4 <<EOM
16302 (Now testing the other method--but note that this also may fail.)
16303 EOM
16304                                 $run ./try 2>/dev/null
16305                                 code=$?
16306                                 $from try.out
16307                                 if $test -s try.out -a "X$code" = X42; then
16308                                         fflushall="`$cat try.out`"
16309                                 fi
16310                         fi
16311                         $rm -f core try.core core.try.*
16312                         case "$fflushall" in
16313                         x)      $cat >&4 <<EOM
16314 Whew. Flushing explicitly all the stdio streams works.
16315 EOM
16316                                 fflushall="$define"
16317                                 ;;
16318                         '')     $cat >&4 <<EOM
16319 Sigh. Flushing explicitly all the stdio streams doesn't work.
16320 EOM
16321                                 fflushall="$undef"
16322                                 ;;
16323                         *)      $cat >&4 <<EOM
16324 Cannot figure out whether flushing stdio streams explicitly works or not.
16325 I'm assuming it doesn't.
16326 EOM
16327                                 fflushall="$undef"
16328                                 ;;
16329                         esac
16330                         ;;
16331                 "$define"|true|[yY]*)
16332                         fflushall="$define"
16333                         ;;
16334                 *)
16335                         fflushall="$undef"
16336                         ;;
16337                 esac
16338             else
16339                 $cat >&4 <<EOM
16340 All is futile.  Even fflush(stdin) clobbers input pipes!
16341 EOM
16342                 fflushall="$undef"
16343             fi
16344         else
16345             fflushall="$undef"
16346         fi
16347         $rm -f core tryp.c tryp.core core.tryp.*
16348         ;;
16349 *)      fflushall="$undef"
16350         ;;
16351 esac
16352
16353 case "$fflushNULL$fflushall" in
16354 undefundef)
16355         $cat <<EOM
16356 OK, I give up.  I cannot figure out how to flush pending stdio output.
16357 We won't be flushing handles at all before fork/exec/popen.
16358 EOM
16359         ;;
16360 esac
16361 $rm -f try.* try$exe_ext
16362
16363 : Store the full pathname to the ar program for use in the C program
16364 : Respect a hint or command line value for full_ar.
16365 case "$full_ar" in
16366 '') full_ar=$ar ;;
16367 esac
16368
16369 : Store the full pathname to the sed program for use in the C program
16370 full_sed=$sed
16371
16372 : see what type gids are declared as in the kernel
16373 echo " "
16374 echo "Looking for the type for group ids returned by getgid()."
16375 set gid_t gidtype xxx stdio.h sys/types.h
16376 eval $typedef
16377 case "$gidtype" in
16378 xxx)
16379         xxx=`./findhdr sys/user.h`
16380         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
16381         case $1 in
16382         unsigned) dflt="$1 $2" ;;
16383         *) dflt="$1" ;;
16384         esac
16385         ;;
16386 *) dflt="$gidtype";;
16387 esac
16388 case "$gidtype" in
16389 gid_t) echo "gid_t found." ;;
16390 *)      rp="What is the type for group ids returned by getgid()?"
16391         . ./myread
16392         gidtype="$ans"
16393         ;;
16394 esac
16395
16396 echo " "
16397 case "$gidtype" in
16398 *_t) zzz="$gidtype"     ;;
16399 *)   zzz="gid"          ;;
16400 esac
16401 echo "Checking the size of $zzz..." >&4 
16402 cat > try.c <<EOCP
16403 #include <sys/types.h>
16404 #include <stdio.h>
16405 int main() {
16406     printf("%d\n", (int)sizeof($gidtype));
16407     exit(0);
16408 }
16409 EOCP
16410 set try
16411 if eval $compile_ok; then
16412         yyy=`$run ./try`
16413         case "$yyy" in
16414         '')     gidsize=4
16415                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
16416                 ;;
16417         *)      gidsize=$yyy
16418                 echo "Your $zzz is $gidsize bytes long."
16419                 ;;
16420         esac
16421 else
16422         gidsize=4
16423         echo "(I can't compile the test program--guessing $gidsize.)" >&4
16424 fi
16425
16426
16427 echo " "
16428 case "$gidtype" in
16429 *_t) zzz="$gidtype"     ;;
16430 *)   zzz="gid"          ;;
16431 esac
16432 echo "Checking the sign of $zzz..." >&4 
16433 cat > try.c <<EOCP
16434 #include <sys/types.h>
16435 #include <stdio.h>
16436 int main() {
16437         $gidtype foo = -1;
16438         if (foo < 0)
16439                 printf("-1\n");
16440         else
16441                 printf("1\n");
16442 }
16443 EOCP
16444 set try
16445 if eval $compile; then
16446         yyy=`$run ./try`
16447         case "$yyy" in
16448         '')     gidsign=1
16449                 echo "(I can't execute the test program--guessing unsigned.)" >&4
16450                 ;;
16451         *)      gidsign=$yyy
16452                 case "$gidsign" in
16453                  1) echo "Your $zzz is unsigned." ;;
16454                 -1) echo "Your $zzz is signed."   ;;
16455                 esac
16456                 ;;
16457         esac
16458 else
16459         gidsign=1
16460         echo "(I can't compile the test program--guessing unsigned.)" >&4
16461 fi
16462
16463
16464 echo " "
16465
16466 if $test X"$quadtype" != X; then
16467
16468 echo "Checking how to print 64-bit integers..." >&4
16469
16470 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
16471         $cat >try.c <<'EOCP'
16472 #include <sys/types.h>
16473 #include <stdio.h>
16474 int main() {
16475   int q = 12345678901;
16476   printf("%ld\n", q);
16477 }
16478 EOCP
16479         set try
16480         if eval $compile; then
16481                 yyy=`$run ./try`
16482                 case "$yyy" in
16483                 12345678901)
16484                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
16485                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
16486                         echo "We will use %d."
16487                         ;;
16488                 esac
16489         fi
16490 fi
16491
16492 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
16493         $cat >try.c <<'EOCP'
16494 #include <sys/types.h>
16495 #include <stdio.h>
16496 int main() {
16497   long q = 12345678901;
16498   printf("%ld\n", q);
16499 }
16500 EOCP
16501         set try
16502         if eval $compile; then
16503                 yyy=`$run ./try`
16504                 case "$yyy" in
16505                 12345678901)
16506                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
16507                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
16508                         echo "We will use %ld."
16509                         ;;
16510                 esac
16511         fi
16512 fi
16513
16514 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
16515         $cat >try.c <<'EOCP'
16516 #include <sys/types.h>
16517 #include <inttypes.h>
16518 #include <stdio.h>
16519 int main() {
16520   int64_t q = 12345678901;
16521   printf("%" PRId64 "\n", q);
16522 }
16523 EOCP
16524         set try
16525         if eval $compile; then
16526                 yyy=`$run ./try`
16527                 case "$yyy" in
16528                 12345678901)
16529                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
16530                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
16531                         echo "We will use the C9X style."
16532                         ;;
16533                 esac
16534         fi
16535 fi
16536
16537 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
16538         $cat >try.c <<EOCP
16539 #include <sys/types.h>
16540 #include <stdio.h>
16541 int main() {
16542   $quadtype q = 12345678901;
16543   printf("%Ld\n", q);
16544 }
16545 EOCP
16546         set try
16547         if eval $compile; then
16548                 yyy=`$run ./try`
16549                 case "$yyy" in
16550                 12345678901)
16551                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
16552                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
16553                         echo "We will use %Ld."
16554                         ;;
16555                 esac
16556         fi
16557 fi
16558
16559 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
16560         $cat >try.c <<'EOCP'
16561 #include <sys/types.h>
16562 #include <stdio.h>
16563 int main() {
16564   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
16565   printf("%lld\n", q);
16566 }
16567 EOCP
16568         set try
16569         if eval $compile; then
16570                 yyy=`$run ./try`
16571                 case "$yyy" in
16572                 12345678901)
16573                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
16574                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
16575                         echo "We will use the %lld style."
16576                         ;;
16577                 esac
16578         fi
16579 fi
16580
16581 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
16582         $cat >try.c <<EOCP
16583 #include <sys/types.h>
16584 #include <stdio.h>
16585 int main() {
16586   $quadtype q = 12345678901;
16587   printf("%qd\n", q);
16588 }
16589 EOCP
16590         set try
16591         if eval $compile; then
16592                 yyy=`$run ./try`
16593                 case "$yyy" in
16594                 12345678901)
16595                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
16596                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
16597                         echo "We will use %qd."
16598                         ;;
16599                 esac
16600         fi
16601 fi
16602
16603 if $test X"$sPRId64" = X; then
16604         echo "Cannot figure out how to print 64-bit integers." >&4
16605 fi
16606
16607 $rm -f try try.*
16608
16609 fi
16610
16611 case "$sPRId64" in
16612 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
16613         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
16614         ;;
16615 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
16616         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
16617         ;;
16618 esac
16619
16620
16621 echo " "
16622 $echo "Checking the format strings to be used for Perl's internal types..." >&4
16623
16624 if $test X"$ivsize" = X8; then
16625         ivdformat="$sPRId64"
16626         uvuformat="$sPRIu64"
16627         uvoformat="$sPRIo64"
16628         uvxformat="$sPRIx64"
16629         uvXUformat="$sPRIXU64"
16630 else
16631         if $test X"$ivsize" = X"$longsize"; then
16632                 ivdformat='"ld"'
16633                 uvuformat='"lu"'
16634                 uvoformat='"lo"'
16635                 uvxformat='"lx"'
16636                 uvXUformat='"lX"'
16637         else
16638                 if $test X"$ivsize" = X"$intsize"; then
16639                         ivdformat='"d"'
16640                         uvuformat='"u"'
16641                         uvoformat='"o"'
16642                         uvxformat='"x"'
16643                         uvXUformat='"X"'
16644                 else
16645                         : far out
16646                         if $test X"$ivsize" = X"$shortsize"; then
16647                                 ivdformat='"hd"'
16648                                 uvuformat='"hu"'
16649                                 uvoformat='"ho"'
16650                                 uvxformat='"hx"'
16651                                 uvXUformat='"hX"'
16652                         fi
16653                 fi
16654         fi
16655 fi
16656
16657 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
16658         nveformat="$sPRIeldbl"
16659         nvfformat="$sPRIfldbl"
16660         nvgformat="$sPRIgldbl"
16661         nvEUformat="$sPRIEUldbl"
16662         nvFUformat="$sPRIFUldbl"
16663         nvGUformat="$sPRIGUldbl"
16664 else
16665         nveformat='"e"'
16666         nvfformat='"f"'
16667         nvgformat='"g"'
16668         nvEUformat='"E"'
16669         nvFUformat='"F"'
16670         nvGUformat='"G"'
16671 fi
16672
16673 case "$ivdformat" in
16674 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
16675     exit 1
16676     ;;
16677 esac
16678
16679
16680 echo " "
16681 $echo "Checking the format string to be used for gids..." >&4
16682
16683 case "$gidsign" in
16684 -1)     if $test X"$gidsize" = X"$ivsize"; then
16685                 gidformat="$ivdformat"
16686         else
16687                 if $test X"$gidsize" = X"$longsize"; then
16688                         gidformat='"ld"'
16689                 else
16690                         if $test X"$gidsize" = X"$intsize"; then
16691                                 gidformat='"d"'
16692                         else
16693                                 if $test X"$gidsize" = X"$shortsize"; then
16694                                         gidformat='"hd"'
16695                                 fi
16696                         fi
16697                 fi
16698         fi
16699         ;;
16700 *)      if $test X"$gidsize" = X"$uvsize"; then
16701                 gidformat="$uvuformat"
16702         else
16703                 if $test X"$gidsize" = X"$longsize"; then
16704                         gidformat='"lu"'
16705                 else
16706                         if $test X"$gidsize" = X"$intsize"; then
16707                                 gidformat='"u"'
16708                         else
16709                                 if $test X"$gidsize" = X"$shortsize"; then
16710                                         gidformat='"hu"'
16711                                 fi
16712                         fi
16713                 fi
16714         fi
16715         ;;
16716 esac
16717
16718 : see if getgroups exists
16719 set getgroups d_getgrps
16720 eval $inlibc
16721
16722 : see if setgroups exists
16723 set setgroups d_setgrps
16724 eval $inlibc
16725
16726
16727 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
16728 echo " "
16729 case "$d_getgrps$d_setgrps" in
16730 *define*)
16731         case "$groupstype" in
16732         '') dflt="$gidtype" ;;
16733         *)  dflt="$groupstype" ;;
16734         esac
16735         $cat <<EOM
16736 What type of pointer is the second argument to getgroups() and setgroups()?
16737 Usually this is the same as group ids, $gidtype, but not always.
16738
16739 EOM
16740         rp='What type pointer is the second argument to getgroups() and setgroups()?'
16741         . ./myread
16742         groupstype="$ans"
16743         ;;
16744 *)  groupstype="$gidtype";;
16745 esac
16746
16747 echo " "
16748 echo "Checking if your $make program sets \$(MAKE)..." >&4
16749 case "$make_set_make" in
16750 '')
16751         $sed 's/^X //' > testmake.mak << 'EOF'
16752 Xall:
16753 X       @echo 'maketemp="$(MAKE)"'
16754 EOF
16755         case "`$make -f testmake.mak 2>/dev/null`" in
16756         *maketemp=*) make_set_make='#' ;;
16757         *)      make_set_make="MAKE=$make" ;;
16758         esac
16759         $rm -f testmake.mak
16760         ;;
16761 esac
16762 case "$make_set_make" in
16763 '#') echo "Yup, it does.";;
16764 *) echo "Nope, it doesn't.";;
16765 esac
16766
16767 : see what type is used for mode_t
16768 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
16769 set mode_t modetype int stdio.h sys/types.h
16770 eval $typedef_ask
16771
16772 : see if stdarg is available
16773 echo " "
16774 if $test `./findhdr stdarg.h`; then
16775         echo "<stdarg.h> found." >&4
16776         valstd="$define"
16777 else
16778         echo "<stdarg.h> NOT found." >&4
16779         valstd="$undef"
16780 fi
16781
16782 : see if varags is available
16783 echo " "
16784 if $test `./findhdr varargs.h`; then
16785         echo "<varargs.h> found." >&4
16786 else
16787         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
16788 fi
16789
16790 : set up the varargs testing programs
16791 $cat > varargs.c <<EOP
16792 #ifdef I_STDARG
16793 #include <stdarg.h>
16794 #endif
16795 #ifdef I_VARARGS
16796 #include <varargs.h>
16797 #endif
16798
16799 #ifdef I_STDARG
16800 int f(char *p, ...)
16801 #else
16802 int f(va_alist)
16803 va_dcl
16804 #endif
16805 {
16806         va_list ap;
16807 #ifndef I_STDARG
16808         char *p;
16809 #endif
16810 #ifdef I_STDARG
16811         va_start(ap,p);
16812 #else
16813         va_start(ap);
16814         p = va_arg(ap, char *);
16815 #endif
16816         va_end(ap);
16817 }
16818 EOP
16819 $cat > varargs <<EOP
16820 $startsh
16821 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
16822         echo "true"
16823 else
16824         echo "false"
16825 fi
16826 $rm -f varargs$_o
16827 EOP
16828 chmod +x varargs
16829
16830 : now check which varargs header should be included
16831 echo " "
16832 i_varhdr=''
16833 case "$valstd" in
16834 "$define")
16835         if `./varargs I_STDARG`; then
16836                 val='stdarg.h'
16837         elif `./varargs I_VARARGS`; then
16838                 val='varargs.h'
16839         fi
16840         ;;
16841 *)
16842         if `./varargs I_VARARGS`; then
16843                 val='varargs.h'
16844         fi
16845         ;;
16846 esac
16847 case "$val" in
16848 '')
16849 echo "I could not find the definition for va_dcl... You have problems..." >&4
16850         val="$undef"; set i_stdarg; eval $setvar
16851         val="$undef"; set i_varargs; eval $setvar
16852         ;;
16853 *) 
16854         set i_varhdr
16855         eval $setvar
16856         case "$i_varhdr" in
16857         stdarg.h)
16858                 val="$define"; set i_stdarg; eval $setvar
16859                 val="$undef"; set i_varargs; eval $setvar
16860                 ;;
16861         varargs.h)
16862                 val="$undef"; set i_stdarg; eval $setvar
16863                 val="$define"; set i_varargs; eval $setvar
16864                 ;;
16865         esac
16866         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
16867 esac
16868 $rm -f varargs*
16869
16870 : see if we need va_copy
16871 echo " "
16872 case "$i_stdarg" in
16873 "$define")
16874         $cat >try.c <<EOCP
16875 #include <stdarg.h>
16876 #include <stdio.h>
16877 #$i_stdlib I_STDLIB
16878 #ifdef I_STDLIB
16879 #include <stdlib.h>
16880 #endif
16881 #include <signal.h>
16882
16883 int
16884 ivfprintf(FILE *f, const char *fmt, va_list *valp)
16885 {
16886   return vfprintf(f, fmt, *valp);
16887 }
16888  
16889 int    
16890 myvfprintf(FILE *f, const  char *fmt, va_list val)
16891 {
16892   return ivfprintf(f, fmt, &val);
16893 }
16894       
16895 int
16896 myprintf(char *fmt, ...) 
16897 {
16898   va_list val;
16899   va_start(val, fmt);
16900   return myvfprintf(stdout, fmt, val); 
16901 }         
16902
16903 int
16904 main(int ac, char **av)
16905 {
16906   signal(SIGSEGV, exit);
16907
16908   myprintf("%s%cs all right, then\n", "that", '\'');                            
16909   exit(0);      
16910 }
16911 EOCP
16912         set try
16913         if eval $compile && $run ./try 2>&1 >/dev/null; then
16914                 case "`$run ./try`" in
16915                 "that's all right, then")
16916                         okay=yes
16917                         ;;
16918                 esac
16919         fi
16920         case "$okay" in
16921         yes)    echo "It seems that you don't need va_copy()." >&4
16922                 need_va_copy="$undef"
16923                 ;;
16924         *)      echo "It seems that va_copy() or similar will be needed." >&4
16925                 need_va_copy="$define"
16926                 ;;
16927         esac
16928         $rm -f try.* core core.* *.core *.core.*
16929         ;;
16930 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
16931         ;;
16932 esac
16933
16934 : see what type is used for size_t
16935 rp="What is the type used for the length parameter for string functions?"
16936 set size_t sizetype 'unsigned int' stdio.h sys/types.h
16937 eval $typedef_ask
16938
16939 : check for type of arguments to gethostbyaddr. 
16940 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
16941         case "$d_gethbyaddr" in
16942         $define)
16943                 $cat <<EOM
16944
16945 Checking to see what type of arguments are accepted by gethostbyaddr().
16946 EOM
16947                 hdrs="$define sys/types.h
16948                         $d_socket sys/socket.h 
16949                         $i_niin netinet/in.h 
16950                         $i_netdb netdb.h
16951                         $i_unistd unistd.h"
16952                 : The first arg can 'char *' or 'void *'
16953                 : The second arg is some of integral type
16954                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
16955                         for yyy in size_t long int; do
16956                                 case "$netdb_host_type" in
16957                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
16958                                         if ./protochk "$try" $hdrs; then
16959                                                 echo "Your system accepts $xxx for the first arg."
16960                                                 echo "...and $yyy for the second arg."
16961                                                 netdb_host_type="$xxx"
16962                                                 netdb_hlen_type="$yyy"
16963                                         fi
16964                                         ;;
16965                                 esac
16966                         done
16967                 done
16968                 : In case none of those worked, prompt the user.
16969                 case "$netdb_host_type" in
16970                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
16971                         dflt='char *'
16972                         . ./myread
16973                         netdb_host_type=$ans
16974                         rp='What is the type for the 2nd argument to gethostbyaddr?'
16975                         dflt="$sizetype"
16976                         . ./myread
16977                         netdb_hlen_type=$ans
16978                         ;;
16979                 esac
16980                 ;;
16981         *)      : no gethostbyaddr, so pick harmless defaults
16982                 netdb_host_type='char *'
16983                 netdb_hlen_type="$sizetype"
16984                 ;;
16985         esac
16986         # Remove the "const" if needed. -- but then we'll have a 
16987         # prototype clash!
16988         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
16989 fi
16990
16991 : check for type of argument to gethostbyname. 
16992 if test "X$netdb_name_type" = X ; then
16993         case "$d_gethbyname" in
16994         $define)
16995                 $cat <<EOM
16996
16997 Checking to see what type of argument is accepted by gethostbyname().
16998 EOM
16999                 hdrs="$define sys/types.h
17000                         $d_socket sys/socket.h 
17001                         $i_niin netinet/in.h 
17002                         $i_netdb netdb.h
17003                         $i_unistd unistd.h"
17004                 for xxx in "const char *" "char *"; do
17005                         case "$netdb_name_type" in
17006                         '')     try="extern struct hostent *gethostbyname($xxx);"
17007                                 if ./protochk "$try" $hdrs; then
17008                                         echo "Your system accepts $xxx."
17009                                         netdb_name_type="$xxx"
17010                                 fi
17011                                 ;;
17012                         esac
17013                 done
17014                 : In case none of those worked, prompt the user.
17015                 case "$netdb_name_type" in
17016                 '')     rp='What is the type for the 1st argument to gethostbyname?'
17017                         dflt='char *'
17018                         . ./myread
17019                         netdb_name_type=$ans
17020                         ;;
17021                 esac
17022                 ;;
17023         *)      : no gethostbyname, so pick harmless default
17024                 netdb_name_type='char *'
17025                 ;;
17026         esac
17027 fi
17028
17029 : check for type of 1st argument to getnetbyaddr. 
17030 if test "X$netdb_net_type" = X ; then
17031         case "$d_getnbyaddr" in
17032         $define)
17033                 $cat <<EOM
17034
17035 Checking to see what type of 1st argument is accepted by getnetbyaddr().
17036 EOM
17037                 hdrs="$define sys/types.h
17038                         $d_socket sys/socket.h 
17039                         $i_niin netinet/in.h 
17040                         $i_netdb netdb.h
17041                         $i_unistd unistd.h"
17042                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
17043                         case "$netdb_net_type" in
17044                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
17045                                 if ./protochk "$try" $hdrs; then
17046                                         echo "Your system accepts $xxx."
17047                                         netdb_net_type="$xxx"
17048                                 fi
17049                                 ;;
17050                         esac
17051                 done
17052                 : In case none of those worked, prompt the user.
17053                 case "$netdb_net_type" in
17054                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
17055                         dflt='long'
17056                         . ./myread
17057                         netdb_net_type=$ans
17058                         ;;
17059                 esac
17060                 ;;
17061         *)      : no getnetbyaddr, so pick harmless default
17062                 netdb_net_type='long'
17063                 ;;
17064         esac
17065 fi
17066 : locate the preferred pager for this system
17067 case "$pager" in
17068 '')
17069         dflt=''
17070         case "$pg" in
17071         /*) dflt=$pg;;
17072         [a-zA-Z]:/*) dflt=$pg;;
17073         esac
17074         case "$more" in
17075         /*) dflt=$more;;
17076         [a-zA-Z]:/*) dflt=$more;;
17077         esac
17078         case "$less" in
17079         /*) dflt=$less;;
17080         [a-zA-Z]:/*) dflt=$less;;
17081         esac
17082         case "$dflt" in
17083         '') dflt=/usr/ucb/more;;
17084         esac
17085         ;;
17086 *) dflt="$pager";;
17087 esac
17088 echo " "
17089 fn=f/
17090 rp='What pager is used on your system?'
17091 . ./getfile
17092 pager="$ans"
17093
17094 : see what type pids are declared as in the kernel
17095 rp="What is the type of process ids on this system?"
17096 set pid_t pidtype int stdio.h sys/types.h
17097 eval $typedef_ask
17098
17099 : Find earliest binary compatible site_perl subdirectory perl can use.
17100 case "$bincompat5005" in
17101 "$define") xs_apiversion='5.005' ;;
17102 *) xs_apiversion=$version ;;   # The current site_perl version.
17103 esac
17104 : Find earliest pure perl site_perl subdirectory perl can use.
17105 : The versioned directories started at 5.005.
17106 pm_apiversion='5.005'
17107
17108 : see if ar generates random libraries by itself
17109 echo " "
17110 echo "Checking how to generate random libraries on your machine..." >&4
17111 echo 'int bar1() { return bar2(); }' > bar1.c
17112 echo 'int bar2() { return 2; }' > bar2.c
17113 $cat > foo.c <<'EOP'
17114 int main() { printf("%d\n", bar1()); exit(0); }
17115 EOP
17116 $cc $ccflags -c bar1.c >/dev/null 2>&1
17117 $cc $ccflags -c bar2.c >/dev/null 2>&1
17118 $cc $ccflags -c foo.c >/dev/null 2>&1
17119 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
17120 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
17121         $run ./foobar >/dev/null 2>&1; then
17122         echo "$ar appears to generate random libraries itself."
17123         orderlib=false
17124         ranlib=":"
17125 elif $ar ts bar$_a >/dev/null 2>&1 &&
17126         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
17127         $run ./foobar >/dev/null 2>&1; then
17128                 echo "a table of contents needs to be added with '$ar ts'."
17129                 orderlib=false
17130                 ranlib="$ar ts"
17131 else
17132         case "$ranlib" in
17133         :) ranlib='';;
17134         '')
17135                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
17136                 $test -f $ranlib || ranlib=''
17137                 ;;
17138         esac
17139         if $test -n "$ranlib"; then
17140                 echo "your system has '$ranlib'; we'll use that."
17141                 orderlib=false
17142         else
17143                 echo "your system doesn't seem to support random libraries"
17144                 echo "so we'll use lorder and tsort to order the libraries."
17145                 orderlib=true
17146                 ranlib=":"
17147         fi
17148 fi
17149 $rm -f foo* bar* 
17150
17151 : check for type of arguments to select. 
17152 case "$selecttype" in
17153 '') case "$d_select" in
17154         $define)
17155                 echo " "
17156                 $cat <<EOM
17157 Checking to see what type of arguments are accepted by select().
17158 EOM
17159                 hdrs="$define sys/types.h
17160                         $i_systime sys/time.h 
17161                         $i_sysselct sys/select.h
17162                         $d_socket sys/socket.h"
17163                 : The first arg can be int, unsigned, or size_t
17164                 : The last arg may or may not be 'const'
17165                 val=''
17166                 : void pointer has been seen but using that
17167                 : breaks the selectminbits test
17168                 for xxx in 'fd_set *' 'int *'; do
17169                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
17170                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
17171                                         case "$val" in
17172                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
17173                                                 if ./protochk "$try" $hdrs; then
17174                                                         echo "Your system accepts $xxx."
17175                                                         val="$xxx"
17176                                                 fi
17177                                                 ;;
17178                                         esac
17179                                 done
17180                         done
17181                 done
17182                 case "$val" in
17183                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
17184                         case "$d_fd_set" in
17185                                 $define) dflt="fd_set *" ;;
17186                                 *)              dflt="int *" ;;
17187                         esac
17188                         . ./myread
17189                         val=$ans
17190                         ;;
17191                 esac
17192                 selecttype="$val"
17193                 ;;
17194         *)      : no select, so pick a harmless default
17195                 selecttype='int *'
17196                 ;;
17197         esac
17198         ;;
17199 esac
17200
17201 : check for the select 'width'
17202 case "$selectminbits" in
17203 '') case "$d_select" in
17204         $define)
17205                 $cat <<EOM
17206
17207 Checking to see on how many bits at a time your select() operates...
17208 EOM
17209                 $cat >try.c <<EOCP
17210 #include <sys/types.h>
17211 #$i_time I_TIME
17212 #$i_systime I_SYS_TIME
17213 #$i_systimek I_SYS_TIME_KERNEL
17214 #ifdef I_TIME
17215 #   include <time.h>
17216 #endif
17217 #ifdef I_SYS_TIME
17218 #   ifdef I_SYS_TIME_KERNEL
17219 #       define KERNEL
17220 #   endif
17221 #   include <sys/time.h>
17222 #   ifdef I_SYS_TIME_KERNEL
17223 #       undef KERNEL
17224 #   endif
17225 #endif
17226 #$i_sysselct I_SYS_SELECT
17227 #ifdef I_SYS_SELECT
17228 #include <sys/select.h>
17229 #endif
17230 #$d_socket HAS_SOCKET
17231 #ifdef HAS_SOCKET
17232 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
17233 #endif
17234 #include <stdio.h>
17235 $selecttype b;
17236 #define S sizeof(*(b))
17237 #define MINBITS 64
17238 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
17239 #define NBITS  (NBYTES * 8)
17240 int main() {
17241     char s[NBYTES];
17242     struct timeval t;
17243     int i;
17244     FILE* fp;
17245     int fd;
17246
17247     fclose(stdin);
17248     fp = fopen("try.c", "r");
17249     if (fp == 0)
17250       exit(1);
17251     fd = fileno(fp);
17252     if (fd < 0)
17253       exit(2);
17254     b = ($selecttype)s;
17255     for (i = 0; i < NBITS; i++)
17256         FD_SET(i, b);
17257     t.tv_sec  = 0;
17258     t.tv_usec = 0;
17259     select(fd + 1, b, 0, 0, &t);
17260     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
17261     printf("%d\n", i + 1);
17262     return 0;
17263 }
17264 EOCP
17265                 set try
17266                 if eval $compile_ok; then
17267                         selectminbits=`$run ./try`
17268                         case "$selectminbits" in
17269                         '')     cat >&4 <<EOM
17270 Cannot figure out on how many bits at a time your select() operates.
17271 I'll play safe and guess it is 32 bits.
17272 EOM
17273                                 selectminbits=32
17274                                 bits="32 bits"
17275                                 ;;
17276                         1)      bits="1 bit" ;;
17277                         *)      bits="$selectminbits bits" ;;
17278                         esac
17279                         echo "Your select() operates on $bits at a time." >&4
17280                 else
17281                         rp='What is the minimum number of bits your select() operates on?'
17282                         case "$byteorder" in
17283                         1234|12345678)  dflt=32 ;;
17284                         *)              dflt=1  ;;
17285                         esac
17286                         . ./myread
17287                         val=$ans
17288                         selectminbits="$val"
17289                 fi
17290                 $rm -f try.* try
17291                 ;;
17292         *)      : no select, so pick a harmless default
17293                 selectminbits='32'
17294                 ;;
17295         esac
17296         ;;
17297 esac
17298
17299 : Trace out the files included by signal.h, then look for SIGxxx names.
17300 : Remove SIGARRAYSIZE used by HPUX.
17301 : Remove SIGSTKSIZE used by Linux.
17302 : Remove SIGSTKSZ used by Posix.
17303 : Remove SIGTYP void lines used by OS2.
17304 : Some cpps, like os390, dont give the file name anywhere
17305 if [ "X$fieldn" = X ]; then
17306         : Just make some guesses.  We check them later.
17307         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
17308 else
17309         xxx=`echo '#include <signal.h>' |
17310         $cppstdin $cppminus $cppflags 2>/dev/null |
17311         $grep '^[       ]*#.*include' | 
17312         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
17313 fi
17314 : Check this list of files to be sure we have parsed the cpp output ok.
17315 : This will also avoid potentially non-existent files, such 
17316 : as ../foo/bar.h
17317 xxxfiles=''
17318 for xx in $xxx /dev/null ; do
17319         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
17320 done
17321 : If we have found no files, at least try signal.h
17322 case "$xxxfiles" in
17323 '')     xxxfiles=`./findhdr signal.h` ;;
17324 esac
17325 xxx=`awk '
17326 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
17327         print substr($2, 4, 20)
17328 }
17329 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
17330         print substr($3, 4, 20)
17331 }' $xxxfiles`
17332 : Append some common names just in case the awk scan failed.
17333 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
17334 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
17335 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
17336 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
17337 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
17338
17339 : generate a few handy files for later
17340 $cat > signal.c <<'EOCP'
17341 #include <sys/types.h>
17342 #include <signal.h>
17343 #include <stdio.h>
17344 int main() {
17345
17346 /* Strange style to avoid deeply-nested #if/#else/#endif */
17347 #ifndef NSIG
17348 #  ifdef _NSIG
17349 #    define NSIG (_NSIG)
17350 #  endif
17351 #endif
17352
17353 #ifndef NSIG
17354 #  ifdef SIGMAX
17355 #    define NSIG (SIGMAX+1)
17356 #  endif
17357 #endif
17358
17359 #ifndef NSIG
17360 #  ifdef SIG_MAX
17361 #    define NSIG (SIG_MAX+1)
17362 #  endif
17363 #endif
17364
17365 #ifndef NSIG
17366 #  ifdef MAXSIG
17367 #    define NSIG (MAXSIG+1)
17368 #  endif
17369 #endif
17370
17371 #ifndef NSIG
17372 #  ifdef MAX_SIG
17373 #    define NSIG (MAX_SIG+1)
17374 #  endif
17375 #endif
17376
17377 #ifndef NSIG
17378 #  ifdef SIGARRAYSIZE
17379 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
17380 #  endif
17381 #endif
17382
17383 #ifndef NSIG
17384 #  ifdef _sys_nsig
17385 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
17386 #  endif
17387 #endif
17388
17389 /* Default to some arbitrary number that's big enough to get most
17390    of the common signals.
17391 */
17392 #ifndef NSIG
17393 #    define NSIG 50
17394 #endif
17395
17396 printf("NSIG %d\n", NSIG);
17397
17398 #ifndef JUST_NSIG
17399
17400 EOCP
17401
17402 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
17403 {
17404         printf "#ifdef SIG"; printf $1; printf "\n"
17405         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
17406         printf $1; printf ");\n"
17407         printf "#endif\n"
17408 }
17409 END {
17410         printf "#endif /* JUST_NSIG */\n";
17411         printf "exit(0);\n}\n";
17412 }
17413 ' >>signal.c
17414 $cat >signal.awk <<'EOP'
17415 BEGIN { ndups = 0 }
17416 $1 ~ /^NSIG$/ { nsig = $2 }
17417 ($1 !~ /^NSIG$/) && (NF == 2) {
17418     if ($2 > maxsig) { maxsig = $2 }
17419     if (sig_name[$2]) {
17420         dup_name[ndups] = $1
17421         dup_num[ndups] = $2
17422         ndups++ 
17423     }
17424     else {
17425         sig_name[$2] = $1
17426         sig_num[$2] = $2
17427     }
17428 }
17429 END { 
17430     if (nsig == 0) {
17431         nsig = maxsig + 1
17432     }
17433     printf("NSIG %d\n", nsig);
17434     for (n = 1; n < nsig; n++) {
17435         if (sig_name[n]) {
17436             printf("%s %d\n", sig_name[n], sig_num[n])
17437         }
17438         else {
17439             printf("NUM%d %d\n", n, n) 
17440         }
17441     }
17442     for (n = 0; n < ndups; n++) {
17443         printf("%s %d\n", dup_name[n], dup_num[n])
17444     }
17445 }
17446 EOP
17447 $cat >signal_cmd <<EOS
17448 $startsh
17449 if $test -s signal.lst; then
17450     echo "Using your existing signal.lst file"
17451         exit 0
17452 fi
17453 xxx="$xxx"
17454 EOS
17455 $cat >>signal_cmd <<'EOS'
17456
17457 set signal
17458 if eval $compile_ok; then
17459         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
17460 else
17461         echo "(I can't seem be able to compile the whole test program)" >&4
17462         echo "(I'll try it in little pieces.)" >&4
17463         set signal -DJUST_NSIG
17464         if eval $compile_ok; then
17465                 $run ./signal$_exe > signal.nsg
17466                 $cat signal.nsg
17467         else
17468                 echo "I can't seem to figure out how many signals you have." >&4
17469                 echo "Guessing 50." >&4
17470                 echo 'NSIG 50' > signal.nsg
17471         fi
17472         : Now look at all the signal names, one at a time.
17473         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
17474                 $cat > signal.c <<EOCP
17475 #include <sys/types.h>
17476 #include <signal.h>
17477 #include <stdio.h>
17478 int main() {
17479 printf("$xx %d\n", SIG${xx});
17480 return 0;
17481 }
17482 EOCP
17483                 set signal
17484                 if eval $compile; then
17485                         echo "SIG${xx} found."
17486                         $run ./signal$_exe  >> signal.ls1
17487                 else
17488                         echo "SIG${xx} NOT found."
17489                 fi
17490         done
17491         if $test -s signal.ls1; then
17492                 $cat signal.nsg signal.ls1 |
17493                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
17494         fi
17495
17496 fi
17497 if $test -s signal.lst; then
17498         :
17499 else
17500         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
17501         echo 'kill -l' >signal
17502         set X `csh -f <signal`
17503         $rm -f signal
17504         shift
17505         case $# in
17506         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
17507         esac
17508         echo $@ | $tr ' ' $trnl | \
17509             $awk '{ printf "%s %d\n", $1, ++s; }
17510                   END { printf "NSIG %d\n", ++s }' >signal.lst
17511 fi
17512 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
17513 EOS
17514 chmod a+x signal_cmd
17515 $eunicefix signal_cmd
17516
17517 : generate list of signal names
17518 echo " "
17519 case "$sig_name_init" in
17520 '') doinit=yes ;;
17521 *)  case "$sig_num_init" in
17522     ''|*,*) doinit=yes ;;
17523     esac ;;
17524 esac
17525 case "$doinit" in
17526 yes)
17527         echo "Generating a list of signal names and numbers..." >&4
17528         . ./signal_cmd
17529         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
17530         sig_name=`$awk 'BEGIN { printf "ZERO " }
17531                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
17532         sig_num=`$awk  'BEGIN { printf "0 " }
17533                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
17534         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
17535                              !/^NSIG/   { printf "\"%s\", ", $1 }
17536                              END        { printf "0\n" }' signal.lst`
17537         sig_num_init=`$awk  'BEGIN      { printf "0, " }
17538                              !/^NSIG/   { printf "%d, ", $2}
17539                              END        { printf "0\n"}' signal.lst`
17540         ;;
17541 esac
17542 echo "The following $sig_count signals are available:"
17543 echo " "
17544 echo $sig_name | $awk \
17545 'BEGIN { linelen = 0 }
17546 {
17547         for (i = 1; i <= NF; i++) {
17548                 name = "SIG" $i " "
17549                 linelen = linelen + length(name)
17550                 if (linelen > 70) {
17551                         printf "\n"
17552                         linelen = length(name)
17553                 }
17554                 printf "%s", name
17555         }
17556         printf "\n"
17557 }'
17558 sig_size=`echo $sig_name | awk '{print NF}'`
17559 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
17560
17561 echo " "
17562 case "$sizetype" in
17563 *_t) zzz="$sizetype"    ;;
17564 *)   zzz="filesize"     ;;
17565 esac
17566 echo "Checking the size of $zzz..." >&4 
17567 cat > try.c <<EOCP
17568 #include <sys/types.h>
17569 #include <stdio.h>
17570 int main() {
17571     printf("%d\n", (int)sizeof($sizetype));
17572     exit(0);
17573 }
17574 EOCP
17575 set try
17576 if eval $compile_ok; then
17577         yyy=`$run ./try`
17578         case "$yyy" in
17579         '')     sizesize=4
17580                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
17581                 ;;
17582         *)      sizesize=$yyy
17583                 echo "Your $zzz size is $sizesize bytes."
17584                 ;;
17585         esac
17586 else
17587         sizesize=4
17588         echo "(I can't compile the test program--guessing $sizesize.)" >&4
17589 fi
17590
17591
17592 : check for socklen_t
17593 echo " "
17594 echo "Checking to see if you have socklen_t..." >&4
17595 $cat >try.c <<EOCP
17596 #include <sys/types.h>
17597 #$d_socket HAS_SOCKET
17598 #ifdef HAS_SOCKET
17599 #include <sys/socket.h>
17600 #endif
17601 int main() { socklen_t x = 16; }
17602 EOCP
17603 set try
17604 if eval $compile; then
17605         val="$define"
17606         echo "You have socklen_t."
17607 else
17608         val="$undef"
17609         echo "You do not have socklen_t."
17610         case "$sizetype" in
17611         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
17612         esac
17613 fi
17614 $rm -f try try.*
17615 set d_socklen_t
17616 eval $setvar
17617
17618 : see if this is a socks.h system
17619 set socks.h i_socks
17620 eval $inhdr
17621
17622 : check for type of the size argument to socket calls
17623 case "$d_socket" in
17624 "$define")
17625         $cat <<EOM
17626
17627 Checking to see what type is the last argument of accept().
17628 EOM
17629         yyy=''
17630         case "$d_socklen_t" in
17631         "$define") yyy="$yyy socklen_t"
17632         esac
17633         yyy="$yyy $sizetype int long unsigned"
17634         for xxx in $yyy; do
17635                 case "$socksizetype" in
17636                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
17637                         case "$usesocks" in
17638                         "$define")
17639                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
17640                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
17641                                         socksizetype="$xxx"
17642                                 fi
17643                                 ;;
17644                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
17645                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
17646                                         socksizetype="$xxx"
17647                                 fi
17648                                 ;;
17649                         esac
17650                         ;;
17651                 esac
17652         done
17653 : In case none of those worked, prompt the user.
17654         case "$socksizetype" in
17655         '')     rp='What is the type for socket address structure sizes?'
17656                 dflt='int'
17657                 . ./myread
17658                 socksizetype=$ans
17659                 ;;
17660         esac
17661         ;;
17662 *)      : no sockets, so pick relatively harmless default
17663         socksizetype='int'
17664         ;;
17665 esac
17666
17667 : see what type is used for signed size_t
17668 set ssize_t ssizetype int stdio.h sys/types.h
17669 eval $typedef
17670 dflt="$ssizetype"
17671 $cat > try.c <<EOM
17672 #include <stdio.h>
17673 #include <sys/types.h>
17674 #define Size_t $sizetype
17675 #define SSize_t $dflt
17676 int main()
17677 {
17678         if (sizeof(Size_t) == sizeof(SSize_t))
17679                 printf("$dflt\n");
17680         else if (sizeof(Size_t) == sizeof(int))
17681                 printf("int\n");
17682         else 
17683                 printf("long\n");
17684         exit(0);
17685 }
17686 EOM
17687 echo " "
17688 set try
17689 if eval $compile_ok && $run ./try > /dev/null; then
17690         ssizetype=`$run ./try`
17691         echo "I'll be using $ssizetype for functions returning a byte count." >&4
17692 else
17693         $cat >&4 <<EOM
17694 Help! I can't compile and run the ssize_t test program: please enlighten me!
17695 (This is probably a misconfiguration in your system or libraries, and
17696 you really ought to fix it.  Still, I'll try anyway.)
17697
17698 I need a type that is the same size as $sizetype, but is guaranteed to
17699 be signed.  Common values are ssize_t, int and long.
17700
17701 EOM
17702         rp="What signed type is the same size as $sizetype?"
17703         . ./myread
17704         ssizetype="$ans"
17705 fi
17706 $rm -f try try.*
17707
17708 : see what type of char stdio uses.
17709 echo " "
17710 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
17711 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
17712         echo "Your stdio uses unsigned chars." >&4
17713         stdchar="unsigned char"
17714 else
17715         echo "Your stdio uses signed chars." >&4
17716         stdchar="char"
17717 fi
17718 $rm -f stdioh
17719
17720
17721
17722 : see if time exists
17723 echo " "
17724 if test "X$d_time" = X -o X"$timetype" = X; then
17725     if set time val -f d_time; eval $csym; $val; then
17726                 echo 'time() found.' >&4
17727                 val="$define"
17728                 rp="What is the type returned by time() on this system?"
17729                 set time_t timetype long stdio.h sys/types.h
17730                 eval $typedef_ask
17731     else
17732                 echo 'time() not found, hope that will do.' >&4
17733                 val="$undef"
17734                 timetype='int';
17735     fi
17736     set d_time
17737     eval $setvar
17738 fi
17739
17740 : see what type uids are declared as in the kernel
17741 echo " "
17742 echo "Looking for the type for user ids returned by getuid()."
17743 set uid_t uidtype xxx stdio.h sys/types.h
17744 eval $typedef
17745 case "$uidtype" in
17746 xxx)
17747         xxx=`./findhdr sys/user.h`
17748         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
17749         case $1 in
17750         unsigned) dflt="$1 $2" ;;
17751         *) dflt="$1" ;;
17752         esac
17753         ;;
17754 *) dflt="$uidtype";;
17755 esac
17756 case "$uidtype" in
17757 uid_t)  echo "uid_t found." ;;
17758 *)      rp="What is the type for user ids returned by getuid()?"
17759         . ./myread
17760         uidtype="$ans"
17761         ;;
17762 esac
17763
17764 echo " "
17765 case "$uidtype" in
17766 *_t) zzz="$uidtype"     ;;
17767 *)   zzz="uid"          ;;
17768 esac
17769 echo "Checking the size of $zzz..." >&4 
17770 cat > try.c <<EOCP
17771 #include <sys/types.h>
17772 #include <stdio.h>
17773 int main() {
17774     printf("%d\n", (int)sizeof($uidtype));
17775     exit(0);
17776 }
17777 EOCP
17778 set try
17779 if eval $compile_ok; then
17780         yyy=`$run ./try`
17781         case "$yyy" in
17782         '')     uidsize=4
17783                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
17784                 ;;
17785         *)      uidsize=$yyy
17786                 echo "Your $zzz is $uidsize bytes long."
17787                 ;;
17788         esac
17789 else
17790         uidsize=4
17791         echo "(I can't compile the test program--guessing $uidsize.)" >&4
17792 fi
17793
17794 echo " "
17795 case "$uidtype" in
17796 *_t) zzz="$uidtype"     ;;
17797 *)   zzz="uid"          ;;
17798 esac
17799 echo "Checking the sign of $zzz..." >&4
17800 cat > try.c <<EOCP
17801 #include <sys/types.h>
17802 #include <stdio.h>
17803 int main() {
17804         $uidtype foo = -1;
17805         if (foo < 0)
17806                 printf("-1\n");
17807         else
17808                 printf("1\n");
17809 }
17810 EOCP
17811 set try
17812 if eval $compile; then
17813         yyy=`$run ./try`
17814         case "$yyy" in
17815         '')     uidsign=1
17816                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17817                 ;;
17818         *)      uidsign=$yyy
17819                 case "$uidsign" in
17820                  1) echo "Your $zzz is unsigned." ;;
17821                 -1) echo "Your $zzz is signed."   ;;
17822                 esac
17823                 ;;
17824         esac
17825 else
17826         uidsign=1
17827         echo "(I can't compile the test program--guessing unsigned.)" >&4
17828 fi
17829
17830
17831
17832 echo " "
17833 $echo "Checking the format string to be used for uids..." >&4
17834
17835 case "$uidsign" in
17836 -1)     if $test X"$uidsize" = X"$ivsize"; then
17837                 uidformat="$ivdformat"
17838         else
17839                 if $test X"$uidsize" = X"$longsize"; then
17840                         uidformat='"ld"'
17841                 else
17842                         if $test X"$uidsize" = X"$intsize"; then
17843                                 uidformat='"d"'
17844                         else
17845                                 if $test X"$uidsize" = X"$shortsize"; then
17846                                         uidformat='"hd"'
17847                                 fi
17848                         fi
17849                 fi
17850         fi
17851         ;;
17852 *)      if $test X"$uidsize" = X"$uvsize"; then
17853                 uidformat="$uvuformat"
17854         else
17855                 if $test X"$uidsize" = X"$longsize"; then
17856                         uidformat='"lu"'
17857                 else
17858                         if $test X"$uidsize" = X"$intsize"; then
17859                                 uidformat='"u"'
17860                         else
17861                                 if $test X"$uidsize" = X"$shortsize"; then
17862                                         uidformat='"hu"'
17863                                 fi
17864                         fi
17865                 fi
17866         fi
17867         ;;
17868 esac
17869
17870 : determine compiler compiler
17871 case "$yacc" in
17872 '')
17873         dflt=yacc;;
17874 *)
17875         dflt="$yacc";;
17876 esac
17877 echo " "
17878 comp='yacc'
17879 if $test -f "$byacc$_exe"; then
17880         dflt="$byacc"
17881         comp="byacc or $comp"
17882 fi
17883 if $test -f "$bison$_exe"; then
17884         comp="$comp or bison -y"
17885 fi
17886 rp="Which compiler compiler ($comp) shall I use?"
17887 . ./myread
17888 yacc="$ans"
17889 case "$yacc" in
17890 *bis*)
17891         case "$yacc" in
17892         *-y*) ;;
17893         *)
17894                 yacc="$yacc -y"
17895                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
17896                 ;;
17897         esac
17898         ;;
17899 esac
17900
17901 : see if this is a fp.h system
17902 set fp.h i_fp
17903 eval $inhdr
17904
17905 : see if this is a fp_class.h system
17906 set fp_class.h i_fp_class
17907 eval $inhdr
17908
17909 : see if this is a ieeefp.h system
17910 case "$i_ieeefp" in
17911 '' ) set ieeefp.h i_ieeefp
17912      eval $inhdr
17913      ;;
17914 esac
17915
17916 : see if this is a libutil.h system
17917 set libutil.h i_libutil
17918 eval $inhdr
17919
17920 : see if mach cthreads are available
17921 if test "X$usethreads" = "X$define"; then
17922         set mach/cthreads.h i_machcthr
17923         eval $inhdr
17924 else
17925         i_machcthr="$undef"
17926 fi
17927
17928
17929
17930 : see if this is a math.h system
17931 set math.h i_math
17932 eval $inhdr
17933
17934 : see if this is a mntent.h system
17935 set mntent.h i_mntent
17936 eval $inhdr
17937
17938 : see if ndbm.h is available
17939 set ndbm.h t_ndbm
17940 eval $inhdr
17941
17942 case "$t_ndbm" in
17943 $undef)
17944     # Some Linux distributions such as RedHat 7.1 put the
17945     # ndbm.h header in /usr/include/gdbm/ndbm.h.
17946     if $test -f /usr/include/gdbm/ndbm.h; then
17947         echo '<gdbm/ndbm.h> found.'
17948         ccflags="$ccflags -I/usr/include/gdbm"
17949         cppflags="$cppflags -I/usr/include/gdbm"
17950         t_ndbm=$define
17951     fi
17952     ;;
17953 esac
17954
17955 case "$t_ndbm" in
17956 $define)
17957         : see if dbm_open exists
17958         set dbm_open d_dbm_open
17959         eval $inlibc
17960         case "$d_dbm_open" in
17961         $undef)
17962                 t_ndbm="$undef"
17963                 echo "We won't be including <ndbm.h>"
17964                 ;;
17965         esac
17966         ;;
17967 esac
17968 val="$t_ndbm"
17969 set i_ndbm
17970 eval $setvar
17971
17972 : see if net/errno.h is available
17973 val=''
17974 set net/errno.h val
17975 eval $inhdr
17976
17977 : Unfortunately, it causes problems on some systems.  Arrgh.
17978 case "$val" in
17979 $define)
17980         cat > try.c <<'EOM'
17981 #include <stdio.h>
17982 #include <errno.h>
17983 #include <net/errno.h>
17984 int func()
17985 {
17986         return ENOTSOCK;
17987 }
17988 EOM
17989         if $cc $ccflags -c try.c >/dev/null 2>&1; then
17990                 echo "We'll be including <net/errno.h>." >&4
17991         else
17992                 echo "We won't be including <net/errno.h>." >&4
17993                 val="$undef"
17994         fi
17995         $rm -f try.* try
17996         ;;
17997 esac
17998 set i_neterrno
17999 eval $setvar
18000
18001 : see if netinet/tcp.h is available
18002 set netinet/tcp.h i_netinettcp
18003 eval $inhdr
18004
18005 : see if this is a poll.h system
18006 set poll.h i_poll
18007 eval $inhdr
18008
18009 : see if this is a prot.h system
18010 set prot.h i_prot
18011 eval $inhdr
18012
18013 echo " "
18014 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
18015 $cat <<'EOSH' > Cppsym.know
18016 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
18017 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
18018 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
18019 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
18020 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
18021 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
18022 bull c cadmus clipper CMU COFF COMPILER_VERSION
18023 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
18024 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
18025 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
18026 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
18027 GLIBC GLIBC_MINOR
18028 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
18029 H3050R H3050RX hbullx20 hcx host_mips
18030 hp200 hp300 hp700 HP700 hp800 hp9000
18031 hp9000s200 hp9000s300 hp9000s400 hp9000s500
18032 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
18033 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
18034 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
18035 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
18036 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
18037 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
18038 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
18039 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
18040 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
18041 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
18042 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
18043 MATH_HAS_NO_SIDE_EFFECTS
18044 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
18045 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
18046 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
18047 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
18048 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
18049 NetBSD news1500 news1700 news1800 news1900 news3700
18050 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
18051 ns32016 ns32332 ns32k nsc32000
18052 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
18053 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
18054 pc532 pdp11 PGC PIC plexus PORTAR posix
18055 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
18056 POSIX_C_SOURCE POSIX_SOURCE POWER
18057 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
18058 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
18059 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
18060 sony sony_news sonyrisc sparc sparclite spectrum
18061 stardent stdc STDC_EXT stratos sun sun3 sun386
18062 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
18063 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
18064 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
18065 sysV68 sysV88 Tek4132 Tek4300 titan
18066 TM3200 TM5400 TM5600
18067 tower tower32 tower32_200 tower32_600 tower32_700
18068 tower32_800 tower32_850 tss
18069 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
18070 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
18071 unix UNIX95 UNIX99 unixpc unos
18072 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
18073 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
18074 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
18075 USGr4 USGr4_2
18076 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
18077 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
18078 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
18079 z8000
18080 EOSH
18081 # Maybe put other stuff here too.
18082 cat <<EOSH >>Cppsym.know
18083 $osname
18084 EOSH
18085 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
18086 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
18087 $cat Cppsym.know > Cppsym.c
18088 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
18089 $rm -f Cppsym.a Cppsym.b Cppsym.c
18090 cat <<EOSH > Cppsym
18091 $startsh
18092 if $test \$# -gt 0; then
18093     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
18094     if $test -s Cppsym.got; then
18095         $rm -f Cppsym.got
18096         exit 0
18097     fi
18098     $rm -f Cppsym.got
18099     exit 1
18100 else
18101     $tr " " "$trnl" | ./Cppsym.try
18102     exit 0
18103 fi
18104 EOSH
18105 chmod +x Cppsym
18106 $eunicefix Cppsym
18107 cat <<EOSH > Cppsym.try
18108 $startsh
18109 cat <<'EOCP' > try.c
18110 #include <stdio.h>
18111 int main() {
18112 EOCP
18113 $awk \\
18114 EOSH
18115 cat <<'EOSH' >> Cppsym.try
18116 'length($1) > 0 {
18117     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
18118     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
18119     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
18120     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
18121 }'       >> try.c
18122 echo 'return 0;}' >> try.c
18123 EOSH
18124 cat <<EOSH >> Cppsym.try
18125 ccflags="$ccflags"
18126 case "$osname-$gccversion" in
18127 irix-) ccflags="\$ccflags -woff 1178" ;;
18128 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
18129 esac
18130 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
18131 EOSH
18132 chmod +x Cppsym.try
18133 $eunicefix Cppsym.try
18134 ./Cppsym < Cppsym.know > Cppsym.true
18135 : now check the C compiler for additional symbols
18136 postprocess_cc_v=''
18137 case "$osname" in
18138 aix) postprocess_cc_v="|$tr , ' '" ;;
18139 esac
18140 $cat >ccsym <<EOS
18141 $startsh
18142 $cat >tmp.c <<EOF
18143 extern int foo;
18144 EOF
18145 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
18146 do
18147         case "\$i" in
18148         -D*) echo "\$i" | $sed 's/^-D//';;
18149         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
18150         esac
18151 done
18152 $rm -f try.c
18153 EOS
18154 postprocess_cc_v=''
18155 chmod +x ccsym
18156 $eunicefix ccsym
18157 ./ccsym > ccsym1.raw
18158 if $test -s ccsym1.raw; then
18159        $sort ccsym1.raw | $uniq >ccsym.raw
18160 else
18161        mv ccsym1.raw ccsym.raw
18162 fi
18163
18164 $awk '/\=/ { print $0; next }
18165         { print $0"=1" }' ccsym.raw >ccsym.list
18166 $awk '/\=/ { print $0; next }
18167         { print $0"=1" }' Cppsym.true >ccsym.true
18168 $comm -13 ccsym.true ccsym.list >ccsym.own
18169 $comm -12 ccsym.true ccsym.list >ccsym.com
18170 $comm -23 ccsym.true ccsym.list >ccsym.cpp
18171 also=''
18172 if $test -z ccsym.raw; then
18173         echo "Your C compiler doesn't seem to define any symbols!" >&4
18174         echo " "
18175         echo "However, your C preprocessor defines the following symbols:"
18176         $cat Cppsym.true
18177         ccsymbols=''
18178         cppsymbols=`$cat Cppsym.true`
18179         cppsymbols=`echo $cppsymbols`
18180         cppccsymbols="$cppsymbols"
18181 else
18182         if $test -s ccsym.com; then
18183                 echo "Your C compiler and pre-processor define these symbols:"
18184                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
18185                 also='also '
18186                 symbols='ones'
18187                 cppccsymbols=`$cat ccsym.com`
18188                 cppccsymbols=`echo $cppccsymbols`
18189                 $test "$silent" || sleep 1
18190         fi
18191         if $test -s ccsym.cpp; then
18192                 $test "$also" && echo " "
18193                 echo "Your C pre-processor ${also}defines the following symbols:"
18194                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
18195                 also='further '
18196                 cppsymbols=`$cat ccsym.cpp`
18197                 cppsymbols=`echo $cppsymbols`
18198                 $test "$silent" || sleep 1
18199         fi
18200         if $test -s ccsym.own; then
18201                 $test "$also" && echo " "
18202                 echo "Your C compiler ${also}defines the following cpp symbols:"
18203                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
18204                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
18205                 ccsymbols=`$cat ccsym.own`
18206                 ccsymbols=`echo $ccsymbols`
18207                 $test "$silent" || sleep 1
18208         fi
18209 fi
18210
18211 : see if this is a termio system
18212 val="$undef"
18213 val2="$undef"
18214 val3="$undef"
18215 if $test `./findhdr termios.h`; then
18216         set tcsetattr i_termios
18217         eval $inlibc
18218         val3="$i_termios"
18219 fi
18220 echo " "
18221 case "$val3" in
18222 "$define") echo "You have POSIX termios.h... good!" >&4;;
18223 *) if ./Cppsym pyr; then
18224                 case "`/bin/universe`" in
18225                 ucb) if $test `./findhdr sgtty.h`; then
18226                                 val2="$define"
18227                                 echo "<sgtty.h> found." >&4
18228                         else
18229                                 echo "System is pyramid with BSD universe."
18230                                 echo "<sgtty.h> not found--you could have problems." >&4
18231                         fi;;
18232                 *) if $test `./findhdr termio.h`; then
18233                                 val="$define"
18234                                 echo "<termio.h> found." >&4
18235                         else
18236                                 echo "System is pyramid with USG universe."
18237                                 echo "<termio.h> not found--you could have problems." >&4
18238                         fi;;
18239                 esac
18240         elif ./usg; then
18241                 if $test `./findhdr termio.h`; then
18242                         echo "<termio.h> found." >&4
18243                         val="$define"
18244                 elif $test `./findhdr sgtty.h`; then
18245                         echo "<sgtty.h> found." >&4
18246                         val2="$define"
18247                 else
18248 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
18249                 fi
18250         else
18251                 if $test `./findhdr sgtty.h`; then
18252                         echo "<sgtty.h> found." >&4
18253                         val2="$define"
18254                 elif $test `./findhdr termio.h`; then
18255                         echo "<termio.h> found." >&4
18256                         val="$define"
18257                 else
18258 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
18259                 fi
18260         fi;;
18261 esac
18262 set i_termio; eval $setvar
18263 val=$val2; set i_sgtty; eval $setvar
18264 val=$val3; set i_termios; eval $setvar
18265
18266 : see if stddef is available
18267 set stddef.h i_stddef
18268 eval $inhdr
18269
18270 : see if this is a sunmath.h system
18271 set sunmath.h i_sunmath
18272 eval $inhdr
18273
18274 : see if sys/access.h is available
18275 set sys/access.h i_sysaccess
18276 eval $inhdr
18277
18278 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
18279 set sys/filio.h i_sysfilio
18280 eval $inhdr
18281 echo " "
18282 if $test `./findhdr sys/ioctl.h`; then
18283         val="$define"
18284         echo '<sys/ioctl.h> found.' >&4
18285 else
18286         val="$undef"
18287         if $test $i_sysfilio = "$define"; then
18288             echo '<sys/ioctl.h> NOT found.' >&4
18289         else
18290                 $test $i_sgtty = "$define" && xxx="sgtty.h"
18291                 $test $i_termio = "$define" && xxx="termio.h"
18292                 $test $i_termios = "$define" && xxx="termios.h"
18293 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
18294         fi
18295 fi
18296 set i_sysioctl
18297 eval $setvar
18298
18299 : see if socket ioctl defs are in sys/sockio.h
18300 echo " "
18301 xxx=`./findhdr sys/sockio.h`
18302 if $test "$xxx"; then
18303         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
18304                 val="$define"
18305                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
18306         else
18307                 val="$undef"
18308                 echo "No socket ioctls found in <sys/sockio.h>." >&4
18309         fi
18310 else
18311         val="$undef"
18312         $cat <<EOM
18313 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
18314 EOM
18315 fi
18316 set i_syssockio
18317 eval $setvar
18318
18319
18320 : see if this is a syslog.h system
18321 set syslog.h i_syslog
18322 eval $inhdr
18323
18324
18325 : see if this is a sys/mode.h system
18326 set sys/mode.h i_sysmode
18327 eval $inhdr
18328
18329 : see if sys/resource.h has to be included
18330 set sys/resource.h i_sysresrc
18331 eval $inhdr
18332
18333 : see if sys/security.h is available
18334 set sys/security.h i_syssecrt
18335 eval $inhdr
18336
18337 : see if this is a sys/statvfs.h system
18338 set sys/statvfs.h i_sysstatvfs
18339 eval $inhdr
18340
18341 : see if this is a sys/un.h system
18342 set sys/un.h i_sysun
18343 eval $inhdr
18344
18345
18346 : see if this is a sys/utsname.h system
18347 set sys/utsname.h i_sysutsname
18348 eval $inhdr
18349
18350 : see if this is a syswait system
18351 set sys/wait.h i_syswait
18352 eval $inhdr
18353
18354 : see if this is a ustat.h system
18355 set ustat.h i_ustat
18356 eval $inhdr
18357
18358 : see if this is an utime system
18359 set utime.h i_utime
18360 eval $inhdr
18361
18362 : see if this is a values.h system
18363 set values.h i_values
18364 eval $inhdr
18365
18366 : see if this is a vfork system
18367 case "$d_vfork" in
18368 "$define")
18369         set vfork.h i_vfork
18370         eval $inhdr
18371         ;;
18372 *)
18373         i_vfork="$undef"
18374         ;;
18375 esac
18376
18377 : see if gdbm.h is available
18378 set gdbm.h t_gdbm
18379 eval $inhdr
18380 case "$t_gdbm" in
18381 $define)
18382         : see if gdbm_open exists
18383         set gdbm_open d_gdbm_open
18384         eval $inlibc
18385         case "$d_gdbm_open" in
18386         $undef)
18387                 t_gdbm="$undef"
18388                 echo "We won't be including <gdbm.h>"
18389                 ;;
18390         esac
18391         ;;
18392 esac
18393 val="$t_gdbm"
18394 set i_gdbm
18395 eval $setvar
18396
18397 echo " "
18398 echo "Looking for extensions..." >&4
18399 : If we are using the old config.sh, known_extensions may contain
18400 : old or inaccurate or duplicate values.
18401 known_extensions=''
18402 nonxs_extensions=''
18403 : We do not use find because it might not be available.
18404 : We do not just use MANIFEST because the user may have dropped
18405 : some additional extensions into the source tree and expect them
18406 : to be built.
18407
18408 : Function to recursively find available extensions, ignoring DynaLoader
18409 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
18410 find_extensions='
18411     for xxx in *; do
18412        case "$xxx" in
18413            DynaLoader|dynaload) ;;
18414            *)
18415            if $test -f $xxx/$xxx.xs; then
18416                known_extensions="$known_extensions $1$xxx";
18417            elif $test -f $xxx/Makefile.PL; then
18418                nonxs_extensions="$nonxs_extensions $1$xxx";
18419            else
18420                if $test -d $xxx -a $# -lt 10; then
18421                    set $1$xxx/ $*;
18422                    cd "$xxx";
18423                    eval $find_extensions;
18424                    cd ..;
18425                    shift;
18426                fi;
18427            fi
18428            ;;
18429        esac;
18430     done'
18431 tdir=`pwd`
18432 cd "$rsrc/ext"
18433 set X
18434 shift
18435 eval $find_extensions
18436 # Special case:  Add in threads/shared since it is not picked up by the
18437 # recursive find above (and adding in general recursive finding breaks
18438 # SDBM_File/sdbm).  A.D.  10/25/2001.
18439 # Encode::XX need explicit mentions for the same reason.
18440 # --jhi 2002-03-04
18441 known_extensions="$known_extensions threads/shared Encode/CN Encode/JP Encode/KR Encode/TW"
18442 set X $nonxs_extensions
18443 shift
18444 nonxs_extensions="$*"
18445 set X $known_extensions
18446 shift
18447 known_extensions="$*"
18448 cd "$tdir"
18449
18450 : Now see which are supported on this system.
18451 avail_ext=''
18452 for xxx in $known_extensions ; do
18453         case "$xxx" in
18454         DB_File|db_file)
18455                 case "$i_db" in
18456                 $define) avail_ext="$avail_ext $xxx" ;;
18457                 esac
18458                 ;;
18459         GDBM_File|gdbm_fil)
18460                 case "$i_gdbm" in 
18461                 $define) avail_ext="$avail_ext $xxx" ;;
18462                 esac
18463                 ;;
18464         I18N/Langinfo|i18n_lan)
18465                 case "$i_langinfo$d_nl_langinfo" in 
18466                 $define$define) avail_ext="$avail_ext $xxx" ;;
18467                 esac
18468                 ;;
18469         NDBM_File|ndbm_fil)
18470                 case "$i_ndbm" in
18471                 $define)
18472                     case "$osname-$use64bitint" in
18473                     cygwin-*|hpux-define)
18474                         case "$libs" in
18475                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
18476                         esac
18477                         ;;
18478                     *) avail_ext="$avail_ext $xxx" ;;
18479                     esac
18480                     ;;
18481                 esac
18482                 ;;
18483         ODBM_File|odbm_fil) 
18484                 case "${i_dbm}${i_rpcsvcdbm}" in
18485                 *"${define}"*)
18486                     case "$osname-$use64bitint" in
18487                     cygwin-*|hpux-define)
18488                         case "$libs" in
18489                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
18490                         esac
18491                         ;;
18492                     *) avail_ext="$avail_ext $xxx" ;;
18493                     esac
18494                     ;;
18495                 esac
18496                 ;;
18497         POSIX|posix)
18498                 case "$useposix" in
18499                 true|define|y) avail_ext="$avail_ext $xxx" ;;
18500                 esac
18501                 ;;
18502         Opcode|opcode)
18503                 case "$useopcode" in
18504                 true|define|y) avail_ext="$avail_ext $xxx" ;;
18505                 esac
18506                 ;;
18507         Socket|socket)
18508                 case "$d_socket" in 
18509                 true|$define|y)
18510                     case "$osname" in
18511                     beos) ;; # not unless BONE
18512                     *) avail_ext="$avail_ext $xxx" ;;
18513                     esac
18514                     ;;
18515                 esac
18516                 ;;
18517         Sys/Syslog|sys/syslog)
18518                 : XXX syslog requires socket
18519                 case "$d_socket" in 
18520                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
18521                 esac
18522                 ;;
18523         Thread|thread)
18524                 case "$usethreads" in
18525                 true|$define|y)
18526                         case "$useithreads" in
18527                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
18528                         esac
18529                 esac
18530                 ;;
18531         threads|threads/shared)
18532                 case "$usethreads" in
18533                 true|$define|y)
18534                         case "$useithreads" in
18535                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
18536                         esac
18537                 esac
18538                 ;;
18539         IPC/SysV|ipc/sysv)
18540                 : XXX Do we need a useipcsysv variable here
18541                 case "${d_msg}${d_sem}${d_shm}" in 
18542                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
18543                 esac
18544                 ;;
18545         *)      avail_ext="$avail_ext $xxx"
18546                 ;;
18547         esac
18548 done
18549
18550 set X $avail_ext
18551 shift
18552 avail_ext="$*"
18553
18554 : Now see which nonxs extensions are supported on this system.
18555 : For now assume all are.
18556 nonxs_ext=''
18557 for xxx in $nonxs_extensions ; do
18558         case "$xxx" in
18559         *)      nonxs_ext="$nonxs_ext $xxx"
18560                 ;;
18561         esac
18562 done
18563
18564 set X $nonxs_ext
18565 shift
18566 nonxs_ext="$*"
18567
18568 case $usedl in
18569 $define)
18570         $cat <<EOM
18571 A number of extensions are supplied with $package.  You may choose to
18572 compile these extensions for dynamic loading (the default), compile
18573 them into the $package executable (static loading), or not include
18574 them at all.  Answer "none" to include no extensions.
18575 Note that DynaLoader is always built and need not be mentioned here.
18576
18577 EOM
18578         case "$dynamic_ext" in
18579         '') dflt="$avail_ext" ;;
18580         *)      dflt="$dynamic_ext"
18581                 # Perhaps we are reusing an old out-of-date config.sh.
18582                 case "$hint" in
18583                 previous)
18584                         if test X"$dynamic_ext" != X"$avail_ext"; then
18585                                 $cat <<EOM
18586 NOTICE:  Your previous config.sh list may be incorrect. 
18587 The extensions now available to you are 
18588         ${avail_ext}
18589 but the default list from your previous config.sh is
18590         ${dynamic_ext} 
18591
18592 EOM
18593                         fi
18594                         ;;
18595                 esac
18596                 ;;
18597         esac
18598         case "$dflt" in
18599         '')     dflt=none;;
18600         esac
18601         rp="What extensions do you wish to load dynamically?"
18602         . ./myread
18603         case "$ans" in
18604         none) dynamic_ext=' ' ;;
18605         *) dynamic_ext="$ans" ;;
18606         esac
18607
18608         case "$static_ext" in
18609         '')
18610                 : Exclude those already listed in dynamic linking
18611                 dflt=''
18612                 for xxx in $avail_ext; do
18613                         case " $dynamic_ext " in
18614                         *" $xxx "*) ;;
18615                         *) dflt="$dflt $xxx" ;;
18616                         esac
18617                 done
18618                 set X $dflt
18619                 shift
18620                 dflt="$*"
18621                 ;;
18622         *)  dflt="$static_ext" 
18623                 ;;
18624         esac
18625
18626         case "$dflt" in
18627         '')     dflt=none;;
18628         esac
18629         rp="What extensions do you wish to load statically?"
18630         . ./myread
18631         case "$ans" in
18632         none) static_ext=' ' ;;
18633         *) static_ext="$ans" ;;
18634         esac
18635         ;;
18636 *)
18637         $cat <<EOM
18638 A number of extensions are supplied with $package.  Answer "none" 
18639 to include no extensions. 
18640 Note that DynaLoader is always built and need not be mentioned here.
18641
18642 EOM
18643         case "$static_ext" in
18644         '') dflt="$avail_ext" ;;
18645         *)      dflt="$static_ext"
18646                 # Perhaps we are reusing an old out-of-date config.sh.
18647                 case "$hint" in
18648                 previous)
18649                         if test X"$static_ext" != X"$avail_ext"; then
18650                                 $cat <<EOM
18651 NOTICE:  Your previous config.sh list may be incorrect. 
18652 The extensions now available to you are 
18653         ${avail_ext}
18654 but the default list from your previous config.sh is
18655         ${static_ext} 
18656
18657 EOM
18658                         fi
18659                         ;;
18660                 esac
18661                 ;;
18662         esac
18663         : Exclude those that are not xs extensions
18664         case "$dflt" in
18665         '')     dflt=none;;
18666         esac
18667         rp="What extensions do you wish to include?"
18668         . ./myread
18669         case "$ans" in
18670         none) static_ext=' ' ;;
18671         *) static_ext="$ans" ;;
18672         esac
18673         ;;
18674 esac
18675
18676 set X $dynamic_ext $static_ext $nonxs_ext
18677 shift
18678 extensions="$*"
18679
18680 : Remove libraries needed only for extensions
18681 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
18682 : The exception is SunOS 4.x, which needs them.
18683 case "${osname}X${osvers}" in
18684 sunos*X4*)
18685     perllibs="$libs"
18686     ;;
18687 *) case "$usedl" in
18688     $define|true|[yY]*)
18689             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
18690             shift
18691             perllibs="$*"
18692             ;;
18693     *)  perllibs="$libs"
18694             ;;
18695     esac
18696     ;;
18697 esac
18698
18699 : Remove build directory name from cppstdin so it can be used from
18700 : either the present location or the final installed location.
18701 echo " "
18702 : Get out of the UU directory to get correct path name.
18703 cd ..
18704 case "$cppstdin" in
18705 `pwd`/cppstdin)
18706         echo "Stripping down cppstdin path name"
18707         cppstdin=cppstdin
18708         ;;
18709 esac
18710 cd UU
18711
18712 : end of configuration questions
18713 echo " "
18714 echo "End of configuration questions."
18715 echo " "
18716
18717 : back to where it started
18718 if test -d ../UU; then
18719         cd ..
18720 fi
18721
18722 : configuration may be patched via a 'config.arch' file
18723 if $test -f config.arch; then
18724         echo "I see a config.arch file, loading it."
18725         . ./config.arch
18726 fi
18727
18728 : configuration may be patched via a 'config.over' file
18729 if $test -f config.over; then
18730         echo " "
18731         dflt=y
18732         rp='I see a config.over file.  Do you wish to load it?'
18733         . UU/myread
18734         case "$ans" in
18735         n*) echo "OK, I'll ignore it.";;
18736         *)      . ./config.over
18737                 echo "Configuration override changes have been loaded."
18738                 ;;
18739         esac
18740 fi
18741
18742 : in case they want portability, strip down executable paths
18743 case "$d_portable" in
18744 "$define")
18745         echo " "
18746         echo "Stripping down executable paths..." >&4
18747         for file in $loclist $trylist; do
18748                 eval temp=\$$file
18749                 eval $file=`basename $temp`
18750         done
18751         ;;
18752 esac
18753
18754 : create config.sh file
18755 echo " "
18756 echo "Creating config.sh..." >&4
18757 $spitshell <<EOT >config.sh
18758 $startsh
18759 #
18760 # This file was produced by running the Configure script. It holds all the
18761 # definitions figured out by Configure. Should you modify one of these values,
18762 # do not forget to propagate your changes by running "Configure -der". You may
18763 # instead choose to run each of the .SH files by yourself, or "Configure -S".
18764 #
18765
18766 # Package name      : $package
18767 # Source directory  : $src
18768 # Configuration time: $cf_time
18769 # Configured by     : $cf_by
18770 # Target system     : $myuname
18771
18772 Author='$Author'
18773 Date='$Date'
18774 Header='$Header'
18775 Id='$Id'
18776 Locker='$Locker'
18777 Log='$Log'
18778 Mcc='$Mcc'
18779 RCSfile='$RCSfile'
18780 Revision='$Revision'
18781 Source='$Source'
18782 State='$State'
18783 _a='$_a'
18784 _exe='$_exe'
18785 _o='$_o'
18786 afs='$afs'
18787 afsroot='$afsroot'
18788 alignbytes='$alignbytes'
18789 ansi2knr='$ansi2knr'
18790 aphostname='$aphostname'
18791 api_revision='$api_revision'
18792 api_subversion='$api_subversion'
18793 api_version='$api_version'
18794 api_versionstring='$api_versionstring'
18795 ar='$ar'
18796 archlib='$archlib'
18797 archlibexp='$archlibexp'
18798 archname64='$archname64'
18799 archname='$archname'
18800 archobjs='$archobjs'
18801 asctime_r_proto='$asctime_r_proto'
18802 awk='$awk'
18803 baserev='$baserev'
18804 bash='$bash'
18805 bin='$bin'
18806 bincompat5005='$bincompat5005'
18807 binexp='$binexp'
18808 bison='$bison'
18809 byacc='$byacc'
18810 byteorder='$byteorder'
18811 c='$c'
18812 castflags='$castflags'
18813 cat='$cat'
18814 cc='$cc'
18815 cccdlflags='$cccdlflags'
18816 ccdlflags='$ccdlflags'
18817 ccflags='$ccflags'
18818 ccflags_uselargefiles='$ccflags_uselargefiles'
18819 ccname='$ccname'
18820 ccsymbols='$ccsymbols'
18821 ccversion='$ccversion'
18822 cf_by='$cf_by'
18823 cf_email='$cf_email'
18824 cf_time='$cf_time'
18825 charsize='$charsize'
18826 chgrp='$chgrp'
18827 chmod='$chmod'
18828 chown='$chown'
18829 clocktype='$clocktype'
18830 comm='$comm'
18831 compress='$compress'
18832 contains='$contains'
18833 cp='$cp'
18834 cpio='$cpio'
18835 cpp='$cpp'
18836 cpp_stuff='$cpp_stuff'
18837 cppccsymbols='$cppccsymbols'
18838 cppflags='$cppflags'
18839 cpplast='$cpplast'
18840 cppminus='$cppminus'
18841 cpprun='$cpprun'
18842 cppstdin='$cppstdin'
18843 cppsymbols='$cppsymbols'
18844 crypt_r_proto='$crypt_r_proto'
18845 cryptlib='$cryptlib'
18846 csh='$csh'
18847 ctermid_r_proto='$ctermid_r_proto'
18848 ctime_r_proto='$ctime_r_proto'
18849 d_Gconvert='$d_Gconvert'
18850 d_PRIEUldbl='$d_PRIEUldbl'
18851 d_PRIFUldbl='$d_PRIFUldbl'
18852 d_PRIGUldbl='$d_PRIGUldbl'
18853 d_PRIXU64='$d_PRIXU64'
18854 d_PRId64='$d_PRId64'
18855 d_PRIeldbl='$d_PRIeldbl'
18856 d_PRIfldbl='$d_PRIfldbl'
18857 d_PRIgldbl='$d_PRIgldbl'
18858 d_PRIi64='$d_PRIi64'
18859 d_PRIo64='$d_PRIo64'
18860 d_PRIu64='$d_PRIu64'
18861 d_PRIx64='$d_PRIx64'
18862 d_SCNfldbl='$d_SCNfldbl'
18863 d__fwalk='$d__fwalk'
18864 d_access='$d_access'
18865 d_accessx='$d_accessx'
18866 d_alarm='$d_alarm'
18867 d_archlib='$d_archlib'
18868 d_asctime_r='$d_asctime_r'
18869 d_atolf='$d_atolf'
18870 d_atoll='$d_atoll'
18871 d_attribut='$d_attribut'
18872 d_bcmp='$d_bcmp'
18873 d_bcopy='$d_bcopy'
18874 d_bincompat5005='$d_bincompat5005'
18875 d_bsd='$d_bsd'
18876 d_bsdgetpgrp='$d_bsdgetpgrp'
18877 d_bsdsetpgrp='$d_bsdsetpgrp'
18878 d_bzero='$d_bzero'
18879 d_casti32='$d_casti32'
18880 d_castneg='$d_castneg'
18881 d_charvspr='$d_charvspr'
18882 d_chown='$d_chown'
18883 d_chroot='$d_chroot'
18884 d_chsize='$d_chsize'
18885 d_class='$d_class'
18886 d_closedir='$d_closedir'
18887 d_cmsghdr_s='$d_cmsghdr_s'
18888 d_const='$d_const'
18889 d_crypt='$d_crypt'
18890 d_crypt_r='$d_crypt_r'
18891 d_csh='$d_csh'
18892 d_ctermid_r='$d_ctermid_r'
18893 d_ctime_r='$d_ctime_r'
18894 d_cuserid='$d_cuserid'
18895 d_dbl_dig='$d_dbl_dig'
18896 d_dbminitproto='$d_dbminitproto'
18897 d_difftime='$d_difftime'
18898 d_dirfd='$d_dirfd'
18899 d_dirnamlen='$d_dirnamlen'
18900 d_dlerror='$d_dlerror'
18901 d_dlopen='$d_dlopen'
18902 d_dlsymun='$d_dlsymun'
18903 d_dosuid='$d_dosuid'
18904 d_drand48_r='$d_drand48_r'
18905 d_drand48proto='$d_drand48proto'
18906 d_dup2='$d_dup2'
18907 d_eaccess='$d_eaccess'
18908 d_endgrent='$d_endgrent'
18909 d_endgrent_r='$d_endgrent_r'
18910 d_endhent='$d_endhent'
18911 d_endhostent_r='$d_endhostent_r'
18912 d_endnent='$d_endnent'
18913 d_endnetent_r='$d_endnetent_r'
18914 d_endpent='$d_endpent'
18915 d_endprotoent_r='$d_endprotoent_r'
18916 d_endpwent='$d_endpwent'
18917 d_endpwent_r='$d_endpwent_r'
18918 d_endsent='$d_endsent'
18919 d_endservent_r='$d_endservent_r'
18920 d_eofnblk='$d_eofnblk'
18921 d_eunice='$d_eunice'
18922 d_fchdir='$d_fchdir'
18923 d_fchmod='$d_fchmod'
18924 d_fchown='$d_fchown'
18925 d_fcntl='$d_fcntl'
18926 d_fcntl_can_lock='$d_fcntl_can_lock'
18927 d_fd_macros='$d_fd_macros'
18928 d_fd_set='$d_fd_set'
18929 d_fds_bits='$d_fds_bits'
18930 d_fgetpos='$d_fgetpos'
18931 d_finite='$d_finite'
18932 d_finitel='$d_finitel'
18933 d_flexfnam='$d_flexfnam'
18934 d_flock='$d_flock'
18935 d_flockproto='$d_flockproto'
18936 d_fork='$d_fork'
18937 d_fp_class='$d_fp_class'
18938 d_fpathconf='$d_fpathconf'
18939 d_fpclass='$d_fpclass'
18940 d_fpclassify='$d_fpclassify'
18941 d_fpclassl='$d_fpclassl'
18942 d_fpos64_t='$d_fpos64_t'
18943 d_frexpl='$d_frexpl'
18944 d_fs_data_s='$d_fs_data_s'
18945 d_fseeko='$d_fseeko'
18946 d_fsetpos='$d_fsetpos'
18947 d_fstatfs='$d_fstatfs'
18948 d_fstatvfs='$d_fstatvfs'
18949 d_fsync='$d_fsync'
18950 d_ftello='$d_ftello'
18951 d_ftime='$d_ftime'
18952 d_getcwd='$d_getcwd'
18953 d_getespwnam='$d_getespwnam'
18954 d_getfsstat='$d_getfsstat'
18955 d_getgrent='$d_getgrent'
18956 d_getgrent_r='$d_getgrent_r'
18957 d_getgrgid_r='$d_getgrgid_r'
18958 d_getgrnam_r='$d_getgrnam_r'
18959 d_getgrps='$d_getgrps'
18960 d_gethbyaddr='$d_gethbyaddr'
18961 d_gethbyname='$d_gethbyname'
18962 d_gethent='$d_gethent'
18963 d_gethname='$d_gethname'
18964 d_gethostbyaddr_r='$d_gethostbyaddr_r'
18965 d_gethostbyname_r='$d_gethostbyname_r'
18966 d_gethostent_r='$d_gethostent_r'
18967 d_gethostprotos='$d_gethostprotos'
18968 d_getitimer='$d_getitimer'
18969 d_getlogin='$d_getlogin'
18970 d_getlogin_r='$d_getlogin_r'
18971 d_getmnt='$d_getmnt'
18972 d_getmntent='$d_getmntent'
18973 d_getnbyaddr='$d_getnbyaddr'
18974 d_getnbyname='$d_getnbyname'
18975 d_getnent='$d_getnent'
18976 d_getnetbyaddr_r='$d_getnetbyaddr_r'
18977 d_getnetbyname_r='$d_getnetbyname_r'
18978 d_getnetent_r='$d_getnetent_r'
18979 d_getnetprotos='$d_getnetprotos'
18980 d_getpagsz='$d_getpagsz'
18981 d_getpbyname='$d_getpbyname'
18982 d_getpbynumber='$d_getpbynumber'
18983 d_getpent='$d_getpent'
18984 d_getpgid='$d_getpgid'
18985 d_getpgrp2='$d_getpgrp2'
18986 d_getpgrp='$d_getpgrp'
18987 d_getppid='$d_getppid'
18988 d_getprior='$d_getprior'
18989 d_getprotobyname_r='$d_getprotobyname_r'
18990 d_getprotobynumber_r='$d_getprotobynumber_r'
18991 d_getprotoent_r='$d_getprotoent_r'
18992 d_getprotoprotos='$d_getprotoprotos'
18993 d_getprpwnam='$d_getprpwnam'
18994 d_getpwent='$d_getpwent'
18995 d_getpwent_r='$d_getpwent_r'
18996 d_getpwnam_r='$d_getpwnam_r'
18997 d_getpwuid_r='$d_getpwuid_r'
18998 d_getsbyname='$d_getsbyname'
18999 d_getsbyport='$d_getsbyport'
19000 d_getsent='$d_getsent'
19001 d_getservbyname_r='$d_getservbyname_r'
19002 d_getservbyport_r='$d_getservbyport_r'
19003 d_getservent_r='$d_getservent_r'
19004 d_getservprotos='$d_getservprotos'
19005 d_getspnam='$d_getspnam'
19006 d_getspnam_r='$d_getspnam_r'
19007 d_gettimeod='$d_gettimeod'
19008 d_gmtime_r='$d_gmtime_r'
19009 d_gnulibc='$d_gnulibc'
19010 d_grpasswd='$d_grpasswd'
19011 d_hasmntopt='$d_hasmntopt'
19012 d_htonl='$d_htonl'
19013 d_index='$d_index'
19014 d_inetaton='$d_inetaton'
19015 d_int64_t='$d_int64_t'
19016 d_isascii='$d_isascii'
19017 d_isfinite='$d_isfinite'
19018 d_isinf='$d_isinf'
19019 d_isnan='$d_isnan'
19020 d_isnanl='$d_isnanl'
19021 d_killpg='$d_killpg'
19022 d_lchown='$d_lchown'
19023 d_ldbl_dig='$d_ldbl_dig'
19024 d_link='$d_link'
19025 d_localtime_r='$d_localtime_r'
19026 d_locconv='$d_locconv'
19027 d_lockf='$d_lockf'
19028 d_longdbl='$d_longdbl'
19029 d_longlong='$d_longlong'
19030 d_lseekproto='$d_lseekproto'
19031 d_lstat='$d_lstat'
19032 d_madvise='$d_madvise'
19033 d_mblen='$d_mblen'
19034 d_mbstowcs='$d_mbstowcs'
19035 d_mbtowc='$d_mbtowc'
19036 d_memchr='$d_memchr'
19037 d_memcmp='$d_memcmp'
19038 d_memcpy='$d_memcpy'
19039 d_memmove='$d_memmove'
19040 d_memset='$d_memset'
19041 d_mkdir='$d_mkdir'
19042 d_mkdtemp='$d_mkdtemp'
19043 d_mkfifo='$d_mkfifo'
19044 d_mkstemp='$d_mkstemp'
19045 d_mkstemps='$d_mkstemps'
19046 d_mktime='$d_mktime'
19047 d_mmap='$d_mmap'
19048 d_modfl='$d_modfl'
19049 d_modfl_pow32_bug='$d_modfl_pow32_bug'
19050 d_mprotect='$d_mprotect'
19051 d_msg='$d_msg'
19052 d_msg_ctrunc='$d_msg_ctrunc'
19053 d_msg_dontroute='$d_msg_dontroute'
19054 d_msg_oob='$d_msg_oob'
19055 d_msg_peek='$d_msg_peek'
19056 d_msg_proxy='$d_msg_proxy'
19057 d_msgctl='$d_msgctl'
19058 d_msgget='$d_msgget'
19059 d_msghdr_s='$d_msghdr_s'
19060 d_msgrcv='$d_msgrcv'
19061 d_msgsnd='$d_msgsnd'
19062 d_msync='$d_msync'
19063 d_munmap='$d_munmap'
19064 d_mymalloc='$d_mymalloc'
19065 d_nice='$d_nice'
19066 d_nl_langinfo='$d_nl_langinfo'
19067 d_nv_preserves_uv='$d_nv_preserves_uv'
19068 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
19069 d_off64_t='$d_off64_t'
19070 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
19071 d_oldpthreads='$d_oldpthreads'
19072 d_oldsock='$d_oldsock'
19073 d_open3='$d_open3'
19074 d_pathconf='$d_pathconf'
19075 d_pause='$d_pause'
19076 d_perl_otherlibdirs='$d_perl_otherlibdirs'
19077 d_phostname='$d_phostname'
19078 d_pipe='$d_pipe'
19079 d_poll='$d_poll'
19080 d_portable='$d_portable'
19081 d_procselfexe='$d_procselfexe'
19082 d_pthread_atfork='$d_pthread_atfork'
19083 d_pthread_yield='$d_pthread_yield'
19084 d_pwage='$d_pwage'
19085 d_pwchange='$d_pwchange'
19086 d_pwclass='$d_pwclass'
19087 d_pwcomment='$d_pwcomment'
19088 d_pwexpire='$d_pwexpire'
19089 d_pwgecos='$d_pwgecos'
19090 d_pwpasswd='$d_pwpasswd'
19091 d_pwquota='$d_pwquota'
19092 d_qgcvt='$d_qgcvt'
19093 d_quad='$d_quad'
19094 d_random_r='$d_random_r'
19095 d_readdir64_r='$d_readdir64_r'
19096 d_readdir='$d_readdir'
19097 d_readdir_r='$d_readdir_r'
19098 d_readlink='$d_readlink'
19099 d_readv='$d_readv'
19100 d_recvmsg='$d_recvmsg'
19101 d_rename='$d_rename'
19102 d_rewinddir='$d_rewinddir'
19103 d_rmdir='$d_rmdir'
19104 d_safebcpy='$d_safebcpy'
19105 d_safemcpy='$d_safemcpy'
19106 d_sanemcmp='$d_sanemcmp'
19107 d_sbrkproto='$d_sbrkproto'
19108 d_sched_yield='$d_sched_yield'
19109 d_scm_rights='$d_scm_rights'
19110 d_seekdir='$d_seekdir'
19111 d_select='$d_select'
19112 d_sem='$d_sem'
19113 d_semctl='$d_semctl'
19114 d_semctl_semid_ds='$d_semctl_semid_ds'
19115 d_semctl_semun='$d_semctl_semun'
19116 d_semget='$d_semget'
19117 d_semop='$d_semop'
19118 d_sendmsg='$d_sendmsg'
19119 d_setegid='$d_setegid'
19120 d_seteuid='$d_seteuid'
19121 d_setgrent='$d_setgrent'
19122 d_setgrent_r='$d_setgrent_r'
19123 d_setgrps='$d_setgrps'
19124 d_sethent='$d_sethent'
19125 d_sethostent_r='$d_sethostent_r'
19126 d_setitimer='$d_setitimer'
19127 d_setlinebuf='$d_setlinebuf'
19128 d_setlocale='$d_setlocale'
19129 d_setlocale_r='$d_setlocale_r'
19130 d_setnent='$d_setnent'
19131 d_setnetent_r='$d_setnetent_r'
19132 d_setpent='$d_setpent'
19133 d_setpgid='$d_setpgid'
19134 d_setpgrp2='$d_setpgrp2'
19135 d_setpgrp='$d_setpgrp'
19136 d_setprior='$d_setprior'
19137 d_setproctitle='$d_setproctitle'
19138 d_setprotoent_r='$d_setprotoent_r'
19139 d_setpwent='$d_setpwent'
19140 d_setpwent_r='$d_setpwent_r'
19141 d_setregid='$d_setregid'
19142 d_setresgid='$d_setresgid'
19143 d_setresuid='$d_setresuid'
19144 d_setreuid='$d_setreuid'
19145 d_setrgid='$d_setrgid'
19146 d_setruid='$d_setruid'
19147 d_setsent='$d_setsent'
19148 d_setservent_r='$d_setservent_r'
19149 d_setsid='$d_setsid'
19150 d_setvbuf='$d_setvbuf'
19151 d_sfio='$d_sfio'
19152 d_shm='$d_shm'
19153 d_shmat='$d_shmat'
19154 d_shmatprototype='$d_shmatprototype'
19155 d_shmctl='$d_shmctl'
19156 d_shmdt='$d_shmdt'
19157 d_shmget='$d_shmget'
19158 d_sigaction='$d_sigaction'
19159 d_sigprocmask='$d_sigprocmask'
19160 d_sigsetjmp='$d_sigsetjmp'
19161 d_sockatmark='$d_sockatmark'
19162 d_sockatmarkproto='$d_sockatmarkproto'
19163 d_socket='$d_socket'
19164 d_socklen_t='$d_socklen_t'
19165 d_sockpair='$d_sockpair'
19166 d_socks5_init='$d_socks5_init'
19167 d_sqrtl='$d_sqrtl'
19168 d_srand48_r='$d_srand48_r'
19169 d_srandom_r='$d_srandom_r'
19170 d_sresgproto='$d_sresgproto'
19171 d_sresuproto='$d_sresuproto'
19172 d_statblks='$d_statblks'
19173 d_statfs_f_flags='$d_statfs_f_flags'
19174 d_statfs_s='$d_statfs_s'
19175 d_statvfs='$d_statvfs'
19176 d_stdio_cnt_lval='$d_stdio_cnt_lval'
19177 d_stdio_ptr_lval='$d_stdio_ptr_lval'
19178 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
19179 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
19180 d_stdio_stream_array='$d_stdio_stream_array'
19181 d_stdiobase='$d_stdiobase'
19182 d_stdstdio='$d_stdstdio'
19183 d_strchr='$d_strchr'
19184 d_strcoll='$d_strcoll'
19185 d_strctcpy='$d_strctcpy'
19186 d_strerrm='$d_strerrm'
19187 d_strerror='$d_strerror'
19188 d_strerror_r='$d_strerror_r'
19189 d_strftime='$d_strftime'
19190 d_strtod='$d_strtod'
19191 d_strtol='$d_strtol'
19192 d_strtold='$d_strtold'
19193 d_strtoll='$d_strtoll'
19194 d_strtoq='$d_strtoq'
19195 d_strtoul='$d_strtoul'
19196 d_strtoull='$d_strtoull'
19197 d_strtouq='$d_strtouq'
19198 d_strxfrm='$d_strxfrm'
19199 d_suidsafe='$d_suidsafe'
19200 d_symlink='$d_symlink'
19201 d_syscall='$d_syscall'
19202 d_syscallproto='$d_syscallproto'
19203 d_sysconf='$d_sysconf'
19204 d_sysernlst='$d_sysernlst'
19205 d_syserrlst='$d_syserrlst'
19206 d_system='$d_system'
19207 d_tcgetpgrp='$d_tcgetpgrp'
19208 d_tcsetpgrp='$d_tcsetpgrp'
19209 d_telldir='$d_telldir'
19210 d_telldirproto='$d_telldirproto'
19211 d_time='$d_time'
19212 d_times='$d_times'
19213 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
19214 d_tm_tm_zone='$d_tm_tm_zone'
19215 d_tmpnam_r='$d_tmpnam_r'
19216 d_truncate='$d_truncate'
19217 d_ttyname_r='$d_ttyname_r'
19218 d_tzname='$d_tzname'
19219 d_u32align='$d_u32align'
19220 d_ualarm='$d_ualarm'
19221 d_umask='$d_umask'
19222 d_uname='$d_uname'
19223 d_union_semun='$d_union_semun'
19224 d_unordered='$d_unordered'
19225 d_usleep='$d_usleep'
19226 d_usleepproto='$d_usleepproto'
19227 d_ustat='$d_ustat'
19228 d_vendorarch='$d_vendorarch'
19229 d_vendorbin='$d_vendorbin'
19230 d_vendorlib='$d_vendorlib'
19231 d_vfork='$d_vfork'
19232 d_void_closedir='$d_void_closedir'
19233 d_voidsig='$d_voidsig'
19234 d_voidtty='$d_voidtty'
19235 d_volatile='$d_volatile'
19236 d_vprintf='$d_vprintf'
19237 d_wait4='$d_wait4'
19238 d_waitpid='$d_waitpid'
19239 d_wcstombs='$d_wcstombs'
19240 d_wctomb='$d_wctomb'
19241 d_writev='$d_writev'
19242 d_xenix='$d_xenix'
19243 date='$date'
19244 db_hashtype='$db_hashtype'
19245 db_prefixtype='$db_prefixtype'
19246 db_version_major='$db_version_major'
19247 db_version_minor='$db_version_minor'
19248 db_version_patch='$db_version_patch'
19249 defvoidused='$defvoidused'
19250 direntrytype='$direntrytype'
19251 dlext='$dlext'
19252 dlsrc='$dlsrc'
19253 doublesize='$doublesize'
19254 drand01='$drand01'
19255 drand48_r_proto='$drand48_r_proto'
19256 dynamic_ext='$dynamic_ext'
19257 eagain='$eagain'
19258 ebcdic='$ebcdic'
19259 echo='$echo'
19260 egrep='$egrep'
19261 emacs='$emacs'
19262 endgrent_r_proto='$endgrent_r_proto'
19263 endhostent_r_proto='$endhostent_r_proto'
19264 endnetent_r_proto='$endnetent_r_proto'
19265 endprotoent_r_proto='$endprotoent_r_proto'
19266 endpwent_r_proto='$endpwent_r_proto'
19267 endservent_r_proto='$endservent_r_proto'
19268 eunicefix='$eunicefix'
19269 exe_ext='$exe_ext'
19270 expr='$expr'
19271 extensions='$extensions'
19272 extras='$extras'
19273 fflushNULL='$fflushNULL'
19274 fflushall='$fflushall'
19275 find='$find'
19276 firstmakefile='$firstmakefile'
19277 flex='$flex'
19278 fpossize='$fpossize'
19279 fpostype='$fpostype'
19280 freetype='$freetype'
19281 from='$from'
19282 full_ar='$full_ar'
19283 full_csh='$full_csh'
19284 full_sed='$full_sed'
19285 gccosandvers='$gccosandvers'
19286 gccversion='$gccversion'
19287 getgrent_r_proto='$getgrent_r_proto'
19288 getgrgid_r_proto='$getgrgid_r_proto'
19289 getgrnam_r_proto='$getgrnam_r_proto'
19290 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
19291 gethostbyname_r_proto='$gethostbyname_r_proto'
19292 gethostent_r_proto='$gethostent_r_proto'
19293 getlogin_r_proto='$getlogin_r_proto'
19294 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
19295 getnetbyname_r_proto='$getnetbyname_r_proto'
19296 getnetent_r_proto='$getnetent_r_proto'
19297 getprotobyname_r_proto='$getprotobyname_r_proto'
19298 getprotobynumber_r_proto='$getprotobynumber_r_proto'
19299 getprotoent_r_proto='$getprotoent_r_proto'
19300 getpwent_r_proto='$getpwent_r_proto'
19301 getpwnam_r_proto='$getpwnam_r_proto'
19302 getpwuid_r_proto='$getpwuid_r_proto'
19303 getservbyname_r_proto='$getservbyname_r_proto'
19304 getservbyport_r_proto='$getservbyport_r_proto'
19305 getservent_r_proto='$getservent_r_proto'
19306 getspnam_r_proto='$getspnam_r_proto'
19307 gidformat='$gidformat'
19308 gidsign='$gidsign'
19309 gidsize='$gidsize'
19310 gidtype='$gidtype'
19311 glibpth='$glibpth'
19312 gmake='$gmake'
19313 gmtime_r_proto='$gmtime_r_proto'
19314 grep='$grep'
19315 groupcat='$groupcat'
19316 groupstype='$groupstype'
19317 gzip='$gzip'
19318 h_fcntl='$h_fcntl'
19319 h_sysfile='$h_sysfile'
19320 hint='$hint'
19321 hostcat='$hostcat'
19322 i16size='$i16size'
19323 i16type='$i16type'
19324 i32size='$i32size'
19325 i32type='$i32type'
19326 i64size='$i64size'
19327 i64type='$i64type'
19328 i8size='$i8size'
19329 i8type='$i8type'
19330 i_arpainet='$i_arpainet'
19331 i_bsdioctl='$i_bsdioctl'
19332 i_crypt='$i_crypt'
19333 i_db='$i_db'
19334 i_dbm='$i_dbm'
19335 i_dirent='$i_dirent'
19336 i_dld='$i_dld'
19337 i_dlfcn='$i_dlfcn'
19338 i_fcntl='$i_fcntl'
19339 i_float='$i_float'
19340 i_fp='$i_fp'
19341 i_fp_class='$i_fp_class'
19342 i_gdbm='$i_gdbm'
19343 i_grp='$i_grp'
19344 i_ieeefp='$i_ieeefp'
19345 i_inttypes='$i_inttypes'
19346 i_langinfo='$i_langinfo'
19347 i_libutil='$i_libutil'
19348 i_limits='$i_limits'
19349 i_locale='$i_locale'
19350 i_machcthr='$i_machcthr'
19351 i_malloc='$i_malloc'
19352 i_math='$i_math'
19353 i_memory='$i_memory'
19354 i_mntent='$i_mntent'
19355 i_ndbm='$i_ndbm'
19356 i_netdb='$i_netdb'
19357 i_neterrno='$i_neterrno'
19358 i_netinettcp='$i_netinettcp'
19359 i_niin='$i_niin'
19360 i_poll='$i_poll'
19361 i_prot='$i_prot'
19362 i_pthread='$i_pthread'
19363 i_pwd='$i_pwd'
19364 i_rpcsvcdbm='$i_rpcsvcdbm'
19365 i_sfio='$i_sfio'
19366 i_sgtty='$i_sgtty'
19367 i_shadow='$i_shadow'
19368 i_socks='$i_socks'
19369 i_stdarg='$i_stdarg'
19370 i_stddef='$i_stddef'
19371 i_stdlib='$i_stdlib'
19372 i_string='$i_string'
19373 i_sunmath='$i_sunmath'
19374 i_sysaccess='$i_sysaccess'
19375 i_sysdir='$i_sysdir'
19376 i_sysfile='$i_sysfile'
19377 i_sysfilio='$i_sysfilio'
19378 i_sysin='$i_sysin'
19379 i_sysioctl='$i_sysioctl'
19380 i_syslog='$i_syslog'
19381 i_sysmman='$i_sysmman'
19382 i_sysmode='$i_sysmode'
19383 i_sysmount='$i_sysmount'
19384 i_sysndir='$i_sysndir'
19385 i_sysparam='$i_sysparam'
19386 i_sysresrc='$i_sysresrc'
19387 i_syssecrt='$i_syssecrt'
19388 i_sysselct='$i_sysselct'
19389 i_syssockio='$i_syssockio'
19390 i_sysstat='$i_sysstat'
19391 i_sysstatfs='$i_sysstatfs'
19392 i_sysstatvfs='$i_sysstatvfs'
19393 i_systime='$i_systime'
19394 i_systimek='$i_systimek'
19395 i_systimes='$i_systimes'
19396 i_systypes='$i_systypes'
19397 i_sysuio='$i_sysuio'
19398 i_sysun='$i_sysun'
19399 i_sysutsname='$i_sysutsname'
19400 i_sysvfs='$i_sysvfs'
19401 i_syswait='$i_syswait'
19402 i_termio='$i_termio'
19403 i_termios='$i_termios'
19404 i_time='$i_time'
19405 i_unistd='$i_unistd'
19406 i_ustat='$i_ustat'
19407 i_utime='$i_utime'
19408 i_values='$i_values'
19409 i_varargs='$i_varargs'
19410 i_varhdr='$i_varhdr'
19411 i_vfork='$i_vfork'
19412 ignore_versioned_solibs='$ignore_versioned_solibs'
19413 inc_version_list='$inc_version_list'
19414 inc_version_list_init='$inc_version_list_init'
19415 incpath='$incpath'
19416 inews='$inews'
19417 installarchlib='$installarchlib'
19418 installbin='$installbin'
19419 installman1dir='$installman1dir'
19420 installman3dir='$installman3dir'
19421 installprefix='$installprefix'
19422 installprefixexp='$installprefixexp'
19423 installprivlib='$installprivlib'
19424 installscript='$installscript'
19425 installsitearch='$installsitearch'
19426 installsitebin='$installsitebin'
19427 installsitelib='$installsitelib'
19428 installstyle='$installstyle'
19429 installusrbinperl='$installusrbinperl'
19430 installvendorarch='$installvendorarch'
19431 installvendorbin='$installvendorbin'
19432 installvendorlib='$installvendorlib'
19433 intsize='$intsize'
19434 issymlink='$issymlink'
19435 ivdformat='$ivdformat'
19436 ivsize='$ivsize'
19437 ivtype='$ivtype'
19438 known_extensions='$known_extensions'
19439 ksh='$ksh'
19440 ld='$ld'
19441 lddlflags='$lddlflags'
19442 ldflags='$ldflags'
19443 ldflags_uselargefiles='$ldflags_uselargefiles'
19444 ldlibpthname='$ldlibpthname'
19445 less='$less'
19446 lib_ext='$lib_ext'
19447 libc='$libc'
19448 libperl='$libperl'
19449 libpth='$libpth'
19450 libs='$libs'
19451 libsdirs='$libsdirs'
19452 libsfiles='$libsfiles'
19453 libsfound='$libsfound'
19454 libspath='$libspath'
19455 libswanted='$libswanted'
19456 libswanted_uselargefiles='$libswanted_uselargefiles'
19457 line='$line'
19458 lint='$lint'
19459 lkflags='$lkflags'
19460 ln='$ln'
19461 lns='$lns'
19462 localtime_r_proto='$localtime_r_proto'
19463 locincpth='$locincpth'
19464 loclibpth='$loclibpth'
19465 longdblsize='$longdblsize'
19466 longlongsize='$longlongsize'
19467 longsize='$longsize'
19468 lp='$lp'
19469 lpr='$lpr'
19470 ls='$ls'
19471 lseeksize='$lseeksize'
19472 lseektype='$lseektype'
19473 mail='$mail'
19474 mailx='$mailx'
19475 make='$make'
19476 make_set_make='$make_set_make'
19477 mallocobj='$mallocobj'
19478 mallocsrc='$mallocsrc'
19479 malloctype='$malloctype'
19480 man1dir='$man1dir'
19481 man1direxp='$man1direxp'
19482 man1ext='$man1ext'
19483 man3dir='$man3dir'
19484 man3direxp='$man3direxp'
19485 man3ext='$man3ext'
19486 mips_type='$mips_type'
19487 mkdir='$mkdir'
19488 mmaptype='$mmaptype'
19489 modetype='$modetype'
19490 more='$more'
19491 multiarch='$multiarch'
19492 mv='$mv'
19493 myarchname='$myarchname'
19494 mydomain='$mydomain'
19495 myhostname='$myhostname'
19496 myuname='$myuname'
19497 n='$n'
19498 need_va_copy='$need_va_copy'
19499 netdb_hlen_type='$netdb_hlen_type'
19500 netdb_host_type='$netdb_host_type'
19501 netdb_name_type='$netdb_name_type'
19502 netdb_net_type='$netdb_net_type'
19503 nm='$nm'
19504 nm_opt='$nm_opt'
19505 nm_so_opt='$nm_so_opt'
19506 nonxs_ext='$nonxs_ext'
19507 nroff='$nroff'
19508 nvEUformat='$nvEUformat'
19509 nvFUformat='$nvFUformat'
19510 nvGUformat='$nvGUformat'
19511 nveformat='$nveformat'
19512 nvfformat='$nvfformat'
19513 nvgformat='$nvgformat'
19514 nvsize='$nvsize'
19515 nvtype='$nvtype'
19516 o_nonblock='$o_nonblock'
19517 obj_ext='$obj_ext'
19518 old_pthread_create_joinable='$old_pthread_create_joinable'
19519 optimize='$optimize'
19520 orderlib='$orderlib'
19521 osname='$osname'
19522 osvers='$osvers'
19523 otherlibdirs='$otherlibdirs'
19524 package='$package'
19525 pager='$pager'
19526 passcat='$passcat'
19527 patchlevel='$patchlevel'
19528 path_sep='$path_sep'
19529 perl5='$perl5'
19530 perl='$perl'
19531 perl_patchlevel='$perl_patchlevel'
19532 perladmin='$perladmin'
19533 perllibs='$perllibs'
19534 perlpath='$perlpath'
19535 pg='$pg'
19536 phostname='$phostname'
19537 pidtype='$pidtype'
19538 plibpth='$plibpth'
19539 pm_apiversion='$pm_apiversion'
19540 pmake='$pmake'
19541 pr='$pr'
19542 prefix='$prefix'
19543 prefixexp='$prefixexp'
19544 privlib='$privlib'
19545 privlibexp='$privlibexp'
19546 procselfexe='$procselfexe'
19547 prototype='$prototype'
19548 ptrsize='$ptrsize'
19549 quadkind='$quadkind'
19550 quadtype='$quadtype'
19551 randbits='$randbits'
19552 randfunc='$randfunc'
19553 random_r_proto='$random_r_proto'
19554 randseedtype='$randseedtype'
19555 ranlib='$ranlib'
19556 rd_nodata='$rd_nodata'
19557 readdir64_r_proto='$readdir64_r_proto'
19558 readdir_r_proto='$readdir_r_proto'
19559 revision='$revision'
19560 rm='$rm'
19561 rmail='$rmail'
19562 run='$run'
19563 runnm='$runnm'
19564 sPRIEUldbl='$sPRIEUldbl'
19565 sPRIFUldbl='$sPRIFUldbl'
19566 sPRIGUldbl='$sPRIGUldbl'
19567 sPRIXU64='$sPRIXU64'
19568 sPRId64='$sPRId64'
19569 sPRIeldbl='$sPRIeldbl'
19570 sPRIfldbl='$sPRIfldbl'
19571 sPRIgldbl='$sPRIgldbl'
19572 sPRIi64='$sPRIi64'
19573 sPRIo64='$sPRIo64'
19574 sPRIu64='$sPRIu64'
19575 sPRIx64='$sPRIx64'
19576 sSCNfldbl='$sSCNfldbl'
19577 sched_yield='$sched_yield'
19578 scriptdir='$scriptdir'
19579 scriptdirexp='$scriptdirexp'
19580 sed='$sed'
19581 seedfunc='$seedfunc'
19582 selectminbits='$selectminbits'
19583 selecttype='$selecttype'
19584 sendmail='$sendmail'
19585 setgrent_r_proto='$setgrent_r_proto'
19586 sethostent_r_proto='$sethostent_r_proto'
19587 setlocale_r_proto='$setlocale_r_proto'
19588 setnetent_r_proto='$setnetent_r_proto'
19589 setprotoent_r_proto='$setprotoent_r_proto'
19590 setpwent_r_proto='$setpwent_r_proto'
19591 setservent_r_proto='$setservent_r_proto'
19592 sh='$sh'
19593 shar='$shar'
19594 sharpbang='$sharpbang'
19595 shmattype='$shmattype'
19596 shortsize='$shortsize'
19597 shrpenv='$shrpenv'
19598 shsharp='$shsharp'
19599 sig_count='$sig_count'
19600 sig_name='$sig_name'
19601 sig_name_init='$sig_name_init'
19602 sig_num='$sig_num'
19603 sig_num_init='$sig_num_init'
19604 sig_size='$sig_size'
19605 signal_t='$signal_t'
19606 sitearch='$sitearch'
19607 sitearchexp='$sitearchexp'
19608 sitebin='$sitebin'
19609 sitebinexp='$sitebinexp'
19610 sitelib='$sitelib'
19611 sitelib_stem='$sitelib_stem'
19612 sitelibexp='$sitelibexp'
19613 siteprefix='$siteprefix'
19614 siteprefixexp='$siteprefixexp'
19615 sizesize='$sizesize'
19616 sizetype='$sizetype'
19617 sleep='$sleep'
19618 smail='$smail'
19619 so='$so'
19620 sockethdr='$sockethdr'
19621 socketlib='$socketlib'
19622 socksizetype='$socksizetype'
19623 sort='$sort'
19624 spackage='$spackage'
19625 spitshell='$spitshell'
19626 srand48_r_proto='$srand48_r_proto'
19627 srandom_r_proto='$srandom_r_proto'
19628 src='$src'
19629 ssizetype='$ssizetype'
19630 startperl='$startperl'
19631 startsh='$startsh'
19632 static_ext='$static_ext'
19633 stdchar='$stdchar'
19634 stdio_base='$stdio_base'
19635 stdio_bufsiz='$stdio_bufsiz'
19636 stdio_cnt='$stdio_cnt'
19637 stdio_filbuf='$stdio_filbuf'
19638 stdio_ptr='$stdio_ptr'
19639 stdio_stream_array='$stdio_stream_array'
19640 strerror_r_proto='$strerror_r_proto'
19641 strings='$strings'
19642 submit='$submit'
19643 subversion='$subversion'
19644 sysman='$sysman'
19645 tail='$tail'
19646 tar='$tar'
19647 targetarch='$targetarch'
19648 tbl='$tbl'
19649 tee='$tee'
19650 test='$test'
19651 timeincl='$timeincl'
19652 timetype='$timetype'
19653 tmpnam_r_proto='$tmpnam_r_proto'
19654 to='$to'
19655 touch='$touch'
19656 tr='$tr'
19657 trnl='$trnl'
19658 troff='$troff'
19659 ttyname_r_proto='$ttyname_r_proto'
19660 u16size='$u16size'
19661 u16type='$u16type'
19662 u32size='$u32size'
19663 u32type='$u32type'
19664 u64size='$u64size'
19665 u64type='$u64type'
19666 u8size='$u8size'
19667 u8type='$u8type'
19668 uidformat='$uidformat'
19669 uidsign='$uidsign'
19670 uidsize='$uidsize'
19671 uidtype='$uidtype'
19672 uname='$uname'
19673 uniq='$uniq'
19674 uquadtype='$uquadtype'
19675 use5005threads='$use5005threads'
19676 use64bitall='$use64bitall'
19677 use64bitint='$use64bitint'
19678 usecrosscompile='$usecrosscompile'
19679 usedl='$usedl'
19680 useithreads='$useithreads'
19681 uselargefiles='$uselargefiles'
19682 uselongdouble='$uselongdouble'
19683 usemorebits='$usemorebits'
19684 usemultiplicity='$usemultiplicity'
19685 usemymalloc='$usemymalloc'
19686 usenm='$usenm'
19687 useopcode='$useopcode'
19688 useperlio='$useperlio'
19689 useposix='$useposix'
19690 usereentrant='$usereentrant'
19691 usesfio='$usesfio'
19692 useshrplib='$useshrplib'
19693 usesocks='$usesocks'
19694 usethreads='$usethreads'
19695 usevendorprefix='$usevendorprefix'
19696 usevfork='$usevfork'
19697 usrinc='$usrinc'
19698 uuname='$uuname'
19699 uvXUformat='$uvXUformat'
19700 uvoformat='$uvoformat'
19701 uvsize='$uvsize'
19702 uvtype='$uvtype'
19703 uvuformat='$uvuformat'
19704 uvxformat='$uvxformat'
19705 vendorarch='$vendorarch'
19706 vendorarchexp='$vendorarchexp'
19707 vendorbin='$vendorbin'
19708 vendorbinexp='$vendorbinexp'
19709 vendorlib='$vendorlib'
19710 vendorlib_stem='$vendorlib_stem'
19711 vendorlibexp='$vendorlibexp'
19712 vendorprefix='$vendorprefix'
19713 vendorprefixexp='$vendorprefixexp'
19714 version='$version'
19715 version_patchlevel_string='$version_patchlevel_string'
19716 versiononly='$versiononly'
19717 vi='$vi'
19718 voidflags='$voidflags'
19719 xlibpth='$xlibpth'
19720 xs_apiversion='$xs_apiversion'
19721 yacc='$yacc'
19722 yaccflags='$yaccflags'
19723 zcat='$zcat'
19724 zip='$zip'
19725 EOT
19726
19727 : Add in command line options if available
19728 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
19729
19730 : add special variables
19731 $test -f $src/patchlevel.h && \
19732 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
19733 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
19734 echo "PERL_CONFIG_SH=true" >>config.sh
19735
19736 : propagate old symbols
19737 if $test -f UU/config.sh; then
19738         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
19739         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
19740         $sort | $uniq -u >UU/oldsyms
19741         set X `cat UU/oldsyms`
19742         shift
19743         case $# in
19744         0) ;;
19745         *)
19746                 cat <<EOM
19747 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
19748 EOM
19749                 echo "# Variables propagated from previous config.sh file." >>config.sh
19750                 for sym in `cat UU/oldsyms`; do
19751                         echo "    Propagating $hint variable "'$'"$sym..."
19752                         eval 'tmp="$'"${sym}"'"'
19753                         echo "$tmp" | \
19754                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
19755                 done
19756                 ;;
19757         esac
19758 fi
19759
19760 : Finish up by extracting the .SH files
19761 case "$alldone" in
19762 exit)
19763         $rm -rf UU
19764         echo "Extraction done."
19765         exit 0
19766         ;;
19767 cont)
19768         ;;
19769 '')
19770         dflt=''
19771         nostick=true
19772         $cat <<EOM
19773
19774 If you'd like to make any changes to the config.sh file before I begin
19775 to configure things, do it as a shell escape now (e.g. !vi config.sh).
19776
19777 EOM
19778         rp="Press return or use a shell escape to edit config.sh:"
19779         . UU/myread
19780         nostick=''
19781         case "$ans" in
19782         '') ;;
19783         *) : in case they cannot read
19784                 sh 1>&4 -c "$ans";;
19785         esac
19786         ;;
19787 esac
19788
19789 : if this fails, just run all the .SH files by hand
19790 . ./config.sh
19791
19792 echo " "
19793 exec 1>&4
19794 pwd=`pwd`
19795 . ./UU/extract
19796 cd "$pwd"
19797
19798 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
19799         dflt=y
19800         case "$silent" in
19801         true) ;;
19802         *)
19803                 $cat <<EOM
19804
19805 Now you need to generate make dependencies by running "$make depend".
19806 You might prefer to run it in background: "$make depend > makedepend.out &"
19807 It can take a while, so you might not want to run it right now.
19808
19809 EOM
19810                 ;;
19811         esac
19812         rp="Run $make depend now?"
19813         . UU/myread
19814         case "$ans" in
19815         y*)
19816                 $make depend && echo "Now you must run '$make'."
19817                 ;;
19818         *)
19819                 echo "You must run '$make depend' then '$make'."
19820                 ;;
19821         esac
19822 elif test -f [Mm]akefile; then
19823         echo " "
19824         echo "Now you must run a $make."
19825 else
19826         echo "Configure done."
19827 fi
19828
19829 if $test -f Policy.sh; then
19830     $cat <<EOM
19831
19832 If you compile $package on a different machine or from a different object
19833 directory, copy the Policy.sh file from this object directory to the
19834 new one before you run Configure -- this will help you with most of
19835 the policy defaults.
19836
19837 EOM
19838 fi
19839 if $test -f config.msg; then
19840     echo "Hmm.  I also noted the following information while running:"
19841     echo " "
19842     $cat config.msg >&4
19843     $rm -f config.msg
19844 fi
19845 $rm -f kit*isdone ark*isdone
19846 $rm -rf UU
19847
19848 : End of Configure
19849