91e17d1566a95126869bfebd1761e7097935a83b
[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 Wed Sep 11 10:53:27 METDST 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 byteorder=''
305 cc=''
306 ccflags=''
307 cppflags=''
308 ldflags=''
309 lkflags=''
310 locincpth=''
311 optimize=''
312 cf_email=''
313 cf_by=''
314 cf_time=''
315 charsize=''
316 contains=''
317 cpp_stuff=''
318 cpplast=''
319 cppminus=''
320 cpprun=''
321 cppstdin=''
322 d__fwalk=''
323 d_access=''
324 d_accessx=''
325 d_alarm=''
326 asctime_r_proto=''
327 d_asctime_r=''
328 d_attribut=''
329 d_bcmp=''
330 d_bcopy=''
331 d_bzero=''
332 d_casti32=''
333 castflags=''
334 d_castneg=''
335 d_chown=''
336 d_chroot=''
337 d_chsize=''
338 d_class=''
339 d_closedir=''
340 d_void_closedir=''
341 d_cmsghdr_s=''
342 d_const=''
343 cryptlib=''
344 d_crypt=''
345 crypt_r_proto=''
346 d_crypt_r=''
347 d_csh=''
348 full_csh=''
349 ctermid_r_proto=''
350 d_ctermid_r=''
351 ctime_r_proto=''
352 d_ctime_r=''
353 d_cuserid=''
354 d_dbl_dig=''
355 d_dbminitproto=''
356 d_difftime=''
357 d_dirfd=''
358 d_dlerror=''
359 d_dlopen=''
360 d_dlsymun=''
361 d_dosuid=''
362 d_suidsafe=''
363 d_drand48_r=''
364 drand48_r_proto=''
365 d_drand48proto=''
366 d_dup2=''
367 d_eaccess=''
368 d_endgrent=''
369 d_endgrent_r=''
370 endgrent_r_proto=''
371 d_endhent=''
372 d_endhostent_r=''
373 endhostent_r_proto=''
374 d_endnent=''
375 d_endnetent_r=''
376 endnetent_r_proto=''
377 d_endpent=''
378 d_endprotoent_r=''
379 endprotoent_r_proto=''
380 d_endpwent=''
381 d_endpwent_r=''
382 endpwent_r_proto=''
383 d_endsent=''
384 d_endservent_r=''
385 endservent_r_proto=''
386 d_fchdir=''
387 d_fchmod=''
388 d_fchown=''
389 d_fcntl=''
390 d_fcntl_can_lock=''
391 d_fd_macros=''
392 d_fd_set=''
393 d_fds_bits=''
394 d_fgetpos=''
395 d_finite=''
396 d_finitel=''
397 d_flexfnam=''
398 d_flock=''
399 d_flockproto=''
400 d_fork=''
401 d_fp_class=''
402 d_fpclass=''
403 d_fpclassify=''
404 d_fpclassl=''
405 d_fpos64_t=''
406 d_frexpl=''
407 d_fs_data_s=''
408 d_fseeko=''
409 d_fsetpos=''
410 d_fstatfs=''
411 d_fsync=''
412 d_ftello=''
413 d_ftime=''
414 d_gettimeod=''
415 d_Gconvert=''
416 d_getcwd=''
417 d_getespwnam=''
418 d_getfsstat=''
419 d_getgrent=''
420 d_getgrent_r=''
421 getgrent_r_proto=''
422 d_getgrgid_r=''
423 getgrgid_r_proto=''
424 d_getgrnam_r=''
425 getgrnam_r_proto=''
426 d_getgrps=''
427 d_gethbyaddr=''
428 d_gethbyname=''
429 d_gethent=''
430 aphostname=''
431 d_gethname=''
432 d_phostname=''
433 d_uname=''
434 d_gethostbyaddr_r=''
435 gethostbyaddr_r_proto=''
436 d_gethostbyname_r=''
437 gethostbyname_r_proto=''
438 d_gethostent_r=''
439 gethostent_r_proto=''
440 d_gethostprotos=''
441 d_getitimer=''
442 d_getlogin=''
443 d_getlogin_r=''
444 getlogin_r_proto=''
445 d_getmnt=''
446 d_getmntent=''
447 d_getnbyaddr=''
448 d_getnbyname=''
449 d_getnent=''
450 d_getnetbyaddr_r=''
451 getnetbyaddr_r_proto=''
452 d_getnetbyname_r=''
453 getnetbyname_r_proto=''
454 d_getnetent_r=''
455 getnetent_r_proto=''
456 d_getnetprotos=''
457 d_getpagsz=''
458 d_getpent=''
459 d_getpgid=''
460 d_getpgrp2=''
461 d_bsdgetpgrp=''
462 d_getpgrp=''
463 d_getppid=''
464 d_getprior=''
465 d_getpbyname=''
466 d_getpbynumber=''
467 d_getprotobyname_r=''
468 getprotobyname_r_proto=''
469 d_getprotobynumber_r=''
470 getprotobynumber_r_proto=''
471 d_getprotoent_r=''
472 getprotoent_r_proto=''
473 d_getprotoprotos=''
474 d_getprpwnam=''
475 d_getpwent=''
476 d_getpwent_r=''
477 getpwent_r_proto=''
478 d_getpwnam_r=''
479 getpwnam_r_proto=''
480 d_getpwuid_r=''
481 getpwuid_r_proto=''
482 d_getsent=''
483 d_getservbyname_r=''
484 getservbyname_r_proto=''
485 d_getservbyport_r=''
486 getservbyport_r_proto=''
487 d_getservent_r=''
488 getservent_r_proto=''
489 d_getservprotos=''
490 d_getspnam=''
491 d_getspnam_r=''
492 getspnam_r_proto=''
493 d_getsbyname=''
494 d_getsbyport=''
495 d_gmtime_r=''
496 gmtime_r_proto=''
497 d_gnulibc=''
498 gnulibc_version=''
499 d_hasmntopt=''
500 d_htonl=''
501 d_inetaton=''
502 d_int64_t=''
503 d_isascii=''
504 d_isfinite=''
505 d_isinf=''
506 d_isnan=''
507 d_isnanl=''
508 d_killpg=''
509 d_lchown=''
510 d_ldbl_dig=''
511 d_link=''
512 d_localtime_r=''
513 localtime_r_proto=''
514 d_locconv=''
515 d_lockf=''
516 d_longdbl=''
517 longdblsize=''
518 d_longlong=''
519 longlongsize=''
520 d_lseekproto=''
521 d_lstat=''
522 d_madvise=''
523 d_mblen=''
524 d_mbstowcs=''
525 d_mbtowc=''
526 d_memchr=''
527 d_memcmp=''
528 d_memcpy=''
529 d_memmove=''
530 d_memset=''
531 d_mkdir=''
532 d_mkdtemp=''
533 d_mkfifo=''
534 d_mkstemp=''
535 d_mkstemps=''
536 d_mktime=''
537 d_mmap=''
538 mmaptype=''
539 d_modfl=''
540 d_modfl_pow32_bug=''
541 d_modflproto=''
542 d_mprotect=''
543 d_msg=''
544 d_msgctl=''
545 d_msgget=''
546 d_msghdr_s=''
547 d_msgrcv=''
548 d_msgsnd=''
549 d_msync=''
550 d_munmap=''
551 d_nice=''
552 d_nl_langinfo=''
553 d_off64_t=''
554 d_open3=''
555 d_fpathconf=''
556 d_pathconf=''
557 d_pause=''
558 d_pipe=''
559 d_poll=''
560 d_portable=''
561 d_procselfexe=''
562 procselfexe=''
563 d_old_pthread_create_joinable=''
564 old_pthread_create_joinable=''
565 d_pthread_atfork=''
566 d_pthread_yield=''
567 d_sched_yield=''
568 sched_yield=''
569 d_qgcvt=''
570 d_random_r=''
571 random_r_proto=''
572 d_readdir64_r=''
573 readdir64_r_proto=''
574 d_readdir=''
575 d_rewinddir=''
576 d_seekdir=''
577 d_telldir=''
578 d_readdir_r=''
579 readdir_r_proto=''
580 d_readlink=''
581 d_readv=''
582 d_recvmsg=''
583 d_rename=''
584 d_rmdir=''
585 d_safebcpy=''
586 d_safemcpy=''
587 d_sanemcmp=''
588 d_sbrkproto=''
589 d_select=''
590 d_sem=''
591 d_semctl=''
592 d_semget=''
593 d_semop=''
594 d_sendmsg=''
595 d_setegid=''
596 d_seteuid=''
597 d_setgrent=''
598 d_setgrent_r=''
599 setgrent_r_proto=''
600 d_setgrps=''
601 d_sethent=''
602 d_sethostent_r=''
603 sethostent_r_proto=''
604 d_setitimer=''
605 d_setlinebuf=''
606 d_setlocale=''
607 d_setlocale_r=''
608 setlocale_r_proto=''
609 d_setnent=''
610 d_setnetent_r=''
611 setnetent_r_proto=''
612 d_setpent=''
613 d_setpgid=''
614 d_setpgrp2=''
615 d_bsdsetpgrp=''
616 d_setpgrp=''
617 d_setprior=''
618 d_setproctitle=''
619 d_setprotoent_r=''
620 setprotoent_r_proto=''
621 d_setpwent=''
622 d_setpwent_r=''
623 setpwent_r_proto=''
624 d_setregid=''
625 d_setresgid=''
626 d_setresuid=''
627 d_setreuid=''
628 d_setrgid=''
629 d_setruid=''
630 d_setsent=''
631 d_setservent_r=''
632 setservent_r_proto=''
633 d_setsid=''
634 d_setvbuf=''
635 d_sfio=''
636 usesfio=''
637 d_shm=''
638 d_shmat=''
639 d_shmatprototype=''
640 shmattype=''
641 d_shmctl=''
642 d_shmdt=''
643 d_shmget=''
644 d_sigaction=''
645 d_sigprocmask=''
646 d_sigsetjmp=''
647 d_sockatmark=''
648 d_sockatmarkproto=''
649 d_msg_ctrunc=''
650 d_msg_dontroute=''
651 d_msg_oob=''
652 d_msg_peek=''
653 d_msg_proxy=''
654 d_oldsock=''
655 d_scm_rights=''
656 d_socket=''
657 d_sockpair=''
658 sockethdr=''
659 socketlib=''
660 d_socklen_t=''
661 d_socks5_init=''
662 d_sqrtl=''
663 d_srand48_r=''
664 srand48_r_proto=''
665 d_srandom_r=''
666 srandom_r_proto=''
667 d_sresgproto=''
668 d_sresuproto=''
669 d_statblks=''
670 d_statfs_f_flags=''
671 d_statfs_s=''
672 d_fstatvfs=''
673 d_statvfs=''
674 d_stdio_cnt_lval=''
675 d_stdio_ptr_lval=''
676 d_stdio_ptr_lval_nochange_cnt=''
677 d_stdio_ptr_lval_sets_cnt=''
678 d_stdiobase=''
679 d_stdstdio=''
680 stdio_base=''
681 stdio_bufsiz=''
682 stdio_cnt=''
683 stdio_filbuf=''
684 stdio_ptr=''
685 d_index=''
686 d_strchr=''
687 d_strcoll=''
688 d_strctcpy=''
689 d_strerrm=''
690 d_strerror=''
691 d_sysernlst=''
692 d_syserrlst=''
693 d_strerror_r=''
694 strerror_r_proto=''
695 d_strftime=''
696 d_strtod=''
697 d_strtol=''
698 d_strtold=''
699 d_strtoll=''
700 d_strtoq=''
701 d_strtoul=''
702 d_strtoull=''
703 d_strtouq=''
704 d_strxfrm=''
705 d_symlink=''
706 d_syscall=''
707 d_syscallproto=''
708 d_sysconf=''
709 d_system=''
710 d_tcgetpgrp=''
711 d_tcsetpgrp=''
712 d_telldirproto=''
713 d_time=''
714 timetype=''
715 clocktype=''
716 d_times=''
717 d_tmpnam_r=''
718 tmpnam_r_proto=''
719 d_truncate=''
720 d_ttyname_r=''
721 ttyname_r_proto=''
722 d_tzname=''
723 d_u32align=''
724 d_ualarm=''
725 d_umask=''
726 d_semctl_semid_ds=''
727 d_semctl_semun=''
728 d_union_semun=''
729 d_unordered=''
730 d_usleep=''
731 d_usleepproto=''
732 d_ustat=''
733 d_vfork=''
734 usevfork=''
735 d_voidsig=''
736 signal_t=''
737 d_volatile=''
738 d_charvspr=''
739 d_vprintf=''
740 d_wait4=''
741 d_waitpid=''
742 d_wcstombs=''
743 d_wctomb=''
744 d_writev=''
745 dlext=''
746 cccdlflags=''
747 ccdlflags=''
748 dlsrc=''
749 ld=''
750 lddlflags=''
751 usedl=''
752 doublesize=''
753 ebcdic=''
754 fflushNULL=''
755 fflushall=''
756 fpossize=''
757 fpostype=''
758 gccosandvers=''
759 gccversion=''
760 gidformat=''
761 gidsign=''
762 gidsize=''
763 gidtype=''
764 groupstype=''
765 h_fcntl=''
766 h_sysfile=''
767 i_arpainet=''
768 i_crypt=''
769 db_hashtype=''
770 db_prefixtype=''
771 db_version_major=''
772 db_version_minor=''
773 db_version_patch=''
774 i_db=''
775 i_dbm=''
776 i_rpcsvcdbm=''
777 d_dirnamlen=''
778 direntrytype=''
779 i_dirent=''
780 i_dld=''
781 i_dlfcn=''
782 i_fcntl=''
783 i_float=''
784 i_fp=''
785 i_fp_class=''
786 i_gdbm=''
787 d_grpasswd=''
788 i_grp=''
789 i_ieeefp=''
790 i_inttypes=''
791 i_langinfo=''
792 i_libutil=''
793 i_limits=''
794 i_locale=''
795 i_machcthr=''
796 i_malloc=''
797 i_math=''
798 i_memory=''
799 i_mntent=''
800 i_ndbm=''
801 i_netdb=''
802 i_neterrno=''
803 i_netinettcp=''
804 i_niin=''
805 i_sysin=''
806 i_poll=''
807 i_prot=''
808 i_pthread=''
809 d_pwage=''
810 d_pwchange=''
811 d_pwclass=''
812 d_pwcomment=''
813 d_pwexpire=''
814 d_pwgecos=''
815 d_pwpasswd=''
816 d_pwquota=''
817 i_pwd=''
818 i_sfio=''
819 i_shadow=''
820 i_socks=''
821 i_stddef=''
822 i_stdlib=''
823 i_string=''
824 strings=''
825 i_sunmath=''
826 i_sysaccess=''
827 i_sysdir=''
828 i_sysfile=''
829 d_voidtty=''
830 i_bsdioctl=''
831 i_sysfilio=''
832 i_sysioctl=''
833 i_syssockio=''
834 i_syslog=''
835 i_sysmman=''
836 i_sysmode=''
837 i_sysmount=''
838 i_sysndir=''
839 i_sysparam=''
840 i_sysresrc=''
841 i_syssecrt=''
842 i_sysselct=''
843 i_sysstat=''
844 i_sysstatfs=''
845 i_sysstatvfs=''
846 i_systimes=''
847 i_systypes=''
848 i_sysuio=''
849 i_sysun=''
850 i_sysutsname=''
851 i_sysvfs=''
852 i_syswait=''
853 i_sgtty=''
854 i_termio=''
855 i_termios=''
856 d_tm_tm_gmtoff=''
857 d_tm_tm_zone=''
858 i_systime=''
859 i_systimek=''
860 i_time=''
861 timeincl=''
862 i_unistd=''
863 i_ustat=''
864 i_utime=''
865 i_values=''
866 i_stdarg=''
867 i_varargs=''
868 i_varhdr=''
869 i_vfork=''
870 inc_version_list=''
871 inc_version_list_init=''
872 installprefix=''
873 installprefixexp=''
874 installstyle=''
875 installusrbinperl=''
876 intsize=''
877 longsize=''
878 shortsize=''
879 issymlink=''
880 libc=''
881 ldlibpthname=''
882 libperl=''
883 shrpenv=''
884 useshrplib=''
885 glibpth=''
886 libpth=''
887 loclibpth=''
888 plibpth=''
889 xlibpth=''
890 ignore_versioned_solibs=''
891 libs=''
892 libsdirs=''
893 libsfiles=''
894 libsfound=''
895 libspath=''
896 lns=''
897 d_PRIEUldbl=''
898 d_PRIFUldbl=''
899 d_PRIGUldbl=''
900 d_PRIeldbl=''
901 d_PRIfldbl=''
902 d_PRIgldbl=''
903 d_SCNfldbl=''
904 sPRIEUldbl=''
905 sPRIFUldbl=''
906 sPRIGUldbl=''
907 sPRIeldbl=''
908 sPRIfldbl=''
909 sPRIgldbl=''
910 sSCNfldbl=''
911 lseeksize=''
912 lseektype=''
913 make_set_make=''
914 d_mymalloc=''
915 freetype=''
916 mallocobj=''
917 mallocsrc=''
918 malloctype=''
919 usemymalloc=''
920 installman1dir=''
921 man1dir=''
922 man1direxp=''
923 man1ext=''
924 installman3dir=''
925 man3dir=''
926 man3direxp=''
927 man3ext=''
928 modetype=''
929 multiarch=''
930 mydomain=''
931 myhostname=''
932 phostname=''
933 c=''
934 n=''
935 d_eofnblk=''
936 eagain=''
937 o_nonblock=''
938 rd_nodata=''
939 need_va_copy=''
940 netdb_hlen_type=''
941 netdb_host_type=''
942 netdb_name_type=''
943 netdb_net_type=''
944 groupcat=''
945 hostcat=''
946 passcat=''
947 orderlib=''
948 ranlib=''
949 d_perl_otherlibdirs=''
950 otherlibdirs=''
951 package=''
952 spackage=''
953 pager=''
954 api_revision=''
955 api_subversion=''
956 api_version=''
957 api_versionstring=''
958 patchlevel=''
959 perl_patchlevel=''
960 revision=''
961 subversion=''
962 version=''
963 version_patchlevel_string=''
964 perl5=''
965 perladmin=''
966 perlpath=''
967 d_nv_preserves_uv=''
968 i16size=''
969 i16type=''
970 i32size=''
971 i32type=''
972 i64size=''
973 i64type=''
974 i8size=''
975 i8type=''
976 ivsize=''
977 ivtype=''
978 nv_preserves_uv_bits=''
979 nvsize=''
980 nvtype=''
981 u16size=''
982 u16type=''
983 u32size=''
984 u32type=''
985 u64size=''
986 u64type=''
987 u8size=''
988 u8type=''
989 uvsize=''
990 uvtype=''
991 ivdformat=''
992 nvEUformat=''
993 nvFUformat=''
994 nvGUformat=''
995 nveformat=''
996 nvfformat=''
997 nvgformat=''
998 uvXUformat=''
999 uvoformat=''
1000 uvuformat=''
1001 uvxformat=''
1002 pidtype=''
1003 prefix=''
1004 prefixexp=''
1005 installprivlib=''
1006 privlib=''
1007 privlibexp=''
1008 prototype=''
1009 ptrsize=''
1010 d_PRIXU64=''
1011 d_PRId64=''
1012 d_PRIi64=''
1013 d_PRIo64=''
1014 d_PRIu64=''
1015 d_PRIx64=''
1016 sPRIXU64=''
1017 sPRId64=''
1018 sPRIi64=''
1019 sPRIo64=''
1020 sPRIu64=''
1021 sPRIx64=''
1022 d_quad=''
1023 quadkind=''
1024 quadtype=''
1025 uquadtype=''
1026 drand01=''
1027 randbits=''
1028 randfunc=''
1029 randseedtype=''
1030 seedfunc=''
1031 installscript=''
1032 scriptdir=''
1033 scriptdirexp=''
1034 selectminbits=''
1035 selecttype=''
1036 sh=''
1037 sig_count=''
1038 sig_name=''
1039 sig_name_init=''
1040 sig_num=''
1041 sig_num_init=''
1042 sig_size=''
1043 installsitearch=''
1044 sitearch=''
1045 sitearchexp=''
1046 installsitebin=''
1047 sitebin=''
1048 sitebinexp=''
1049 installsitelib=''
1050 sitelib=''
1051 sitelib_stem=''
1052 sitelibexp=''
1053 siteprefix=''
1054 siteprefixexp=''
1055 sizesize=''
1056 sizetype=''
1057 so=''
1058 socksizetype=''
1059 sharpbang=''
1060 shsharp=''
1061 spitshell=''
1062 src=''
1063 ssizetype=''
1064 startperl=''
1065 startsh=''
1066 stdchar=''
1067 d_stdio_stream_array=''
1068 stdio_stream_array=''
1069 sysman=''
1070 trnl=''
1071 uidformat=''
1072 uidsign=''
1073 uidsize=''
1074 uidtype=''
1075 archname64=''
1076 use64bitall=''
1077 use64bitint=''
1078 ccflags_uselargefiles=''
1079 ldflags_uselargefiles=''
1080 libswanted_uselargefiles=''
1081 uselargefiles=''
1082 uselongdouble=''
1083 usemorebits=''
1084 usemultiplicity=''
1085 nm_opt=''
1086 nm_so_opt=''
1087 runnm=''
1088 usenm=''
1089 useperlio=''
1090 usesocks=''
1091 d_oldpthreads=''
1092 use5005threads=''
1093 useithreads=''
1094 usereentrant=''
1095 usethreads=''
1096 incpath=''
1097 mips_type=''
1098 usrinc=''
1099 d_vendorarch=''
1100 installvendorarch=''
1101 vendorarch=''
1102 vendorarchexp=''
1103 d_vendorbin=''
1104 installvendorbin=''
1105 vendorbin=''
1106 vendorbinexp=''
1107 d_vendorlib=''
1108 installvendorlib=''
1109 vendorlib=''
1110 vendorlib_stem=''
1111 vendorlibexp=''
1112 usevendorprefix=''
1113 vendorprefix=''
1114 vendorprefixexp=''
1115 versiononly=''
1116 defvoidused=''
1117 voidflags=''
1118 pm_apiversion=''
1119 xs_apiversion=''
1120 yacc=''
1121 yaccflags=''
1122 CONFIG=''
1123
1124 define='define'
1125 undef='undef'
1126 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1127 rmlist=''
1128
1129 : We must find out about Eunice early
1130 eunicefix=':'
1131 if test -f /etc/unixtovms; then
1132         eunicefix=/etc/unixtovms
1133 fi
1134 if test -f /etc/unixtovms.exe; then
1135         eunicefix=/etc/unixtovms.exe
1136 fi
1137
1138 : Set executable suffix now -- needed before hints available
1139 if test -f "/libs/version.library"; then
1140 : Amiga OS
1141     _exe=""
1142 elif test -f "/system/gnu_library/bin/ar.pm"; then
1143 : Stratus VOS
1144     _exe=".pm"
1145 elif test -n "$DJGPP"; then
1146 : DOS DJGPP
1147     _exe=".exe"
1148 elif test -d c:/. ; then
1149 : OS/2 or cygwin
1150     _exe=".exe"
1151 fi
1152
1153 i_whoami=''
1154 ccname=''
1155 ccversion=''
1156 perllibs=''
1157 : set useposix=false in your hint file to disable the POSIX extension.
1158 useposix=true
1159 : set useopcode=false in your hint file to disable the Opcode extension.
1160 useopcode=true
1161 : Trailing extension.  Override this in a hint file, if needed.
1162 : Extra object files, if any, needed on this platform.
1163 archobjs=''
1164 archname=''
1165 : Possible local include directories to search.
1166 : Set locincpth to "" in a hint file to defeat local include searches.
1167 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1168 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1169 :
1170 : no include file wanted by default
1171 inclwanted=''
1172
1173 groupstype=''
1174 libnames=''
1175 : change the next line if compiling for Xenix/286 on Xenix/386
1176 xlibpth='/usr/lib/386 /lib/386'
1177 : Possible local library directories to search.
1178 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1179 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1180
1181 : general looking path for locating libraries
1182 glibpth="/lib /usr/lib $xlibpth"
1183 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1184 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1185 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1186
1187 : Private path used by Configure to find libraries.  Its value
1188 : is prepended to libpth. This variable takes care of special
1189 : machines, like the mips.  Usually, it should be empty.
1190 plibpth=''
1191
1192 : default library list
1193 libswanted=''
1194 : some systems want to use only the non-versioned libso:s
1195 ignore_versioned_solibs=''
1196 archname64=''
1197 ccflags_uselargefiles=''
1198 ldflags_uselargefiles=''
1199 libswanted_uselargefiles=''
1200 : set usemultiplicity on the Configure command line to enable multiplicity.
1201 : set usesocks on the Configure command line to enable socks.
1202 : set usethreads on the Configure command line to enable threads.
1203 usereentrant='undef'
1204 : full support for void wanted by default
1205 defvoidused=15
1206
1207 : List of libraries we want.
1208 : If anyone needs -lnet, put it in a hint file.
1209 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1210 libswanted="$libswanted dld ld sun m c cposix posix"
1211 libswanted="$libswanted ndir dir crypt sec"
1212 libswanted="$libswanted ucb bsd BSD PW x util"
1213 : We probably want to search /usr/shlib before most other libraries.
1214 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1215 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1216 glibpth="/usr/shlib $glibpth"
1217 : Do not use vfork unless overridden by a hint file.
1218 usevfork=false
1219
1220 : Find the basic shell for Bourne shell scripts
1221 case "$sh" in
1222 '')
1223         case "$SYSTYPE" in
1224         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1225         *) xxx='/bin/sh';;
1226         esac
1227         if test -f "$xxx"; then
1228                 sh="$xxx"
1229         else
1230                 : Build up a list and do a single loop so we can 'break' out.
1231                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1232                 for xxx in sh bash ksh pdksh ash; do
1233                         for p in $pth; do
1234                                 try="$try ${p}/${xxx}"
1235                         done
1236                 done
1237                 for xxx in $try; do
1238                         if test -f "$xxx"; then
1239                                 sh="$xxx";
1240                                 break
1241                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1242                                 sh="$xxx";
1243                                 break
1244                         elif test -f "$xxx.exe"; then
1245                                 sh="$xxx";
1246                                 break
1247                         fi
1248                 done
1249         fi
1250         ;;
1251 esac
1252
1253 case "$sh" in
1254 '')     cat >&2 <<EOM
1255 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1256
1257 Usually it's in /bin/sh.  How did you even get this far?
1258 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1259 we'll try to straighten this all out.
1260 EOM
1261         exit 1
1262         ;;
1263 esac
1264
1265 : see if sh knows # comments
1266 if `$sh -c '#' >/dev/null 2>&1`; then
1267         shsharp=true
1268         spitshell=cat
1269         xcat=/bin/cat
1270         test -f $xcat$_exe || xcat=/usr/bin/cat
1271         if test ! -f $xcat$_exe; then
1272                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1273                         if test -f $p/cat$_exe; then
1274                                 xcat=$p/cat
1275                                 break
1276                         fi
1277                 done
1278                 if test ! -f $xcat$_exe; then
1279                         echo "Can't find cat anywhere!"
1280                         exit 1
1281                 fi
1282         fi
1283         echo "#!$xcat" >sharp
1284         $eunicefix sharp
1285         chmod +x sharp
1286         ./sharp > today
1287         if test -s today; then
1288                 sharpbang='#!'
1289         else
1290                 echo "#! $xcat" > sharp
1291                 $eunicefix sharp
1292                 chmod +x sharp
1293                 ./sharp > today
1294                 if test -s today; then
1295                         sharpbang='#! '
1296                 else
1297                         sharpbang=': use '
1298                 fi
1299         fi
1300 else
1301         echo " "
1302         echo "Your $sh doesn't grok # comments--I will strip them later on."
1303         shsharp=false
1304         cd ..
1305         echo "exec grep -v '^[  ]*#'" >spitshell
1306         chmod +x spitshell
1307         $eunicefix spitshell
1308         spitshell=`pwd`/spitshell
1309         cd UU
1310         echo "I presume that if # doesn't work, #! won't work either!"
1311         sharpbang=': use '
1312 fi
1313 rm -f sharp today
1314
1315 : figure out how to guarantee sh startup
1316 case "$startsh" in
1317 '') startsh=${sharpbang}${sh} ;;
1318 *)
1319 esac
1320 cat >sharp <<EOSS
1321 $startsh
1322 set abc
1323 test "$?abc" != 1
1324 EOSS
1325
1326 chmod +x sharp
1327 $eunicefix sharp
1328 if ./sharp; then
1329         : echo "Yup, it does."
1330 else
1331         echo "Hmm... '$startsh' does not guarantee sh startup..."
1332         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1333 fi
1334 rm -f sharp
1335
1336
1337 : Save command line options in file UU/cmdline.opt for later use in
1338 : generating config.sh.
1339 cat > cmdline.opt <<EOSH
1340 # Configure command line arguments.
1341 config_arg0='$0'
1342 config_args='$*'
1343 config_argc=$#
1344 EOSH
1345 argn=1
1346 args_exp=''
1347 args_sep=''
1348 for arg in "$@"; do
1349         cat >>cmdline.opt <<EOSH
1350 config_arg$argn='$arg'
1351 EOSH
1352         # Extreme backslashitis: replace each ' by '"'"'
1353         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1354 $arg
1355 EOC
1356         arg_exp=`cat cmdl.opt`
1357         args_exp="$args_exp$args_sep'$arg_exp'"
1358         argn=`expr $argn + 1`
1359         args_sep=' '
1360 done
1361 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1362 # used by ./hints/os2.sh
1363 rm -f cmdl.opt
1364
1365 : produce awk script to parse command line options
1366 cat >options.awk <<'EOF'
1367 BEGIN {
1368         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1369
1370         len = length(optstr);
1371         for (i = 1; i <= len; i++) {
1372                 c = substr(optstr, i, 1);
1373                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1374                 if (a == ":") {
1375                         arg[c] = 1;
1376                         i++;
1377                 }
1378                 opt[c] = 1;
1379         }
1380 }
1381 {
1382         expect = 0;
1383         str = $0;
1384         if (substr(str, 1, 1) != "-") {
1385                 printf("'%s'\n", str);
1386                 next;
1387         }
1388         len = length($0);
1389         for (i = 2; i <= len; i++) {
1390                 c = substr(str, i, 1);
1391                 if (!opt[c]) {
1392                         printf("-%s\n", substr(str, i));
1393                         next;
1394                 }
1395                 printf("-%s\n", c);
1396                 if (arg[c]) {
1397                         if (i < len)
1398                                 printf("'%s'\n", substr(str, i + 1));
1399                         else
1400                                 expect = 1;
1401                         next;
1402                 }
1403         }
1404 }
1405 END {
1406         if (expect)
1407                 print "?";
1408 }
1409 EOF
1410
1411 : process the command line options
1412 set X `for arg in "$@"; do echo "X$arg"; done |
1413         sed -e s/X// | awk -f options.awk`
1414 eval "set $*"
1415 shift
1416 rm -f options.awk
1417
1418 : set up default values
1419 fastread=''
1420 reuseval=false
1421 config_sh=''
1422 alldone=''
1423 error=''
1424 silent=''
1425 extractsh=''
1426 override=''
1427 knowitall=''
1428 rm -f optdef.sh posthint.sh
1429 cat >optdef.sh <<EOS
1430 $startsh
1431 EOS
1432
1433
1434 : option parsing
1435 while test $# -gt 0; do
1436         case "$1" in
1437         -d) shift; fastread=yes;;
1438         -e) shift; alldone=cont;;
1439         -f)
1440                 shift
1441                 cd ..
1442                 if test -r "$1"; then
1443                         config_sh="$1"
1444                 else
1445                         echo "$me: cannot read config file $1." >&2
1446                         error=true
1447                 fi
1448                 cd UU
1449                 shift;;
1450         -h) shift; error=true;;
1451         -r) shift; reuseval=true;;
1452         -s) shift; silent=true; realsilent=true;;
1453         -E) shift; alldone=exit;;
1454         -K) shift; knowitall=true;;
1455         -O) shift; override=true;;
1456         -S) shift; silent=true; extractsh=true;;
1457         -D)
1458                 shift
1459                 case "$1" in
1460                 *=)
1461                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1462                         echo "$me: ignoring -D $1" >&2
1463                         ;;
1464                 *=*) echo "$1" | \
1465                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1466                 *) echo "$1='define'" >> optdef.sh;;
1467                 esac
1468                 shift
1469                 ;;
1470         -U)
1471                 shift
1472                 case "$1" in
1473                 *=) echo "$1" >> optdef.sh;;
1474                 *=*)
1475                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1476                         echo "$me: ignoring -U $1" >&2
1477                         ;;
1478                 *) echo "$1='undef'" >> optdef.sh;;
1479                 esac
1480                 shift
1481                 ;;
1482         -A)
1483             shift
1484             xxx=''
1485             yyy="$1"
1486             zzz=''
1487             uuu=undef
1488             case "$yyy" in
1489             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1490                  case "$zzz" in
1491                  *:*) zzz='' ;;
1492                  *)   xxx=append
1493                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1494                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1495                  esac
1496                  ;;
1497             esac
1498             case "$xxx" in
1499             '')  case "$yyy" in
1500                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1501                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1502                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1503                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1504                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1505                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1506                  esac
1507                  ;;       
1508             esac
1509             case "$xxx" in
1510             append)
1511                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1512             clear)
1513                 echo "$yyy=''"                  >> posthint.sh ;;
1514             define)
1515                 case "$zzz" in
1516                 '') zzz=define ;;
1517                 esac
1518                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1519             eval)
1520                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1521             prepend)
1522                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1523             undef)
1524                 case "$zzz" in
1525                 '') zzz="$uuu" ;;
1526                 esac
1527                 echo "$yyy=$zzz"                >> posthint.sh ;;
1528             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1529             esac
1530             shift
1531             ;;
1532         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1533             exit 0;;
1534         --) break;;
1535         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1536         *) break;;
1537         esac
1538 done
1539
1540 case "$error" in
1541 true)
1542         cat >&2 <<EOM
1543 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1544                  [-U symbol] [-U symbol=] [-A command:symbol...]
1545   -d : use defaults for all answers.
1546   -e : go on without questioning past the production of config.sh.
1547   -f : specify an alternate default configuration file.
1548   -h : print this help message and exit (with an error status).
1549   -r : reuse C symbols value if possible (skips costly nm extraction).
1550   -s : silent mode, only echoes questions and essential information.
1551   -D : define symbol to have some value:
1552          -D symbol         symbol gets the value 'define'
1553          -D symbol=value   symbol gets the value 'value'
1554   -E : stop at the end of questions, after having produced config.sh.
1555   -K : do not use unless you know what you are doing.
1556   -O : let -D and -U override definitions from loaded configuration file.
1557   -S : perform variable substitutions on all .SH files (can mix with -f)
1558   -U : undefine symbol:
1559          -U symbol    symbol gets the value 'undef'
1560          -U symbol=   symbol gets completely empty
1561   -A : manipulate symbol after the platform specific hints have been applied:
1562          -A symbol=value                append " "value to symbol
1563          -A append:symbol=value         append value to symbol
1564          -A define:symbol=value         define symbol to have value
1565          -A clear:symbol                define symbol to be ''
1566          -A define:symbol               define symbol to be 'define'
1567          -A eval:symbol=value           define symbol to be eval of value
1568          -A prepend:symbol=value        prepend value to symbol
1569          -A undef:symbol                define symbol to be 'undef'
1570          -A undef:symbol=               define symbol to be ''
1571   -V : print version number and exit (with a zero status).
1572 EOM
1573         exit 1
1574         ;;
1575 esac
1576
1577 : Sanity checks
1578 case "$fastread$alldone" in
1579 yescont|yesexit) ;;
1580 *)
1581         case "$extractsh" in
1582         true) ;;
1583         *)
1584                 if test ! -t 0; then
1585                         echo "Say 'sh Configure', not 'sh <Configure'"
1586                         exit 1
1587                 fi
1588                 ;;
1589         esac
1590         ;;
1591 esac
1592
1593 exec 4>&1
1594 case "$silent" in
1595 true) exec 1>/dev/null;;
1596 esac
1597
1598 : run the defines and the undefines, if any, but leave the file out there...
1599 touch optdef.sh
1600 . ./optdef.sh
1601 : create the posthint manipulation script and leave the file out there...
1602 touch posthint.sh
1603
1604 : set package name
1605 package=perl5
1606 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1607 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1608 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1609 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1610 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1611 esac
1612
1613 : Some greps do not return status, grrr.
1614 echo "grimblepritz" >grimble
1615 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1616         contains=contains
1617 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1618         contains=grep
1619 else
1620         contains=contains
1621 fi
1622 rm -f grimble
1623 : the following should work in any shell
1624 case "$contains" in
1625 contains*)
1626         echo " "
1627         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1628         cat >contains <<'EOSS'
1629 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1630 EOSS
1631 chmod +x contains
1632 esac
1633
1634 : Find the path to the source tree
1635 case "$src" in
1636 '') case "$0" in
1637     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1638          case "$src" in
1639          /*)    ;;
1640          .)     ;;
1641          *)     src=`cd ../$src && pwd` ;;
1642          esac
1643          ;;
1644     *)   src='.';;
1645     esac;;
1646 esac
1647 case "$src" in
1648 '')     src=/
1649         rsrc=/
1650         ;;
1651 /*) rsrc="$src";;
1652 *) rsrc="../$src";;
1653 esac
1654 if test -f $rsrc/Configure && \
1655         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1656 then
1657    : found it, so we are ok.
1658 else
1659         rsrc=''
1660         for src in . .. ../.. ../../.. ../../../..; do
1661                 if test -f ../$src/Configure && \
1662                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1663                 then
1664                         rsrc=../$src
1665                         break
1666                 fi
1667         done
1668 fi
1669 case "$rsrc" in
1670 '')
1671         cat <<EOM >&4
1672
1673 Sorry, I can't seem to locate the source dir for $package.  Please start
1674 Configure with an explicit path -- i.e. /some/path/Configure.
1675
1676 EOM
1677         exit 1
1678         ;;
1679 ../.)   rsrc='..';;
1680 *)
1681         echo " "
1682         echo "Sources for $package found in \"$src\"." >&4
1683         ;;
1684 esac
1685
1686 : script used to extract .SH files with variable substitutions
1687 cat >extract <<'EOS'
1688 PERL_CONFIG_SH=true
1689 echo "Doing variable substitutions on .SH files..."
1690 if test -f MANIFEST; then
1691         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1692 else
1693         echo "(Looking for .SH files under the source directory.)"
1694         set x `(cd "$src"; find . -name "*.SH" -print)`
1695 fi
1696 shift
1697 case $# in
1698 0) set x `(cd "$src"; echo *.SH)`; shift;;
1699 esac
1700 if test ! -f "$src/$1"; then
1701         shift
1702 fi
1703 mkdir_p='
1704 name=$1;
1705 create="";
1706 while test $name; do
1707         if test ! -d "$name"; then
1708                 create="$name $create";
1709                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1710                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1711         else
1712                 name="";
1713         fi;
1714 done;
1715 for file in $create; do
1716         mkdir $file;
1717 done
1718 '
1719 for file in $*; do
1720         case "$src" in
1721         ".")
1722                 case "$file" in
1723                 */*)
1724                         dir=`expr X$file : 'X\(.*\)/'`
1725                         file=`expr X$file : 'X.*/\(.*\)'`
1726                         (cd "$dir" && . ./$file)
1727                         ;;
1728                 *)
1729                         . ./$file
1730                         ;;
1731                 esac
1732                 ;;
1733         *)
1734                 case "$file" in
1735                 */*)
1736                         dir=`expr X$file : 'X\(.*\)/'`
1737                         file=`expr X$file : 'X.*/\(.*\)'`
1738                         (set x $dir; shift; eval $mkdir_p)
1739                         sh <"$src/$dir/$file"
1740                         ;;
1741                 *)
1742                         sh <"$src/$file"
1743                         ;;
1744                 esac
1745                 ;;
1746         esac
1747 done
1748 if test -f "$src/config_h.SH"; then
1749         if test ! -f config.h; then
1750         : oops, they left it out of MANIFEST, probably, so do it anyway.
1751         . "$src/config_h.SH"
1752         fi
1753 fi
1754 EOS
1755
1756 : extract files and exit if asked to do so
1757 case "$extractsh" in
1758 true)
1759         case "$realsilent" in
1760         true) ;;
1761         *) exec 1>&4;;
1762         esac
1763         case "$config_sh" in
1764         '') config_sh='config.sh';;
1765         esac
1766         echo " "
1767         echo "Fetching answers from $config_sh..."
1768         cd ..
1769         . $config_sh
1770         test "$override" && . ./optdef.sh
1771         echo " "
1772         . UU/extract
1773         rm -rf UU
1774         echo "Extraction done."
1775         exit 0
1776         ;;
1777 esac
1778
1779 : Eunice requires " " instead of "", can you believe it
1780 echo " "
1781 : Here we go...
1782 echo "Beginning of configuration questions for $package."
1783
1784 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1785
1786 : first determine how to suppress newline on echo command
1787 echo " "
1788 echo "Checking echo to see how to suppress newlines..."
1789 (echo "hi there\c" ; echo " ") >.echotmp
1790 if $contains c .echotmp >/dev/null 2>&1 ; then
1791         echo "...using -n."
1792         n='-n'
1793         c=''
1794 else
1795         cat <<'EOM'
1796 ...using \c
1797 EOM
1798         n=''
1799         c='\c'
1800 fi
1801 echo $n "The star should be here-->$c"
1802 echo '*'
1803 rm -f .echotmp
1804
1805 : Now test for existence of everything in MANIFEST
1806 echo " "
1807 if test -f "$rsrc/MANIFEST"; then
1808         echo "First let's make sure your kit is complete.  Checking..." >&4
1809         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1810         rm -f missing
1811         tmppwd=`pwd`
1812         for filelist in x??; do
1813                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1814         done
1815         if test -s missing; then
1816                 cat missing >&4
1817                 cat >&4 <<'EOM'
1818
1819 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1820
1821 You have the option of continuing the configuration process, despite the
1822 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1823 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1824 and contact the author (perlbug@perl.org).
1825
1826 EOM
1827                 echo $n "Continue? [n] $c" >&4
1828                 read ans
1829                 case "$ans" in
1830                 y*)
1831                         echo "Continuing..." >&4
1832                         rm -f missing
1833                         ;;
1834                 *)
1835                         echo "ABORTING..." >&4
1836                         kill $$
1837                         ;;
1838                 esac
1839         else
1840                 echo "Looks good..."
1841         fi
1842 else
1843         echo "There is no MANIFEST file.  I hope your kit is complete !"
1844 fi
1845 rm -f missing x??
1846
1847 echo " "
1848 : Find the appropriate value for a newline for tr
1849 if test -n "$DJGPP"; then
1850        trnl='\012'
1851 fi
1852 if test X"$trnl" = X; then
1853         case "`echo foo|tr '\n' x 2>/dev/null`" in
1854         foox) trnl='\n' ;;
1855         esac
1856 fi
1857 if test X"$trnl" = X; then
1858         case "`echo foo|tr '\012' x 2>/dev/null`" in
1859         foox) trnl='\012' ;;
1860         esac
1861 fi
1862 if test X"$trnl" = X; then
1863        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1864        fooxy) trnl='\n\r' ;;
1865        esac
1866 fi
1867 if test X"$trnl" = X; then
1868         cat <<EOM >&2
1869
1870 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1871
1872 EOM
1873         exit 1
1874 fi
1875
1876 : compute the number of columns on the terminal for proper question formatting
1877 case "$COLUMNS" in
1878 '') COLUMNS='80';;
1879 esac
1880
1881 : set up the echo used in my read
1882 myecho="case \"\$xxxm\" in
1883 '') echo $n \"\$rp $c\" >&4;;
1884 *) case \"\$rp\" in
1885         '') echo $n \"[\$xxxm] $c\";;
1886         *)
1887                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1888                         echo \"\$rp\" >&4
1889                         echo $n \"[\$xxxm] $c\" >&4
1890                 else
1891                         echo $n \"\$rp [\$xxxm] $c\" >&4
1892                 fi
1893                 ;;
1894         esac;;
1895 esac"
1896
1897 : now set up to do reads with possible shell escape and default assignment
1898 cat <<EOSC >myread
1899 $startsh
1900 xxxm=\$dflt
1901 $myecho
1902 ans='!'
1903 case "\$fastread" in
1904 yes) case "\$dflt" in
1905         '') ;;
1906         *) ans='';
1907                 case "\$silent-\$rp" in
1908                 true-) ;;
1909                 *) echo " " >&4;;
1910                 esac;;
1911         esac;;
1912 *) case "\$silent" in
1913         true) case "\$rp" in
1914                 '') ans='';;
1915                 esac;;
1916         esac;;
1917 esac
1918 while expr "X\$ans" : "X!" >/dev/null; do
1919         read answ
1920         set x \$xxxm
1921         shift
1922         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1923         case  "\$answ" in
1924         "!")
1925                 sh 1>&4
1926                 echo " "
1927                 $myecho
1928                 ;;
1929         !*)
1930                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1931                 shift
1932                 sh 1>&4 -c "\$*"
1933                 echo " "
1934                 $myecho
1935                 ;;
1936         "\$ans")
1937                 case "\$ans" in
1938                 \\&*)
1939                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1940                         shift
1941                         case "\$1" in
1942                         -d)
1943                                 fastread=yes
1944                                 echo "(OK, I'll run with -d after this question.)" >&4
1945                                 ;;
1946                         -*)
1947                                 echo "*** Sorry, \$1 not supported yet." >&4
1948                                 ;;
1949                         esac
1950                         $myecho
1951                         ans=!
1952                         ;;
1953                 esac;;
1954         *)
1955                 case "\$aok" in
1956                 y)
1957                         echo "*** Substitution done -- please confirm."
1958                         xxxm="\$ans"
1959                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1960                         xxxm="\$ans"
1961                         ans=!
1962                         ;;
1963                 *)
1964                         echo "*** Error -- try again."
1965                         ans=!
1966                         ;;
1967                 esac
1968                 $myecho
1969                 ;;
1970         esac
1971         case "\$ans\$xxxm\$nostick" in
1972         '')
1973                 ans=!
1974                 $myecho
1975                 ;;
1976         esac
1977 done
1978 case "\$ans" in
1979 '') ans="\$xxxm";;
1980 esac
1981 EOSC
1982
1983 : create .config dir to save info across Configure sessions
1984 test -d ../.config || mkdir ../.config
1985 cat >../.config/README <<EOF
1986 This directory created by Configure to save information that should
1987 persist across sessions for $package.
1988
1989 You may safely delete it if you wish.
1990 EOF
1991
1992 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1993 case "$usedevel" in
1994 $define|true|[yY]*) ;;
1995 *) case "$xversion" in
1996    *[13579])
1997         cat >&4 <<EOH
1998 *** WHOA THERE!!! ***
1999
2000     This is an UNSTABLE DEVELOPMENT release.
2001     The version of this $package distribution is $xversion, that is, odd,
2002     (as opposed to even) and that signifies a development release.
2003     If you want a maintenance release, you want an even-numbered version.
2004
2005     Do ***NOT*** install this into production use.
2006     Data corruption and crashes are possible.
2007
2008     It is most seriously suggested that you do not continue any further
2009     unless you want to help in developing and debugging Perl.
2010
2011     If you *still* want to build perl, you can answer 'y' now,
2012     or pass -Dusedevel to Configure.
2013
2014 EOH
2015         rp='Do you really want to continue?'
2016         dflt='n'
2017         . ./myread
2018         case "$ans" in
2019         [yY]) echo >&4 "Okay, continuing."
2020               usedevel="$define" ;;
2021         *) echo >&4 "Okay, bye."
2022            exit 1
2023            ;;
2024         esac
2025         ;;
2026     esac
2027     ;;
2028 esac
2029 case "$usedevel" in
2030 $define|true|[yY]*)
2031         case "$versiononly" in
2032         '') versiononly="$define" ;;
2033         esac
2034         case "$installusrbinperl" in
2035         '') installusrbinperl="$undef" ;;
2036         esac
2037         ;;
2038 esac
2039
2040 : general instructions
2041 needman=true
2042 firsttime=true
2043 user=`(logname) 2>/dev/null`
2044 case "$user" in
2045 '') user=`whoami 2>&1`;;
2046 esac
2047 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2048         firsttime=false
2049         echo " "
2050         rp='Would you like to see the instructions?'
2051         dflt=n
2052         . ./myread
2053         case "$ans" in
2054         [yY]*) ;;
2055         *) needman=false;;
2056         esac
2057 fi
2058 if $needman; then
2059         cat <<EOH
2060
2061 This installation shell script will examine your system and ask you questions
2062 to determine how the perl5 package should be installed. If you get
2063 stuck on a question, you may use a ! shell escape to start a subshell or
2064 execute a command.  Many of the questions will have default answers in square
2065 brackets; typing carriage return will give you the default.
2066
2067 On some of the questions which ask for file or directory names you are allowed
2068 to use the ~name construct to specify the login directory belonging to "name",
2069 even if you don't have a shell which knows about that.  Questions where this is
2070 allowed will be marked "(~name ok)".
2071
2072 EOH
2073         rp=''
2074         dflt='Type carriage return to continue'
2075         . ./myread
2076         cat <<'EOH'
2077
2078 The prompter used in this script allows you to use shell variables and
2079 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2080 in the default answer, as if the default line was a set of arguments given to a
2081 script shell.  This means you may also use $* to repeat the whole default line,
2082 so you do not have to re-type everything to add something to the default.
2083
2084 Everytime there is a substitution, you will have to confirm.  If there is an
2085 error (e.g. an unmatched backtick), the default answer will remain unchanged
2086 and you will be prompted again.
2087
2088 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2089 the questions and use the computed defaults (or the previous answers if there
2090 was already a config.sh file). Type 'Configure -h' for a list of options.
2091 You may also start interactively and then answer '& -d' at any prompt to turn
2092 on the non-interactive behaviour for the remainder of the execution.
2093
2094 EOH
2095         . ./myread
2096         cat <<EOH
2097
2098 Much effort has been expended to ensure that this shell script will run on any
2099 Unix system.  If despite that it blows up on yours, your best bet is to edit
2100 Configure and run it again.  If you can't run Configure for some reason,
2101 you'll have to generate a config.sh file by hand.  Whatever problems you
2102 have, let me (perlbug@perl.org) know how I blew it.
2103
2104 This installation script affects things in two ways:
2105
2106 1) it may do direct variable substitutions on some of the files included
2107    in this kit.
2108 2) it builds a config.h file for inclusion in C programs.  You may edit
2109    any of these files as the need arises after running this script.
2110
2111 If you make a mistake on a question, there is no easy way to back up to it
2112 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2113 files.  Configure will offer to let you do this before it runs the SH files.
2114
2115 EOH
2116         dflt='Type carriage return to continue'
2117         . ./myread
2118         case "$firsttime" in
2119         true) echo $user >>../.config/instruct;;
2120         esac
2121 fi
2122
2123 : find out where common programs are
2124 echo " "
2125 echo "Locating common programs..." >&4
2126 cat <<EOSC >loc
2127 $startsh
2128 case \$# in
2129 0) exit 1;;
2130 esac
2131 thing=\$1
2132 shift
2133 dflt=\$1
2134 shift
2135 for dir in \$*; do
2136         case "\$thing" in
2137         .)
2138         if test -d \$dir/\$thing; then
2139                 echo \$dir
2140                 exit 0
2141         fi
2142         ;;
2143         *)
2144         for thisthing in \$dir/\$thing; do
2145                 : just loop through to pick last item
2146         done
2147         if test -f \$thisthing; then
2148                 echo \$thisthing
2149                 exit 0
2150         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2151                 echo \$thisthing
2152                 exit 0
2153         elif test -f \$dir/\$thing.exe; then
2154                 if test -n "$DJGPP"; then
2155                         echo \$dir/\$thing.exe
2156                 else
2157                         : on Eunice apparently
2158                         echo \$dir/\$thing
2159                 fi
2160                 exit 0
2161         fi
2162         ;;
2163         esac
2164 done
2165 echo \$dflt
2166 exit 1
2167 EOSC
2168 chmod +x loc
2169 $eunicefix loc
2170 loclist="
2171 awk
2172 cat
2173 chmod
2174 comm
2175 cp
2176 echo
2177 expr
2178 grep
2179 ls
2180 mkdir
2181 rm
2182 sed
2183 sort
2184 touch
2185 tr
2186 uniq
2187 "
2188 trylist="
2189 Mcc
2190 ar
2191 bison
2192 byacc
2193 cpp
2194 csh
2195 date
2196 egrep
2197 gmake
2198 gzip
2199 less
2200 ln
2201 make
2202 more
2203 nm
2204 nroff
2205 pg
2206 test
2207 uname
2208 zip
2209 "
2210 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2211 pth="$pth /lib /usr/lib"
2212 for file in $loclist; do
2213         eval xxx=\$$file
2214         case "$xxx" in
2215         /*|?:[\\/]*)
2216                 if test -f "$xxx"; then
2217                         : ok
2218                 else
2219                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2220                         xxx=`./loc $file $file $pth`
2221                 fi
2222                 ;;
2223         '') xxx=`./loc $file $file $pth`;;
2224         *) xxx=`./loc $xxx $xxx $pth`;;
2225         esac
2226         eval $file=$xxx$_exe
2227         eval _$file=$xxx
2228         case "$xxx" in
2229         /*)
2230                 echo $file is in $xxx.
2231                 ;;
2232         ?:[\\/]*)
2233                 echo $file is in $xxx.
2234                 ;;
2235         *)
2236                 echo "I don't know where '$file' is, and my life depends on it." >&4
2237                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2238                 exit 1
2239                 ;;
2240         esac
2241 done
2242 echo " "
2243 echo "Don't worry if any of the following aren't found..."
2244 say=offhand
2245 for file in $trylist; do
2246         eval xxx=\$$file
2247         case "$xxx" in
2248         /*|?:[\\/]*)
2249                 if test -f "$xxx"; then
2250                         : ok
2251                 else
2252                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2253                         xxx=`./loc $file $file $pth`
2254                 fi
2255                 ;;
2256         '') xxx=`./loc $file $file $pth`;;
2257         *) xxx=`./loc $xxx $xxx $pth`;;
2258         esac
2259         eval $file=$xxx$_exe
2260         eval _$file=$xxx
2261         case "$xxx" in
2262         /*)
2263                 echo $file is in $xxx.
2264                 ;;
2265         ?:[\\/]*)
2266                 echo $file is in $xxx.
2267                 ;;
2268         *)
2269                 echo "I don't see $file out there, $say."
2270                 say=either
2271                 ;;
2272         esac
2273 done
2274 case "$egrep" in
2275 egrep)
2276         echo "Substituting grep for egrep."
2277         egrep=$grep
2278         _egrep=$grep
2279         ;;
2280 esac
2281 case "$ln" in
2282 ln)
2283         echo "Substituting cp for ln."
2284         ln=$cp
2285         _ln=$cp
2286         ;;
2287 esac
2288 case "$make" in
2289 make)   
2290         case "$gmake" in
2291         gmake)
2292         echo "I can't find make or gmake, and my life depends on it." >&4
2293         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2294         exit 1
2295         ;;
2296         esac
2297         ;;
2298 esac    
2299 case "$gmake" in
2300 gmake)  ;;
2301 *)      # We can't have osname yet.
2302         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2303                 # Assume that gmake, if found, is definitely GNU make
2304                 # and prefer it over the system make.
2305                 echo "Substituting gmake for make."
2306                 make=$gmake
2307                 _make=$gmake
2308         fi
2309         ;;
2310 esac
2311 case "$test" in
2312 test)
2313         echo "Hopefully test is built into your sh."
2314         ;;
2315 *)
2316         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2317                 echo "Using the test built into your sh."
2318                 test=test
2319                 _test=test
2320         fi
2321         ;;
2322 esac
2323 case "$echo" in
2324 echo)
2325         echo "Hopefully echo is built into your sh."
2326         ;;
2327 '') ;;
2328 *)
2329         echo " "
2330 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2331         $echo $n "hi there$c" >foo1
2332         echo $n "hi there$c" >foo2
2333         if cmp foo1 foo2 >/dev/null 2>&1; then
2334                 echo "They are compatible.  In fact, they may be identical."
2335         else
2336                 case "$n" in
2337                 '-n') n='' c='\c';;
2338                 *) n='-n' c='';;
2339                 esac
2340                 cat <<FOO
2341 They are not compatible!  You are probably running ksh on a non-USG system.
2342 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2343 have echo built in and we may have to run some Bourne shell scripts.  That
2344 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2345
2346 FOO
2347                 $echo $n "The star should be here-->$c"
2348                 $echo "*"
2349         fi
2350         $rm -f foo1 foo2
2351         ;;
2352 esac
2353
2354 cat <<EOS >trygcc
2355 $startsh
2356 EOS
2357 cat <<'EOSC' >>trygcc
2358 case "$cc" in
2359 '') ;;
2360 *)  $rm -f try try.*
2361     $cat >try.c <<EOM
2362 int main(int argc, char *argv[]) {
2363   return 0;
2364 }
2365 EOM
2366     if $cc -o try $ccflags $ldflags try.c; then
2367        :
2368     else
2369         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2370         despair=yes
2371         trygcc=yes
2372         case "$cc" in
2373         *gcc*) trygcc=no ;;
2374         esac
2375         case "`$cc -v -c try.c 2>&1`" in
2376         *gcc*) trygcc=no ;;
2377         esac
2378         if $test X"$trygcc" = Xyes; then
2379             if gcc -o try -c try.c; then
2380                 echo " "
2381                 echo "You seem to have a working gcc, though." >&4
2382                 rp="Would you like to use it?"
2383                 dflt=y
2384                 if $test -f myread; then
2385                     . ./myread
2386                 else
2387                     if $test -f UU/myread; then
2388                         . ./UU/myread
2389                     else
2390                         echo "Cannot find myread, sorry.  Aborting." >&2
2391                         exit 1
2392                     fi
2393                 fi  
2394                 case "$ans" in
2395                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2396                        if $test -f usethreads.cbu; then
2397                            $cat >&4 <<EOM 
2398
2399 *** However, any setting of the C compiler flags (e.g. for thread support)
2400 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2401 *** (together with e.g. -Dusethreads).
2402
2403 EOM
2404                        fi;;
2405                 esac
2406             fi
2407         fi
2408     fi
2409     $rm -f try try.*
2410     ;;
2411 esac
2412 EOSC
2413
2414 cat <<EOS >checkcc
2415 $startsh
2416 EOS
2417 cat <<'EOSC' >>checkcc
2418 case "$cc" in        
2419 '') ;;
2420 *)  $rm -f try try.*              
2421     $cat >try.c <<EOM
2422 int main(int argc, char *argv[]) {
2423   return 0;
2424 }
2425 EOM
2426     if $cc -o try $ccflags $ldflags try.c; then
2427        :
2428     else
2429         if $test X"$despair" = Xyes; then
2430            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2431         fi
2432         $cat >&4 <<EOM         
2433 You need to find a working C compiler.
2434 Either (purchase and) install the C compiler supplied by your OS vendor,
2435 or for a free C compiler try http://gcc.gnu.org/
2436 I cannot continue any further, aborting.
2437 EOM
2438         exit 1
2439     fi
2440     $rm -f try try.*
2441     ;;
2442 esac
2443 EOSC
2444
2445 : determine whether symbolic links are supported
2446 echo " "
2447 $touch blurfl
2448 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2449         echo "Symbolic links are supported." >&4
2450         lns="$ln -s"
2451 else
2452         echo "Symbolic links are NOT supported." >&4
2453         lns="$ln"
2454 fi
2455 $rm -f blurfl sym
2456
2457 : determine whether symbolic links are supported
2458 echo " "
2459 case "$lns" in
2460 *"ln"*" -s")
2461         echo "Checking how to test for symbolic links..." >&4
2462         $lns blurfl sym
2463         if $test "X$issymlink" = X; then
2464                 case "$newsh" in
2465                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2466                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2467                 esac
2468                 if test $? = 0; then
2469                         issymlink="test -h"
2470                 else
2471                         echo "Your builtin 'test -h' may be broken." >&4
2472                         case "$test" in
2473                         /*)     ;;
2474                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2475                                 for p in $pth
2476                                 do
2477                                         if test -f "$p/$test"; then
2478                                                 test="$p/$test"
2479                                                 break
2480                                         fi
2481                                 done
2482                                 ;;
2483                         esac
2484                         case "$test" in
2485                         /*)
2486                                 echo "Trying external '$test -h'." >&4
2487                                 issymlink="$test -h"
2488                                 if $test ! -h sym >/dev/null 2>&1; then
2489                                         echo "External '$test -h' is broken, too." >&4
2490                                         issymlink=''
2491                                 fi
2492                                 ;;
2493                         *)      issymlink='' ;;
2494                         esac
2495                 fi              
2496         fi
2497         if $test "X$issymlink" = X; then
2498                 if $test -L sym 2>/dev/null; then
2499                         issymlink="$test -L"
2500                         echo "The builtin '$test -L' worked." >&4
2501                 fi
2502         fi
2503         if $test "X$issymlink" != X; then
2504                 echo "You can test for symbolic links with '$issymlink'." >&4
2505         else
2506                 echo "I do not know how you can test for symbolic links." >&4
2507         fi
2508         $rm -f blurfl sym
2509         ;;
2510 *)      echo "No symbolic links, so not testing for their testing..." >&4
2511         ;;
2512 esac
2513 echo " "
2514
2515
2516 case "$mksymlinks" in
2517 $define|true|[yY]*)
2518         case "$src" in
2519         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2520                 exit 1
2521                 ;;
2522         *)      case "$lns:$issymlink" in
2523                 *"ln"*" -s:"*"test -"?)
2524                         echo "Creating the symbolic links..." >&4
2525                         echo "(First creating the subdirectories...)" >&4
2526                         cd ..
2527                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2528                                 read directory
2529                                 test -z "$directory" && break
2530                                 mkdir -p $directory
2531                         done
2532                         # Sanity check 1.
2533                         if test ! -d t/base; then
2534                                 echo "Failed to create the subdirectories.  Aborting." >&4
2535                                 exit 1
2536                         fi
2537                         echo "(Then creating the symlinks...)" >&4
2538                         awk '{print $1}' $src/MANIFEST | while true; do
2539                                 read filename
2540                                 test -z "$filename" && break
2541                                 if test -f $filename; then
2542                                         if $issymlink $filename; then
2543                                                 rm -f $filename
2544                                         fi
2545                                 fi
2546                                 if test -f $filename; then
2547                                         echo "$filename already exists, not symlinking."
2548                                 else
2549                                         ln -s $src/$filename $filename
2550                                 fi
2551                         done
2552                         # Sanity check 2.
2553                         if test ! -f t/base/lex.t; then
2554                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2555                                 exit 1
2556                         fi
2557                         cd UU
2558                         ;;
2559                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2560                         ;;
2561                 esac
2562                 ;;
2563         esac
2564         ;;
2565 esac
2566
2567
2568 case "$usecrosscompile" in
2569 $define|true|[yY]*)
2570         $echo "Cross-compiling..."
2571         croak=''
2572         case "$cc" in
2573         *-*-gcc) # A cross-compiling gcc, probably.
2574             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2575             ar=$targetarch-ar
2576             # leave out ld, choosing it is more complex
2577             nm=$targetarch-nm
2578             ranlib=$targetarch-ranlib
2579             $echo 'extern int foo;' > try.c
2580             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2581             shift
2582             if $test $# -gt 0; then
2583                 incpth="$incpth $*"
2584                 incpth="`$echo $incpth|$sed 's/^ //'`"
2585                 echo "Guessing incpth '$incpth'." >&4
2586                 for i in $*; do
2587                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2588                     if $test -d $j; then
2589                         libpth="$libpth $j"
2590                     fi
2591                 done   
2592                 libpth="`$echo $libpth|$sed 's/^ //'`"
2593                 echo "Guessing libpth '$libpth'." >&4
2594             fi
2595             $rm -f try.c
2596             ;;
2597         esac
2598         case "$targetarch" in
2599         '') echo "Targetarch not defined." >&4; croak=y ;;
2600         *)  echo "Using targetarch $targetarch." >&4 ;;
2601         esac
2602         case "$incpth" in
2603         '') echo "Incpth not defined." >&4; croak=y ;;
2604         *)  echo "Using incpth '$incpth'." >&4 ;;
2605         esac
2606         case "$libpth" in
2607         '') echo "Libpth not defined." >&4; croak=y ;;
2608         *)  echo "Using libpth '$libpth'." >&4 ;;
2609         esac
2610         case "$usrinc" in
2611         '') for i in $incpth; do
2612                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2613                     usrinc=$i
2614                     echo "Guessing usrinc $usrinc." >&4
2615                     break
2616                 fi
2617             done
2618             case "$usrinc" in
2619             '') echo "Usrinc not defined." >&4; croak=y ;;
2620             esac
2621             ;;
2622         *)  echo "Using usrinc $usrinc." >&4 ;;
2623         esac
2624         case "$targethost" in
2625         '') echo "Targethost not defined." >&4; croak=y ;;
2626         *)  echo "Using targethost $targethost." >&4
2627         esac
2628         locincpth=' '
2629         loclibpth=' '
2630         case "$croak" in
2631         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2632         esac
2633         case "$src" in
2634         /*) run=$src/Cross/run
2635             targetmkdir=$src/Cross/mkdir
2636             to=$src/Cross/to
2637             from=$src/Cross/from
2638             ;;
2639         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2640             run=$pwd/Cross/run
2641             targetmkdir=$pwd/Cross/mkdir
2642             to=$pwd/Cross/to
2643             from=$pwd/Cross/from
2644             ;;
2645         esac
2646         case "$targetrun" in
2647         '') targetrun=ssh ;;
2648         esac
2649         case "$targetto" in
2650         '') targetto=scp ;;
2651         esac
2652         case "$targetfrom" in
2653         '') targetfrom=scp ;;
2654         esac
2655         run=$run-$targetrun
2656         to=$to-$targetto
2657         from=$from-$targetfrom
2658         case "$targetdir" in
2659         '')  targetdir=/tmp
2660              echo "Guessing targetdir $targetdir." >&4
2661              ;;
2662         esac
2663         case "$targetuser" in
2664         '')  targetuser=root
2665              echo "Guessing targetuser $targetuser." >&4
2666              ;;
2667         esac
2668         case "$targetfrom" in
2669         scp)    q=-q ;;
2670         *)      q='' ;;
2671         esac
2672         case "$targetrun" in
2673         ssh|rsh)
2674             cat >$run <<EOF
2675 #!/bin/sh
2676 case "\$1" in
2677 -cwd)
2678   shift
2679   cwd=\$1
2680   shift
2681   ;;
2682 esac
2683 case "\$cwd" in
2684 '') cwd=$targetdir ;;
2685 esac
2686 exe=\$1
2687 shift
2688 if $test ! -f \$exe.xok; then
2689   $to \$exe
2690   $touch \$exe.xok
2691 fi
2692 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2693 EOF
2694             ;;
2695         *)  echo "Unknown targetrun '$targetrun'" >&4
2696             exit 1
2697             ;;
2698         esac
2699         case "$targetmkdir" in
2700         */Cross/mkdir)
2701             cat >$targetmkdir <<EOF
2702 #!/bin/sh
2703 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2704 EOF
2705             $chmod a+rx $targetmkdir
2706             ;;
2707         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2708             exit 1
2709             ;;
2710         esac
2711         case "$targetto" in
2712         scp|rcp)
2713             cat >$to <<EOF
2714 #!/bin/sh
2715 for f in \$@
2716 do
2717   case "\$f" in
2718   /*)
2719     $targetmkdir \`dirname \$f\`
2720     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2721     ;;
2722   *)
2723     $targetmkdir $targetdir/\`dirname \$f\`
2724     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2725     ;;
2726   esac
2727 done
2728 exit 0
2729 EOF
2730             ;;
2731         cp) cat >$to <<EOF
2732 #!/bin/sh
2733 for f in \$@
2734 do
2735   case "\$f" in
2736   /*)
2737     $mkdir -p $targetdir/\`dirname \$f\`
2738     $cp \$f $targetdir/\$f || exit 1
2739     ;;
2740   *)
2741     $targetmkdir $targetdir/\`dirname \$f\`
2742     $cp \$f $targetdir/\$f || exit 1
2743     ;;
2744   esac
2745 done
2746 exit 0
2747 EOF
2748             ;;
2749         *)  echo "Unknown targetto '$targetto'" >&4
2750             exit 1
2751             ;;
2752         esac
2753         case "$targetfrom" in
2754         scp|rcp)
2755           cat >$from <<EOF
2756 #!/bin/sh
2757 for f in \$@
2758 do
2759   $rm -f \$f
2760   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2761 done
2762 exit 0
2763 EOF
2764             ;;
2765         cp) cat >$from <<EOF
2766 #!/bin/sh
2767 for f in \$@
2768 do
2769   $rm -f \$f
2770   cp $targetdir/\$f . || exit 1
2771 done
2772 exit 0
2773 EOF
2774             ;;
2775         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2776             exit 1
2777             ;;
2778         esac
2779         if $test ! -f $run; then
2780             echo "Target 'run' script '$run' not found." >&4
2781         else
2782             $chmod a+rx $run
2783         fi
2784         if $test ! -f $to; then
2785             echo "Target 'to' script '$to' not found." >&4
2786         else
2787             $chmod a+rx $to
2788         fi
2789         if $test ! -f $from; then
2790             echo "Target 'from' script '$from' not found." >&4
2791         else
2792             $chmod a+rx $from
2793         fi
2794         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2795             exit 1
2796         fi
2797         cat >&4 <<EOF
2798 Using '$run' for remote execution,
2799 and '$from' and '$to'
2800 for remote file transfer.
2801 EOF
2802         ;;
2803 *)      run=''
2804         to=:
2805         from=:
2806         usecrosscompile='undef'
2807         targetarch=''
2808         ;;
2809 esac
2810
2811 : see whether [:lower:] and [:upper:] are supported character classes
2812 echo " "
2813 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2814 ABYZ)
2815         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2816         up='[:upper:]'
2817         low='[:lower:]'
2818         ;;
2819 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2820         # (0xc9 and 0xd1), therefore that is a nice testing point.
2821         if test "X$up" = X -o "X$low" = X; then
2822             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2823             ij) up='[A-Z]'
2824                 low='[a-z]'
2825                 ;;
2826             esac
2827         fi
2828         if test "X$up" = X -o "X$low" = X; then
2829             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2830             ij) up='A-Z'
2831                 low='a-z'
2832                 ;;
2833             esac
2834         fi
2835         if test "X$up" = X -o "X$low" = X; then
2836             case "`echo IJ | od -x 2>/dev/null`" in
2837             *C9D1*|*c9d1*)
2838                 echo "Hey, this might be EBCDIC." >&4
2839                 if test "X$up" = X -o "X$low" = X; then
2840                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2841                     ij) up='[A-IJ-RS-Z]'
2842                         low='[a-ij-rs-z]'
2843                         ;;
2844                     esac
2845                 fi
2846                 if test "X$up" = X -o "X$low" = X; then
2847                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2848                     ij) up='A-IJ-RS-Z'
2849                         low='a-ij-rs-z'
2850                         ;;
2851                     esac
2852                 fi
2853                 ;;
2854             esac
2855         fi
2856 esac
2857 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2858 ij)
2859     echo "Using $up and $low to convert case." >&4
2860     ;;
2861 *)
2862     echo "I don't know how to translate letters from upper to lower case." >&4
2863     echo "Your tr is not acting any way I know of." >&4
2864     exit 1
2865     ;;
2866 esac
2867 : set up the translation script tr, must be called with ./tr of course
2868 cat >tr <<EOSC
2869 $startsh
2870 case "\$1\$2" in
2871 '[A-Z][a-z]') exec $tr '$up' '$low';;
2872 '[a-z][A-Z]') exec $tr '$low' '$up';;
2873 esac
2874 exec $tr "\$@"
2875 EOSC
2876 chmod +x tr
2877 $eunicefix tr
2878
2879 : Try to determine whether config.sh was made on this system
2880 case "$config_sh" in
2881 '')
2882 myuname=`$uname -a 2>/dev/null`
2883 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2884 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2885 # because the A-Z/a-z are not consecutive.
2886 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2887         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2888 newmyuname="$myuname"
2889 dflt=n
2890 case "$knowitall" in
2891 '')
2892         if test -f ../config.sh; then
2893                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2894                         eval "`grep myuname= ../config.sh`"
2895                 fi
2896                 if test "X$myuname" = "X$newmyuname"; then
2897                         dflt=y
2898                 fi
2899         fi
2900         ;;
2901 *) dflt=y;;
2902 esac
2903
2904 : Get old answers from old config file if Configure was run on the
2905 : same system, otherwise use the hints.
2906 hint=default
2907 cd ..
2908 if test -f config.sh; then
2909         echo " "
2910         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2911         . UU/myread
2912         case "$ans" in
2913         n*|N*) echo "OK, I'll ignore it."
2914                 mv config.sh config.sh.old
2915                 myuname="$newmyuname"
2916                 ;;
2917         *)  echo "Fetching default answers from your old config.sh file..." >&4
2918                 tmp_n="$n"
2919                 tmp_c="$c"
2920                 tmp_sh="$sh"
2921                 . ./config.sh
2922                 cp config.sh UU
2923                 n="$tmp_n"
2924                 c="$tmp_c"
2925                 : Older versions did not always set $sh.  Catch re-use of such
2926                 : an old config.sh.
2927                 case "$sh" in
2928                 '') sh="$tmp_sh" ;;
2929                 esac
2930                 hint=previous
2931                 ;;
2932         esac
2933 fi
2934 . ./UU/checkcc
2935 if test ! -f config.sh; then
2936         $cat <<EOM
2937
2938 First time through, eh?  I have some defaults handy for some systems
2939 that need some extra help getting the Configure answers right:
2940
2941 EOM
2942         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2943         dflt=''
2944         : Half the following guesses are probably wrong... If you have better
2945         : tests or hints, please send them to perlbug@perl.org
2946         : The metaconfig authors would also appreciate a copy...
2947         $test -f /irix && osname=irix
2948         $test -f /xenix && osname=sco_xenix
2949         $test -f /dynix && osname=dynix
2950         $test -f /dnix && osname=dnix
2951         $test -f /lynx.os && osname=lynxos
2952         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2953         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2954         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2955         $test -f /bin/mips && /bin/mips && osname=mips
2956         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2957                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2958         $test -d /usr/apollo/bin && osname=apollo
2959         $test -f /etc/saf/_sactab && osname=svr4
2960         $test -d /usr/include/minix && osname=minix
2961         $test -f /system/gnu_library/bin/ar.pm && osname=vos
2962         if $test -d /MachTen -o -d /MachTen_Folder; then
2963                 osname=machten
2964                 if $test -x /sbin/version; then
2965                         osvers=`/sbin/version | $awk '{print $2}' |
2966                         $sed -e 's/[A-Za-z]$//'`
2967                 elif $test -x /usr/etc/version; then
2968                         osvers=`/usr/etc/version | $awk '{print $2}' |
2969                         $sed -e 's/[A-Za-z]$//'`
2970                 else
2971                         osvers="$2.$3"
2972                 fi
2973         fi
2974
2975         $test -f /sys/posix.dll &&
2976                 $test -f /usr/bin/what &&
2977                 set X `/usr/bin/what /sys/posix.dll` &&
2978                 $test "$3" = UWIN &&
2979                 osname=uwin &&
2980                 osvers="$5"
2981
2982         if $test -f $uname; then
2983                 set X $myuname
2984                 shift
2985
2986                 case "$5" in
2987                 fps*) osname=fps ;;
2988                 mips*)
2989                         case "$4" in
2990                         umips) osname=umips ;;
2991                         *) osname=mips ;;
2992                         esac;;
2993                 [23]100) osname=mips ;;
2994                 next*) osname=next ;;
2995                 i386*)
2996                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2997                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2998                                 osname='sco'
2999                                 osvers=$tmp
3000                         elif $test -f /etc/kconfig; then
3001                                 osname=isc
3002                                 if test "$lns" = "$ln -s"; then
3003                                         osvers=4
3004                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3005                                         osvers=3
3006                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3007                                         osvers=2
3008                                 fi
3009                         fi
3010                         tmp=''
3011                         ;;
3012                 pc*)
3013                         if test -n "$DJGPP"; then
3014                                 osname=dos
3015                                 osvers=djgpp
3016                         fi
3017                         ;;
3018                 esac
3019
3020                 case "$1" in
3021                 aix) osname=aix
3022                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3023                         case "$tmp" in
3024                         'not found') osvers="$4"."$3" ;;
3025                         '<3240'|'<>3240') osvers=3.2.0 ;;
3026                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3027                         '=3250'|'>3250') osvers=3.2.5 ;;
3028                         *) osvers=$tmp;;
3029                         esac
3030                         ;;
3031                 bsd386) osname=bsd386
3032                         osvers=`$uname -r`
3033                         ;;
3034                 cygwin*) osname=cygwin
3035                         osvers="$3"
3036                         ;;
3037                 *dc.osx) osname=dcosx
3038                         osvers="$3"
3039                         ;;
3040                 dnix) osname=dnix
3041                         osvers="$3"
3042                         ;;
3043                 domainos) osname=apollo
3044                         osvers="$3"
3045                         ;;
3046                 dgux) osname=dgux 
3047                         osvers="$3"
3048                         ;;
3049                 dynixptx*) osname=dynixptx
3050                         osvers=`echo "$4"|sed 's/^v//'`
3051                         ;;
3052                 freebsd) osname=freebsd 
3053                         osvers="$3" ;;
3054                 genix) osname=genix ;;
3055                 hp*) osname=hpux 
3056                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3057                         ;;
3058                 irix*) osname=irix
3059                         case "$3" in
3060                         4*) osvers=4 ;;
3061                         5*) osvers=5 ;;
3062                         *)      osvers="$3" ;;
3063                         esac
3064                         ;;
3065                 linux) osname=linux
3066                         case "$3" in
3067                         *)      osvers="$3" ;;
3068                         esac
3069                         ;;
3070                 MiNT) osname=mint
3071                         ;;
3072                 netbsd*) osname=netbsd
3073                         osvers="$3"
3074                         ;;
3075                 news-os) osvers="$3"
3076                         case "$3" in
3077                         4*) osname=newsos4 ;;
3078                         *) osname=newsos ;;
3079                         esac
3080                         ;;
3081                 next*) osname=next ;;
3082                 nonstop-ux) osname=nonstopux ;;
3083                 openbsd) osname=openbsd
3084                         osvers="$3"
3085                         ;;
3086                 POSIX-BC | posix-bc ) osname=posix-bc
3087                         osvers="$3"
3088                         ;;
3089                 powerux | power_ux | powermax_os | powermaxos | \
3090                 powerunix | power_unix) osname=powerux
3091                         osvers="$3"
3092                         ;;
3093                 qnx) osname=qnx
3094                         osvers="$4"
3095                         ;;
3096                 solaris) osname=solaris
3097                         case "$3" in
3098                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3099                         *)      osvers="$3" ;;
3100                         esac
3101                         ;;
3102                 sunos) osname=sunos
3103                         case "$3" in
3104                         5*) osname=solaris
3105                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3106                         *)      osvers="$3" ;;
3107                         esac
3108                         ;;
3109                 titanos) osname=titanos
3110                         case "$3" in
3111                         1*) osvers=1 ;;
3112                         2*) osvers=2 ;;
3113                         3*) osvers=3 ;;
3114                         4*) osvers=4 ;;
3115                         *)      osvers="$3" ;;
3116                         esac
3117                         ;;
3118                 ultrix) osname=ultrix
3119                         osvers="$3"
3120                         ;;
3121                 osf1|mls+)      case "$5" in
3122                                 alpha)
3123                                         osname=dec_osf
3124                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3125                                         case "$osvers" in
3126                                         [1-9].[0-9]*) ;;
3127                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3128                                         esac
3129                                         ;;
3130                         hp*)    osname=hp_osf1  ;;
3131                         mips)   osname=mips_osf1 ;;
3132                         esac
3133                         ;;
3134                 unixware) osname=svr5
3135                         osvers="$4"
3136                         ;;
3137                 uts)    osname=uts
3138                         osvers="$3"
3139                         ;;
3140                 vos) osvers="$3"
3141                         ;;
3142                 $2) case "$osname" in
3143                         *isc*) ;;
3144                         *freebsd*) ;;
3145                         svr*)
3146                                 : svr4.x or possibly later
3147                                 case "svr$3" in 
3148                                 ${osname}*)
3149                                         osname=svr$3
3150                                         osvers=$4
3151                                         ;;
3152                                 esac
3153                                 case "$osname" in
3154                                 svr4.0)
3155                                         : Check for ESIX
3156                                         if test -f /stand/boot ; then
3157                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3158                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3159                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3160                                                         if test -n "$isesix"; then
3161                                                                 osname=esix4
3162                                                         fi
3163                                                 fi
3164                                         fi
3165                                         ;;
3166                                 esac
3167                                 ;;
3168                         *)      if test -f /etc/systemid; then
3169                                         osname=sco
3170                                         set `echo $3 | $sed 's/\./ /g'` $4
3171                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3172                                                 osvers=$1.$2.$3
3173                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3174                                                 osvers=$1.$2
3175                                         elif $test -f $src/hints/sco_$1.sh; then
3176                                                 osvers=$1
3177                                         fi
3178                                 else
3179                                         case "$osname" in
3180                                         '') : Still unknown.  Probably a generic Sys V.
3181                                                 osname="sysv"
3182                                                 osvers="$3"
3183                                                 ;;
3184                                         esac
3185                                 fi
3186                                 ;;
3187                         esac
3188                         ;;
3189                 *)      case "$osname" in
3190                         '') : Still unknown.  Probably a generic BSD.
3191                                 osname="$1"
3192                                 osvers="$3"
3193                                 ;;
3194                         esac
3195                         ;;
3196                 esac
3197         else
3198                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3199                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3200                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3201                                 osname=news_os
3202                         fi
3203                         $rm -f UU/kernel.what
3204                 elif test -d c:/.; then
3205                         set X $myuname
3206                         osname=os2
3207                         osvers="$5"
3208                 fi
3209         fi
3210         
3211         case "$targetarch" in
3212         '') ;;
3213         *)  hostarch=$osname
3214             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3215             osvers=''
3216             ;;
3217         esac
3218
3219         : Now look for a hint file osname_osvers, unless one has been
3220         : specified already.
3221         case "$hintfile" in
3222         ''|' ')
3223                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3224                 : Also try without trailing minor version numbers.
3225                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3226                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3227                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3228                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3229                 case "$file" in
3230                 '') dflt=none ;;
3231                 *)  case "$osvers" in
3232                         '') dflt=$file
3233                                 ;;
3234                         *)  if $test -f $src/hints/$file.sh ; then
3235                                         dflt=$file
3236                                 elif $test -f $src/hints/$xfile.sh ; then
3237                                         dflt=$xfile
3238                                 elif $test -f $src/hints/$xxfile.sh ; then
3239                                         dflt=$xxfile
3240                                 elif $test -f $src/hints/$xxxfile.sh ; then
3241                                         dflt=$xxxfile
3242                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3243                                         dflt=$xxxxfile
3244                                 elif $test -f "$src/hints/${osname}.sh" ; then
3245                                         dflt="${osname}"
3246                                 else
3247                                         dflt=none
3248                                 fi
3249                                 ;;
3250                         esac
3251                         ;;
3252                 esac
3253                 if $test -f Policy.sh ; then
3254                         case "$dflt" in
3255                         *Policy*) ;;
3256                         none) dflt="Policy" ;;
3257                         *) dflt="Policy $dflt" ;;
3258                         esac
3259                 fi
3260                 ;;
3261         *)
3262                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3263                 ;;
3264         esac
3265
3266         if $test -f Policy.sh ; then
3267                 $cat <<EOM
3268
3269 There's also a Policy hint file available, which should make the
3270 site-specific (policy) questions easier to answer.
3271 EOM
3272
3273         fi
3274
3275         $cat <<EOM
3276
3277 You may give one or more space-separated answers, or "none" if appropriate.
3278 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3279 is a good thing.  DO NOT give a wrong version or a wrong OS.
3280
3281 EOM
3282
3283         rp="Which of these apply, if any?"
3284         . UU/myread
3285         tans=$ans
3286         for file in $tans; do
3287                 if $test X$file = XPolicy -a -f Policy.sh; then
3288                         . Policy.sh
3289                         $cat Policy.sh >> UU/config.sh
3290                 elif $test -f $src/hints/$file.sh; then
3291                         . $src/hints/$file.sh
3292                         $cat $src/hints/$file.sh >> UU/config.sh
3293                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3294                         : nothing
3295                 else
3296                         : Give one chance to correct a possible typo.
3297                         echo "$file.sh does not exist"
3298                         dflt=$file
3299                         rp="hint to use instead?"
3300                         . UU/myread
3301                         for file in $ans; do
3302                                 if $test -f "$src/hints/$file.sh"; then
3303                                         . $src/hints/$file.sh
3304                                         $cat $src/hints/$file.sh >> UU/config.sh
3305                                 elif $test X$ans = X -o X$ans = Xnone ; then
3306                                         : nothing
3307                                 else
3308                                         echo "$file.sh does not exist -- ignored."
3309                                 fi
3310                         done
3311                 fi
3312         done
3313
3314         hint=recommended
3315         : Remember our hint file for later.
3316         if $test -f "$src/hints/$file.sh" ; then
3317                 hintfile="$file"
3318         else
3319                 hintfile=''
3320         fi
3321 fi
3322 cd UU
3323 ;;
3324 *)
3325         echo " "
3326         echo "Fetching default answers from $config_sh..." >&4
3327         tmp_n="$n"
3328         tmp_c="$c"
3329         cd ..
3330         cp $config_sh config.sh 2>/dev/null
3331         chmod +w config.sh
3332         . ./config.sh
3333         cd UU
3334         cp ../config.sh .
3335         n="$tmp_n"
3336         c="$tmp_c"
3337         hint=previous
3338         ;;
3339 esac
3340 test "$override" && . ./optdef.sh
3341
3342 : Restore computed paths
3343 for file in $loclist $trylist; do
3344         eval $file="\$_$file"
3345 done
3346
3347 cat << EOM
3348
3349 Configure uses the operating system name and version to set some defaults.
3350 The default value is probably right if the name rings a bell. Otherwise,
3351 since spelling matters for me, either accept the default or answer "none"
3352 to leave it blank.
3353
3354 EOM
3355 case "$osname" in
3356         ''|' ')
3357                 case "$hintfile" in
3358                 ''|' '|none) dflt=none ;;
3359                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3360                 esac
3361                 ;;
3362         *) dflt="$osname" ;;
3363 esac
3364 rp="Operating system name?"
3365 . ./myread
3366 case "$ans" in
3367 none)  osname='' ;;
3368 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3369 esac
3370 echo " "
3371 case "$osvers" in
3372         ''|' ')
3373                 case "$hintfile" in
3374                 ''|' '|none) dflt=none ;;
3375                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3376                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3377                         case "$dflt" in
3378                         ''|' ') dflt=none ;;
3379                         esac
3380                         ;;
3381                 esac
3382                 ;;
3383         *) dflt="$osvers" ;;
3384 esac
3385 rp="Operating system version?"
3386 . ./myread
3387 case "$ans" in
3388 none)  osvers='' ;;
3389 *) osvers="$ans" ;;
3390 esac
3391
3392
3393 . ./posthint.sh
3394
3395 : who configured the system
3396 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3397 cf_by=`(logname) 2>/dev/null`
3398 case "$cf_by" in
3399 "")
3400         cf_by=`(whoami) 2>/dev/null`
3401         case "$cf_by" in
3402         "") cf_by=unknown ;;
3403         esac ;;
3404 esac
3405
3406 : set up the script used to warn in case of inconsistency
3407 cat <<EOS >whoa
3408 $startsh
3409 EOS
3410 cat <<'EOSC' >>whoa
3411 dflt=y
3412 echo " "
3413 echo "*** WHOA THERE!!! ***" >&4
3414 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3415 rp="    Keep the $hint value?"
3416 . ./myread
3417 case "$ans" in
3418 y) td=$was; tu=$was;;
3419 esac
3420 EOSC
3421
3422 : function used to set $1 to $val
3423 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3424 case "$val$was" in
3425 $define$undef) . ./whoa; eval "$var=\$td";;
3426 $undef$define) . ./whoa; eval "$var=\$tu";;
3427 *) eval "$var=$val";;
3428 esac'
3429
3430 case "$usesocks" in
3431 $define|true|[yY]*)     dflt='y';;
3432 *) dflt='n';;
3433 esac
3434 cat <<EOM
3435
3436 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3437 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3438 to use the PerlIO abstraction layer, this will be implicitly selected.
3439
3440 If this doesn't make any sense to you, just accept the default '$dflt'.
3441 EOM
3442 rp='Build Perl for SOCKS?'
3443 . ./myread
3444 case "$ans" in
3445 y|Y)    val="$define" ;;     
3446 *)      val="$undef" ;;
3447 esac
3448 set usesocks
3449 eval $setvar
3450
3451 case "$usesocks" in
3452 $define|true|[yY]*) useperlio="$define";;
3453 esac
3454
3455 case "$useperlio" in
3456 $define|true|[yY]*|'')  dflt='y';;
3457 *) dflt='n';;
3458 esac
3459 cat <<EOM
3460
3461 Previous version of $package used the standard IO mechanisms as
3462 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3463 alternate IO mechanisms via the PerlIO abstraction layer, but the
3464 stdio mechanism is still available if needed.  The abstraction layer
3465 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3466 Using PerlIO with sfio may cause problems with some extension modules.
3467
3468 If this doesn't make any sense to you, just accept the default '$dflt'.
3469 EOM
3470 rp='Use the PerlIO abstraction layer?'
3471 . ./myread
3472 case "$ans" in
3473 y|Y) 
3474         val="$define"
3475         ;;
3476 *)      
3477         echo "Ok, doing things the stdio way."
3478         val="$undef"
3479         ;;
3480 esac
3481 set useperlio
3482 eval $setvar 
3483
3484 case "$usesocks" in
3485 $define|true|[yY]*)
3486         case "$useperlio" in
3487         $define|true|[yY]*) ;;
3488         *)      cat >&4 <<EOM
3489
3490 You are using the SOCKS proxy protocol library which means that you
3491 should also use the PerlIO layer.  You may be headed for trouble.
3492
3493 EOM
3494                 ;;
3495         esac
3496         ;;
3497 esac
3498
3499         
3500 case "$usethreads" in
3501 $define|true|[yY]*)     dflt='y';;
3502 *)     # Catch case where user specified ithreads or 5005threads but
3503        # forgot -Dusethreads (A.D. 4/2002)
3504        case "$useithreads$use5005threads" in
3505        *$define*)      
3506                 case "$useperlio" in
3507                 "$define")      dflt='y' ;;
3508                 *)              dflt='n' ;;
3509                 esac
3510                 ;;
3511        *)       dflt='n';;
3512        esac
3513        ;;
3514 esac
3515 cat <<EOM
3516
3517 Perl can be built to take advantage of threads on some systems.
3518 To do so, Configure can be run with -Dusethreads.
3519
3520 Note that Perl built with threading support runs slightly slower
3521 and uses more memory than plain Perl. The current implementation
3522 is believed to be stable, but it is fairly new, and so should be
3523 treated with caution.
3524
3525 If this doesn't make any sense to you, just accept the default '$dflt'.
3526 EOM
3527 rp='Build a threading Perl?'
3528 . ./myread
3529 case "$ans" in
3530 y|Y)    val="$define" ;;
3531 *)      val="$undef" ;;
3532 esac
3533 set usethreads
3534 eval $setvar
3535
3536 case "$usethreads" in
3537 $define)
3538         $cat <<EOM
3539
3540 Since release 5.6, Perl has had two different threading implementations,
3541 the newer interpreter-based version (ithreads) with one interpreter per
3542 thread, and the older 5.005 version (5005threads).
3543 The 5005threads version is effectively unmaintained and will probably be
3544 removed in Perl 5.10, so there should be no need to build a Perl using it
3545 unless needed for backwards compatibility with some existing 5.005threads
3546 code.
3547
3548 EOM
3549         : Default to ithreads unless overridden on command line or with
3550         : old config.sh
3551         dflt='y'
3552         case "$use5005threads" in
3553                 $define|true|[yY]*) dflt='n';;
3554         esac
3555         case "$useithreads" in
3556                 $undef|false|[nN]*) dflt='n';;
3557         esac
3558         rp='Use the newer interpreter-based ithreads?'
3559         . ./myread
3560         case "$ans" in
3561         y|Y)    val="$define" ;;
3562         *)      val="$undef" ;;
3563         esac
3564         set useithreads
3565         eval $setvar
3566         : Now set use5005threads to the opposite value.
3567         case "$useithreads" in
3568         $define) val="$undef" ;;
3569         *) val="$define" ;;
3570         esac
3571         set use5005threads
3572         eval $setvar
3573         ;;
3574 *)
3575         useithreads="$undef"
3576         use5005threads="$undef"
3577         ;;
3578 esac
3579
3580 case "$useithreads$use5005threads" in
3581 "$define$define")
3582         $cat >&4 <<EOM
3583
3584 You cannot have both the ithreads and the 5.005 threads enabled
3585 at the same time.  Disabling the 5.005 threads since they are
3586 much less stable than the ithreads.
3587
3588 EOM
3589         use5005threads="$undef"
3590         ;;
3591 esac
3592
3593 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3594         cat >&4 <<EOF
3595 ***
3596 *** To build with ithreads you must also use the PerlIO layer.
3597 *** Cannot continue, aborting.
3598 ***
3599 EOF
3600         exit 1
3601 fi
3602
3603 case "$d_oldpthreads" in
3604 '')     : Configure tests would be welcome here.  For now, assume undef.
3605         val="$undef" ;;
3606 *)      val="$d_oldpthreads" ;;
3607 esac
3608 set d_oldpthreads
3609 eval $setvar
3610
3611
3612 case "$usethreads" in
3613 "$define"|true|[yY]*)
3614 : Look for a hint-file generated 'call-back-unit'.  If the
3615 : user has specified that a threading perl is to be built,
3616 : we may need to set or change some other defaults.
3617         if $test -f usethreads.cbu; then
3618                 echo "Your platform has some specific hints for threaded builds, using them..."
3619                 . ./usethreads.cbu
3620         else
3621                 $cat <<EOM
3622 (Your platform doesn't have any specific hints for threaded builds.
3623  Assuming POSIX threads, then.)
3624 EOM
3625         fi
3626         ;;
3627 esac
3628
3629 cat <<EOM
3630
3631 Perl can be built so that multiple Perl interpreters can coexist
3632 within the same Perl executable.
3633 EOM
3634
3635 case "$useithreads" in
3636 $define)
3637         cat <<EOM
3638 This multiple interpreter support is required for interpreter-based threads.
3639 EOM
3640         val="$define"
3641         ;;
3642 *)      case "$usemultiplicity" in
3643         $define|true|[yY]*)     dflt='y';;
3644         *) dflt='n';;
3645         esac
3646         echo " "
3647         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3648         rp='Build Perl for multiplicity?'
3649         . ./myread
3650         case "$ans" in
3651         y|Y)    val="$define" ;;
3652         *)      val="$undef" ;;
3653         esac
3654         ;;
3655 esac
3656 set usemultiplicity
3657 eval $setvar
3658
3659
3660 case "$usemorebits" in
3661 "$define"|true|[yY]*)
3662         use64bitint="$define"
3663         uselongdouble="$define"
3664         usemorebits="$define"
3665         ;;
3666 *)      usemorebits="$undef"
3667         ;;
3668 esac
3669
3670 : make some quick guesses about what we are up against
3671 echo " "
3672 $echo $n "Hmm...  $c"
3673 echo exit 1 >bsd
3674 echo exit 1 >usg
3675 echo exit 1 >v7
3676 echo exit 1 >osf1
3677 echo exit 1 >eunice
3678 echo exit 1 >xenix
3679 echo exit 1 >venix
3680 echo exit 1 >os2
3681 d_bsd="$undef"
3682 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3683 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3684 then
3685         echo "Looks kind of like an OSF/1 system, but we'll see..."
3686         echo exit 0 >osf1
3687 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3688         xxx=`./loc addbib blurfl $pth`
3689         if $test -f $xxx; then
3690         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3691                 echo exit 0 >bsd
3692                 echo exit 0 >usg
3693         else
3694                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3695                         echo "Looks kind of like an extended USG system, but we'll see..."
3696                 else
3697                         echo "Looks kind of like a USG system, but we'll see..."
3698                 fi
3699                 echo exit 0 >usg
3700         fi
3701 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3702         echo "Looks kind of like a BSD system, but we'll see..."
3703         d_bsd="$define"
3704         echo exit 0 >bsd
3705 else
3706         echo "Looks kind of like a Version 7 system, but we'll see..."
3707         echo exit 0 >v7
3708 fi
3709 case "$eunicefix" in
3710 *unixtovms*)
3711         $cat <<'EOI'
3712 There is, however, a strange, musty smell in the air that reminds me of
3713 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3714 EOI
3715         echo exit 0 >eunice
3716         d_eunice="$define"
3717 : it so happens the Eunice I know will not run shell scripts in Unix format
3718         ;;
3719 *)
3720         echo " "
3721         echo "Congratulations.  You aren't running Eunice."
3722         d_eunice="$undef"
3723         ;;
3724 esac
3725 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3726 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3727 : semicolon as a patch separator
3728 case "$p_" in
3729 :) ;;
3730 *)
3731         $cat <<'EOI'
3732 I have the feeling something is not exactly right, however...don't tell me...
3733 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3734 (Or you may be running DOS with DJGPP.)
3735 EOI
3736         echo exit 0 >os2
3737         ;;
3738 esac
3739 if test -f /xenix; then
3740         echo "Actually, this looks more like a XENIX system..."
3741         echo exit 0 >xenix
3742         d_xenix="$define"
3743 else
3744         echo " "
3745         echo "It's not Xenix..."
3746         d_xenix="$undef"
3747 fi
3748 chmod +x xenix
3749 $eunicefix xenix
3750 if test -f /venix; then
3751         echo "Actually, this looks more like a VENIX system..."
3752         echo exit 0 >venix
3753 else
3754         echo " "
3755         if ./xenix; then
3756                 : null
3757         else
3758                 echo "Nor is it Venix..."
3759         fi
3760 fi
3761 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3762 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3763 $rm -f foo
3764
3765 case "$cc" in
3766 '') dflt=cc;;
3767 *) dflt="$cc";;
3768 esac
3769 rp="Use which C compiler?"
3770 . ./myread
3771 cc="$ans"
3772
3773 : See if they have not cc but they do have gcc
3774 . ./trygcc
3775 : Look for a hint-file generated 'call-back-unit'.  Now that the
3776 : user has specified the compiler, we may need to set or change some
3777 : other defaults.
3778 if $test -f cc.cbu; then
3779     . ./cc.cbu
3780 fi
3781 . ./checkcc
3782
3783 echo " "
3784 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3785 $cat >try.c <<EOM
3786 #include <stdio.h>
3787 int main() {
3788 #ifdef __GNUC__
3789 #ifdef __VERSION__
3790         printf("%s\n", __VERSION__);
3791 #else
3792         printf("%s\n", "1");
3793 #endif
3794 #endif
3795         exit(0);
3796 }
3797 EOM
3798 if $cc -o try $ccflags $ldflags try.c; then
3799         gccversion=`$run ./try`
3800         case "$gccversion" in
3801         '') echo "You are not using GNU cc." ;;
3802         *)  echo "You are using GNU cc $gccversion."
3803             ccname=gcc  
3804             ;;
3805         esac
3806 else
3807         echo " "
3808         echo "*** WHOA THERE!!! ***" >&4
3809         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3810         case "$knowitall" in
3811         '')
3812         echo "    You'd better start hunting for one and let me know about it." >&4
3813                 exit 1
3814                 ;;
3815         esac
3816 fi
3817 $rm -f try try.*
3818 case "$gccversion" in
3819 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3820 esac
3821 case "$gccversion" in
3822 '') gccosandvers='' ;;
3823 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3824    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3825    gccshortvers=''
3826    case "$gccosandvers" in
3827    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3828    $osname$osvers) ;; # looking good
3829    $osname*) cat <<EOM >&4
3830
3831 *** WHOA THERE!!! ***
3832
3833     Your gcc has not been compiled for the exact release of
3834     your operating system ($gccosandvers versus $osname$osvers).
3835
3836     In general it is a good idea to keep gcc synchronized with
3837     the operating system because otherwise serious problems
3838     may ensue when trying to compile software, like Perl.
3839
3840     I'm trying to be optimistic here, though, and will continue.
3841     If later during the configuration and build icky compilation
3842     problems appear (headerfile conflicts being the most common
3843     manifestation), I suggest reinstalling the gcc to match
3844     your operating system release.
3845
3846 EOM
3847       ;;
3848    *) gccosandvers='' ;; # failed to parse, better be silent
3849    esac
3850    ;;
3851 esac
3852 case "$ccname" in
3853 '') ccname="$cc" ;;
3854 esac
3855
3856 # gcc 3.* complain about adding -Idirectories that they already know about,
3857 # so we will take those off from locincpth.
3858 case "$gccversion" in
3859 3*)
3860     echo "main(){}">try.c
3861     for incdir in $locincpth; do
3862        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3863              grep '^cc1: warning: changing search order '`
3864        if test "X$warn" != X; then
3865            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3866        fi
3867     done
3868     $rm -f try try.*
3869 esac
3870
3871 : decide how portable to be.  Allow command line overrides.
3872 case "$d_portable" in
3873 "$undef") ;;
3874 *)      d_portable="$define" ;;
3875 esac
3876
3877 : set up shell script to do ~ expansion
3878 cat >filexp <<EOSS
3879 $startsh
3880 : expand filename
3881 case "\$1" in
3882  ~/*|~)
3883         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3884         ;;
3885  ~*)
3886         if $test -f /bin/csh; then
3887                 /bin/csh -f -c "glob \$1"
3888                 failed=\$?
3889                 echo ""
3890                 exit \$failed
3891         else
3892                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3893                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3894                 if $test ! -d "\$dir"; then
3895                         me=\`basename \$0\`
3896                         echo "\$me: can't locate home directory for: \$name" >&2
3897                         exit 1
3898                 fi
3899                 case "\$1" in
3900                 */*)
3901                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3902                         ;;
3903                 *)
3904                         echo \$dir
3905                         ;;
3906                 esac
3907         fi
3908         ;;
3909 *)
3910         echo \$1
3911         ;;
3912 esac
3913 EOSS
3914 chmod +x filexp
3915 $eunicefix filexp
3916
3917 : now set up to get a file name
3918 cat <<EOS >getfile
3919 $startsh
3920 EOS
3921 cat <<'EOSC' >>getfile
3922 tilde=''
3923 fullpath=''
3924 already=''
3925 skip=''
3926 none_ok=''
3927 exp_file=''
3928 nopath_ok=''
3929 orig_rp="$rp"
3930 orig_dflt="$dflt"
3931 case "$gfpth" in
3932 '') gfpth='.' ;;
3933 esac
3934
3935 case "$fn" in
3936 *\(*)
3937         : getfile will accept an answer from the comma-separated list
3938         : enclosed in parentheses even if it does not meet other criteria.
3939         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3940         fn=`echo $fn | sed 's/(.*)//'`
3941         ;;
3942 esac
3943
3944 case "$fn" in
3945 *:*)
3946         loc_file=`expr $fn : '.*:\(.*\)'`
3947         fn=`expr $fn : '\(.*\):.*'`
3948         ;;
3949 esac
3950
3951 case "$fn" in
3952 *~*) tilde=true;;
3953 esac
3954 case "$fn" in
3955 */*) fullpath=true;;
3956 esac
3957 case "$fn" in
3958 *+*) skip=true;;
3959 esac
3960 case "$fn" in
3961 *n*) none_ok=true;;
3962 esac
3963 case "$fn" in
3964 *e*) exp_file=true;;
3965 esac
3966 case "$fn" in
3967 *p*) nopath_ok=true;;
3968 esac
3969
3970 case "$fn" in
3971 *f*) type='File';;
3972 *d*) type='Directory';;
3973 *l*) type='Locate';;
3974 esac
3975
3976 what="$type"
3977 case "$what" in
3978 Locate) what='File';;
3979 esac
3980
3981 case "$exp_file" in
3982 '')
3983         case "$d_portable" in
3984         "$define") ;;
3985         *) exp_file=true;;
3986         esac
3987         ;;
3988 esac
3989
3990 cd ..
3991 while test "$type"; do
3992         redo=''
3993         rp="$orig_rp"
3994         dflt="$orig_dflt"
3995         case "$tilde" in
3996         true) rp="$rp (~name ok)";;
3997         esac
3998         . UU/myread
3999         if test -f UU/getfile.ok && \
4000                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4001         then
4002                 value="$ans"
4003                 ansexp="$ans"
4004                 break
4005         fi
4006         case "$ans" in
4007         none)
4008                 value=''
4009                 ansexp=''
4010                 case "$none_ok" in
4011                 true) type='';;
4012                 esac
4013                 ;;
4014         *)
4015                 case "$tilde" in
4016                 '') value="$ans"
4017                         ansexp="$ans";;
4018                 *)
4019                         value=`UU/filexp $ans`
4020                         case $? in
4021                         0)
4022                                 if test "$ans" != "$value"; then
4023                                         echo "(That expands to $value on this system.)"
4024                                 fi
4025                                 ;;
4026                         *) value="$ans";;
4027                         esac
4028                         ansexp="$value"
4029                         case "$exp_file" in
4030                         '') value="$ans";;
4031                         esac
4032                         ;;
4033                 esac
4034                 case "$fullpath" in
4035                 true)
4036                         case "$ansexp" in
4037                         /*) value="$ansexp" ;;
4038                         [a-zA-Z]:/*) value="$ansexp" ;;
4039                         *)
4040                                 redo=true
4041                                 case "$already" in
4042                                 true)
4043                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4044                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4045                                         ;;
4046                                 *)
4047                                 echo "Please give a full path name, starting with slash." >&4
4048                                         case "$tilde" in
4049                                         true)
4050                                 echo "Note that using ~name is ok provided it expands well." >&4
4051                                                 already=true
4052                                                 ;;
4053                                         esac
4054                                 esac
4055                                 ;;
4056                         esac
4057                         ;;
4058                 esac
4059                 case "$redo" in
4060                 '')
4061                         case "$type" in
4062                         File)
4063                                 for fp in $gfpth; do
4064                                         if test "X$fp" = X.; then
4065                                             pf="$ansexp"
4066                                         else    
4067                                             pf="$fp/$ansexp"
4068                                         fi
4069                                         if test -f "$pf"; then
4070                                                 type=''
4071                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4072                                         then
4073                                                 echo "($value is not a plain file, but that's ok.)"
4074                                                 type=''
4075                                         fi
4076                                         if test X"$type" = X; then
4077                                             value="$pf"
4078                                             break
4079                                         fi
4080                                 done
4081                                 ;;
4082                         Directory)
4083                                 for fp in $gfpth; do
4084                                         if test "X$fp" = X.; then
4085                                             dir="$ans"
4086                                             direxp="$ansexp"
4087                                         else    
4088                                             dir="$fp/$ansexp"
4089                                             direxp="$fp/$ansexp"
4090                                         fi
4091                                         if test -d "$direxp"; then
4092                                                 type=''
4093                                                 value="$dir"
4094                                                 break
4095                                         fi
4096                                 done
4097                                 ;;
4098                         Locate)
4099                                 if test -d "$ansexp"; then
4100                                         echo "(Looking for $loc_file in directory $value.)"
4101                                         value="$value/$loc_file"
4102                                         ansexp="$ansexp/$loc_file"
4103                                 fi
4104                                 if test -f "$ansexp"; then
4105                                         type=''
4106                                 fi
4107                                 case "$nopath_ok" in
4108                                 true)   case "$value" in
4109                                         */*) ;;
4110                                         *)      echo "Assuming $value will be in people's path."
4111                                                 type=''
4112                                                 ;;
4113                                         esac
4114                                         ;;
4115                                 esac
4116                                 ;;
4117                         esac
4118
4119                         case "$skip" in
4120                         true) type='';
4121                         esac
4122
4123                         case "$type" in
4124                         '') ;;
4125                         *)
4126                                 if test "$fastread" = yes; then
4127                                         dflt=y
4128                                 else
4129                                         dflt=n
4130                                 fi
4131                                 rp="$what $value doesn't exist.  Use that name anyway?"
4132                                 . UU/myread
4133                                 dflt=''
4134                                 case "$ans" in
4135                                 y*) type='';;
4136                                 *) echo " ";;
4137                                 esac
4138                                 ;;
4139                         esac
4140                         ;;
4141                 esac
4142                 ;;
4143         esac
4144 done
4145 cd UU
4146 ans="$value"
4147 rp="$orig_rp"
4148 dflt="$orig_dflt"
4149 rm -f getfile.ok
4150 test "X$gfpthkeep" != Xy && gfpth=""
4151 EOSC
4152
4153 : What should the include directory be ?
4154 echo " "
4155 $echo $n "Hmm...  $c"
4156 dflt='/usr/include'
4157 incpath=''
4158 mips_type=''
4159 if $test -f /bin/mips && /bin/mips; then
4160         echo "Looks like a MIPS system..."
4161         $cat >usr.c <<'EOCP'
4162 #ifdef SYSTYPE_BSD43
4163 /bsd43
4164 #endif
4165 EOCP
4166         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4167                 dflt='/bsd43/usr/include'
4168                 incpath='/bsd43'
4169                 mips_type='BSD 4.3'
4170         else
4171                 mips_type='System V'
4172         fi
4173         $rm -f usr.c usr.out
4174         echo "and you're compiling with the $mips_type compiler and libraries."
4175         xxx_prompt=y
4176         echo "exit 0" >mips
4177 else
4178         echo "Doesn't look like a MIPS system."
4179         xxx_prompt=n
4180         echo "exit 1" >mips
4181 fi
4182 chmod +x mips
4183 $eunicefix mips
4184 case "$usrinc" in
4185 '') ;;
4186 *) dflt="$usrinc";;
4187 esac
4188 case "$xxx_prompt" in
4189 y)      fn=d/
4190         echo " "
4191         rp='Where are the include files you want to use?'
4192         . ./getfile
4193         usrinc="$ans"
4194         ;;
4195 *)      usrinc="$dflt"
4196         ;;
4197 esac
4198
4199 : see how we invoke the C preprocessor
4200 echo " "
4201 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4202 cat <<'EOT' >testcpp.c
4203 #define ABC abc
4204 #define XYZ xyz
4205 ABC.XYZ
4206 EOT
4207 cd ..
4208 if test ! -f cppstdin; then
4209         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4210                 # AIX cc -E doesn't show the absolute headerfile
4211                 # locations but we'll cheat by using the -M flag.
4212                 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
4213         else
4214                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4215         fi
4216 else
4217         echo "Keeping your $hint cppstdin wrapper."
4218 fi
4219 chmod 755 cppstdin
4220 wrapper=`pwd`/cppstdin
4221 ok='false'
4222 cd UU
4223
4224 if $test "X$cppstdin" != "X" && \
4225         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4226         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4227 then
4228         echo "You used to use $cppstdin $cppminus so we'll use that again."
4229         case "$cpprun" in
4230         '') echo "But let's see if we can live without a wrapper..." ;;
4231         *)
4232                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4233                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4234                 then
4235                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4236                         ok='true'
4237                 else
4238                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4239                 fi
4240                 ;;
4241         esac
4242 else
4243         case "$cppstdin" in
4244         '') ;;
4245         *)
4246                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4247                 ;;
4248         esac
4249 fi
4250
4251 if $ok; then
4252         : nothing
4253 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4254         $cc -E <testcpp.c >testcpp.out 2>&1; \
4255         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4256         echo "Yup, it does."
4257         x_cpp="$cc -E"
4258         x_minus='';
4259 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4260         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4261         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4262         echo "Yup, it does."
4263         x_cpp="$cc -E"
4264         x_minus='-';
4265 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4266         $cc -P <testcpp.c >testcpp.out 2>&1; \
4267         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4268         echo "Yipee, that works!"
4269         x_cpp="$cc -P"
4270         x_minus='';
4271 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4272         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4273         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4274         echo "At long last!"
4275         x_cpp="$cc -P"
4276         x_minus='-';
4277 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4278         $cpp <testcpp.c >testcpp.out 2>&1; \
4279         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4280         echo "It works!"
4281         x_cpp="$cpp"
4282         x_minus='';
4283 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4284         $cpp - <testcpp.c >testcpp.out 2>&1; \
4285         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4286         echo "Hooray, it works!  I was beginning to wonder."
4287         x_cpp="$cpp"
4288         x_minus='-';
4289 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4290         $wrapper <testcpp.c >testcpp.out 2>&1; \
4291         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4292         x_cpp="$wrapper"
4293         x_minus=''
4294         echo "Eureka!"
4295 else
4296         dflt=''
4297         rp="No dice.  I can't find a C preprocessor.  Name one:"
4298         . ./myread
4299         x_cpp="$ans"
4300         x_minus=''
4301         $x_cpp <testcpp.c >testcpp.out 2>&1
4302         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4303                 echo "OK, that will do." >&4
4304         else
4305 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4306                 exit 1
4307         fi
4308 fi
4309
4310 case "$ok" in
4311 false)
4312         cppstdin="$x_cpp"
4313         cppminus="$x_minus"
4314         cpprun="$x_cpp"
4315         cpplast="$x_minus"
4316         set X $x_cpp
4317         shift
4318         case "$1" in
4319         "$cpp")
4320                 echo "Perhaps can we force $cc -E using a wrapper..."
4321                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4322                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4323                 then
4324                         echo "Yup, we can."
4325                         cppstdin="$wrapper"
4326                         cppminus='';
4327                 else
4328                         echo "Nope, we'll have to live without it..."
4329                 fi
4330                 ;;
4331         esac
4332         case "$cpprun" in
4333         "$wrapper")
4334                 cpprun=''
4335                 cpplast=''
4336                 ;;
4337         esac
4338         ;;
4339 esac
4340
4341 case "$cppstdin" in
4342 "$wrapper"|'cppstdin') ;;
4343 *) $rm -f $wrapper;;
4344 esac
4345 $rm -f testcpp.c testcpp.out
4346
4347 : Set private lib path
4348 case "$plibpth" in
4349 '') if ./mips; then
4350                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4351         fi;;
4352 esac
4353 case "$libpth" in
4354 ' ') dlist='';;
4355 '') dlist="$loclibpth $plibpth $glibpth";;
4356 *) dlist="$libpth";;
4357 esac
4358
4359 : Now check and see which directories actually exist, avoiding duplicates
4360 libpth=''
4361 for xxx in $dlist
4362 do
4363     if $test -d $xxx; then
4364                 case " $libpth " in
4365                 *" $xxx "*) ;;
4366                 *) libpth="$libpth $xxx";;
4367                 esac
4368     fi
4369 done
4370 $cat <<'EOM'
4371
4372 Some systems have incompatible or broken versions of libraries.  Among
4373 the directories listed in the question below, please remove any you
4374 know not to be holding relevant libraries, and add any that are needed.
4375 Say "none" for none.
4376
4377 EOM
4378 case "$libpth" in
4379 '') dflt='none';;
4380 *)
4381         set X $libpth
4382         shift
4383         dflt=${1+"$@"}
4384         ;;
4385 esac
4386 rp="Directories to use for library searches?"
4387 . ./myread
4388 case "$ans" in
4389 none) libpth=' ';;
4390 *) libpth="$ans";;
4391 esac
4392
4393 : compute shared library extension
4394 case "$so" in
4395 '')
4396         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4397                 dflt='sl'
4398         else
4399                 dflt='so'
4400         fi
4401         ;;
4402 *) dflt="$so";;
4403 esac
4404 $cat <<EOM
4405
4406 On some systems, shared libraries may be available.  Answer 'none' if
4407 you want to suppress searching of shared libraries for the remainder
4408 of this configuration.
4409
4410 EOM
4411 rp='What is the file extension used for shared libraries?'
4412 . ./myread
4413 so="$ans"
4414
4415 : Define several unixisms.
4416 : Hints files or command line option can be used to override them.
4417 : The convoluted testing is in case hints files set either the old
4418 : or the new name.
4419 case "$_exe" in
4420 '')     case "$exe_ext" in
4421         '')     ;;
4422         *)      _exe="$exe_ext" ;;
4423         esac
4424         ;;
4425 esac
4426 case "$_a" in
4427 '')     case "$lib_ext" in
4428     '') _a='.a';;
4429         *)      _a="$lib_ext" ;;
4430         esac
4431         ;;
4432 esac
4433 case "$_o" in
4434 '') case "$obj_ext" in
4435         '')     _o='.o';;
4436         *)      _o="$obj_ext";;
4437         esac
4438         ;;
4439 esac
4440 case "$p_" in
4441 '') case "$path_sep" in
4442         '')     p_=':';;
4443         *)      p_="$path_sep";;
4444         esac
4445         ;;
4446 esac
4447 exe_ext=$_exe
4448 lib_ext=$_a
4449 obj_ext=$_o
4450 path_sep=$p_
4451
4452 : Which makefile gets called first.  This is used by make depend.
4453 case "$firstmakefile" in
4454 '') firstmakefile='makefile';;
4455 esac
4456
4457 : Looking for optional libraries
4458 echo " "
4459 echo "Checking for optional libraries..." >&4
4460 case "$libs" in
4461 ' '|'') dflt='';;
4462 *) dflt="$libs";;
4463 esac
4464 case "$libswanted" in
4465 '') libswanted='c_s';;
4466 esac
4467 case "$usesocks" in
4468 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4469 esac
4470 libsfound=''
4471 libsfiles=''
4472 libsdirs=''
4473 libspath=''
4474 for thisdir in $libpth $xlibpth; do
4475   test -d $thisdir && libspath="$libspath $thisdir"
4476 done
4477 for thislib in $libswanted; do
4478         for thisdir in $libspath; do
4479             xxx=''
4480             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4481                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4482                 $test -f "$xxx" && eval $libscheck
4483                 $test -f "$xxx" && libstyle=shared
4484             fi
4485             if test ! -f "$xxx"; then
4486                 xxx=$thisdir/lib$thislib.$so
4487                 $test -f "$xxx" && eval $libscheck
4488                 $test -f "$xxx" && libstyle=shared
4489             fi  
4490             if test ! -f "$xxx"; then
4491                 xxx=$thisdir/lib$thislib$_a
4492                 $test -f "$xxx" && eval $libscheck
4493                 $test -f "$xxx" && libstyle=static
4494             fi
4495             if test ! -f "$xxx"; then
4496                 xxx=$thisdir/$thislib$_a
4497                 $test -f "$xxx" && eval $libscheck
4498                 $test -f "$xxx" && libstyle=static
4499             fi
4500             if test ! -f "$xxx"; then
4501                 xxx=$thisdir/lib${thislib}_s$_a
4502                 $test -f "$xxx" && eval $libscheck
4503                 $test -f "$xxx" && libstyle=static
4504                 $test -f "$xxx" && thislib=${thislib}_s
4505             fi
4506             if test ! -f "$xxx"; then
4507                 xxx=$thisdir/Slib$thislib$_a
4508                 $test -f "$xxx" && eval $libscheck
4509                 $test -f "$xxx" && libstyle=static
4510             fi
4511             if $test -f "$xxx"; then
4512                 case "$libstyle" in
4513                 shared) echo "Found -l$thislib (shared)." ;;
4514                 static) echo "Found -l$thislib." ;;
4515                 *)      echo "Found -l$thislib ($libstyle)." ;;
4516                 esac
4517                 case " $dflt " in
4518                 *"-l$thislib "*);;
4519                 *) dflt="$dflt -l$thislib"
4520                    libsfound="$libsfound $xxx"
4521                    yyy=`basename $xxx`
4522                    libsfiles="$libsfiles $yyy"
4523                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4524                    case " $libsdirs " in
4525                    *" $yyy "*) ;;
4526                    *) libsdirs="$libsdirs $yyy" ;;
4527                    esac
4528                    ;;
4529                 esac
4530                 break
4531             fi  
4532         done
4533         if $test ! -f "$xxx"; then
4534             echo "No -l$thislib."
4535         fi
4536 done
4537 set X $dflt
4538 shift
4539 dflt="$*"
4540 case "$libs" in
4541 '') dflt="$dflt";;
4542 *) dflt="$libs";;
4543 esac
4544 case "$dflt" in
4545 ' '|'') dflt='none';;
4546 esac
4547
4548 $cat <<EOM
4549
4550 In order to compile $package on your machine, a number of libraries
4551 are usually needed.  Include any other special libraries here as well.
4552 Say "none" for none.  The default list is almost always right.
4553 EOM
4554
4555 echo " "
4556 rp="What libraries to use?"
4557 . ./myread
4558 case "$ans" in
4559 none) libs=' ';;
4560 *) libs="$ans";;
4561 esac
4562
4563 : determine optimization, if desired, or use for debug flag also
4564 case "$optimize" in
4565 ' '|$undef) dflt='none';;
4566 '') dflt='-O';;
4567 *) dflt="$optimize";;
4568 esac
4569 $cat <<EOH
4570
4571 By default, $package compiles with the -O flag to use the optimizer.
4572 Alternately, you might want to use the symbolic debugger, which uses
4573 the -g flag (on traditional Unix systems).  Either flag can be
4574 specified here.  To use neither flag, specify the word "none".
4575
4576 EOH
4577 rp="What optimizer/debugger flag should be used?"
4578 . ./myread
4579 optimize="$ans"
4580 case "$optimize" in
4581 'none') optimize=" ";;
4582 esac
4583
4584 dflt=''
4585 : We will not override a previous value, but we might want to
4586 : augment a hint file
4587 case "$hint" in
4588 default|recommended)
4589         case "$gccversion" in
4590         1*) dflt='-fpcc-struct-return' ;;
4591         esac
4592         case "$optimize" in
4593         *-g*) dflt="$dflt -DDEBUGGING";;
4594         esac
4595         case "$gccversion" in
4596         2*) if test -d /etc/conf/kconfig.d &&
4597                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4598                 then
4599                         dflt="$dflt -posix"
4600                 fi
4601                 ;;
4602         esac
4603         case "$gccversion" in
4604         1*) ;;
4605         2.[0-8]*) ;;
4606         ?*)     echo " "
4607                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4608                 echo 'int main(void) { return 0; }' > gcctest.c
4609                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4610                         echo "Yes, it does." 2>&1
4611                         case "$ccflags" in
4612                         *strict-aliasing*) 
4613                                 echo "Leaving current flags $ccflags alone." 2>&1
4614                                 ;;
4615                         *) dflt="$dflt -fno-strict-aliasing" ;;
4616                         esac
4617                 else
4618                         echo "Nope, it doesn't, but that's ok." 2>&1
4619                 fi
4620                 ;;
4621         esac
4622         ;;
4623 esac
4624
4625 case "$mips_type" in
4626 *BSD*|'') inclwanted="$locincpth $usrinc";;
4627 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4628 esac
4629 for thisincl in $inclwanted; do
4630         if $test -d $thisincl; then
4631                 if $test x$thisincl != x$usrinc; then
4632                         case "$dflt" in
4633                         *" -I$thisincl "*);;
4634                         *) dflt="$dflt -I$thisincl ";;
4635                         esac
4636                 fi
4637         fi
4638 done
4639
4640 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4641         xxx=true;
4642 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4643         xxx=true;
4644 else
4645         xxx=false;
4646 fi;
4647 if $xxx; then
4648         case "$dflt" in
4649         *$2*);;
4650         *) dflt="$dflt -D$2";;
4651         esac;
4652 fi'
4653
4654 set signal.h LANGUAGE_C; eval $inctest
4655
4656 case "$usesocks" in
4657 $define)
4658         ccflags="$ccflags -DSOCKS"
4659         ;;
4660 esac
4661
4662 case "$hint" in
4663 default|recommended) dflt="$ccflags $dflt" ;;
4664 *) dflt="$ccflags";;
4665 esac
4666
4667 case "$dflt" in
4668 ''|' ') dflt=none;;
4669 esac
4670
4671 $cat <<EOH
4672
4673 Your C compiler may want other flags.  For this question you should include
4674 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4675 but you should NOT include libraries or ld flags like -lwhatever.  If you
4676 want $package to honor its debug switch, you should include -DDEBUGGING here.
4677 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4678
4679 To use no flags, specify the word "none".
4680
4681 EOH
4682 set X $dflt
4683 shift
4684 dflt=${1+"$@"}
4685 rp="Any additional cc flags?"
4686 . ./myread
4687 case "$ans" in
4688 none) ccflags='';;
4689 *) ccflags="$ans";;
4690 esac
4691
4692 : the following weeds options from ccflags that are of no interest to cpp
4693 case "$cppflags" in
4694 '') cppflags="$ccflags" ;;
4695 *)  cppflags="$cppflags $ccflags" ;;
4696 esac
4697 case "$gccversion" in
4698 1*) cppflags="$cppflags -D__GNUC__"
4699 esac
4700 case "$mips_type" in
4701 '');;
4702 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4703 esac
4704 case "$cppflags" in
4705 '');;
4706 *)
4707         echo " "
4708         echo "Let me guess what the preprocessor flags are..." >&4
4709         set X $cppflags
4710         shift
4711         cppflags=''
4712         $cat >cpp.c <<'EOM'
4713 #define BLURFL foo
4714
4715 BLURFL xx LFRULB
4716 EOM
4717         previous=''
4718         for flag in $*
4719         do
4720                 case "$flag" in
4721                 -*) ftry="$flag";;
4722                 *) ftry="$previous $flag";;
4723                 esac
4724                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4725                         >cpp1.out 2>/dev/null && \
4726                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4727                         >cpp2.out 2>/dev/null && \
4728                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4729                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4730                 then
4731                         cppflags="$cppflags $ftry"
4732                         previous=''
4733                 else
4734                         previous="$flag"
4735                 fi
4736         done
4737         set X $cppflags
4738         shift
4739         cppflags=${1+"$@"}
4740         case "$cppflags" in
4741         *-*)  echo "They appear to be: $cppflags";;
4742         esac
4743         $rm -f cpp.c cpp?.out
4744         ;;
4745 esac
4746
4747 : flags used in final linking phase
4748 case "$ldflags" in
4749 '') if ./venix; then
4750                 dflt='-i -z'
4751         else
4752                 dflt=''
4753         fi
4754         case "$ccflags" in
4755         *-posix*) dflt="$dflt -posix" ;;
4756         esac
4757         ;;
4758 *) dflt="$ldflags";;
4759 esac
4760
4761 : Try to guess additional flags to pick up local libraries.
4762 for thislibdir in $libpth; do
4763         case " $loclibpth " in
4764         *" $thislibdir "*)
4765                 case "$dflt " in 
4766                 *"-L$thislibdir "*) ;;
4767                 *)  dflt="$dflt -L$thislibdir" ;;
4768                 esac
4769                 ;;
4770         esac
4771 done
4772
4773 case "$dflt" in
4774 '') dflt='none' ;;
4775 esac
4776
4777 $cat <<EOH
4778
4779 Your C linker may need flags.  For this question you should
4780 include -L/whatever and any other flags used by the C linker, but you
4781 should NOT include libraries like -lwhatever.
4782
4783 Make sure you include the appropriate -L/path flags if your C linker
4784 does not normally search all of the directories you specified above,
4785 namely
4786         $libpth
4787 To use no flags, specify the word "none".
4788
4789 EOH
4790
4791 rp="Any additional ld flags (NOT including libraries)?"
4792 . ./myread
4793 case "$ans" in
4794 none) ldflags='';;
4795 *) ldflags="$ans";;
4796 esac
4797 rmlist="$rmlist pdp11"
4798
4799 : coherency check
4800 echo " "
4801 echo "Checking your choice of C compiler and flags for coherency..." >&4
4802 $cat > try.c <<'EOF'
4803 #include <stdio.h>
4804 int main() { printf("Ok\n"); exit(0); }
4805 EOF
4806 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4807 shift
4808 $cat >try.msg <<'EOM'
4809 I've tried to compile and run the following simple program:
4810
4811 EOM
4812 $cat try.c >> try.msg
4813
4814 $cat >> try.msg <<EOM
4815
4816 I used the command:
4817
4818         $*
4819         $run ./try
4820
4821 and I got the following output:
4822
4823 EOM
4824 dflt=y
4825 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4826         if $sh -c "$run ./try" >>try.msg 2>&1; then
4827                 xxx=`$run ./try`
4828                 case "$xxx" in
4829                 "Ok") dflt=n ;;
4830                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4831                         case " $libs " in
4832                         *" -lsfio "*)
4833                                 cat >> try.msg <<'EOQS'
4834 If $libs contains -lsfio, and sfio is mis-configured, then it
4835 sometimes (apparently) runs and exits with a 0 status, but with no
4836 output!  It may have to do with sfio's use of _exit vs. exit.
4837
4838 EOQS
4839                                 rp="You have a big problem.  Shall I abort Configure"
4840                                 dflt=y
4841                                 ;;
4842                         esac
4843                         ;;
4844                 esac
4845         else
4846                 echo "The program compiled OK, but exited with status $?." >>try.msg
4847                 rp="You have a problem.  Shall I abort Configure"
4848                 dflt=y
4849         fi
4850 else
4851         echo "I can't compile the test program." >>try.msg
4852         rp="You have a BIG problem.  Shall I abort Configure"
4853         dflt=y
4854 fi
4855 case "$dflt" in
4856 y)
4857         $cat try.msg >&4
4858         case "$knowitall" in
4859         '')
4860                 echo "(The supplied flags or libraries might be incorrect.)"
4861                 ;;
4862         *) dflt=n;;
4863         esac
4864         echo " "
4865         . ./myread
4866         case "$ans" in
4867         n*|N*) ;;
4868         *)      echo "Ok.  Stopping Configure." >&4
4869                 exit 1
4870                 ;;
4871         esac
4872         ;;
4873 n) echo "OK, that should do.";;
4874 esac
4875 $rm -f try try.* core
4876
4877 : define a shorthand compile call
4878 compile='
4879 mc_file=$1;
4880 shift;
4881 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4882 : define a shorthand compile call for compilations that should be ok.
4883 compile_ok='
4884 mc_file=$1;
4885 shift;
4886 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4887
4888 : check for lengths of integral types
4889 echo " "
4890 case "$intsize" in
4891 '')
4892         echo "Checking to see how big your integers are..." >&4
4893         $cat >try.c <<'EOCP'
4894 #include <stdio.h>
4895 int main()
4896 {
4897         printf("intsize=%d;\n", (int)sizeof(int));
4898         printf("longsize=%d;\n", (int)sizeof(long));
4899         printf("shortsize=%d;\n", (int)sizeof(short));
4900         exit(0);
4901 }
4902 EOCP
4903         set try
4904         if eval $compile_ok && $run ./try > /dev/null; then
4905                 eval `$run ./try`
4906                 echo "Your integers are $intsize bytes long."
4907                 echo "Your long integers are $longsize bytes long."
4908                 echo "Your short integers are $shortsize bytes long."
4909         else
4910                 $cat >&4 <<EOM
4911 !
4912 Help! I can't compile and run the intsize test program: please enlighten me!
4913 (This is probably a misconfiguration in your system or libraries, and
4914 you really ought to fix it.  Still, I'll try anyway.)
4915 !
4916 EOM
4917                 dflt=4
4918                 rp="What is the size of an integer (in bytes)?"
4919                 . ./myread
4920                 intsize="$ans"
4921                 dflt=$intsize
4922                 rp="What is the size of a long integer (in bytes)?"
4923                 . ./myread
4924                 longsize="$ans"
4925                 dflt=2
4926                 rp="What is the size of a short integer (in bytes)?"
4927                 . ./myread
4928                 shortsize="$ans"
4929         fi
4930         ;;
4931 esac
4932 $rm -f try try.*
4933
4934 : check for long long
4935 echo " "
4936 echo "Checking to see if you have long long..." >&4
4937 echo 'int main() { long long x = 7; return 0; }' > try.c
4938 set try
4939 if eval $compile; then
4940         val="$define"
4941         echo "You have long long."
4942 else
4943         val="$undef"
4944         echo "You do not have long long."
4945 fi
4946 $rm try.*
4947 set d_longlong
4948 eval $setvar
4949
4950 : check for length of long long
4951 case "${d_longlong}${longlongsize}" in
4952 $define)
4953         echo " "
4954         echo "Checking to see how big your long longs are..." >&4
4955         $cat >try.c <<'EOCP'
4956 #include <stdio.h>
4957 int main()
4958 {
4959     printf("%d\n", (int)sizeof(long long));
4960     return(0);
4961 }
4962 EOCP
4963         set try
4964         if eval $compile_ok; then
4965                 longlongsize=`$run ./try`
4966                 echo "Your long longs are $longlongsize bytes long."
4967         else
4968                 dflt='8'
4969                 echo " "
4970                 echo "(I can't seem to compile the test program.  Guessing...)"
4971                 rp="What is the size of a long long (in bytes)?"
4972                 . ./myread
4973                 longlongsize="$ans"
4974         fi
4975         if $test "X$longsize" = "X$longlongsize"; then
4976                 echo "(That isn't any different from an ordinary long.)"
4977         fi      
4978         ;;
4979 esac
4980 $rm -f try.* try
4981
4982 : determine filename position in cpp output
4983 echo " "
4984 echo "Computing filename position in cpp output for #include directives..." >&4
4985 case "$osname" in
4986 vos) testaccess=-e ;;
4987 *)   testaccess=-r ;;
4988 esac
4989 echo '#include <stdio.h>' > foo.c
4990 $cat >fieldn <<EOF
4991 $startsh
4992 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4993 $grep '^[       ]*#.*stdio\.h' | \
4994 while read cline; do
4995         pos=1
4996         set \$cline
4997         while $test \$# -gt 0; do
4998                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
4999                         echo "\$pos"
5000                         exit 0
5001                 fi
5002                 shift
5003                 pos=\`expr \$pos + 1\`
5004         done
5005 done
5006 EOF
5007 chmod +x fieldn
5008 fieldn=`./fieldn`
5009 $rm -f foo.c fieldn
5010 case $fieldn in
5011 '') pos='???';;
5012 1) pos=first;;
5013 2) pos=second;;
5014 3) pos=third;;
5015 *) pos="${fieldn}th";;
5016 esac
5017 echo "Your cpp writes the filename in the $pos field of the line."
5018
5019 case "$osname" in
5020 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5021 *)   cppfilter='' ;;
5022 esac
5023 : locate header file
5024 $cat >findhdr <<EOF
5025 $startsh
5026 wanted=\$1
5027 name=''
5028 for usrincdir in $usrinc
5029 do
5030         if test -f \$usrincdir/\$wanted; then
5031                 echo "\$usrincdir/\$wanted"
5032                 exit 0
5033         fi
5034 done
5035 awkprg='{ print \$$fieldn }'
5036 echo "#include <\$wanted>" > foo\$\$.c
5037 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5038 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5039 while read cline; do
5040         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5041         case "\$name" in
5042         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5043         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5044         *) exit 2;;
5045         esac;
5046 done;
5047 #
5048 # status = 0: grep returned 0 lines, case statement not executed
5049 # status = 1: headerfile found
5050 # status = 2: while loop executed, no headerfile found
5051 #
5052 status=\$?
5053 $rm -f foo\$\$.c;
5054 if test \$status -eq 1; then
5055         exit 0;
5056 fi
5057 exit 1
5058 EOF
5059 chmod +x findhdr
5060
5061 : define an alternate in-header-list? function
5062 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5063 cont=true; xxf="echo \"<\$1> found.\" >&4";
5064 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5065 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5066 esac;
5067 case $# in 4) instead=instead;; *) instead="at last";; esac;
5068 while $test "$cont"; do
5069         xxx=`./findhdr $1`
5070         var=$2; eval "was=\$$2";
5071         if $test "$xxx" && $test -r "$xxx";
5072         then eval $xxf;
5073         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5074                 cont="";
5075         else eval $xxnf;
5076         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5077         set $yyy; shift; shift; yyy=$@;
5078         case $# in 0) cont="";;
5079         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5080                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5081         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5082                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5083         esac;
5084 done;
5085 while $test "$yyy";
5086 do set $yyy; var=$2; eval "was=\$$2";
5087         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5088         set $yyy; shift; shift; yyy=$@;
5089 done'
5090
5091 : see if inttypes.h is available
5092 : we want a real compile instead of Inhdr because some systems
5093 : have an inttypes.h which includes non-existent headers
5094 echo " "
5095 $cat >try.c <<EOCP
5096 #include <inttypes.h>
5097 int main() {
5098         static int32_t foo32 = 0x12345678;
5099 }
5100 EOCP
5101 set try
5102 if eval $compile; then
5103         echo "<inttypes.h> found." >&4
5104         val="$define"
5105 else
5106         echo "<inttypes.h> NOT found." >&4
5107         val="$undef"
5108 fi
5109 $rm -f try.c try
5110 set i_inttypes
5111 eval $setvar
5112
5113 : check for int64_t
5114 echo " "
5115 echo "Checking to see if you have int64_t..." >&4
5116 $cat >try.c <<EOCP
5117 #include <sys/types.h>
5118 #$i_inttypes I_INTTYPES
5119 #ifdef I_INTTYPES
5120 #include <inttypes.h>
5121 #endif
5122 int main() { int64_t x = 7; }
5123 EOCP
5124 set try
5125 if eval $compile; then
5126         val="$define"
5127         echo "You have int64_t."
5128 else
5129         val="$undef"
5130         echo "You do not have int64_t."
5131 fi
5132 $rm -f try try.*
5133 set d_int64_t
5134 eval $setvar
5135
5136
5137 echo " "
5138 echo "Checking which 64-bit integer type we could use..." >&4
5139
5140 case "$intsize" in
5141 8) val=int
5142    set quadtype
5143    eval $setvar
5144    val='"unsigned int"'
5145    set uquadtype
5146    eval $setvar
5147    quadkind=1
5148    ;;
5149 *) case "$longsize" in
5150    8) val=long
5151       set quadtype
5152       eval $setvar
5153       val='"unsigned long"'
5154       set uquadtype
5155       eval $setvar
5156       quadkind=2
5157       ;;
5158    *) case "$d_longlong:$longlongsize" in
5159       define:8)
5160         val='"long long"'
5161         set quadtype
5162         eval $setvar
5163         val='"unsigned long long"'
5164         set uquadtype
5165         eval $setvar
5166         quadkind=3
5167         ;;
5168       *) case "$d_int64_t" in
5169          define)
5170            val=int64_t
5171            set quadtype
5172            eval $setvar
5173            val=uint64_t
5174            set uquadtype
5175            eval $setvar
5176            quadkind=4
5177            ;;
5178          esac
5179          ;;
5180       esac
5181       ;;
5182    esac
5183    ;;
5184 esac
5185
5186 case "$quadtype" in
5187 '')     echo "Alas, no 64-bit integer types in sight." >&4
5188         d_quad="$undef"
5189         ;;
5190 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5191         d_quad="$define"
5192         ;;
5193 esac
5194
5195
5196 case "$uselonglong" in
5197 "$define"|true|[yY]*)
5198         cat <<EOM >&4
5199
5200 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5201 EOM
5202         use64bitint="$define"
5203         ;;
5204 esac                          
5205 case "$use64bits" in
5206 "$define"|true|[yY]*)
5207         cat <<EOM >&4
5208
5209 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5210 EOM
5211         use64bitint="$define"
5212         ;;
5213 esac                          
5214 case "$use64bitints" in
5215 "$define"|true|[yY]*)
5216         cat <<EOM >&4
5217
5218 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5219 EOM
5220         use64bitint="$define"
5221         ;;
5222 esac                          
5223 case "$use64bitsint" in
5224 "$define"|true|[yY]*)
5225         cat <<EOM >&4
5226
5227 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5228 EOM
5229         use64bitint="$define"
5230         ;;
5231 esac                          
5232 case "$uselonglongs" in
5233 "$define"|true|[yY]*)
5234         cat <<EOM >&4
5235
5236 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5237 EOM
5238         use64bitint="$define"
5239         ;;
5240 esac                          
5241 case "$use64bitsall" in
5242 "$define"|true|[yY]*)
5243         cat <<EOM >&4
5244
5245 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5246 EOM
5247         use64bitall="$define"
5248         ;;
5249 esac                          
5250
5251 case "$ccflags" in
5252 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5253 esac
5254 case "$use64bitall" in
5255 "$define"|true|[yY]*) use64bitint="$define" ;;
5256 esac
5257
5258 case "$longsize" in
5259 8) cat <<EOM
5260
5261 You have natively 64-bit long integers.
5262 EOM
5263    val="$define"
5264    ;;
5265 *) case "$use64bitint" in
5266    "$define"|true|[yY]*) dflt='y';;
5267    *) dflt='n';;
5268    esac
5269    case "$d_quad" in
5270    "$define") ;;
5271    *) dflt='n' ;;
5272    esac
5273    cat <<EOM
5274
5275 Perl can be built to take advantage of 64-bit integer types
5276 on some systems.  To do so, Configure can be run with -Duse64bitint.
5277 Choosing this option will most probably introduce binary incompatibilities.
5278
5279 If this doesn't make any sense to you, just accept the default '$dflt'.
5280 (The default has been chosen based on your configuration.)
5281 EOM
5282    rp='Try to use 64-bit integers, if available?'
5283    . ./myread
5284    case "$ans" in
5285    [yY]*) val="$define" ;;
5286    *)     val="$undef"  ;;
5287    esac
5288    ;;
5289 esac
5290 set use64bitint
5291 eval $setvar
5292
5293 case "$use64bitall" in
5294 "$define"|true|[yY]*) dflt='y' ;;
5295 *) case "$longsize" in
5296    8) dflt='y' ;;
5297    *) dflt='n' ;;
5298    esac
5299    ;;
5300 esac    
5301 cat <<EOM
5302
5303 You may also choose to try maximal 64-bitness.  It means using as much
5304 64-bitness as possible on the platform.  This in turn means even more
5305 binary incompatibilities.  On the other hand, your platform may not
5306 have any more 64-bitness available than what you already have chosen.
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 maximal 64-bit support, if available?'
5312 . ./myread
5313 case "$ans" in
5314 [yY]*) val="$define" ;;
5315 *)     val="$undef"  ;;
5316 esac
5317 set use64bitall
5318 eval $setvar
5319 case "$use64bitall" in
5320 "$define")
5321         case "$use64bitint" in
5322         "$undef")
5323                 cat <<EOM
5324
5325 Since you have chosen a maximally 64-bit build, I'm also turning on
5326 the use of 64-bit integers.
5327 EOM
5328                 use64bitint="$define" ;;
5329         esac
5330         ;;
5331 esac
5332
5333 case "$use64bitint" in
5334 "$define"|true|[yY]*)
5335 : Look for a hint-file generated 'call-back-unit'.  If the
5336 : user has specified that a 64-bit perl is to be built,
5337 : we may need to set or change some other defaults.
5338         if $test -f use64bitint.cbu; then
5339                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5340                 . ./use64bitint.cbu
5341         fi
5342         case "$longsize" in
5343         4) case "$archname64" in
5344            '') archname64=64int ;;
5345            esac
5346            ;;
5347         esac
5348         ;;
5349 esac
5350
5351 case "$use64bitall" in
5352 "$define"|true|[yY]*)
5353 : Look for a hint-file generated 'call-back-unit'.  If the
5354 : user has specified that a maximally 64-bit perl is to be built,
5355 : we may need to set or change some other defaults.
5356         if $test -f use64bitall.cbu; then
5357                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5358                 . ./use64bitall.cbu
5359         fi
5360         case "$longsize" in
5361         4) case "$archname64" in
5362            ''|64int) archname64=64all ;;
5363            esac
5364            ;;
5365         esac
5366         ;;
5367 esac
5368
5369 echo " "
5370 echo "Checking for GNU C Library..." >&4
5371 cat >try.c <<'EOCP'
5372 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
5373    alone are insufficient to distinguish different versions, such as
5374    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
5375    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
5376 */
5377 #include <stdio.h>
5378 int main(void)
5379 {
5380 #ifdef __GLIBC__
5381 #   ifdef __GLIBC_MINOR__
5382 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
5383 #           include <gnu/libc-version.h>
5384             printf("%s\n",  gnu_get_libc_version());
5385 #       else
5386             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
5387 #       endif
5388 #   else
5389         printf("%d\n",  __GLIBC__);
5390 #   endif
5391     return 0;
5392 #else
5393     return 1;
5394 #endif
5395 }
5396 EOCP
5397 set try
5398 if eval $compile_ok && $run ./try > glibc.ver; then
5399         val="$define"
5400         gnulibc_version=`$cat glibc.ver`
5401         echo "You are using the GNU C Library version $gnulibc_version"
5402 else
5403         val="$undef"
5404         gnulibc_version=''
5405         echo "You are not using the GNU C Library"
5406 fi
5407 $rm -f try try.* glibc.ver
5408 set d_gnulibc
5409 eval $setvar
5410
5411 : see if nm is to be used to determine whether a symbol is defined or not
5412 case "$usenm" in
5413 '')
5414         dflt=''
5415         case "$d_gnulibc" in
5416         "$define")
5417                 echo " "
5418                 echo "nm probably won't work on the GNU C Library." >&4
5419                 dflt=n
5420                 ;;
5421         esac
5422         case "$dflt" in
5423         '') 
5424                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
5425                         echo " "
5426                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5427                         echo "'nm' won't be sufficient on this sytem." >&4
5428                         dflt=n
5429                 fi
5430                 ;;
5431         esac
5432         case "$dflt" in
5433         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5434                 if $test $dflt -gt 20; then
5435                         dflt=y
5436                 else
5437                         dflt=n
5438                 fi
5439                 ;;
5440         esac
5441         ;;
5442 *)
5443         case "$usenm" in
5444         true|$define) dflt=y;;
5445         *) dflt=n;;
5446         esac
5447         ;;
5448 esac
5449 $cat <<EOM
5450
5451 I can use $nm to extract the symbols from your C libraries. This
5452 is a time consuming task which may generate huge output on the disk (up
5453 to 3 megabytes) but that should make the symbols extraction faster. The
5454 alternative is to skip the 'nm' extraction part and to compile a small
5455 test program instead to determine whether each symbol is present. If
5456 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5457 this may be the best solution.
5458
5459 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5460
5461 EOM
5462 rp="Shall I use $nm to extract C symbols from the libraries?"
5463 . ./myread
5464 case "$ans" in
5465 [Nn]*) usenm=false;;
5466 *) usenm=true;;
5467 esac
5468
5469 runnm=$usenm
5470 case "$reuseval" in
5471 true) runnm=false;;
5472 esac
5473
5474 : nm options which may be necessary
5475 case "$nm_opt" in
5476 '') if $test -f /mach_boot; then
5477                 nm_opt=''       # Mach
5478         elif $test -d /usr/ccs/lib; then
5479                 nm_opt='-p'     # Solaris (and SunOS?)
5480         elif $test -f /dgux; then
5481                 nm_opt='-p'     # DG-UX
5482         elif $test -f /lib64/rld; then
5483                 nm_opt='-p'     # 64-bit Irix
5484         else
5485                 nm_opt=''
5486         fi;;
5487 esac
5488
5489 : nm options which may be necessary for shared libraries but illegal
5490 : for archive libraries.  Thank you, Linux.
5491 case "$nm_so_opt" in
5492 '')     case "$myuname" in
5493         *linux*)
5494                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5495                         nm_so_opt='--dynamic'
5496                 fi
5497                 ;;
5498         esac
5499         ;;
5500 esac
5501
5502 case "$runnm" in
5503 true)
5504 : get list of predefined functions in a handy place
5505 echo " "
5506 case "$libc" in
5507 '') libc=unknown
5508         case "$libs" in
5509         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5510         esac
5511         ;;
5512 esac
5513 case "$libs" in
5514 '') ;;
5515 *)  for thislib in $libs; do
5516         case "$thislib" in
5517         -lc|-lc_s)
5518                 : Handle C library specially below.
5519                 ;;
5520         -l*)
5521                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5522                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5523                         :
5524                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5525                         :
5526                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5527                         :
5528                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5529                         :
5530                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5531                         :
5532                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5533                         :
5534                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5535                         :
5536                 else
5537                         try=''
5538                 fi
5539                 libnames="$libnames $try"
5540                 ;;
5541         *) libnames="$libnames $thislib" ;;
5542         esac
5543         done
5544         ;;
5545 esac
5546 xxx=normal
5547 case "$libc" in
5548 unknown)
5549         set /lib/libc.$so
5550         for xxx in $libpth; do
5551                 $test -r $1 || set $xxx/libc.$so
5552                 : The messy sed command sorts on library version numbers.
5553                 $test -r $1 || \
5554                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5555                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5556                                 h
5557                                 s/[0-9][0-9]*/0000&/g
5558                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5559                                 G
5560                                 s/\n/ /' | \
5561                          $sort | $sed -e 's/^.* //'`
5562                 eval set \$$#
5563         done
5564         $test -r $1 || set /usr/ccs/lib/libc.$so
5565         $test -r $1 || set /lib/libsys_s$_a
5566         ;;
5567 *)
5568         set blurfl
5569         ;;
5570 esac
5571 if $test -r "$1"; then
5572         echo "Your (shared) C library seems to be in $1."
5573         libc="$1"
5574 elif $test -r /lib/libc && $test -r /lib/clib; then
5575         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5576         xxx=apollo
5577         libc='/lib/clib /lib/libc'
5578         if $test -r /lib/syslib; then
5579                 echo "(Your math library is in /lib/syslib.)"
5580                 libc="$libc /lib/syslib"
5581         fi
5582 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5583         echo "Your C library seems to be in $libc, as you said before."
5584 elif $test -r $incpath/usr/lib/libc$_a; then
5585         libc=$incpath/usr/lib/libc$_a;
5586         echo "Your C library seems to be in $libc.  That's fine."
5587 elif $test -r /lib/libc$_a; then
5588         libc=/lib/libc$_a;
5589         echo "Your C library seems to be in $libc.  You're normal."
5590 else
5591         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5592                 :
5593         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5594                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5595         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5596                 :
5597         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5598                 :
5599         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5600                 :
5601         else
5602                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5603         fi
5604         if $test -r "$tans"; then
5605                 echo "Your C library seems to be in $tans, of all places."
5606                 libc=$tans
5607         else
5608                 libc='blurfl'
5609         fi
5610 fi
5611 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5612         dflt="$libc"
5613         cat <<EOM
5614
5615 If the guess above is wrong (which it might be if you're using a strange
5616 compiler, or your machine supports multiple models), you can override it here.
5617
5618 EOM
5619 else
5620         dflt=''
5621         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5622         cat >&4 <<EOM
5623 I can't seem to find your C library.  I've looked in the following places:
5624
5625 EOM
5626         $sed 's/^/      /' libpath
5627         cat <<EOM
5628
5629 None of these seems to contain your C library. I need to get its name...
5630
5631 EOM
5632 fi
5633 fn=f
5634 rp='Where is your C library?'
5635 . ./getfile
5636 libc="$ans"
5637
5638 echo " "
5639 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5640 set X `cat libnames`
5641 shift
5642 xxx=files
5643 case $# in 1) xxx=file; esac
5644 echo "Extracting names from the following $xxx for later perusal:" >&4
5645 echo " "
5646 $sed 's/^/      /' libnames >&4
5647 echo " "
5648 $echo $n "This may take a while...$c" >&4
5649
5650 for file in $*; do
5651         case $file in
5652         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5653         *) $nm $nm_opt $file 2>/dev/null;;
5654         esac
5655 done >libc.tmp
5656
5657 $echo $n ".$c"
5658 $grep fprintf libc.tmp > libc.ptf
5659 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5660 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
5661 xxx='[ADTSIW]'
5662 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5663         eval $xscan;\
5664         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5665                 eval $xrun
5666 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5667         eval $xscan;\
5668         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5669                 eval $xrun
5670 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5671         eval $xscan;\
5672         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5673                 eval $xrun
5674 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5675         eval $xscan;\
5676         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5677                 eval $xrun
5678 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5679         eval $xscan;\
5680         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5681                 eval $xrun
5682 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5683         eval $xscan;\
5684         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5685                 eval $xrun
5686 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5687                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5688         eval $xscan;\
5689         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5690                 eval $xrun
5691 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5692         eval $xscan;\
5693         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5694                 eval $xrun
5695 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5696         eval $xscan;\
5697         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5698                 eval $xrun
5699 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5700         eval $xscan;\
5701         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5702                 eval $xrun
5703 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5704         eval $xscan;\
5705         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5706                 eval $xrun
5707 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5708         eval $xscan;\
5709         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5710                 eval $xrun
5711 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//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/[       ]*D[    ]*[0-9]*.*//p'";\
5716         eval $xscan;\
5717         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5718                 eval $xrun
5719 else
5720         $nm -p $* 2>/dev/null >libc.tmp
5721         $grep fprintf libc.tmp > libc.ptf
5722         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5723                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5724         then
5725                 nm_opt='-p'
5726                 eval $xrun
5727         else
5728                 echo " "
5729                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5730                 com=''
5731                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5732                         for thisname in $libnames $libc; do
5733                                 $ar t $thisname >>libc.tmp
5734                         done
5735                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5736                         echo "Ok." >&4
5737                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5738                         # Repeat libc to extract forwarders to DLL entries too
5739                         for thisname in $libnames $libc; do
5740                                 $ar tv $thisname >>libc.tmp
5741                                 # Revision 50 of EMX has bug in $ar.
5742                                 # it will not extract forwarders to DLL entries
5743                                 # Use emximp which will extract exactly them.
5744                                 emximp -o tmp.imp $thisname \
5745                                     2>/dev/null && \
5746                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5747                                     < tmp.imp >>libc.tmp
5748                                 $rm tmp.imp
5749                         done
5750                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5751                         echo "Ok." >&4
5752                 else
5753                         echo "$ar didn't seem to work right." >&4
5754                         echo "Maybe this is a Cray...trying bld instead..." >&4
5755                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5756                         then
5757                                 for thisname in $libnames; do
5758                                         bld t $libnames | \
5759                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5760                                         $ar t $thisname >>libc.tmp
5761                                 done
5762                                 echo "Ok." >&4
5763                         else
5764                                 echo "That didn't work either.  Giving up." >&4
5765                                 exit 1
5766                         fi
5767                 fi
5768         fi
5769 fi
5770 nm_extract="$com"
5771 case "$PASE" in
5772 define)
5773     echo " "
5774     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
5775     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
5776     ;;
5777 *)  if $test -f /lib/syscalls.exp; then
5778         echo " "
5779         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5780         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5781     fi
5782     ;;
5783 esac
5784 ;;
5785 esac
5786 $rm -f libnames libpath
5787
5788 : is a C symbol defined?
5789 csym='tlook=$1;
5790 case "$3" in
5791 -v) tf=libc.tmp; tc=""; tdc="";;
5792 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5793 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5794 esac;
5795 tx=yes;
5796 case "$reuseval-$4" in
5797 true-) ;;
5798 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5799 esac;
5800 case "$tx" in
5801 yes)
5802         case "$runnm" in
5803         true)
5804                 if $contains $tlook $tf >/dev/null 2>&1;
5805                 then tval=true;
5806                 else tval=false;
5807                 fi;;
5808         *)
5809                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5810                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5811                 then tval=true;
5812                 else tval=false;
5813                 fi;
5814                 $rm -f t t.c;;
5815         esac;;
5816 *)
5817         case "$tval" in
5818         $define) tval=true;;
5819         *) tval=false;;
5820         esac;;
5821 esac;
5822 eval "$2=$tval"'
5823
5824 : define an is-in-libc? function
5825 inlibc='echo " "; td=$define; tu=$undef;
5826 sym=$1; var=$2; eval "was=\$$2";
5827 tx=yes;
5828 case "$reuseval$was" in
5829 true) ;;
5830 true*) tx=no;;
5831 esac;
5832 case "$tx" in
5833 yes)
5834         set $sym tres -f;
5835         eval $csym;
5836         case "$tres" in
5837         true)
5838                 echo "$sym() found." >&4;
5839                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5840         *)
5841                 echo "$sym() NOT found." >&4;
5842                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5843         esac;;
5844 *)
5845         case "$was" in
5846         $define) echo "$sym() found." >&4;;
5847         *) echo "$sym() NOT found." >&4;;
5848         esac;;
5849 esac'
5850
5851 : see if sqrtl exists
5852 set sqrtl d_sqrtl
5853 eval $inlibc
5854
5855 hasproto='varname=$1; func=$2; shift; shift;
5856 while $test $# -ge 2; do
5857         case "$1" in
5858         $define) echo "#include <$2>";;
5859         esac ;
5860     shift 2;
5861 done > try.c;
5862 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
5863 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
5864         echo "$func() prototype found.";
5865         val="$define";
5866 else
5867         echo "$func() prototype NOT found.";
5868         val="$undef";
5869 fi;
5870 set $varname;
5871 eval $setvar;
5872 $rm -f try.c tryout.c'
5873
5874 : check for length of double
5875 echo " "
5876 case "$doublesize" in
5877 '')
5878         echo "Checking to see how big your double precision numbers are..." >&4
5879         $cat >try.c <<'EOCP'
5880 #include <stdio.h>
5881 int main()
5882 {
5883     printf("%d\n", (int)sizeof(double));
5884     exit(0);
5885 }
5886 EOCP
5887         set try
5888         if eval $compile_ok; then
5889                 doublesize=`$run ./try`
5890                 echo "Your double is $doublesize bytes long."
5891         else
5892                 dflt='8'
5893                 echo "(I can't seem to compile the test program.  Guessing...)"
5894                 rp="What is the size of a double precision number (in bytes)?"
5895                 . ./myread
5896                 doublesize="$ans"
5897         fi
5898         ;;
5899 esac
5900 $rm -f try.c try
5901
5902 : check for long doubles
5903 echo " "
5904 echo "Checking to see if you have long double..." >&4
5905 echo 'int main() { long double x = 7.0; }' > try.c
5906 set try
5907 if eval $compile; then
5908         val="$define"
5909         echo "You have long double."
5910 else
5911         val="$undef"
5912         echo "You do not have long double."
5913 fi
5914 $rm try.*
5915 set d_longdbl
5916 eval $setvar
5917
5918 : check for length of long double
5919 case "${d_longdbl}${longdblsize}" in
5920 $define)
5921         echo " "
5922         echo "Checking to see how big your long doubles are..." >&4
5923         $cat >try.c <<'EOCP'
5924 #include <stdio.h>
5925 int main()
5926 {
5927         printf("%d\n", sizeof(long double));
5928 }
5929 EOCP
5930         set try
5931         set try
5932         if eval $compile; then
5933                 longdblsize=`$run ./try`
5934                 echo "Your long doubles are $longdblsize bytes long."
5935         else
5936                 dflt='8'
5937                 echo " "
5938                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5939                 rp="What is the size of a long double (in bytes)?"
5940                 . ./myread
5941                 longdblsize="$ans"
5942         fi
5943         if $test "X$doublesize" = "X$longdblsize"; then
5944                 echo "(That isn't any different from an ordinary double.)"
5945         fi      
5946         ;;
5947 esac
5948 $rm -f try.* try
5949
5950 echo " "
5951
5952 if $test X"$d_longdbl" = X"$define"; then
5953
5954 echo "Checking how to print long doubles..." >&4
5955
5956 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5957         $cat >try.c <<'EOCP'
5958 #include <sys/types.h>
5959 #include <stdio.h>
5960 int main() {
5961   double d = 123.456;
5962   printf("%.3f\n", d);
5963 }
5964 EOCP
5965         set try
5966         if eval $compile; then
5967                 yyy=`$run ./try`
5968                 case "$yyy" in
5969                 123.456)
5970                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5971                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5972                         echo "We will use %f."
5973                         ;;
5974                 esac
5975         fi
5976 fi
5977
5978 if $test X"$sPRIfldbl" = X; then
5979         $cat >try.c <<'EOCP'
5980 #include <sys/types.h>
5981 #include <stdio.h>
5982 int main() {
5983   long double d = 123.456;
5984   printf("%.3Lf\n", d);
5985 }
5986 EOCP
5987         set try
5988         if eval $compile; then
5989                 yyy=`$run ./try`
5990                 case "$yyy" in
5991                 123.456)
5992                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
5993                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
5994                         echo "We will use %Lf."
5995                         ;;
5996                 esac
5997         fi
5998 fi
5999
6000 if $test X"$sPRIfldbl" = X; then
6001         $cat >try.c <<'EOCP'
6002 #include <sys/types.h>
6003 #include <stdio.h>
6004 int main() {
6005   long double d = 123.456;
6006   printf("%.3llf\n", d);
6007 }
6008 EOCP
6009         set try
6010         if eval $compile; then
6011                 yyy=`$run ./try`
6012                 case "$yyy" in
6013                 123.456)
6014                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
6015                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
6016                         echo "We will use %llf."
6017                         ;;
6018                 esac
6019         fi
6020 fi
6021
6022 if $test X"$sPRIfldbl" = X; then
6023         $cat >try.c <<'EOCP'
6024 #include <sys/types.h>
6025 #include <stdio.h>
6026 int main() {
6027   long double d = 123.456;
6028   printf("%.3lf\n", d);
6029 }
6030 EOCP
6031         set try
6032         if eval $compile; then
6033                 yyy=`$run ./try`
6034                 case "$yyy" in
6035                 123.456)
6036                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
6037                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
6038                         echo "We will use %lf."
6039                         ;;
6040                 esac
6041         fi
6042 fi
6043
6044 if $test X"$sPRIfldbl" = X; then
6045         echo "Cannot figure out how to print long doubles." >&4
6046 else
6047         sSCNfldbl=$sPRIfldbl    # expect consistency
6048 fi
6049
6050 $rm -f try try.*
6051
6052 fi # d_longdbl
6053
6054 case "$sPRIfldbl" in
6055 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
6056         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
6057         d_SCNfldbl="$undef";
6058         ;;
6059 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
6060         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
6061         d_SCNfldbl="$define";
6062         ;;
6063 esac
6064
6065 : see if modfl exists
6066 set modfl d_modfl
6067 eval $inlibc
6068
6069 : see if prototype for modfl is available
6070 echo " "
6071 set d_modflproto modfl math.h
6072 eval $hasproto
6073
6074 d_modfl_pow32_bug="$undef"
6075
6076 case "$d_longdbl$d_modfl" in
6077 $define$define)
6078         $cat <<EOM
6079 Checking to see whether your modfl() is okay for large values...
6080 EOM
6081 $cat >try.c <<EOCP
6082 #include <math.h> 
6083 #include <stdio.h>
6084 EOCP
6085 if $test "X$d_modflproto" != "X$define"; then
6086         $cat >>try.c <<EOCP
6087 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
6088 long double modfl (long double, long double *);
6089 EOCP
6090 fi
6091 $cat >>try.c <<EOCP
6092 int main() {
6093     long double nv = 4294967303.15;
6094     long double v, w;
6095     v = modfl(nv, &w);         
6096 #ifdef __GLIBC__
6097     printf("glibc");
6098 #endif
6099     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6100     return 0;
6101 }
6102 EOCP
6103         case "$osname:$gccversion" in
6104         aix:)   saveccflags="$ccflags"
6105                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6106         esac
6107         set try
6108         if eval $compile; then
6109                 foo=`$run ./try`
6110                 case "$foo" in
6111                 *" 4294967303.150000 1.150000 4294967302.000000")
6112                         echo >&4 "Your modfl() is broken for large values."
6113                         d_modfl_pow32_bug="$define"
6114                         case "$foo" in
6115                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6116                         ;;
6117                         esac
6118                         ;;
6119                 *" 4294967303.150000 0.150000 4294967303.000000")
6120                         echo >&4 "Your modfl() seems okay for large values."
6121                         ;;
6122                 *)      echo >&4 "I don't understand your modfl() at all."
6123                         d_modfl="$undef"
6124                         ;;
6125                 esac
6126                 $rm -f try.* try core core.try.*
6127         else
6128                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6129                 d_modfl="$undef"
6130         fi
6131         case "$osname:$gccversion" in
6132         aix:)   ccflags="$saveccflags" ;; # restore
6133         esac
6134         ;;
6135 esac
6136
6137 case "$ccflags" in
6138 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6139 esac
6140
6141 case "$uselongdouble" in
6142 $define|true|[yY]*)     dflt='y';;
6143 *) dflt='n';;
6144 esac
6145 cat <<EOM
6146
6147 Perl can be built to take advantage of long doubles which
6148 (if available) may give more accuracy and range for floating point numbers.
6149
6150 If this doesn't make any sense to you, just accept the default '$dflt'.
6151 EOM
6152 rp='Try to use long doubles if available?'
6153 . ./myread
6154 case "$ans" in
6155 y|Y)    val="$define"   ;;
6156 *)      val="$undef"    ;;
6157 esac
6158 set uselongdouble
6159 eval $setvar
6160
6161 case "$uselongdouble" in
6162 true|[yY]*) uselongdouble="$define" ;;
6163 esac
6164
6165 case "$uselongdouble" in
6166 $define)
6167 : Look for a hint-file generated 'call-back-unit'.  If the
6168 : user has specified that long doubles should be used,
6169 : we may need to set or change some other defaults.
6170         if $test -f uselongdouble.cbu; then
6171                 echo "Your platform has some specific hints for long doubles, using them..."
6172                 . ./uselongdouble.cbu
6173         else
6174                 $cat <<EOM
6175 (Your platform doesn't have any specific hints for long doubles.)
6176 EOM
6177         fi
6178         ;;
6179 esac
6180
6181 message=X
6182 case "$uselongdouble:$d_sqrtl:$d_modfl" in
6183 $define:$define:$define)
6184         : You have both
6185         ;;
6186 $define:$define:$undef)
6187         message="I could not find modfl"
6188         ;;
6189 $define:$undef:$define)
6190         message="I could not find sqrtl"
6191         ;;
6192 $define:$undef:$undef)
6193         message="I found neither sqrtl nor modfl"
6194         ;;
6195 esac
6196
6197 if $test "$message" != X; then
6198         $cat <<EOM >&4
6199
6200 *** You requested the use of long doubles but you do not seem to have
6201 *** the mathematic functions for long doubles.
6202 *** ($message)
6203 *** I'm disabling the use of long doubles.
6204
6205 EOM
6206
6207         uselongdouble=$undef
6208 fi
6209
6210 : determine the architecture name
6211 echo " "
6212 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6213         tarch=`arch`"-$osname"
6214 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6215         if uname -m > tmparch 2>&1 ; then
6216                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6217                         -e 's/$/'"-$osname/" tmparch`
6218         else
6219                 tarch="$osname"
6220         fi
6221         $rm -f tmparch
6222 else
6223         tarch="$osname"
6224 fi
6225 case "$myarchname" in
6226 ''|"$tarch") ;;
6227 *)
6228         echo "(Your architecture name used to be $myarchname.)"
6229         archname=''
6230         ;;
6231 esac
6232 case "$targetarch" in
6233 '') ;;
6234 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6235 esac
6236 myarchname="$tarch"
6237 case "$archname" in
6238 '') dflt="$tarch";;
6239 *) dflt="$archname";;
6240 esac
6241 rp='What is your architecture name'
6242 . ./myread
6243 archname="$ans"
6244 case "$usethreads" in
6245 $define)
6246         echo "Threads selected." >&4
6247         case "$archname" in
6248         *-thread*) echo "...and architecture name already has -thread." >&4
6249                 ;;
6250         *)      archname="$archname-thread"
6251                 echo "...setting architecture name to $archname." >&4
6252                 ;;
6253         esac
6254         ;;
6255 esac
6256 case "$usemultiplicity" in
6257 $define)
6258         echo "Multiplicity selected." >&4
6259         case "$archname" in
6260         *-multi*) echo "...and architecture name already has -multi." >&4
6261                 ;;
6262         *)      archname="$archname-multi"
6263                 echo "...setting architecture name to $archname." >&4
6264                 ;;
6265         esac
6266         ;;
6267 esac
6268 case "$use64bitint$use64bitall" in
6269 *"$define"*)
6270         case "$archname64" in
6271         '')
6272                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6273                 ;;
6274         *)
6275                 case "$use64bitint" in
6276                 "$define") echo "64 bit integers selected." >&4 ;;
6277                 esac
6278                 case "$use64bitall" in
6279                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6280                 esac
6281                 case "$archname" in
6282                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6283                         ;;
6284                 *)      archname="$archname-$archname64"
6285                         echo "...setting architecture name to $archname." >&4
6286                         ;;
6287                 esac
6288                 ;;
6289         esac
6290 esac
6291 case "$uselongdouble" in
6292 $define)
6293         echo "Long doubles selected." >&4
6294         case "$longdblsize" in
6295         $doublesize)
6296                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6297                 ;;
6298         *)
6299                 case "$archname" in
6300                 *-ld*) echo "...and architecture name already has -ld." >&4
6301                         ;;
6302                 *)      archname="$archname-ld"
6303                         echo "...setting architecture name to $archname." >&4
6304                         ;;
6305                 esac
6306                 ;;
6307         esac
6308         ;;
6309 esac
6310 case "$useperlio" in
6311 $define)
6312         echo "Perlio selected." >&4
6313         ;;
6314 *)
6315         echo "Perlio not selected, using stdio." >&4
6316         case "$archname" in
6317         *-stdio*) echo "...and architecture name already has -stdio." >&4
6318                 ;;
6319         *)      archname="$archname-stdio"
6320                 echo "...setting architecture name to $archname." >&4
6321                 ;;
6322         esac
6323         ;;
6324 esac
6325
6326 : determine root of directory hierarchy where package will be installed.
6327 case "$prefix" in
6328 '')
6329         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6330         ;;
6331 *?/)
6332         dflt=`echo "$prefix" | sed 's/.$//'`
6333         ;;
6334 *)
6335         dflt="$prefix"
6336         ;;
6337 esac
6338 $cat <<EOM
6339
6340 By default, $package will be installed in $dflt/bin, manual pages
6341 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6342 installation directories. Typically this is something like /usr/local.
6343 If you wish to have binaries under /usr/bin but other parts of the
6344 installation under /usr/local, that's ok: you will be prompted
6345 separately for each of the installation directories, the prefix being
6346 only used to set the defaults.
6347
6348 EOM
6349 fn=d~
6350 rp='Installation prefix to use?'
6351 . ./getfile
6352 oldprefix=''
6353 case "$prefix" in
6354 '') ;;
6355 *)
6356         case "$ans" in
6357         "$prefix") ;;
6358         *) oldprefix="$prefix";;
6359         esac
6360         ;;
6361 esac
6362 prefix="$ans"
6363 prefixexp="$ansexp"
6364
6365 case "$afsroot" in
6366 '')     afsroot=/afs ;;
6367 *)      afsroot=$afsroot ;;
6368 esac
6369
6370 : is AFS running?
6371 echo " "
6372 case "$afs" in
6373 $define|true)   afs=true ;;
6374 $undef|false)   afs=false ;;
6375 *)      if test -d $afsroot; then
6376                 afs=true
6377         else
6378                 afs=false
6379         fi
6380         ;;
6381 esac
6382 if $afs; then
6383         echo "AFS may be running... I'll be extra cautious then..." >&4
6384 else
6385         echo "AFS does not seem to be running..." >&4
6386 fi
6387
6388 : determine installation prefix for where package is to be installed.
6389 if $afs; then 
6390 $cat <<EOM
6391
6392 Since you are running AFS, I need to distinguish the directory in which
6393 files will reside from the directory in which they are installed (and from
6394 which they are presumably copied to the former directory by occult means).
6395
6396 EOM
6397         case "$installprefix" in
6398         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6399         *) dflt="$installprefix";;
6400         esac
6401 else
6402 $cat <<EOM
6403
6404 In some special cases, particularly when building $package for distribution,
6405 it is convenient to distinguish between the directory in which files should 
6406 be installed from the directory ($prefix) in which they 
6407 will eventually reside.  For most users, these two directories are the same.
6408
6409 EOM
6410         case "$installprefix" in
6411         '') dflt=$prefix ;;
6412         *) dflt=$installprefix;;
6413         esac
6414 fi
6415 fn=d~
6416 rp='What installation prefix should I use for installing files?'
6417 . ./getfile
6418 installprefix="$ans"
6419 installprefixexp="$ansexp"
6420
6421 : set the prefixit variable, to compute a suitable default value
6422 prefixit='case "$3" in
6423 ""|none)
6424         case "$oldprefix" in
6425         "") eval "$1=\"\$$2\"";;
6426         *)
6427                 case "$3" in
6428                 "") eval "$1=";;
6429                 none)
6430                         eval "tp=\"\$$2\"";
6431                         case "$tp" in
6432                         ""|" ") eval "$1=\"\$$2\"";;
6433                         *) eval "$1=";;
6434                         esac;;
6435                 esac;;
6436         esac;;
6437 *)
6438         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6439         case "$tp" in
6440         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6441         /*-$oldprefix/*|\~*-$oldprefix/*)
6442                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6443         *) eval "$1=\"\$$2\"";;
6444         esac;;
6445 esac'
6446
6447 : get the patchlevel
6448 echo " "
6449 echo "Getting the current patchlevel..." >&4
6450 if $test -r $rsrc/patchlevel.h;then
6451         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6452         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6453         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6454         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6455         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6456         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6457        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6458 else
6459         revision=0
6460         patchlevel=0
6461         subversion=0
6462         api_revision=0
6463         api_version=0
6464         api_subversion=0
6465         perl_patchlevel=0
6466         $echo "(You do not have patchlevel.h.  Eek.)"
6467 fi
6468 if $test -r $rsrc/.patch ; then  
6469         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6470                 perl_patchlevel=`cat $rsrc/.patch`
6471         fi
6472 fi
6473 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6474 version_patchlevel_string="version $patchlevel subversion $subversion"
6475 case "$perl_patchlevel" in
6476 0|'') ;;
6477 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6478 esac
6479
6480 $echo "(You have $package $version_patchlevel_string.)"
6481
6482 case "$osname" in
6483 dos|vms)
6484         : XXX Should be a Configure test for double-dots in filenames.
6485         version=`echo $revision $patchlevel $subversion | \
6486                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6487         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6488                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6489         ;;
6490 *)
6491         version=`echo $revision $patchlevel $subversion | \
6492                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6493         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6494                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6495         ;;
6496 esac
6497 : Special case the 5.005_xx maintenance series, which used 5.005
6498 : without any subversion label as a subdirectory in $sitelib
6499 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6500         api_versionstring='5.005'
6501 fi
6502
6503 : determine installation style
6504 : For now, try to deduce it from prefix unless it is already set.
6505 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6506 case "$installstyle" in
6507 '')     case "$prefix" in
6508                 *perl*) dflt='lib';;
6509                 *) dflt='lib/perl5' ;;
6510         esac
6511         ;;
6512 *)      dflt="$installstyle" ;;
6513 esac
6514 : Probably not worth prompting for this since we prompt for all
6515 : the directories individually, and the prompt would be too long and
6516 : confusing anyway.
6517 installstyle=$dflt
6518
6519 : determine where private library files go
6520 : Usual default is /usr/local/lib/perl5/$version.
6521 : Also allow things like /opt/perl/lib/$version, since 
6522 : /opt/perl/lib/perl5... would be redundant.
6523 : The default "style" setting is made in installstyle.U
6524 case "$installstyle" in
6525 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6526 *)       set dflt privlib lib/$version ;;
6527 esac
6528 eval $prefixit
6529 $cat <<EOM
6530
6531 There are some auxiliary files for $package that need to be put into a
6532 private library directory that is accessible by everyone.
6533
6534 EOM
6535 fn=d~+
6536 rp='Pathname where the private library files will reside?'
6537 . ./getfile
6538 privlib="$ans"
6539 privlibexp="$ansexp"
6540 : Change installation prefix, if necessary.
6541 if $test X"$prefix" != X"$installprefix"; then
6542         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6543 else
6544         installprivlib="$privlibexp"
6545 fi
6546
6547 : set the prefixup variable, to restore leading tilda escape
6548 prefixup='case "$prefixexp" in
6549 "$prefix") ;;
6550 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6551 esac'
6552
6553 : determine where public architecture dependent libraries go
6554 set archlib archlib
6555 eval $prefixit
6556 : privlib default is /usr/local/lib/$package/$version
6557 : archlib default is /usr/local/lib/$package/$version/$archname
6558 : privlib may have an optional trailing /share.
6559 tdflt=`echo $privlib | $sed 's,/share$,,'`
6560 tdflt=$tdflt/$archname
6561 case "$archlib" in
6562 '')     dflt=$tdflt
6563         ;;
6564 *)      dflt="$archlib"
6565     ;;
6566 esac
6567 $cat <<EOM
6568
6569 $spackage contains architecture-dependent library files.  If you are
6570 sharing libraries in a heterogeneous environment, you might store
6571 these files in a separate location.  Otherwise, you can just include
6572 them with the rest of the public library files.
6573
6574 EOM
6575 fn=d+~
6576 rp='Where do you want to put the public architecture-dependent libraries?'
6577 . ./getfile
6578 archlib="$ans"
6579 archlibexp="$ansexp"
6580 if $test X"$archlib" = X"$privlib"; then
6581         d_archlib="$undef"
6582 else
6583         d_archlib="$define"
6584 fi
6585 : Change installation prefix, if necessary.
6586 if $test X"$prefix" != X"$installprefix"; then
6587         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6588 else
6589         installarchlib="$archlibexp"
6590 fi
6591
6592 : see if setuid scripts can be secure
6593 $cat <<EOM
6594
6595 Some kernels have a bug that prevents setuid #! scripts from being
6596 secure.  Some sites have disabled setuid #! scripts because of this.
6597
6598 First let's decide if your kernel supports secure setuid #! scripts.
6599 (If setuid #! scripts would be secure but have been disabled anyway,
6600 don't say that they are secure if asked.)
6601
6602 EOM
6603
6604 val="$undef"
6605 if $test -d /dev/fd; then
6606         echo "#!$ls" >reflect
6607         chmod +x,u+s reflect
6608         ./reflect >flect 2>&1
6609         if $contains "/dev/fd" flect >/dev/null; then
6610                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6611                 val="$define"
6612         else
6613                 $cat <<EOM
6614 If you are not sure if they are secure, I can check but I'll need a
6615 username and password different from the one you are using right now.
6616 If you don't have such a username or don't want me to test, simply
6617 enter 'none'.
6618
6619 EOM
6620                 rp='Other username to test security of setuid scripts with?'
6621                 dflt='none'
6622                 . ./myread
6623                 case "$ans" in
6624                 n|none)
6625                         case "$d_suidsafe" in
6626                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6627                                 dflt=n;;
6628                         "$undef")
6629                                 echo "Well, the $hint value is *not* secure." >&4
6630                                 dflt=n;;
6631                         *)      echo "Well, the $hint value *is* secure." >&4
6632                                 dflt=y;;
6633                         esac
6634                         ;;
6635                 *)
6636                         $rm -f reflect flect
6637                         echo "#!$ls" >reflect
6638                         chmod +x,u+s reflect
6639                         echo >flect
6640                         chmod a+w flect
6641                         echo '"su" will (probably) prompt you for '"$ans's password."
6642                         su $ans -c './reflect >flect'
6643                         if $contains "/dev/fd" flect >/dev/null; then
6644                                 echo "Okay, it looks like setuid scripts are secure." >&4
6645                                 dflt=y
6646                         else
6647                                 echo "I don't think setuid scripts are secure." >&4
6648                                 dflt=n
6649                         fi
6650                         ;;
6651                 esac
6652                 rp='Does your kernel have *secure* setuid scripts?'
6653                 . ./myread
6654                 case "$ans" in
6655                 [yY]*)  val="$define";;
6656                 *)      val="$undef";;
6657                 esac
6658         fi
6659 else
6660         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6661         echo "(That's for file descriptors, not floppy disks.)"
6662         val="$undef"
6663 fi
6664 set d_suidsafe
6665 eval $setvar
6666
6667 $rm -f reflect flect
6668
6669 : now see if they want to do setuid emulation
6670 echo " "
6671 val="$undef"
6672 case "$d_suidsafe" in
6673 "$define")
6674         val="$undef"
6675         echo "No need to emulate SUID scripts since they are secure here." >&4
6676         ;;
6677 *)
6678         $cat <<EOM
6679 Some systems have disabled setuid scripts, especially systems where
6680 setuid scripts cannot be secure.  On systems where setuid scripts have
6681 been disabled, the setuid/setgid bits on scripts are currently
6682 useless.  It is possible for $package to detect those bits and emulate
6683 setuid/setgid in a secure fashion.  This emulation will only work if
6684 setuid scripts have been disabled in your kernel.
6685
6686 EOM
6687         case "$d_dosuid" in
6688         "$define") dflt=y ;;
6689         *) dflt=n ;;
6690         esac
6691         rp="Do you want to do setuid/setgid emulation?"
6692         . ./myread
6693         case "$ans" in
6694         [yY]*)  val="$define";;
6695         *)      val="$undef";;
6696         esac
6697         ;;
6698 esac
6699 set d_dosuid
6700 eval $setvar
6701
6702 : see if this is a malloc.h system
6703 set malloc.h i_malloc
6704 eval $inhdr
6705
6706 : see if stdlib is available
6707 set stdlib.h i_stdlib
6708 eval $inhdr
6709
6710 : check for void type
6711 echo " "
6712 echo "Checking to see how well your C compiler groks the void type..." >&4
6713 case "$voidflags" in
6714 '')
6715         $cat >try.c <<'EOCP'
6716 #if TRY & 1
6717 void sub() {
6718 #else
6719 sub() {
6720 #endif
6721         extern void moo();      /* function returning void */
6722         void (*goo)();          /* ptr to func returning void */
6723 #if TRY & 8
6724         void *hue;              /* generic ptr */
6725 #endif
6726 #if TRY & 2
6727         void (*foo[10])();
6728 #endif
6729
6730 #if TRY & 4
6731         if(goo == moo) {
6732                 exit(0);
6733         }
6734 #endif
6735         exit(0);
6736 }
6737 int main() { sub(); }
6738 EOCP
6739         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6740                 voidflags=$defvoidused
6741         echo "Good.  It appears to support void to the level $package wants.">&4
6742                 if $contains warning .out >/dev/null 2>&1; then
6743                         echo "However, you might get some warnings that look like this:"
6744                         $cat .out
6745                 fi
6746         else
6747 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6748                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6749                         echo "It supports 1..."
6750                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6751                                 echo "It also supports 2..."
6752                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6753                                         voidflags=7
6754                                         echo "And it supports 4 but not 8 definitely."
6755                                 else
6756                                         echo "It doesn't support 4..."
6757                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6758                                                 voidflags=11
6759                                                 echo "But it supports 8."
6760                                         else
6761                                                 voidflags=3
6762                                                 echo "Neither does it support 8."
6763                                         fi
6764                                 fi
6765                         else
6766                                 echo "It does not support 2..."
6767                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6768                                         voidflags=13
6769                                         echo "But it supports 4 and 8."
6770                                 else
6771                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6772                                                 voidflags=5
6773                                                 echo "And it supports 4 but has not heard about 8."
6774                                         else
6775                                                 echo "However it supports 8 but not 4."
6776                                         fi
6777                                 fi
6778                         fi
6779                 else
6780                         echo "There is no support at all for void."
6781                         voidflags=0
6782                 fi
6783         fi
6784 esac
6785 case "$voidflags" in
6786 "$defvoidused") ;;
6787 *)      $cat >&4 <<'EOM'
6788   Support flag bits are:
6789     1: basic void declarations.
6790     2: arrays of pointers to functions returning void.
6791     4: operations between pointers to and addresses of void functions.
6792     8: generic void pointers.
6793 EOM
6794         dflt="$voidflags";
6795         rp="Your void support flags add up to what?"
6796         . ./myread
6797         voidflags="$ans"
6798         ;;
6799 esac
6800 $rm -f try.* .out
6801
6802 : check for length of pointer
6803 echo " "
6804 case "$ptrsize" in
6805 '')
6806         echo "Checking to see how big your pointers are..." >&4
6807         if test "$voidflags" -gt 7; then
6808                 echo '#define VOID_PTR char *' > try.c
6809         else
6810                 echo '#define VOID_PTR void *' > try.c
6811         fi
6812         $cat >>try.c <<'EOCP'
6813 #include <stdio.h>
6814 int main()
6815 {
6816     printf("%d\n", (int)sizeof(VOID_PTR));
6817     exit(0);
6818 }
6819 EOCP
6820         set try
6821         if eval $compile_ok; then
6822                 ptrsize=`$run ./try`
6823                 echo "Your pointers are $ptrsize bytes long."
6824         else
6825                 dflt='4'
6826                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6827                 rp="What is the size of a pointer (in bytes)?"
6828                 . ./myread
6829                 ptrsize="$ans"
6830         fi
6831         ;;
6832 esac
6833 $rm -f try.c try
6834 case "$use64bitall" in
6835 "$define"|true|[yY]*)
6836         case "$ptrsize" in
6837         4)      cat <<EOM >&4
6838
6839 *** You have chosen a maximally 64-bit build, but your pointers
6840 *** are only 4 bytes wide, disabling maximal 64-bitness.
6841
6842 EOM
6843                 use64bitall="$undef"
6844                 case "$use64bitint" in
6845                 "$define"|true|[yY]*) ;;
6846                 *)      cat <<EOM >&4
6847
6848 *** Downgrading from maximal 64-bitness to using 64-bit integers.
6849
6850 EOM
6851                         use64bitint="$define"
6852                         ;;
6853                 esac
6854                 ;;
6855         esac
6856         ;;
6857 esac
6858
6859
6860 : determine which malloc to compile in
6861 echo " "
6862 case "$usemymalloc" in
6863 [yY]*|true|$define)     dflt='y' ;;
6864 [nN]*|false|$undef)     dflt='n' ;;
6865 *)      case "$ptrsize" in
6866         4) dflt='y' ;;
6867         *) dflt='n' ;;
6868         esac
6869         ;;
6870 esac
6871 rp="Do you wish to attempt to use the malloc that comes with $package?"
6872 . ./myread
6873 usemymalloc="$ans"
6874 case "$ans" in
6875 y*|true)
6876         usemymalloc='y'
6877         mallocsrc='malloc.c'
6878         mallocobj="malloc$_o"
6879         d_mymalloc="$define"
6880         case "$libs" in
6881         *-lmalloc*)
6882                 : Remove malloc from list of libraries to use
6883                 echo "Removing unneeded -lmalloc from library list" >&4
6884                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6885                 shift
6886                 libs="$*"
6887                 echo "libs = $libs" >&4
6888                 ;;
6889         esac
6890         ;;
6891 *)
6892         usemymalloc='n'
6893         mallocsrc=''
6894         mallocobj=''
6895         d_mymalloc="$undef"
6896         ;;
6897 esac
6898
6899 : compute the return types of malloc and free
6900 echo " "
6901 $cat >malloc.c <<END
6902 #$i_malloc I_MALLOC
6903 #$i_stdlib I_STDLIB
6904 #include <stdio.h>
6905 #include <sys/types.h>
6906 #ifdef I_MALLOC
6907 #include <malloc.h>
6908 #endif
6909 #ifdef I_STDLIB
6910 #include <stdlib.h>
6911 #endif
6912 #ifdef TRY_MALLOC
6913 void *malloc();
6914 #endif
6915 #ifdef TRY_FREE
6916 void free();
6917 #endif
6918 END
6919 case "$malloctype" in
6920 '')
6921         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6922                 malloctype='void *'
6923         else
6924                 malloctype='char *'
6925         fi
6926         ;;
6927 esac
6928 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6929
6930 case "$freetype" in
6931 '')
6932         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6933                 freetype='void'
6934         else
6935                 freetype='int'
6936         fi
6937         ;;
6938 esac
6939 echo "Your system uses $freetype free(), it would seem." >&4
6940 $rm -f malloc.[co]
6941 $cat <<EOM
6942
6943 After $package is installed, you may wish to install various
6944 add-on modules and utilities.  Typically, these add-ons will
6945 be installed under $prefix with the rest
6946 of this package.  However, you may wish to install such add-ons
6947 elsewhere under a different prefix.
6948
6949 If you do not wish to put everything under a single prefix, that's
6950 ok.  You will be prompted for the individual locations; this siteprefix
6951 is only used to suggest the defaults.
6952
6953 The default should be fine for most people.
6954
6955 EOM
6956 fn=d~+
6957 rp='Installation prefix to use for add-on modules and utilities?'
6958 : XXX Here might be another good place for an installstyle setting.
6959 case "$siteprefix" in
6960 '') dflt=$prefix ;;
6961 *)  dflt=$siteprefix ;;
6962 esac
6963 . ./getfile
6964 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6965 oldsiteprefix=''
6966 case "$siteprefix" in
6967 '') ;;
6968 *)      case "$ans" in
6969         "$prefix") ;;
6970         *) oldsiteprefix="$prefix";;
6971         esac
6972         ;;
6973 esac
6974 siteprefix="$ans"
6975 siteprefixexp="$ansexp"
6976
6977 : determine where site specific libraries go.
6978 : Usual default is /usr/local/lib/perl5/site_perl/$version
6979 : The default "style" setting is made in installstyle.U
6980 : XXX No longer works with Prefixit stuff.
6981 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6982 case "$sitelib" in
6983 '') case "$installstyle" in
6984         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6985         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6986         esac
6987         ;;
6988 *)      dflt="$sitelib"
6989         ;;
6990 esac
6991 $cat <<EOM
6992
6993 The installation process will create a directory for
6994 site-specific extensions and modules.  Most users find it convenient
6995 to place all site-specific files in this directory rather than in the
6996 main distribution directory.
6997
6998 EOM
6999 fn=d~+
7000 rp='Pathname for the site-specific library files?'
7001 . ./getfile
7002 sitelib="$ans"
7003 sitelibexp="$ansexp"
7004 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
7005 : Change installation prefix, if necessary.
7006 if $test X"$prefix" != X"$installprefix"; then
7007         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
7008 else
7009         installsitelib="$sitelibexp"
7010 fi
7011
7012 : determine where site specific architecture-dependent libraries go.
7013 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7014 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7015 : sitelib may have an optional trailing /share.
7016 case "$sitearch" in
7017 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
7018         dflt="$dflt/$archname"
7019         ;;
7020 *)      dflt="$sitearch"
7021         ;;
7022 esac
7023 set sitearch sitearch none
7024 eval $prefixit
7025 $cat <<EOM
7026
7027 The installation process will also create a directory for
7028 architecture-dependent site-specific extensions and modules.
7029
7030 EOM
7031 fn=d~+
7032 rp='Pathname for the site-specific architecture-dependent library files?'
7033 . ./getfile
7034 sitearch="$ans"
7035 sitearchexp="$ansexp"
7036 : Change installation prefix, if necessary.
7037 if $test X"$prefix" != X"$installprefix"; then
7038         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7039 else
7040         installsitearch="$sitearchexp"
7041 fi
7042
7043 $cat <<EOM
7044
7045 The installation process will also create a directory for
7046 vendor-supplied add-ons.  Vendors who supply perl with their system
7047 may find it convenient to place all vendor-supplied files in this
7048 directory rather than in the main distribution directory.  This will
7049 ease upgrades between binary-compatible maintenance versions of perl.
7050
7051 Of course you may also use these directories in whatever way you see
7052 fit.  For example, you might use them to access modules shared over a
7053 company-wide network.
7054
7055 The default answer should be fine for most people.
7056 This causes further questions about vendor add-ons to be skipped
7057 and no vendor-specific directories will be configured for perl.
7058
7059 EOM
7060 rp='Do you want to configure vendor-specific add-on directories?'
7061 case "$usevendorprefix" in
7062 define|true|[yY]*) dflt=y ;;
7063 *)      : User may have set vendorprefix directly on Configure command line.
7064         case "$vendorprefix" in
7065         ''|' ') dflt=n ;;
7066         *)      dflt=y ;;
7067         esac
7068         ;;
7069 esac
7070 . ./myread
7071 case "$ans" in
7072 [yY]*)  fn=d~+
7073         rp='Installation prefix to use for vendor-supplied add-ons?'
7074         case "$vendorprefix" in
7075         '') dflt='' ;;
7076         *)  dflt=$vendorprefix ;;
7077         esac
7078         . ./getfile
7079         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7080         oldvendorprefix=''
7081         case "$vendorprefix" in
7082         '') ;;
7083         *)      case "$ans" in
7084                 "$prefix") ;;
7085                 *) oldvendorprefix="$prefix";;
7086                 esac
7087                 ;;
7088         esac
7089         usevendorprefix="$define"
7090         vendorprefix="$ans"
7091         vendorprefixexp="$ansexp"
7092         ;;
7093 *)      usevendorprefix="$undef"
7094         vendorprefix=''
7095         vendorprefixexp=''
7096         ;;
7097 esac
7098
7099 case "$vendorprefix" in
7100 '')     d_vendorlib="$undef"
7101         vendorlib=''
7102         vendorlibexp=''
7103         ;;
7104 *)      d_vendorlib="$define"
7105         : determine where vendor-supplied modules go.
7106         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
7107         case "$vendorlib" in
7108         '')
7109                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7110                 case "$installstyle" in
7111                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
7112                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
7113                 esac
7114                 ;;
7115         *)      dflt="$vendorlib"
7116                 ;;
7117         esac
7118         fn=d~+
7119         rp='Pathname for the vendor-supplied library files?'
7120         . ./getfile
7121         vendorlib="$ans"
7122         vendorlibexp="$ansexp"
7123         ;;
7124 esac
7125 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
7126 : Change installation prefix, if necessary.
7127 if $test X"$prefix" != X"$installprefix"; then
7128         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
7129 else
7130         installvendorlib="$vendorlibexp"
7131 fi
7132
7133 case "$vendorprefix" in
7134 '')     d_vendorarch="$undef"
7135         vendorarch=''
7136         vendorarchexp=''
7137         ;;
7138 *)      d_vendorarch="$define"
7139         : determine where vendor-supplied architecture-dependent libraries go.
7140         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
7141         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
7142         : vendorlib may have an optional trailing /share.
7143         case "$vendorarch" in
7144         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
7145                 dflt="$dflt/$archname"
7146                 ;;
7147         *)      dflt="$vendorarch" ;;
7148         esac
7149         fn=d~+
7150         rp='Pathname for vendor-supplied architecture-dependent files?'
7151         . ./getfile
7152         vendorarch="$ans"
7153         vendorarchexp="$ansexp"
7154         ;;
7155 esac
7156 : Change installation prefix, if necessary.
7157 if $test X"$prefix" != X"$installprefix"; then
7158         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
7159 else
7160         installvendorarch="$vendorarchexp"
7161 fi
7162
7163 : Final catch-all directories to search
7164 $cat <<EOM
7165
7166 Lastly, you can have perl look in other directories for extensions and
7167 modules in addition to those already specified.
7168 These directories will be searched after 
7169         $sitearch 
7170         $sitelib 
7171 EOM
7172 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7173 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7174 echo ' '
7175 case "$otherlibdirs" in
7176 ''|' ') dflt='none' ;;
7177 *)      dflt="$otherlibdirs" ;;
7178 esac
7179 $cat <<EOM
7180 Enter a colon-separated set of extra paths to include in perl's @INC
7181 search path, or enter 'none' for no extra paths.
7182
7183 EOM
7184
7185 rp='Colon-separated list of additional directories for perl to search?'
7186 . ./myread
7187 case "$ans" in
7188 ' '|''|none)    otherlibdirs=' ' ;;     
7189 *)      otherlibdirs="$ans" ;;
7190 esac
7191 case "$otherlibdirs" in
7192 ' ') val=$undef ;;
7193 *)      val=$define ;;
7194 esac
7195 set d_perl_otherlibdirs
7196 eval $setvar
7197
7198 : Cruising for prototypes
7199 echo " "
7200 echo "Checking out function prototypes..." >&4
7201 $cat >prototype.c <<'EOCP'
7202 int main(int argc, char *argv[]) {
7203         exit(0);}
7204 EOCP
7205 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7206         echo "Your C compiler appears to support function prototypes."
7207         val="$define"
7208 else
7209         echo "Your C compiler doesn't seem to understand function prototypes."
7210         val="$undef"
7211 fi
7212 set prototype
7213 eval $setvar
7214 $rm -f prototype*
7215
7216 case "$prototype" in
7217 "$define") ;;
7218 *)      ansi2knr='ansi2knr'
7219         echo " "
7220         cat <<EOM >&4
7221
7222 $me:  FATAL ERROR:
7223 This version of $package can only be compiled by a compiler that 
7224 understands function prototypes.  Unfortunately, your C compiler 
7225         $cc $ccflags
7226 doesn't seem to understand them.  Sorry about that.
7227
7228 If GNU cc is available for your system, perhaps you could try that instead.  
7229
7230 Eventually, we hope to support building Perl with pre-ANSI compilers.
7231 If you would like to help in that effort, please contact <perlbug@perl.org>.
7232
7233 Aborting Configure now.
7234 EOM
7235         exit 2
7236         ;;
7237 esac
7238
7239 : determine where public executables go
7240 echo " "
7241 set dflt bin bin
7242 eval $prefixit
7243 fn=d~
7244 rp='Pathname where the public executables will reside?'
7245 . ./getfile
7246 if $test "X$ansexp" != "X$binexp"; then
7247         installbin=''
7248 fi
7249 bin="$ans"
7250 binexp="$ansexp"
7251 : Change installation prefix, if necessary.
7252 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7253 if $test X"$prefix" != X"$installprefix"; then
7254         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7255 else
7256         installbin="$binexp"
7257 fi
7258
7259 echo " "
7260 case "$extras" in
7261 '') dflt='n';;
7262 *) dflt='y';;
7263 esac
7264 cat <<EOM
7265 Perl can be built with extra modules or bundles of modules which
7266 will be fetched from the CPAN and installed alongside Perl.
7267
7268 Notice that you will need access to the CPAN; either via the Internet,
7269 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7270 be asked later to configure the CPAN.pm module which will in turn do
7271 the installation of the rest of the extra modules or bundles.)
7272
7273 Notice also that if the modules require any external software such as
7274 libraries and headers (the libz library and the zlib.h header for the
7275 Compress::Zlib module, for example) you MUST have any such software
7276 already installed, this configuration process will NOT install such
7277 things for you.
7278
7279 If this doesn't make any sense to you, just accept the default '$dflt'.
7280 EOM
7281 rp='Install any extra modules (y or n)?'
7282 . ./myread
7283 case "$ans" in
7284 y|Y)
7285         cat <<EOM
7286
7287 Please list any extra modules or bundles to be installed from CPAN,
7288 with spaces between the names.  The names can be in any format the
7289 'install' command of CPAN.pm will understand.  (Answer 'none',
7290 without the quotes, to install no extra modules or bundles.)
7291 EOM
7292         rp='Extras?'
7293         dflt="$extras"
7294         . ./myread
7295         extras="$ans"
7296 esac
7297 case "$extras" in
7298 ''|'none')
7299         val=''
7300         $rm -f ../extras.lst
7301         ;;
7302 *)      echo "(Saving the list of extras for later...)"
7303         echo "$extras" > ../extras.lst
7304         val="'$extras'"
7305         ;;
7306 esac
7307 set extras
7308 eval $setvar
7309 echo " "
7310
7311 : Find perl5.005 or later.
7312 echo "Looking for a previously installed perl5.005 or later... "
7313 case "$perl5" in
7314 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7315                 : Check if this perl is recent and can load a simple module
7316                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7317                         perl5=$tdir/perl
7318                         break;
7319                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7320                         perl5=$tdir/perl5
7321                         break;
7322                 fi
7323         done
7324         ;;
7325 *)      perl5="$perl5"
7326         ;;
7327 esac
7328 case "$perl5" in
7329 '')     echo "None found.  That's ok.";;
7330 *)      echo "Using $perl5." ;;
7331 esac
7332
7333 : Determine list of previous versions to include in @INC
7334 $cat > getverlist <<EOPL
7335 #!$perl5 -w
7336 use File::Basename;
7337 \$api_versionstring = "$api_versionstring";
7338 \$version = "$version";
7339 \$stem = "$sitelib_stem";
7340 \$archname = "$archname";
7341 EOPL
7342         $cat >> getverlist <<'EOPL'
7343 # Can't have leading @ because metaconfig interprets it as a command!
7344 ;@inc_version_list=();
7345 # XXX Redo to do opendir/readdir? 
7346 if (-d $stem) {
7347     chdir($stem);
7348     ;@candidates = glob("5.*");
7349 }
7350 else {
7351     ;@candidates = ();
7352 }
7353
7354 # XXX ToDo:  These comparisons must be reworked when two-digit
7355 # subversions come along, so that 5.7.10 compares as greater than
7356 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7357 # widespread that we can use the built-in version vectors rather
7358 # than reinventing them here.  For 5.6.0, however, we must
7359 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7360 foreach $d (@candidates) {
7361     if ($d lt $version) {
7362         if ($d ge $api_versionstring) {
7363             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7364         }
7365         elsif ($d ge "5.005") {
7366             unshift(@inc_version_list, grep { -d } $d);
7367         }
7368     }
7369     else {
7370         # Skip newer version.  I.e. don't look in
7371         # 5.7.0 if we're installing 5.6.1.
7372     }
7373 }
7374
7375 if (@inc_version_list) {
7376     print join(' ', @inc_version_list);
7377 }
7378 else {
7379     # Blank space to preserve value for next Configure run.
7380     print " ";
7381 }
7382 EOPL
7383 chmod +x getverlist
7384 case "$inc_version_list" in
7385 '')     if test -x "$perl5$exe_ext"; then
7386                 dflt=`$perl5 getverlist`
7387         else
7388                 dflt='none'
7389         fi
7390         ;;
7391 $undef) dflt='none' ;;
7392 *)  eval dflt=\"$inc_version_list\" ;;
7393 esac
7394 case "$dflt" in
7395 ''|' ') dflt=none ;;
7396 esac
7397 case "$dflt" in
7398 5.005) dflt=none ;;
7399 esac
7400 $cat <<EOM
7401
7402 In order to ease the process of upgrading, this version of perl 
7403 can be configured to use modules built and installed with earlier 
7404 versions of perl that were installed under $prefix.  Specify here
7405 the list of earlier versions that this version of perl should check.
7406 If Configure detected no earlier versions of perl installed under
7407 $prefix, then the list will be empty.  Answer 'none' to tell perl
7408 to not search earlier versions.
7409
7410 The default should almost always be sensible, so if you're not sure,
7411 just accept the default.
7412 EOM
7413
7414 rp='List of earlier versions to include in @INC?'
7415 . ./myread
7416 case "$ans" in
7417 [Nn]one|''|' ') inc_version_list=' ' ;;
7418 *) inc_version_list="$ans" ;;
7419 esac
7420 case "$inc_version_list" in
7421 ''|' ') 
7422         inc_version_list_init='0';;
7423 *)      inc_version_list_init=`echo $inc_version_list |
7424                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7425         ;;
7426 esac
7427 $rm -f getverlist
7428
7429 : determine whether to install perl also as /usr/bin/perl
7430
7431 echo " "
7432 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7433         $cat <<EOM
7434 Many scripts expect perl to be installed as /usr/bin/perl.
7435 I can install the perl you are about to compile also as /usr/bin/perl
7436 (in addition to $installbin/perl).
7437 EOM
7438         case "$installusrbinperl" in
7439         "$undef"|[nN]*) dflt='n';;
7440         *)              dflt='y';;
7441         esac
7442         rp="Do you want to install perl as /usr/bin/perl?"
7443         . ./myread
7444         case "$ans" in
7445         [yY]*)  val="$define";;
7446         *)      val="$undef" ;;
7447         esac
7448 else
7449         val="$undef"
7450 fi
7451 set installusrbinperl
7452 eval $setvar
7453
7454 : see if dld is available
7455 set dld.h i_dld
7456 eval $inhdr
7457
7458 : see if dlopen exists
7459 xxx_runnm="$runnm"
7460 runnm=false
7461 set dlopen d_dlopen
7462 eval $inlibc
7463 runnm="$xxx_runnm"
7464
7465 : determine which dynamic loading, if any, to compile in
7466 echo " "
7467 dldir="ext/DynaLoader"
7468 case "$usedl" in
7469 $define|y|true)
7470         dflt='y'
7471         usedl="$define"
7472         ;;
7473 $undef|n|false)
7474         dflt='n'
7475         usedl="$undef"
7476         ;;
7477 *) 
7478         dflt='n'
7479         case "$d_dlopen" in
7480             $define) dflt='y' ;;
7481         esac
7482         case "$i_dld" in
7483             $define) dflt='y' ;;
7484         esac
7485         : Does a dl_xxx.xs file exist for this operating system
7486         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7487         ;;
7488 esac
7489 rp="Do you wish to use dynamic loading?"
7490 . ./myread
7491 usedl="$ans"
7492 case "$ans" in
7493 y*) usedl="$define"
7494         case "$dlsrc" in
7495         '')
7496                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7497                         dflt="$dldir/dl_${osname}.xs"
7498                 elif $test "$d_dlopen" = "$define" ; then
7499                         dflt="$dldir/dl_dlopen.xs"
7500                 elif $test "$i_dld" = "$define" ; then
7501                         dflt="$dldir/dl_dld.xs"
7502                 else
7503                         dflt=''
7504                 fi
7505                 ;;
7506         *)      dflt="$dldir/$dlsrc"
7507                 ;;
7508         esac
7509     echo "The following dynamic loading files are available:"
7510         : Can not go over to $dldir because getfile has path hard-coded in.
7511         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7512         rp="Source file to use for dynamic loading"
7513         fn="fne"
7514         gfpth="$src"
7515         . ./getfile
7516         usedl="$define"
7517         : emulate basename
7518         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7519
7520         $cat << EOM
7521
7522 Some systems may require passing special flags to $cc -c to
7523 compile modules that will be used to create a shared library.
7524 To use no flags, say "none".
7525
7526 EOM
7527     case "$cccdlflags" in
7528     '') case "$gccversion" in
7529                 '') case "$osname" in
7530                         hpux)   dflt='+z' ;;
7531                         next)   dflt='none' ;;
7532                         irix*)  dflt='-KPIC' ;;
7533                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7534                         sunos)  dflt='-pic' ;;
7535                         *)      dflt='none' ;;
7536                     esac
7537                         ;;
7538                 *)  case "$osname" in
7539                         darwin) dflt='none' ;;
7540                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7541                         *)      dflt='-fpic' ;;
7542                     esac ;;
7543             esac ;;
7544         ' ') dflt='none' ;;
7545     *)  dflt="$cccdlflags" ;;
7546     esac
7547     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7548     . ./myread
7549     case "$ans" in
7550     none) cccdlflags=' ' ;;
7551     *) cccdlflags="$ans" ;;
7552     esac
7553
7554     cat << EOM
7555
7556 Some systems use ld to create libraries that can be dynamically loaded,
7557 while other systems (such as those using ELF) use $cc.
7558
7559 EOM
7560         case "$ld" in
7561         '')     $cat >try.c <<'EOM'
7562 /* Test for whether ELF binaries are produced */
7563 #include <fcntl.h>
7564 #include <stdlib.h>
7565 int main() {
7566         char b[4];
7567         int i = open("a.out",O_RDONLY);
7568         if(i == -1) 
7569                 exit(1); /* fail */
7570         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7571                 exit(0); /* succeed (yes, it's ELF) */
7572         else
7573                 exit(1); /* fail */
7574 }
7575 EOM
7576                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7577                         cat <<EOM
7578 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7579 EOM
7580                         dflt="$cc"
7581                 else
7582                         echo "I'll use ld to build dynamic libraries."
7583                         dflt='ld'
7584                 fi
7585                 rm -f try.c a.out
7586                 ;;
7587         *)      dflt="$ld"
7588                 ;;
7589         esac
7590
7591     rp="What command should be used to create dynamic libraries?"
7592     . ./myread
7593         ld="$ans"
7594
7595     cat << EOM
7596
7597 Some systems may require passing special flags to $ld to create a
7598 library that can be dynamically loaded.  If your ld flags include
7599 -L/other/path options to locate libraries outside your loader's normal
7600 search path, you may need to specify those -L options here as well.  To
7601 use no flags, say "none".
7602
7603 EOM
7604     case "$lddlflags" in
7605     '') case "$osname" in
7606                         beos) dflt='-nostart' ;;
7607                         hpux) dflt='-b';
7608                               case "$gccversion" in
7609                               '') dflt="$dflt +vnocompatwarnings" ;;
7610                               esac
7611                               ;;        
7612                         linux|irix*)    dflt='-shared' ;;
7613                         next)  dflt='none' ;;
7614                         solaris) dflt='-G' ;;
7615                         sunos) dflt='-assert nodefinitions' ;;
7616                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7617                 *)     dflt='none' ;;
7618                         esac
7619                         ;;
7620     *) dflt="$lddlflags" ;;
7621     esac
7622
7623         : Try to guess additional flags to pick up local libraries.
7624         : Be careful not to append to a plain 'none'
7625         case "$dflt" in
7626         none) dflt='' ;;
7627         esac
7628         for thisflag in $ldflags; do
7629                 case "$thisflag" in
7630                 -L*|-R*|-Wl,-R*)
7631                         case " $dflt " in
7632                         *" $thisflag "*) ;;
7633                         *) dflt="$dflt $thisflag" ;;
7634                         esac
7635                         ;;
7636                 esac
7637         done
7638
7639         case "$dflt" in
7640         ''|' ') dflt='none' ;;
7641         esac
7642
7643     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7644     . ./myread
7645     case "$ans" in
7646     none) lddlflags=' ' ;;
7647     *) lddlflags="$ans" ;;
7648     esac
7649
7650         cat <<EOM
7651
7652 Some systems may require passing special flags to $cc to indicate that
7653 the resulting executable will use dynamic linking.  To use no flags,
7654 say "none".
7655
7656 EOM
7657     case "$ccdlflags" in
7658     '') case "$osname" in
7659                 hpux)   dflt='-Wl,-E' ;;
7660                 linux)  dflt='-rdynamic' ;;
7661                 next)   dflt='none' ;;
7662                 sunos)  dflt='none' ;;
7663                 *)      dflt='none' ;;
7664             esac ;;
7665     ' ')  dflt='none' ;;
7666     *)  dflt="$ccdlflags" ;;
7667     esac
7668     rp="Any special flags to pass to $cc to use dynamic linking?"
7669     . ./myread
7670     case "$ans" in
7671     none) ccdlflags=' ' ;;
7672     *) ccdlflags="$ans" ;;
7673     esac
7674     ;;
7675 *)  usedl="$undef"
7676         ld='ld'
7677     dlsrc='dl_none.xs'
7678     lddlflags=''
7679     ccdlflags=''
7680     ;;
7681 esac
7682
7683 also=''
7684 case "$usedl" in
7685 $undef)
7686         # No dynamic loading being used, so don't bother even to prompt.
7687         useshrplib='false'
7688         ;;
7689 *)      case "$useshrplib" in
7690         '')     case "$osname" in
7691                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7692                         dflt=y
7693                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7694                         ;;
7695                 next*)
7696                         case "$osvers" in
7697                         4*)     dflt=y
7698                                 also='Building a shared libperl is needed for MAB support.'
7699                                 ;;
7700                         *)      dflt=n
7701                                 ;;
7702                         esac
7703                         ;;
7704                 *)      dflt=n
7705                         ;;
7706                 esac
7707                 ;;
7708         $define|true|[Yy]*)
7709                 dflt=y
7710                 ;;
7711         *)      dflt=n
7712                 ;;
7713         esac
7714         $cat << EOM
7715
7716 The perl executable is normally obtained by linking perlmain.c with
7717 libperl${_a}, any static extensions (usually just DynaLoader), and
7718 any other libraries needed on this system (such as -lm, etc.).  Since
7719 your system supports dynamic loading, it is probably possible to build
7720 a shared libperl.$so.  If you will have more than one executable linked
7721 to libperl.$so, this will significantly reduce the size of each
7722 executable, but it may have a noticeable affect on performance.  The
7723 default is probably sensible for your system.
7724 $also
7725
7726 EOM
7727         rp="Build a shared libperl.$so (y/n)"
7728         . ./myread
7729         case "$ans" in
7730         true|$define|[Yy]*)
7731                 useshrplib='true'  ;;
7732         *)      useshrplib='false' ;;
7733         esac
7734         ;;
7735 esac
7736
7737 case "$useshrplib" in
7738 true)
7739         case "$libperl" in
7740         '')
7741                 # Figure out a good name for libperl.so.  Since it gets stored in
7742                 # a version-specific architecture-dependent library, the version
7743                 # number isn't really that important, except for making cc/ld happy.
7744                 #
7745                 # A name such as libperl.so.3.1
7746                 majmin="libperl.$so.$patchlevel.$subversion"
7747                 # A name such as libperl.so.301
7748                 majonly=`echo $patchlevel $subversion |
7749                         $awk '{printf "%d%02d", $1, $2}'`
7750                 majonly=libperl.$so.$majonly
7751                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7752                 # rely on figuring it out from the naming of libc.
7753                 case "${osname}${osvers}" in
7754                 next4*)
7755                         dflt=libperl.5.$so
7756                         # XXX How handle the --version stuff for MAB?
7757                         ;;
7758                 linux*)  # ld won't link with a bare -lperl otherwise.
7759                         dflt=libperl.$so
7760                         ;;
7761                 cygwin*) # ld links against an importlib
7762                         dflt=libperl$lib_ext
7763                         ;;
7764                 *)      # Try to guess based on whether libc has major.minor.
7765                         case "$libc" in
7766                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7767                         *libc.$so.[0-9]*) dflt=$majonly ;;
7768                         *)      dflt=libperl.$so ;;
7769                         esac
7770                         ;;
7771                 esac
7772                 ;;
7773         *)      dflt=$libperl
7774                 ;;
7775         esac
7776         cat << EOM
7777
7778 I need to select a good name for the shared libperl.  If your system uses
7779 library names with major and minor numbers, then you might want something
7780 like $majmin.  Alternatively, if your system uses a single version
7781 number for shared libraries, then you might want to use $majonly.
7782 Or, your system might be quite happy with a simple libperl.$so.
7783
7784 Since the shared libperl will get installed into a version-specific
7785 architecture-dependent directory, the version number of the shared perl
7786 library probably isn't important, so the default should be o.k.
7787
7788 EOM
7789         rp='What name do you want to give to the shared libperl?'
7790         . ./myread
7791         libperl=$ans
7792         echo "Ok, I'll use $libperl"
7793         ;;
7794 *)
7795         libperl="libperl${_a}"
7796         ;;
7797 esac
7798
7799 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7800 case "$shrpdir" in
7801 '') ;;
7802 *)      $cat >&4 <<EOM
7803 WARNING:  Use of the shrpdir variable for the installation location of
7804 the shared $libperl is not supported.  It was never documented and
7805 will not work in this version.  Let me (perlbug@perl.org)
7806 know of any problems this may cause.
7807
7808 EOM
7809         case "$shrpdir" in
7810         "$archlibexp/CORE")
7811                 $cat >&4 <<EOM
7812 But your current setting of $shrpdir is
7813 the default anyway, so it's harmless.
7814 EOM
7815                 ;;
7816         *)
7817                 $cat >&4 <<EOM
7818 Further, your current attempted setting of $shrpdir
7819 conflicts with the value of $archlibexp/CORE
7820 that installperl will use.
7821 EOM
7822                 ;;
7823         esac
7824         ;;
7825 esac
7826
7827 # How will the perl executable find the installed shared $libperl?
7828 # Add $xxx to ccdlflags.
7829 # If we can't figure out a command-line option, use $shrpenv to
7830 # set env LD_RUN_PATH.  The main perl makefile uses this.
7831 shrpdir=$archlibexp/CORE
7832 xxx=''
7833 tmp_shrpenv=''
7834 if "$useshrplib"; then
7835     case "$osname" in 
7836         aix)
7837                 # We'll set it in Makefile.SH...
7838                 ;;
7839         solaris)
7840                 xxx="-R $shrpdir"
7841                 ;;
7842         freebsd|netbsd)
7843                 xxx="-Wl,-R$shrpdir"
7844                 ;;
7845         bsdos|linux|irix*|dec_osf)
7846                 xxx="-Wl,-rpath,$shrpdir"
7847                 ;;
7848         next)
7849                 # next doesn't like the default...
7850                 ;;
7851         beos)
7852                 # beos doesn't like the default, either.
7853                 ;;
7854         hpux*)
7855                 # hpux doesn't like the default, either.
7856                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7857                 ;;
7858         *)
7859                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7860                 ;;
7861         esac
7862         case "$xxx" in
7863         '') ;;
7864         *)      
7865                 # Only add $xxx if it isn't already in ccdlflags.
7866                 case " $ccdlflags " in
7867                 *" $xxx "*)     ;;
7868                 *)      ccdlflags="$ccdlflags $xxx"
7869                         cat <<EOM >&4
7870
7871 Adding $xxx to the flags
7872 passed to $ld so that the perl executable will find the 
7873 installed shared $libperl.
7874
7875 EOM
7876                         ;;
7877                 esac
7878                 ;;
7879         esac
7880 fi
7881 # Fix ccdlflags in AIX for building external extensions.
7882 # (For building Perl itself bare -bE:perl.exp is needed,
7883 #  Makefile.SH takes care of this.)
7884 case "$osname" in
7885 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7886 esac
7887 # Respect a hint or command-line value.
7888 case "$shrpenv" in
7889 '') shrpenv="$tmp_shrpenv" ;;
7890 esac
7891 case "$ldlibpthname" in
7892 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7893 none)   ldlibpthname='' ;;
7894 esac
7895
7896 : determine where manual pages are on this system
7897 echo " "
7898 case "$sysman" in
7899 '') 
7900         syspath='/usr/share/man/man1 /usr/man/man1'
7901         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7902         syspath="$syspath /usr/man/u_man/man1"
7903         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7904         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7905         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7906         sysman=`./loc . /usr/man/man1 $syspath`
7907         ;;
7908 esac
7909 if $test -d "$sysman"; then
7910         echo "System manual is in $sysman." >&4
7911 else
7912         echo "Could not find manual pages in source form." >&4
7913 fi
7914
7915 : determine where manual pages go
7916 set man1dir man1dir none
7917 eval $prefixit
7918 $cat <<EOM
7919
7920 $spackage has manual pages available in source form.
7921 EOM
7922 case "$nroff" in
7923 nroff)
7924         echo "However, you don't have nroff, so they're probably useless to you."
7925         case "$man1dir" in
7926         '') man1dir="none";;
7927         esac;;
7928 esac
7929 echo "If you don't want the manual sources installed, answer 'none'."
7930 case "$man1dir" in
7931 ' ') dflt=none
7932         ;;
7933 '')
7934         lookpath="$prefixexp/share/man/man1"
7935         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7936         lookpath="$lookpath $prefixexp/man/p_man/man1"
7937         lookpath="$lookpath $prefixexp/man/u_man/man1"
7938         lookpath="$lookpath $prefixexp/man/man.1"
7939         case "$sysman" in
7940         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7941         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7942         esac
7943         set dflt
7944         eval $prefixup
7945         ;;
7946 *)  dflt="$man1dir"
7947         ;;
7948 esac
7949 echo " "
7950 fn=dn+~
7951 rp="Where do the main $spackage manual pages (source) go?"
7952 . ./getfile
7953 if $test "X$man1direxp" != "X$ansexp"; then
7954         installman1dir=''
7955 fi
7956 man1dir="$ans"
7957 man1direxp="$ansexp"
7958 case "$man1dir" in
7959 '')     man1dir=' '
7960         installman1dir='';;
7961 esac
7962
7963 : Change installation prefix, if necessary.
7964 if $test X"$prefix" != X"$installprefix"; then
7965         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7966 else
7967         installman1dir="$man1direxp"
7968 fi
7969
7970 : What suffix to use on installed man pages
7971
7972 case "$man1dir" in
7973 ' ')
7974         man1ext='0'
7975         ;;
7976 *)
7977         rp="What suffix should be used for the main $spackage man pages?"
7978         case "$man1ext" in
7979         '')     case "$man1dir" in
7980                 *1)  dflt=1 ;;
7981                 *1p) dflt=1p ;;
7982                 *1pm) dflt=1pm ;;
7983                 *l) dflt=l;;
7984                 *n) dflt=n;;
7985                 *o) dflt=o;;
7986                 *p) dflt=p;;
7987                 *C) dflt=C;;
7988                 *L) dflt=L;;
7989                 *L1) dflt=L1;;
7990                 *) dflt=1;;
7991                 esac
7992                 ;;
7993         *)      dflt="$man1ext";;
7994         esac
7995         . ./myread
7996         man1ext="$ans"
7997         ;;
7998 esac
7999
8000 : see if we can have long filenames
8001 echo " "
8002 first=123456789abcdef
8003 $rm -f $first
8004 if (echo hi >$first) 2>/dev/null; then
8005         if $test -f 123456789abcde; then
8006                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8007                 val="$undef"
8008         else
8009                 echo 'You can have filenames longer than 14 characters.'>&4
8010                 val="$define"
8011         fi
8012 else
8013         $cat <<'EOM'
8014 You can't have filenames longer than 14 chars.
8015 You can't even think about them!
8016 EOM
8017         val="$undef"
8018 fi 
8019 set d_flexfnam
8020 eval $setvar
8021 $rm -rf 123456789abcde*
8022
8023 : determine where library module manual pages go
8024 set man3dir man3dir none
8025 eval $prefixit
8026 $cat <<EOM
8027
8028 $spackage has manual pages for many of the library modules.
8029 EOM
8030
8031 case "$nroff" in
8032 nroff)
8033         $cat <<'EOM'
8034 However, you don't have nroff, so they're probably useless to you.
8035 EOM
8036         case "$man3dir" in
8037         '') man3dir="none";;
8038         esac;;
8039 esac
8040
8041 case "$d_flexfnam" in
8042 undef)
8043         $cat <<'EOM'
8044 However, your system can't handle the long file names like File::Basename.3. 
8045 EOM
8046         case "$man3dir" in
8047         '') man3dir="none";;
8048         esac;;
8049 esac
8050
8051 echo "If you don't want the manual sources installed, answer 'none'."
8052 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8053 case "$man3dir" in
8054 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8055         if $test -d "$privlib/man/man3"; then
8056                 cat <<EOM >&4
8057
8058 WARNING:  Previous versions of perl installed man3 pages into
8059 $privlib/man/man3.  This version will suggest a 
8060 new default of $dflt.  
8061 EOM
8062                 tdflt=$dflt
8063                 dflt='n'
8064                 rp='Do you wish to preserve the old behavior?(y/n)'
8065                 . ./myread
8066                 case "$ans" in
8067                 y*) dflt="$privlib/man/man3" ;;
8068                 *)  dflt=$tdflt ;;
8069                 esac
8070     fi
8071         ;;
8072 *)      dflt="$man3dir" ;;
8073 esac
8074 case "$dflt" in
8075 ' ') dflt=none ;;
8076 esac
8077 echo " "
8078 fn=dn+~
8079 rp="Where do the $package library man pages (source) go?"
8080 . ./getfile
8081 man3dir="$ans"
8082 man3direxp="$ansexp"
8083 case "$man3dir" in
8084 '')     man3dir=' '
8085         installman3dir='';;
8086 esac
8087
8088 : Change installation prefix, if necessary.
8089 if $test X"$prefix" != X"$installprefix"; then
8090         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8091 else
8092         installman3dir="$man3direxp"
8093 fi
8094
8095 : What suffix to use on installed man pages
8096 case "$man3dir" in
8097 ' ')
8098         man3ext='0'
8099         ;;
8100 *)
8101         rp="What suffix should be used for the $package library man pages?"
8102         case "$man3ext" in
8103         '')     case "$man3dir" in
8104                 *3)  dflt=3 ;;
8105                 *3p) dflt=3p ;;
8106                 *3pm) dflt=3pm ;;
8107                 *l) dflt=l;;
8108                 *n) dflt=n;;
8109                 *o) dflt=o;;
8110                 *p) dflt=p;;
8111                 *C) dflt=C;;
8112                 *L) dflt=L;;
8113                 *L3) dflt=L3;;
8114                 *) dflt=3;;
8115                 esac
8116                 ;;
8117         *)      dflt="$man3ext";;
8118         esac
8119         . ./myread
8120         man3ext="$ans"
8121         ;;
8122 esac
8123
8124 : see if we have to deal with yellow pages, now NIS.
8125 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8126         if $test -f /usr/etc/nibindd; then
8127                 echo " "
8128                 echo "I'm fairly confident you're on a NeXT."
8129                 echo " "
8130                 rp='Do you get the hosts file via NetInfo?'
8131                 dflt=y
8132                 case "$hostcat" in
8133                 nidump*) ;;
8134                 '') ;;
8135                 *) dflt=n;;
8136                 esac
8137                 . ./myread
8138                 case "$ans" in
8139                 y*) hostcat='nidump hosts .';;
8140                 *)      case "$hostcat" in
8141                         nidump*) hostcat='';;
8142                         esac
8143                         ;;
8144                 esac
8145         fi
8146         case "$hostcat" in
8147         nidump*) ;;
8148         *)
8149                 case "$hostcat" in
8150                 *ypcat*) dflt=y;;
8151                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8152                                 dflt=y
8153                         else
8154                                 dflt=n
8155                         fi;;
8156                 *) dflt=n;;
8157                 esac
8158                 echo " "
8159                 rp='Are you getting the hosts file via yellow pages?'
8160                 . ./myread
8161                 case "$ans" in
8162                 y*) hostcat='ypcat hosts';;
8163                 *) hostcat='cat /etc/hosts';;
8164                 esac
8165                 ;;
8166         esac
8167 fi
8168 case "$hostcat" in
8169 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8170 esac
8171 case "$groupcat" in
8172 '') test -f /etc/group && groupcat='cat /etc/group';;
8173 esac
8174 case "$passcat" in
8175 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8176 esac
8177
8178 : now get the host name
8179 echo " "
8180 echo "Figuring out host name..." >&4
8181 case "$myhostname" in
8182 '') cont=true
8183         echo 'Maybe "hostname" will work...'
8184         if tans=`sh -c hostname 2>&1` ; then
8185                 myhostname=$tans
8186                 phostname=hostname
8187                 cont=''
8188         fi
8189         ;;
8190 *) cont='';;
8191 esac
8192 if $test "$cont"; then
8193         if ./xenix; then
8194                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8195                 if tans=`cat /etc/systemid 2>&1` ; then
8196                         myhostname=$tans
8197                         phostname='cat /etc/systemid'
8198                         echo "Whadyaknow.  Xenix always was a bit strange..."
8199                         cont=''
8200                 fi
8201         elif $test -r /etc/systemid; then
8202                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8203         fi
8204 fi
8205 if $test "$cont"; then
8206         echo 'No, maybe "uuname -l" will work...'
8207         if tans=`sh -c 'uuname -l' 2>&1` ; then
8208                 myhostname=$tans
8209                 phostname='uuname -l'
8210         else
8211                 echo 'Strange.  Maybe "uname -n" will work...'
8212                 if tans=`sh -c 'uname -n' 2>&1` ; then
8213                         myhostname=$tans
8214                         phostname='uname -n'
8215                 else
8216                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8217                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8218                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8219                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8220                         else
8221                                 case "$myhostname" in
8222                                 '') echo "Does this machine have an identity crisis or something?"
8223                                         phostname='';;
8224                                 *)
8225                                         echo "Well, you said $myhostname before..."
8226                                         phostname='echo $myhostname';;
8227                                 esac
8228                         fi
8229                 fi
8230         fi
8231 fi
8232 case "$myhostname" in
8233 '') myhostname=noname ;;
8234 esac
8235 : you do not want to know about this
8236 set $myhostname
8237 myhostname=$1
8238
8239 : verify guess
8240 if $test "$myhostname" ; then
8241         dflt=y
8242         rp='Your host name appears to be "'$myhostname'".'" Right?"
8243         . ./myread
8244         case "$ans" in
8245         y*) ;;
8246         *) myhostname='';;
8247         esac
8248 fi
8249
8250 : bad guess or no guess
8251 while $test "X$myhostname" = X ; do
8252         dflt=''
8253         rp="Please type the (one word) name of your host:"
8254         . ./myread
8255         myhostname="$ans"
8256 done
8257
8258 : translate upper to lower if necessary
8259 case "$myhostname" in
8260 *[A-Z]*)
8261         echo "(Normalizing case in your host name)"
8262         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8263         ;;
8264 esac
8265
8266 case "$myhostname" in
8267 *.*)
8268         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8269         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8270         echo "(Trimming domain name from host name--host name is now $myhostname)"
8271         ;;
8272 *) case "$mydomain" in
8273         '')
8274                 {
8275                         test "X$hostcat" = "Xypcat hosts" &&
8276                         ypmatch "$myhostname" hosts 2>/dev/null |\
8277                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8278                         $test -s hosts
8279                 } || {
8280                         test "X$hostcat" != "X" &&
8281                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8282                                         /[       ]$myhostname[  . ]/p" > hosts
8283                 }
8284                 tmp_re="[       . ]"
8285                 if $test -f hosts; then
8286                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8287                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8288                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8289                                 hosts | $sort | $uniq | \
8290                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8291                         case `$echo X$dflt` in
8292                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8293                                 dflt=.
8294                                 ;;
8295                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8296                                 ;;
8297                         esac
8298                 else
8299                         echo "(I cannot locate a hosts database anywhere)"
8300                         dflt=.
8301                 fi
8302                 case "$dflt" in
8303                 .)
8304                         tans=`./loc resolv.conf X /etc /usr/etc`
8305                         if $test -f "$tans"; then
8306                                 echo "(Attempting domain name extraction from $tans)"
8307                                 dflt=.`$sed -n -e 's/   / /g' \
8308                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8309                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8310                                 case "$dflt" in
8311                                 .) dflt=.`$sed -n -e 's/        / /g' \
8312                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8313                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8314                                         ;;
8315                                 esac
8316                         fi
8317                         ;;
8318                 esac
8319                 case "$dflt" in
8320                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8321                         dflt=.`sh -c domainname 2>/dev/null`
8322                         case "$dflt" in
8323                         '') dflt='.';;
8324                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8325                         esac
8326                         ;;
8327                 esac
8328                 case "$dflt$osname" in
8329                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8330                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8331                         ;;
8332                 esac
8333                 case "$dflt" in
8334                 .) echo "(Lost all hope -- silly guess then)"
8335                         dflt='.nonet'
8336                         ;;
8337                 esac
8338                 $rm -f hosts
8339                 ;;
8340         *) dflt="$mydomain";;
8341         esac;;
8342 esac
8343 echo " "
8344 rp="What is your domain name?"
8345 . ./myread
8346 tans="$ans"
8347 case "$ans" in
8348 '') ;;
8349 .*) ;;
8350 *) tans=".$tans";;
8351 esac
8352 mydomain="$tans"
8353
8354 : translate upper to lower if necessary
8355 case "$mydomain" in
8356 *[A-Z]*)
8357         echo "(Normalizing case in your domain name)"
8358         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8359         ;;
8360 esac
8361
8362 : a little sanity check here
8363 case "$phostname" in
8364 '') ;;
8365 *)
8366         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8367         $myhostname$mydomain|$myhostname) ;;
8368         *)
8369                 case "$phostname" in
8370                 sed*)
8371                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8372                         ;;
8373                 *)
8374                         echo "(That doesn't agree with your $phostname command, by the way.)"
8375                         ;;
8376                 esac
8377         ;;
8378         esac
8379         ;;
8380 esac
8381
8382 $cat <<EOM
8383
8384 I need to get your e-mail address in Internet format if possible, i.e.
8385 something like user@host.domain. Please answer accurately since I have
8386 no easy means to double check it. The default value provided below
8387 is most probably close to reality but may not be valid from outside
8388 your organization...
8389
8390 EOM
8391 cont=x
8392 while test "$cont"; do
8393         case "$cf_email" in
8394         '') dflt="$cf_by@$myhostname$mydomain";;
8395         *) dflt="$cf_email";;
8396         esac
8397         rp='What is your e-mail address?'
8398         . ./myread
8399         cf_email="$ans"
8400         case "$cf_email" in
8401         *@*.*) cont='' ;;
8402         *)
8403                 rp='Address does not look like an Internet one.  Use it anyway?'
8404                 case "$fastread" in
8405                 yes) dflt=y ;;
8406                 *) dflt=n ;;
8407                 esac
8408                 . ./myread
8409                 case "$ans" in
8410                 y*) cont='' ;;
8411                 *) echo " " ;;
8412                 esac
8413                 ;;
8414         esac
8415 done
8416
8417 $cat <<EOM
8418
8419 If you or somebody else will be maintaining perl at your site, please
8420 fill in the correct e-mail address here so that they may be contacted
8421 if necessary. Currently, the "perlbug" program included with perl
8422 will send mail to this address in addition to perlbug@perl.org. You may
8423 enter "none" for no administrator.
8424
8425 EOM
8426 case "$perladmin" in
8427 '') dflt="$cf_email";;
8428 *) dflt="$perladmin";;
8429 esac
8430 rp='Perl administrator e-mail address'
8431 . ./myread
8432 perladmin="$ans"
8433
8434 : determine whether to only install version-specific parts.
8435 echo " "
8436 $cat <<EOM
8437 Do you want to install only the version-specific parts of the perl
8438 distribution?  Usually you do *not* want to do this.
8439 EOM
8440 case "$versiononly" in
8441 "$define"|[Yy]*|true) dflt='y' ;;
8442 *) dflt='n';
8443 esac
8444 rp="Do you want to install only the version-specific parts of perl?"
8445 . ./myread
8446 case "$ans" in
8447 [yY]*)  val="$define";;
8448 *)      val="$undef" ;;
8449 esac
8450 set versiononly
8451 eval $setvar
8452
8453 case "$versiononly" in
8454 "$define") inc_version_list=''
8455            inc_version_list_init=0
8456            ;;
8457 esac
8458
8459 : figure out how to guarantee perl startup
8460 case "$startperl" in
8461 '')
8462         case "$sharpbang" in
8463         *!)
8464                 $cat <<EOH
8465
8466 I can use the #! construct to start perl on your system. This will
8467 make startup of perl scripts faster, but may cause problems if you
8468 want to share those scripts and perl is not in a standard place
8469 ($binexp/perl) on all your platforms. The alternative is to force
8470 a shell by starting the script with a single ':' character.
8471
8472 EOH
8473                 case "$versiononly" in
8474                 "$define")      dflt="$binexp/perl$version";;  
8475                 *)              dflt="$binexp/perl";;
8476                 esac
8477                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8478                 . ./myread
8479                 case "$ans" in
8480                 none)   startperl=": # use perl";;
8481                 *)      startperl="#!$ans"
8482                         if $test 30 -lt `echo "$ans" | wc -c`; then
8483                                 $cat >&4 <<EOM
8484
8485 WARNING:  Some systems limit the #! command to 32 characters.
8486 If you experience difficulty running Perl scripts with #!, try
8487 installing Perl in a directory with a shorter pathname.
8488
8489 EOM
8490                         fi ;;
8491                 esac
8492                 ;;
8493         *) startperl=": # use perl"
8494                 ;;
8495         esac
8496         ;;
8497 esac
8498 echo "I'll use $startperl to start perl scripts."
8499
8500 : figure best path for perl in scripts
8501 case "$perlpath" in
8502 '')
8503         case "$versiononly" in
8504         "$define")      perlpath="$binexp/perl$version";;
8505         *)              perlpath="$binexp/perl";;
8506         esac
8507         case "$startperl" in
8508         *!*) ;;
8509         *)
8510                 $cat <<EOH
8511
8512 I will use the "eval 'exec'" idiom to start Perl on your system.
8513 I can use the full path of your Perl binary for this purpose, but
8514 doing so may cause problems if you want to share those scripts and
8515 Perl is not always in a standard place ($binexp/perl).
8516
8517 EOH
8518                 dflt="$binexp/perl"
8519                 rp="What path shall I use in \"eval 'exec'\"?"
8520                 . ./myread
8521                 perlpath="$ans"
8522                 ;;
8523         esac
8524         ;;
8525 esac
8526 case "$startperl" in
8527 *!*)    ;;
8528 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8529 esac
8530
8531 : determine where public executable scripts go
8532 set scriptdir scriptdir
8533 eval $prefixit
8534 case "$scriptdir" in
8535 '')
8536         dflt="$bin"
8537         : guess some guesses
8538         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8539         $test -d /usr/share/bin     && dflt=/usr/share/bin
8540         $test -d /usr/local/script  && dflt=/usr/local/script
8541         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8542         $test -d $prefixexp/script  && dflt=$prefixexp/script
8543         set dflt
8544         eval $prefixup
8545         ;;
8546 *)  dflt="$scriptdir"
8547         ;;
8548 esac
8549 $cat <<EOM
8550  
8551 Some installations have a separate directory just for executable scripts so
8552 that they can mount it across multiple architectures but keep the scripts in
8553 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8554 Or you might just lump your scripts in with all your other executables.
8555  
8556 EOM
8557 fn=d~
8558 rp='Where do you keep publicly executable scripts?'
8559 . ./getfile
8560 if $test "X$ansexp" != "X$scriptdirexp"; then
8561         installscript=''
8562 fi
8563 scriptdir="$ans"
8564 scriptdirexp="$ansexp"
8565 : Change installation prefix, if necessary.
8566 if $test X"$prefix" != X"$installprefix"; then
8567         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8568 else
8569         installscript="$scriptdirexp"
8570 fi
8571
8572 : determine where add-on public executables go
8573 case "$sitebin" in
8574 '')     dflt=$siteprefix/bin ;;
8575 *)      dflt=$sitebin ;;
8576 esac
8577 fn=d~
8578 rp='Pathname where the add-on public executables should be installed?'
8579 . ./getfile
8580 sitebin="$ans"
8581 sitebinexp="$ansexp"
8582 : Change installation prefix, if necessary.
8583 if $test X"$prefix" != X"$installprefix"; then
8584         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8585 else
8586         installsitebin="$sitebinexp"
8587 fi
8588
8589 : define an is-a-typedef? function
8590 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8591 case "$inclist" in
8592 "") inclist="sys/types.h";;
8593 esac;
8594 eval "varval=\$$var";
8595 case "$varval" in
8596 "")
8597         $rm -f temp.c;
8598         for inc in $inclist; do
8599                 echo "#include <$inc>" >>temp.c;
8600         done;
8601         echo "#ifdef $type" >> temp.c;
8602         echo "printf(\"We have $type\");" >> temp.c;
8603         echo "#endif" >> temp.c;
8604         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8605         if $contains $type temp.E >/dev/null 2>&1; then
8606                 eval "$var=\$type";
8607         else
8608                 eval "$var=\$def";
8609         fi;
8610         $rm -f temp.?;;
8611 *) eval "$var=\$varval";;
8612 esac'
8613
8614 : define an is-a-typedef? function that prompts if the type is not available.
8615 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8616 case "$inclist" in
8617 "") inclist="sys/types.h";;
8618 esac;
8619 eval "varval=\$$var";
8620 case "$varval" in
8621 "")
8622         $rm -f temp.c;
8623         for inc in $inclist; do
8624                 echo "#include <$inc>" >>temp.c;
8625         done;
8626         echo "#ifdef $type" >> temp.c;
8627         echo "printf(\"We have $type\");" >> temp.c;
8628         echo "#endif" >> temp.c;
8629         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8630         echo " " ;
8631         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8632         if $contains $type temp.E >/dev/null 2>&1; then
8633                 echo "$type found." >&4;
8634                 eval "$var=\$type";
8635         else
8636                 echo "$type NOT found." >&4;
8637                 dflt="$def";
8638                 . ./myread ;
8639                 eval "$var=\$ans";
8640         fi;
8641         $rm -f temp.?;;
8642 *) eval "$var=\$varval";;
8643 esac'
8644
8645 : see what type lseek is declared as in the kernel
8646 rp="What is the type used for lseek's offset on this system?"
8647 set off_t lseektype long stdio.h sys/types.h
8648 eval $typedef_ask
8649
8650 echo " "
8651 echo "Checking to see how big your file offsets are..." >&4
8652 $cat >try.c <<EOCP
8653 #include <sys/types.h>
8654 #include <stdio.h>
8655 int main()
8656 {
8657     printf("%d\n", (int)sizeof($lseektype));
8658     return(0); 
8659 }
8660 EOCP
8661 set try
8662 if eval $compile_ok; then
8663         lseeksize=`$run ./try`
8664         echo "Your file offsets are $lseeksize bytes long."
8665 else
8666         dflt=$longsize
8667         echo " "
8668         echo "(I can't seem to compile the test program.  Guessing...)"
8669         rp="What is the size of your file offsets (in bytes)?"
8670         . ./myread
8671         lseeksize="$ans"
8672 fi
8673 $rm -f try.c try
8674
8675 : see what type file positions are declared as in the library
8676 rp="What is the type for file position used by fsetpos()?"
8677 set fpos_t fpostype long stdio.h sys/types.h
8678 eval $typedef_ask
8679
8680 echo " "
8681 case "$fpostype" in
8682 *_t) zzz="$fpostype"    ;;
8683 *)   zzz="fpos_t"       ;;
8684 esac
8685 echo "Checking the size of $zzz..." >&4 
8686 cat > try.c <<EOCP
8687 #include <sys/types.h>
8688 #include <stdio.h>
8689 int main() {
8690     printf("%d\n", (int)sizeof($fpostype));
8691     exit(0);
8692 }
8693 EOCP
8694 set try
8695 if eval $compile_ok; then
8696         yyy=`$run ./try`
8697         case "$yyy" in
8698         '')     fpossize=4
8699                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8700                 ;;
8701         *)      fpossize=$yyy
8702                 echo "Your $zzz is $fpossize bytes long."
8703                 ;;
8704         esac
8705 else
8706         dflt="$longsize"
8707         echo " " >&4
8708         echo "(I can't compile the test program.  Guessing...)" >&4
8709         rp="What is the size of your file positions (in bytes)?"
8710         . ./myread
8711         fpossize="$ans"
8712 fi
8713
8714
8715
8716 # Backward compatibility (uselfs is deprecated).
8717 case "$uselfs" in
8718 "$define"|true|[yY]*)
8719         cat <<EOM >&4
8720
8721 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8722 EOM
8723         uselargefiles="$define"
8724         ;;
8725 esac                          
8726
8727 case "$lseeksize:$fpossize" in
8728 8:8) cat <<EOM
8729
8730 You can have files larger than 2 gigabytes.
8731 EOM
8732    val="$define" ;;
8733 *)    case "$uselargefiles" in
8734    "$undef"|false|[nN]*) dflt='n' ;;
8735    *)   dflt='y' ;;
8736    esac
8737    cat <<EOM
8738
8739 Perl can be built to understand large files (files larger than 2 gigabytes)
8740 on some systems.  To do so, Configure can be run with -Duselargefiles.
8741
8742 If this doesn't make any sense to you, just accept the default '$dflt'.
8743 EOM
8744    rp='Try to understand large files, if available?'
8745    . ./myread
8746    case "$ans" in
8747    y|Y)         val="$define" ;;
8748    *)           val="$undef"  ;;
8749    esac
8750    ;;
8751 esac
8752 set uselargefiles
8753 eval $setvar
8754 case "$uselargefiles" in
8755 "$define")
8756 : Look for a hint-file generated 'call-back-unit'.  If the
8757 : user has specified that a large files perl is to be built,
8758 : we may need to set or change some other defaults.
8759         if $test -f uselargefiles.cbu; then
8760                 echo "Your platform has some specific hints for large file builds, using them..."
8761                 . ./uselargefiles.cbu
8762                 echo " "
8763                 echo "Rechecking to see how big your file offsets are..." >&4
8764                 $cat >try.c <<EOCP
8765 #include <sys/types.h>
8766 #include <stdio.h>
8767 int main()
8768 {
8769     printf("%d\n", (int)sizeof($lseektype));
8770     return(0); 
8771 }
8772 EOCP
8773                 set try
8774                 if eval $compile_ok; then
8775                         lseeksize=`$run ./try`
8776                         $echo "Your file offsets are now $lseeksize bytes long."
8777                 else
8778                         dflt="$lseeksize"
8779                         echo " "
8780                         echo "(I can't seem to compile the test program.  Guessing...)"
8781                         rp="What is the size of your file offsets (in bytes)?"
8782                         . ./myread
8783                         lseeksize="$ans"
8784                 fi
8785                 case "$fpostype" in
8786                 *_t) zzz="$fpostype"    ;;
8787                 *)   zzz="fpos_t"       ;;
8788                 esac
8789                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8790                 $cat > try.c <<EOCP
8791 #include <sys/types.h>
8792 #include <stdio.h>
8793 int main() {
8794     printf("%d\n", (int)sizeof($fpostype));
8795     exit(0);
8796 }
8797 EOCP
8798                 set try
8799                 if eval $compile_ok; then
8800                         yyy=`$run ./try`
8801                         dflt="$lseeksize"
8802                         case "$yyy" in
8803                         '')     echo " "
8804                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8805                                 ;;
8806                         *)      fpossize=$yyy
8807                                 echo " $fpossize bytes." >&4
8808                                 ;;
8809                         esac
8810                 else
8811                         dflt="$fpossize"
8812                         echo " "
8813                         echo "(I can't compile the test program.  Guessing...)" >&4
8814                         rp="What is the size of your file positions (in bytes)?"
8815                         . ./myread
8816                         fpossize="$ans"
8817                 fi
8818                 $rm -f try.c try
8819         fi
8820         ;;
8821 esac
8822
8823 case "$vendorprefix" in
8824 '')     d_vendorbin="$undef"
8825         vendorbin=''
8826         vendorbinexp=''
8827         ;;
8828 *)      d_vendorbin="$define"
8829         : determine where vendor-supplied executables go.
8830         case "$vendorbin" in
8831         '') dflt=$vendorprefix/bin ;;
8832         *)      dflt="$vendorbin" ;;
8833         esac
8834         fn=d~+
8835         rp='Pathname for the vendor-supplied executables directory?'
8836         . ./getfile
8837         vendorbin="$ans"
8838         vendorbinexp="$ansexp"
8839         ;;
8840 esac
8841 : Change installation prefix, if necessary.
8842 if $test X"$prefix" != X"$installprefix"; then
8843         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8844 else
8845         installvendorbin="$vendorbinexp"
8846 fi
8847
8848 : see if qgcvt exists
8849 set qgcvt d_qgcvt
8850 eval $inlibc
8851
8852 : Check how to convert floats to strings.
8853
8854 if test "X$d_Gconvert" = X; then
8855
8856 echo " "
8857 echo "Checking for an efficient way to convert floats to strings."
8858 echo " " > try.c
8859 case "$uselongdouble" in
8860 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8861 esac
8862 case "$d_longdbl" in
8863 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8864 esac
8865 case "$d_PRIgldbl" in
8866 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8867 esac
8868 $cat >>try.c <<EOP
8869 #ifdef TRY_gconvert
8870 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8871 char *myname = "gconvert";
8872 #endif
8873 #ifdef TRY_gcvt
8874 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8875 char *myname = "gcvt";
8876 #endif
8877 #ifdef TRY_qgcvt
8878 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8879 char *myname = "qgcvt";
8880 #define DOUBLETYPE long double
8881 #endif
8882 #ifdef TRY_sprintf
8883 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8884 #ifdef HAS_PRIgldbl
8885 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8886 #else
8887 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8888 #endif
8889 #else
8890 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8891 #endif
8892 char *myname = "sprintf";
8893 #endif
8894
8895 #ifndef DOUBLETYPE
8896 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8897 #define DOUBLETYPE long double
8898 #else
8899 #define DOUBLETYPE double
8900 #endif
8901 #endif
8902
8903 #include <stdio.h>
8904
8905 #define I_STDLIB $i_stdlib
8906 #ifdef I_STDLIB
8907 #include <stdlib.h>
8908 #endif
8909
8910 int
8911 checkit(expect, got)
8912 char *expect;
8913 char *got;
8914 {
8915     if (strcmp(expect, got)) {
8916                 printf("%s oddity:  Expected %s, got %s\n",
8917                         myname, expect, got);
8918                 exit(1);
8919         }
8920 }
8921
8922 int main()
8923
8924         char buf[64]; 
8925         buf[63] = '\0';
8926
8927         /* This must be 1st test on (which?) platform */
8928         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8929         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8930         checkit("0.1", buf);
8931
8932         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
8933         checkit("0.01", buf);
8934
8935         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
8936         checkit("0.001", buf);
8937
8938         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
8939         checkit("0.0001", buf);
8940
8941         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8942         if (strlen(buf) > 5)
8943             checkit("9e-005", buf); /* for Microsoft ?? */
8944         else
8945             checkit("9e-05", buf);
8946
8947         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8948         checkit("1", buf);
8949
8950         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8951         checkit("1.1", buf);
8952
8953         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8954         checkit("1.01", buf);
8955
8956         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8957         checkit("1.001", buf);
8958
8959         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8960         checkit("1.0001", buf);
8961
8962         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8963         checkit("1.00001", buf);
8964
8965         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8966         checkit("1.000001", buf);
8967
8968         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8969         checkit("0", buf);
8970
8971         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8972         checkit("-1", buf);
8973
8974         /* Some Linux gcvt's give 1.e+5 here. */
8975         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8976         checkit("100000", buf);
8977         
8978         /* Some Linux gcvt's give -1.e+5 here. */
8979         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8980         checkit("-100000", buf);
8981
8982         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8983         checkit("123.456", buf);
8984
8985         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8986         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
8987         /* 34 should be enough to scare even long double
8988          * places into using the e notation. */
8989         if (strlen(buf) > 5)
8990             checkit("1e+034", buf); /* for Microsoft */
8991         else
8992             checkit("1e+34", buf);
8993
8994         /* For Perl, if you add additional tests here, also add them to
8995          * t/base/num.t for benefit of platforms not using Configure or
8996          * overriding d_Gconvert */
8997
8998         exit(0);
8999 }
9000 EOP
9001 : first add preferred functions to our list
9002 xxx_list=""
9003 for xxx_convert in $gconvert_preference; do
9004     case $xxx_convert in
9005     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9006     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9007     esac 
9008 done
9009 : then add any others
9010 for xxx_convert in gconvert gcvt sprintf; do
9011     case "$xxx_list" in
9012     *$xxx_convert*) ;;
9013     *) xxx_list="$xxx_list $xxx_convert" ;;
9014     esac 
9015 done
9016
9017 case "$d_longdbl$uselongdouble" in
9018 "$define$define")
9019     : again, add prefered functions to our list first
9020     xxx_ld_list=""
9021     for xxx_convert in $gconvert_ld_preference; do
9022         case $xxx_convert in
9023         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9024         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9025         esac
9026     done
9027     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9028     for xxx_convert in qgcvt sprintf $xxx_list; do
9029         case "$xxx_ld_list" in
9030         $xxx_convert*|*" $xxx_convert"*) ;;
9031         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9032         esac
9033     done
9034     : if sprintf cannot do long doubles, move it to the end
9035     if test "$d_PRIgldbl" != "$define"; then
9036         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9037     fi
9038     : if no qgcvt, remove it
9039     if test "$d_qgcvt" != "$define"; then
9040         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9041     fi
9042     : use the ld_list
9043     xxx_list="$xxx_ld_list"
9044     ;;
9045 esac
9046
9047 for xxx_convert in $xxx_list; do
9048         echo "Trying $xxx_convert..."
9049         $rm -f try try$_o
9050         set try -DTRY_$xxx_convert
9051         if eval $compile; then
9052                 echo "$xxx_convert() found." >&4
9053                 if $run ./try; then
9054                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9055                         break;
9056                 else
9057                         echo "...But $xxx_convert didn't work as I expected."
9058                         xxx_convert=''
9059                 fi
9060         else
9061                 echo "$xxx_convert NOT found." >&4
9062         fi
9063 done
9064
9065 if test X$xxx_convert = X; then
9066     echo "*** WHOA THERE!!! ***" >&4
9067     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9068     xxx_convert=sprintf
9069 fi
9070
9071 case "$xxx_convert" in
9072 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9073 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9074 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9075 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9076    "$define$define$define")
9077       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9078    "$define$define$undef")
9079       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9080    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9081    esac
9082    ;;  
9083 esac
9084
9085 fi
9086
9087 : see if _fwalk exists
9088 set fwalk d__fwalk
9089 eval $inlibc
9090
9091 : Initialize h_fcntl
9092 h_fcntl=false
9093
9094 : Initialize h_sysfile
9095 h_sysfile=false
9096
9097 : access call always available on UNIX
9098 set access d_access
9099 eval $inlibc
9100
9101 : locate the flags for 'access()'
9102 case "$d_access" in
9103 "$define")
9104         echo " "
9105         $cat >access.c <<'EOCP'
9106 #include <sys/types.h>
9107 #ifdef I_FCNTL
9108 #include <fcntl.h>
9109 #endif
9110 #ifdef I_SYS_FILE
9111 #include <sys/file.h>
9112 #endif
9113 #ifdef I_UNISTD
9114 #include <unistd.h>
9115 #endif
9116 int main() {
9117         exit(R_OK);
9118 }
9119 EOCP
9120         : check sys/file.h first, no particular reason here
9121         if $test `./findhdr sys/file.h` && \
9122                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9123                 h_sysfile=true;
9124                 echo "<sys/file.h> defines the *_OK access constants." >&4
9125         elif $test `./findhdr fcntl.h` && \
9126                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9127                 h_fcntl=true;
9128                 echo "<fcntl.h> defines the *_OK access constants." >&4
9129         elif $test `./findhdr unistd.h` && \
9130                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9131                 echo "<unistd.h> defines the *_OK access constants." >&4
9132         else
9133                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9134         fi
9135         ;;
9136 esac
9137 $rm -f access*
9138
9139 : see if accessx exists
9140 set accessx d_accessx
9141 eval $inlibc
9142
9143 : see if alarm exists
9144 set alarm d_alarm
9145 eval $inlibc
9146
9147 : see if POSIX threads are available
9148 set pthread.h i_pthread
9149 eval $inhdr
9150
9151 : define a fucntion to check prototypes
9152 $cat > protochk <<EOSH
9153 $startsh
9154 cc="$cc"
9155 optimize="$optimize"
9156 ccflags="$ccflags"
9157 prototype="$prototype"
9158 define="$define"
9159 rm=$rm
9160 usethreads=$usethreads
9161 i_pthread=$i_pthread
9162 pthread_h_first=$pthread_h_first
9163 EOSH
9164
9165 $cat >> protochk <<'EOSH'
9166
9167 $rm -f try.c
9168 foo="$1"
9169 shift
9170 while test $# -ge 2; do
9171         case "$1" in
9172                 $define) echo "#include <$2>" >> try.c ;;
9173                 literal) echo "$2" >> try.c ;;
9174         esac
9175     # Extra magic for the benefit of systems that need pthread.h
9176     # to be included early to correctly detect threadsafe functions.
9177     # Such functions must guarantee themselves, though, that the usethreads
9178     # and i_pthread have been defined, before calling protochk.
9179     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9180         echo "#include <pthread.h>" >> try.c
9181         pthread_h_done=yes
9182     fi
9183     shift 2
9184 done
9185 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9186 cat >> try.c <<'EOCP'
9187 #ifdef CAN_PROTOTYPE
9188 #define _(args) args
9189 #else
9190 #define _(args) ()
9191 #endif
9192 EOCP
9193 echo "$foo" >> try.c
9194 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9195 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9196 status=$?
9197 $rm -f try.[co]
9198 exit $status
9199 EOSH
9200 chmod +x protochk
9201 $eunicefix protochk
9202
9203 : see if sys/types.h has to be included
9204 set sys/types.h i_systypes
9205 eval $inhdr
9206
9207 : see if sys/select.h has to be included
9208 set sys/select.h i_sysselct
9209 eval $inhdr
9210
9211 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9212 while $test $# -ge 2; do
9213         case "$1" in
9214         $define) echo "#include <$2>";;
9215         esac ;
9216     shift 2;
9217 done > try.c;
9218 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9219 set try;
9220 if eval $compile; then
9221         val="$define";
9222 else
9223         val="$undef";
9224 fi;
9225 set $varname;
9226 eval $setvar;
9227 $rm -f try.c try.o'
9228
9229 : see if we should include time.h, sys/time.h, or both
9230 echo " "
9231 if test "X$timeincl" = X; then
9232         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9233         $echo $n "I'm now running the test program...$c"
9234         $cat >try.c <<'EOCP'
9235 #include <sys/types.h>
9236 #ifdef I_TIME
9237 #include <time.h>
9238 #endif
9239 #ifdef I_SYSTIME
9240 #ifdef SYSTIMEKERNEL
9241 #define KERNEL
9242 #endif
9243 #include <sys/time.h>
9244 #endif
9245 #ifdef I_SYSSELECT
9246 #include <sys/select.h>
9247 #endif
9248 int main()
9249 {
9250         struct tm foo;
9251 #ifdef S_TIMEVAL
9252         struct timeval bar;
9253 #endif
9254 #ifdef S_TIMEZONE
9255         struct timezone tzp;
9256 #endif
9257         if (foo.tm_sec == foo.tm_sec)
9258                 exit(0);
9259 #ifdef S_TIMEVAL
9260         if (bar.tv_sec == bar.tv_sec)
9261                 exit(0);
9262 #endif
9263         exit(1);
9264 }
9265 EOCP
9266         flags=''
9267         for s_timezone in '-DS_TIMEZONE' ''; do
9268         sysselect=''
9269         for s_timeval in '-DS_TIMEVAL' ''; do
9270         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9271         for i_time in '' '-DI_TIME'; do
9272         for i_systime in '-DI_SYSTIME' ''; do
9273                 case "$flags" in
9274                 '') $echo $n ".$c"
9275                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9276                         if eval $compile; then
9277                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9278                                 shift
9279                                 flags="$*"
9280                                 echo " "
9281                                 $echo $n "Succeeded with $flags$c"
9282                         fi
9283                         ;;
9284                 esac
9285         done
9286         done
9287         done
9288         done
9289         done
9290         timeincl=''
9291         echo " "
9292         case "$flags" in
9293         *SYSTIMEKERNEL*) i_systimek="$define"
9294                 timeincl=`./findhdr sys/time.h`
9295                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9296         *) i_systimek="$undef";;
9297         esac
9298         case "$flags" in
9299         *I_TIME*) i_time="$define"
9300                 timeincl=`./findhdr time.h`" $timeincl"
9301                 echo "We'll include <time.h>." >&4;;
9302         *) i_time="$undef";;
9303         esac
9304         case "$flags" in
9305         *I_SYSTIME*) i_systime="$define"
9306                 timeincl=`./findhdr sys/time.h`" $timeincl"
9307                 echo "We'll include <sys/time.h>." >&4;;
9308         *) i_systime="$undef";;
9309         esac
9310         $rm -f try.c try
9311 fi
9312 : see if struct tm knows about tm_zone
9313 case "$i_systime$i_time" in
9314 *$define*) 
9315         echo " "
9316         echo "Checking to see if your struct tm has tm_zone field..." >&4
9317         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9318         eval $hasfield
9319         ;;
9320 *)      val="$undef"
9321         set d_tm_tm_zone
9322         eval $setvar
9323         ;;
9324 esac
9325 case "$d_tm_tm_zone" in
9326 "$define")      echo "Yes, it does."   ;;
9327 *)              echo "No, it doesn't." ;;
9328 esac
9329 : see if struct tm knows about tm_gmtoff
9330 case "$i_systime$i_time" in
9331 *$define*) 
9332         echo " "
9333         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9334         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9335         eval $hasfield
9336         ;;
9337 *)      val="$undef"
9338         set d_tm_tm_gmtoff
9339         eval $setvar
9340         ;;
9341 esac
9342 case "$d_tm_tm_gmtoff" in
9343 "$define")      echo "Yes, it does."   ;;
9344 *)              echo "No, it doesn't." ;;
9345 esac
9346
9347 : see if asctime_r exists
9348 set asctime_r d_asctime_r
9349 eval $inlibc
9350 case "$d_asctime_r" in
9351 "$define")
9352         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9353         case "$d_asctime_r_proto:$usethreads" in
9354         ":define")      d_asctime_r_proto=define
9355                 set d_asctime_r_proto asctime_r $hdrs
9356                 eval $hasproto ;;
9357         *)      ;;
9358         esac
9359         case "$d_asctime_r_proto" in
9360         define)
9361         case "$asctime_r_proto" in
9362         ''|0) try='char* asctime_r(const struct tm*, char*);'
9363         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9364         esac
9365         case "$asctime_r_proto" in
9366         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9367         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9368         esac
9369         case "$asctime_r_proto" in
9370         ''|0) try='int asctime_r(const struct tm*, char*);'
9371         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9372         esac
9373         case "$asctime_r_proto" in
9374         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9375         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9376         esac
9377         case "$asctime_r_proto" in
9378         ''|0)   d_asctime_r=undef
9379                 asctime_r_proto=0
9380                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9381         * )     case "$asctime_r_proto" in
9382                 REENTRANT_PROTO*) ;;
9383                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9384                 esac
9385                 echo "Prototype: $try" ;;
9386         esac
9387         ;;
9388         *)      case "$usethreads" in
9389                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9390                 esac
9391                 d_asctime_r=undef
9392                 asctime_r_proto=0
9393                 ;;
9394         esac
9395         ;;
9396 *)      asctime_r_proto=0
9397         ;;
9398 esac
9399
9400 : see if atolf exists
9401 set atolf d_atolf
9402 eval $inlibc
9403
9404 : see if atoll exists
9405 set atoll d_atoll
9406 eval $inlibc
9407
9408 : Look for GNU-cc style attribute checking
9409 echo " "
9410 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9411 $cat >attrib.c <<'EOCP'
9412 #include <stdio.h>
9413 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9414 EOCP
9415 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9416         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9417                 echo "Your C compiler doesn't fully support __attribute__."
9418                 val="$undef"
9419         else
9420                 echo "Your C compiler supports __attribute__."
9421                 val="$define"
9422         fi
9423 else
9424         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9425         val="$undef"
9426 fi
9427 set d_attribut
9428 eval $setvar
9429 $rm -f attrib*
9430
9431 : see if bcmp exists
9432 set bcmp d_bcmp
9433 eval $inlibc
9434
9435 : see if bcopy exists
9436 set bcopy d_bcopy
9437 eval $inlibc
9438
9439 : see if this is a unistd.h system
9440 set unistd.h i_unistd
9441 eval $inhdr
9442
9443 : see if getpgrp exists
9444 set getpgrp d_getpgrp
9445 eval $inlibc
9446
9447 case "$d_getpgrp" in
9448 "$define")
9449         echo " "
9450         echo "Checking to see which flavor of getpgrp is in use..."
9451         $cat >try.c <<EOP
9452 #$i_unistd I_UNISTD
9453 #include <sys/types.h>
9454 #ifdef I_UNISTD
9455 #  include <unistd.h>
9456 #endif
9457 int main()
9458 {
9459         if (getuid() == 0) {
9460                 printf("(I see you are running Configure as super-user...)\n");
9461                 setuid(1);
9462         }
9463 #ifdef TRY_BSD_PGRP
9464         if (getpgrp(1) == 0)
9465                 exit(0);
9466 #else
9467         if (getpgrp() > 0)
9468                 exit(0);
9469 #endif
9470         exit(1);
9471 }
9472 EOP
9473         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9474                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9475                 val="$define"
9476         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9477                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9478                 val="$undef"
9479         else
9480                 echo "I can't seem to compile and run the test program."
9481                 if ./usg; then
9482                         xxx="a USG one, i.e. you use getpgrp()."
9483                 else
9484                         # SVR4 systems can appear rather BSD-ish.
9485                         case "$i_unistd" in
9486                         $undef)
9487                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9488                                 val="$define"
9489                                 ;;
9490                         $define)
9491                                 xxx="probably a USG one, i.e. you use getpgrp()."
9492                                 val="$undef"
9493                                 ;;
9494                         esac
9495                 fi
9496                 echo "Assuming your getpgrp is $xxx" >&4
9497         fi
9498         ;;
9499 *) val="$undef";;
9500 esac
9501 set d_bsdgetpgrp
9502 eval $setvar
9503 $rm -f try try.*
9504
9505 : see if setpgrp exists
9506 set setpgrp d_setpgrp
9507 eval $inlibc
9508
9509 case "$d_setpgrp" in
9510 "$define")
9511         echo " "
9512         echo "Checking to see which flavor of setpgrp is in use..."
9513         $cat >try.c <<EOP
9514 #$i_unistd I_UNISTD
9515 #include <sys/types.h>
9516 #ifdef I_UNISTD
9517 #  include <unistd.h>
9518 #endif
9519 int main()
9520 {
9521         if (getuid() == 0) {
9522                 printf("(I see you are running Configure as super-user...)\n");
9523                 setuid(1);
9524         }
9525 #ifdef TRY_BSD_PGRP
9526         if (-1 == setpgrp(1, 1))
9527                 exit(0);
9528 #else
9529         if (setpgrp() != -1)
9530                 exit(0);
9531 #endif
9532         exit(1);
9533 }
9534 EOP
9535         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9536                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9537                 val="$define"
9538         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9539                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9540                 val="$undef"
9541         else
9542                 echo "(I can't seem to compile and run the test program.)"
9543                 if ./usg; then
9544                         xxx="a USG one, i.e. you use setpgrp()."
9545                 else
9546                         # SVR4 systems can appear rather BSD-ish.
9547                         case "$i_unistd" in
9548                         $undef)
9549                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9550                                 val="$define"
9551                                 ;;
9552                         $define)
9553                                 xxx="probably a USG one, i.e. you use setpgrp()."
9554                                 val="$undef"
9555                                 ;;
9556                         esac
9557                 fi
9558                 echo "Assuming your setpgrp is $xxx" >&4
9559         fi
9560         ;;
9561 *) val="$undef";;
9562 esac
9563 set d_bsdsetpgrp
9564 eval $setvar
9565 $rm -f try try.*
9566 : see if bzero exists
9567 set bzero d_bzero
9568 eval $inlibc
9569
9570 : see if signal is declared as pointer to function returning int or void
9571 echo " "
9572 xxx=`./findhdr signal.h`
9573 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9574 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9575         echo "You have int (*signal())() instead of void." >&4
9576         val="$undef"
9577 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9578         echo "You have void (*signal())()." >&4
9579         val="$define"
9580 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9581         echo "You have int (*signal())() instead of void." >&4
9582         val="$undef"
9583 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9584         echo "You have void (*signal())()." >&4
9585         val="$define"
9586 else
9587         case "$d_voidsig" in
9588         '')
9589         echo "I can't determine whether signal handler returns void or int..." >&4
9590                 dflt=void
9591                 rp="What type does your signal handler return?"
9592                 . ./myread
9593                 case "$ans" in
9594                 v*) val="$define";;
9595                 *) val="$undef";;
9596                 esac;;
9597         "$define")
9598                 echo "As you already told me, signal handler returns void." >&4
9599                 val="$define"
9600                 ;;
9601         *)      echo "As you already told me, signal handler returns int." >&4
9602                 val="$undef"
9603                 ;;
9604         esac
9605 fi
9606 set d_voidsig
9607 eval $setvar
9608 case "$d_voidsig" in
9609 "$define") signal_t="void";;
9610 *) signal_t="int";;
9611 esac
9612 $rm -f $$.tmp
9613
9614 : check for ability to cast large floats to 32-bit ints.
9615 echo " "
9616 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9617 if $test "$intsize" -ge 4; then
9618         xxx=int
9619 else
9620         xxx=long
9621 fi
9622 $cat >try.c <<EOCP
9623 #include <stdio.h>
9624 #include <sys/types.h>
9625 #include <signal.h>
9626 $signal_t blech(s) int s; { exit(3); }
9627 int main()
9628 {
9629         $xxx i32;
9630         double f, g;
9631         int result = 0;
9632         char str[16];
9633         signal(SIGFPE, blech);
9634
9635         /* Don't let compiler optimize the test away.  Store the number 
9636            in a writable string for gcc to pass to sscanf under HP/UX.
9637         */
9638         sprintf(str, "2147483647");
9639         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9640         g = 10 * f;
9641         i32  = ($xxx) g;
9642
9643         /* x86 processors will probably give 0x8000 0000, which is a
9644        sign change.  We don't want that.  We want to mimic SPARC
9645            behavior here, which is to preserve the sign and give
9646            back 0x7fff ffff.
9647         */
9648         if (i32 != ($xxx) f)
9649                 result |= 1;
9650         exit(result);
9651 }
9652 EOCP
9653 set try
9654 if eval $compile_ok; then
9655         $run ./try
9656         yyy=$?
9657 else
9658         echo "(I can't seem to compile the test program--assuming it can't)"
9659         yyy=1
9660 fi
9661 case "$yyy" in
9662 0)      val="$define"
9663         echo "Yup, it can."
9664         ;;
9665 *)      val="$undef"
9666         echo "Nope, it can't."
9667         ;;
9668 esac
9669 set d_casti32
9670 eval $setvar
9671 $rm -f try try.*
9672
9673 : check for ability to cast negative floats to unsigned
9674 echo " "
9675 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9676 $cat >try.c <<EOCP
9677 #include <stdio.h>
9678 #include <sys/types.h>
9679 #include <signal.h>
9680 $signal_t blech(s) int s; { exit(7); }
9681 $signal_t blech_in_list(s) int s; { exit(4); }
9682 unsigned long dummy_long(p) unsigned long p; { return p; }
9683 unsigned int dummy_int(p) unsigned int p; { return p; }
9684 unsigned short dummy_short(p) unsigned short p; { return p; }
9685 int main()
9686 {
9687         double f;
9688         unsigned long along;
9689         unsigned int aint;
9690         unsigned short ashort;
9691         int result = 0;
9692         char str[16];
9693         
9694         /* Frustrate gcc-2.7.2's optimizer which failed this test with
9695            a direct f = -123. assignment.  gcc-2.8.0 reportedly
9696            optimized the whole file away
9697         */
9698         /* Store the number in a writable string for gcc to pass to 
9699            sscanf under HP/UX.
9700         */
9701         sprintf(str, "-123");
9702         sscanf(str, "%lf", &f);  /* f = -123.; */
9703
9704         signal(SIGFPE, blech);
9705         along = (unsigned long)f;
9706         aint = (unsigned int)f;
9707         ashort = (unsigned short)f;
9708         if (along != (unsigned long)-123)
9709                 result |= 1;
9710         if (aint != (unsigned int)-123)
9711                 result |= 1;
9712         if (ashort != (unsigned short)-123)
9713                 result |= 1;
9714         sprintf(str, "1073741824.");
9715         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9716         f = f + f;
9717         along = 0;
9718         along = (unsigned long)f;
9719         if (along != 0x80000000)
9720                 result |= 2;
9721         f -= 1.;
9722         along = 0;
9723         along = (unsigned long)f;
9724         if (along != 0x7fffffff)
9725                 result |= 1;
9726         f += 2.;
9727         along = 0;
9728         along = (unsigned long)f;
9729         if (along != 0x80000001)
9730                 result |= 2;
9731         if (result)
9732                 exit(result);
9733         signal(SIGFPE, blech_in_list);
9734         sprintf(str, "123.");
9735         sscanf(str, "%lf", &f);  /* f = 123.; */
9736         along = dummy_long((unsigned long)f);
9737         aint = dummy_int((unsigned int)f);
9738         ashort = dummy_short((unsigned short)f);
9739         if (along != (unsigned long)123)
9740                 result |= 4;
9741         if (aint != (unsigned int)123)
9742                 result |= 4;
9743         if (ashort != (unsigned short)123)
9744                 result |= 4;
9745         exit(result);
9746
9747 }
9748 EOCP
9749 set try
9750 if eval $compile_ok; then
9751         $run ./try
9752         castflags=$?
9753 else
9754         echo "(I can't seem to compile the test program--assuming it can't)"
9755         castflags=7
9756 fi
9757 case "$castflags" in
9758 0)      val="$define"
9759         echo "Yup, it can."
9760         ;;
9761 *)      val="$undef"
9762         echo "Nope, it can't."
9763         ;;
9764 esac
9765 set d_castneg
9766 eval $setvar
9767 $rm -f try.*
9768
9769 : see if vprintf exists
9770 echo " "
9771 if set vprintf val -f d_vprintf; eval $csym; $val; then
9772         echo 'vprintf() found.' >&4
9773         val="$define"
9774         $cat >try.c <<'EOF'
9775 #include <varargs.h>
9776
9777 int main() { xxx("foo"); }
9778
9779 xxx(va_alist)
9780 va_dcl
9781 {
9782         va_list args;
9783         char buf[10];
9784
9785         va_start(args);
9786         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9787 }
9788 EOF
9789         set try
9790         if eval $compile && $run ./try; then
9791                 echo "Your vsprintf() returns (int)." >&4
9792                 val2="$undef"
9793         else
9794                 echo "Your vsprintf() returns (char*)." >&4
9795                 val2="$define"
9796         fi
9797 else
9798         echo 'vprintf() NOT found.' >&4
9799                 val="$undef"
9800                 val2="$undef"
9801 fi
9802 $rm -f try try.*
9803 set d_vprintf
9804 eval $setvar
9805 val=$val2
9806 set d_charvspr
9807 eval $setvar
9808
9809 : see if chown exists
9810 set chown d_chown
9811 eval $inlibc
9812
9813 : see if chroot exists
9814 set chroot d_chroot
9815 eval $inlibc
9816
9817 : see if chsize exists
9818 set chsize d_chsize
9819 eval $inlibc
9820
9821 : see if class exists
9822 set class d_class
9823 eval $inlibc
9824
9825 hasstruct='varname=$1; struct=$2; shift; shift;
9826 while $test $# -ge 2; do
9827         case "$1" in
9828         $define) echo "#include <$2>";;
9829         esac ;
9830     shift 2;
9831 done > try.c;
9832 echo "int main () { struct $struct foo; }" >> try.c;
9833 set try;
9834 if eval $compile; then
9835         val="$define";
9836 else
9837         val="$undef";
9838 fi;
9839 set $varname;
9840 eval $setvar;
9841 $rm -f try.c try.o'
9842
9843 socketlib=''
9844 sockethdr=''
9845 : see whether socket exists
9846 echo " "
9847 $echo $n "Hmm... $c" >&4
9848 if set socket val -f d_socket; eval $csym; $val; then
9849         echo "Looks like you have Berkeley networking support." >&4
9850         d_socket="$define"
9851         if set setsockopt val -f; eval $csym; $val; then
9852                 d_oldsock="$undef"
9853         else
9854                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9855                 d_oldsock="$define"
9856         fi
9857 else
9858         if $contains socklib libc.list >/dev/null 2>&1; then
9859                 echo "Looks like you have Berkeley networking support." >&4
9860                 d_socket="$define"
9861                 : we will have to assume that it supports the 4.2 BSD interface
9862                 d_oldsock="$undef"
9863         else
9864                 echo "You don't have Berkeley networking in libc$_a..." >&4
9865                 if test "X$d_socket" = "X$define"; then
9866                    echo "...but you seem to believe that you have sockets." >&4
9867                 else
9868                         for net in net socket
9869                         do
9870                                 if test -f /usr/lib/lib$net$_a; then
9871                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9872                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9873                                         if $contains socket libc.list >/dev/null 2>&1; then
9874                                                 d_socket="$define"
9875                                                 socketlib="-l$net"
9876                                                 case "$net" in
9877                                                 net)
9878                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9879                                                         sockethdr="-I/usr/netinclude"
9880                                                         ;;
9881                                                 esac
9882                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
9883                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9884                                                         d_oldsock="$undef"
9885                                                 else
9886                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9887                                                         d_oldsock="$define"
9888                                                 fi
9889                                                 break
9890                                         fi
9891                                 fi
9892                         done
9893                         if test "X$d_socket" != "X$define"; then
9894                            echo "or anywhere else I see." >&4
9895                            d_socket="$undef"
9896                            d_oldsock="$undef"
9897                         fi
9898                 fi
9899         fi
9900 fi
9901
9902 : see if socketpair exists
9903 set socketpair d_sockpair
9904 eval $inlibc
9905
9906
9907 echo " "
9908 echo "Checking the availability of certain socket constants..." >&4
9909 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9910         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9911         $cat >try.c <<EOF
9912 #include <sys/types.h>
9913 #include <sys/socket.h>
9914 int main() {
9915     int i = $ENUM;
9916 }
9917 EOF
9918         val="$undef"
9919         set try; if eval $compile; then
9920                 val="$define"
9921         fi
9922         set d_${enum}; eval $setvar
9923         $rm -f try.c try
9924 done
9925
9926 : see if this is a sys/uio.h system
9927 set sys/uio.h i_sysuio
9928 eval $inhdr
9929
9930
9931 echo " "
9932 echo "Checking to see if your system supports struct cmsghdr..." >&4
9933 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9934 eval $hasstruct
9935 case "$d_cmsghdr_s" in
9936 "$define")      echo "Yes, it does."   ;;
9937 *)              echo "No, it doesn't." ;;
9938 esac
9939
9940
9941 : check for const keyword
9942 echo " "
9943 echo 'Checking to see if your C compiler knows about "const"...' >&4
9944 $cat >const.c <<'EOCP'
9945 typedef struct spug { int drokk; } spug;
9946 main()
9947 {
9948         const char *foo;
9949         const spug y;
9950 }
9951 EOCP
9952 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9953         val="$define"
9954         echo "Yup, it does."
9955 else
9956         val="$undef"
9957         echo "Nope, it doesn't."
9958 fi
9959 set d_const
9960 eval $setvar
9961
9962 : see if crypt exists
9963 echo " "
9964 set crypt d_crypt
9965 eval $inlibc
9966 case "$d_crypt" in
9967 $define) cryptlib='' ;;
9968 *)      if set crypt val -f d_crypt; eval $csym; $val; then
9969                 echo 'crypt() found.' >&4
9970                 val="$define"
9971                 cryptlib=''
9972         else
9973                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9974                 if $test -z "$cryptlib"; then
9975                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9976                 else
9977                         cryptlib=-lcrypt
9978                 fi
9979                 if $test -z "$cryptlib"; then
9980                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9981                 else
9982                         cryptlib=-lcrypt
9983                 fi
9984                 if $test -z "$cryptlib"; then
9985                         cryptlib=`./loc libcrypt$_a "" $libpth`
9986                 else
9987                         cryptlib=-lcrypt
9988                 fi
9989                 if $test -z "$cryptlib"; then
9990                         echo 'crypt() NOT found.' >&4
9991                         val="$undef"
9992                 else
9993                         val="$define"
9994                 fi
9995         fi
9996         set d_crypt
9997         eval $setvar
9998         ;;
9999 esac
10000
10001 : see if this is a crypt.h system
10002 set crypt.h i_crypt
10003 eval $inhdr
10004
10005 : see if crypt_r exists
10006 set crypt_r d_crypt_r
10007 eval $inlibc
10008 case "$d_crypt_r" in
10009 "$define")
10010         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10011         case "$d_crypt_r_proto:$usethreads" in
10012         ":define")      d_crypt_r_proto=define
10013                 set d_crypt_r_proto crypt_r $hdrs
10014                 eval $hasproto ;;
10015         *)      ;;
10016         esac
10017         case "$d_crypt_r_proto" in
10018         define)
10019         case "$crypt_r_proto" in
10020         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10021         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10022         esac
10023         case "$crypt_r_proto" in
10024         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10025         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10026         esac
10027         case "$crypt_r_proto" in
10028         ''|0)   d_crypt_r=undef
10029                 crypt_r_proto=0
10030                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10031         * )     case "$crypt_r_proto" in
10032                 REENTRANT_PROTO*) ;;
10033                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10034                 esac
10035                 echo "Prototype: $try" ;;
10036         esac
10037         ;;
10038         *)      case "$usethreads" in
10039                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10040                 esac
10041                 d_crypt_r=undef
10042                 crypt_r_proto=0
10043                 ;;
10044         esac
10045         ;;
10046 *)      crypt_r_proto=0
10047         ;;
10048 esac
10049
10050 : get csh whereabouts
10051 case "$csh" in
10052 'csh') val="$undef" ;;
10053 *) val="$define" ;;
10054 esac
10055 set d_csh
10056 eval $setvar
10057 : Respect a hint or command line value for full_csh.
10058 case "$full_csh" in
10059 '') full_csh=$csh ;;
10060 esac
10061
10062 : see if ctermid_r exists
10063 set ctermid_r d_ctermid_r
10064 eval $inlibc
10065 case "$d_ctermid_r" in
10066 "$define")
10067         hdrs="$i_systypes sys/types.h define stdio.h "
10068         case "$d_ctermid_r_proto:$usethreads" in
10069         ":define")      d_ctermid_r_proto=define
10070                 set d_ctermid_r_proto ctermid_r $hdrs
10071                 eval $hasproto ;;
10072         *)      ;;
10073         esac
10074         case "$d_ctermid_r_proto" in
10075         define)
10076         case "$ctermid_r_proto" in
10077         ''|0) try='char* ctermid_r(char*);'
10078         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10079         esac
10080         case "$ctermid_r_proto" in
10081         ''|0)   d_ctermid_r=undef
10082                 ctermid_r_proto=0
10083                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10084         * )     case "$ctermid_r_proto" in
10085                 REENTRANT_PROTO*) ;;
10086                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10087                 esac
10088                 echo "Prototype: $try" ;;
10089         esac
10090         ;;
10091         *)      case "$usethreads" in
10092                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10093                 esac
10094                 d_ctermid_r=undef
10095                 ctermid_r_proto=0
10096                 ;;
10097         esac
10098         ;;
10099 *)      ctermid_r_proto=0
10100         ;;
10101 esac
10102
10103 : see if ctime_r exists
10104 set ctime_r d_ctime_r
10105 eval $inlibc
10106 case "$d_ctime_r" in
10107 "$define")
10108         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10109         case "$d_ctime_r_proto:$usethreads" in
10110         ":define")      d_ctime_r_proto=define
10111                 set d_ctime_r_proto ctime_r $hdrs
10112                 eval $hasproto ;;
10113         *)      ;;
10114         esac
10115         case "$d_ctime_r_proto" in
10116         define)
10117         case "$ctime_r_proto" in
10118         ''|0) try='char* ctime_r(const time_t*, char*);'
10119         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10120         esac
10121         case "$ctime_r_proto" in
10122         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10123         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10124         esac
10125         case "$ctime_r_proto" in
10126         ''|0) try='int ctime_r(const time_t*, char*);'
10127         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10128         esac
10129         case "$ctime_r_proto" in
10130         ''|0) try='int ctime_r(const time_t*, char*, int);'
10131         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10132         esac
10133         case "$ctime_r_proto" in
10134         ''|0)   d_ctime_r=undef
10135                 ctime_r_proto=0
10136                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10137         * )     case "$ctime_r_proto" in
10138                 REENTRANT_PROTO*) ;;
10139                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10140                 esac
10141                 echo "Prototype: $try" ;;
10142         esac
10143         ;;
10144         *)      case "$usethreads" in
10145                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10146                 esac
10147                 d_ctime_r=undef
10148                 ctime_r_proto=0
10149                 ;;
10150         esac
10151         ;;
10152 *)      ctime_r_proto=0
10153         ;;
10154 esac
10155
10156 : see if cuserid exists
10157 set cuserid d_cuserid
10158 eval $inlibc
10159
10160 : see if this is a limits.h system
10161 set limits.h i_limits
10162 eval $inhdr
10163
10164 : see if this is a float.h system
10165 set float.h i_float
10166 eval $inhdr
10167
10168 : See if number of significant digits in a double precision number is known
10169 echo " "
10170 $cat >dbl_dig.c <<EOM
10171 #$i_limits I_LIMITS
10172 #$i_float I_FLOAT
10173 #ifdef I_LIMITS
10174 #include <limits.h>
10175 #endif
10176 #ifdef I_FLOAT
10177 #include <float.h>
10178 #endif
10179 #ifdef DBL_DIG
10180 printf("Contains DBL_DIG");
10181 #endif
10182 EOM
10183 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10184 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10185         echo "DBL_DIG found." >&4
10186         val="$define"
10187 else
10188         echo "DBL_DIG NOT found." >&4
10189         val="$undef"
10190 fi
10191 $rm -f dbl_dig.?
10192 set d_dbl_dig
10193 eval $setvar
10194
10195 : see if dbm.h is available
10196 : see if dbmclose exists
10197 set dbmclose d_dbmclose
10198 eval $inlibc
10199
10200 case "$d_dbmclose" in
10201 $define)
10202         set dbm.h i_dbm
10203         eval $inhdr
10204         case "$i_dbm" in
10205         $define)
10206                 val="$undef"
10207                 set i_rpcsvcdbm
10208                 eval $setvar
10209                 ;;
10210         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10211                 eval $inhdr
10212                 ;;
10213         esac
10214         ;;
10215 *)      echo "We won't be including <dbm.h>"
10216         val="$undef"
10217         set i_dbm
10218         eval $setvar
10219         val="$undef"
10220         set i_rpcsvcdbm
10221         eval $setvar
10222         ;;
10223 esac
10224
10225 : see if prototype for dbminit is available
10226 echo " "
10227 set d_dbminitproto dbminit $i_dbm dbm.h
10228 eval $hasproto
10229
10230 : see if difftime exists
10231 set difftime d_difftime
10232 eval $inlibc
10233
10234 : see if this is a dirent system
10235 echo " "
10236 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10237         val="$define"
10238         echo "<dirent.h> found." >&4
10239 else
10240         val="$undef"
10241         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10242                 echo "<sys/dir.h> found." >&4
10243                 echo " "
10244         else
10245                 xinc=`./findhdr sys/ndir.h`
10246         fi
10247         echo "<dirent.h> NOT found." >&4
10248 fi
10249 set i_dirent
10250 eval $setvar
10251
10252 : Look for type of directory structure.
10253 echo " "
10254 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10255
10256 case "$direntrytype" in
10257 ''|' ')
10258         case "$i_dirent" in
10259         $define) guess1='struct dirent' ;;
10260         *) guess1='struct direct'  ;;
10261         esac
10262         ;;
10263 *)      guess1="$direntrytype"
10264         ;;
10265 esac
10266
10267 case "$guess1" in
10268 'struct dirent') guess2='struct direct' ;;
10269 *) guess2='struct dirent' ;;
10270 esac
10271                 
10272 if $contains "$guess1" try.c >/dev/null 2>&1; then
10273         direntrytype="$guess1"
10274         echo "Your directory entries are $direntrytype." >&4
10275 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10276         direntrytype="$guess2"
10277         echo "Your directory entries seem to be $direntrytype." >&4
10278 else
10279         echo "I don't recognize your system's directory entries." >&4
10280         rp="What type is used for directory entries on this system?"
10281         dflt="$guess1"
10282         . ./myread
10283         direntrytype="$ans"
10284 fi
10285 $rm -f try.c
10286
10287
10288 : see if the directory entry stores field length
10289 echo " "
10290 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10291 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10292         echo "Good, your directory entry keeps length information in d_namlen." >&4
10293         val="$define"
10294 else
10295         echo "Your directory entry does not know about the d_namlen field." >&4
10296         val="$undef"
10297 fi
10298 set d_dirnamlen
10299 eval $setvar
10300 $rm -f try.c
10301
10302 : see if this is an sysdir system
10303 set sys/dir.h i_sysdir
10304 eval $inhdr
10305
10306 : see if this is an sysndir system
10307 set sys/ndir.h i_sysndir
10308 eval $inhdr
10309
10310 : Look for dirfd
10311 echo " "
10312 $cat >dirfd.c <<EOM
10313 #include <stdio.h>
10314 #$i_dirent I_DIRENT             /**/
10315 #$i_sysdir I_SYS_DIR            /**/
10316 #$i_sysndir I_SYS_NDIR          /**/
10317 #$i_systypes I_SYS_TYPES        /**/
10318 #if defined(I_SYS_TYPES)
10319 #include <sys/types.h>
10320 #endif
10321 #if defined(I_DIRENT)
10322 #include <dirent.h>
10323 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10324 #include <sys/dir.h>
10325 #endif
10326 #else
10327 #ifdef I_SYS_NDIR
10328 #include <sys/ndir.h>
10329 #else
10330 #ifdef I_SYS_DIR
10331 #ifdef hp9000s500
10332 #include <ndir.h>       /* may be wrong in the future */
10333 #else
10334 #include <sys/dir.h>
10335 #endif
10336 #endif
10337 #endif
10338 #endif 
10339 int main() {
10340         DIR *dirp = opendir(".");
10341         if (dirfd(dirp) >= 0)
10342                 exit(0);
10343         else
10344                 exit(1);
10345 }
10346 EOM
10347 set dirfd
10348 if eval $compile; then
10349         val="$define"
10350 fi
10351 case "$val" in
10352 $define)        echo "dirfd() found." >&4       ;;
10353 *)              echo "dirfd() NOT found." >&4   ;;
10354 esac
10355 set d_dirfd
10356 eval $setvar
10357 $rm -f dirfd*
10358
10359 : see if dlerror exists
10360 xxx_runnm="$runnm"
10361 runnm=false
10362 set dlerror d_dlerror
10363 eval $inlibc
10364 runnm="$xxx_runnm"
10365
10366 : see if dlfcn is available
10367 set dlfcn.h i_dlfcn
10368 eval $inhdr
10369
10370 case "$usedl" in
10371 $define|y|true)
10372         $cat << EOM
10373
10374 On a few systems, the dynamically loaded modules that perl generates and uses
10375 will need a different extension than shared libs. The default will probably
10376 be appropriate.
10377
10378 EOM
10379         case "$dlext" in
10380         '')     dflt="$so" ;;
10381         *)      dflt="$dlext" ;;
10382         esac
10383         rp='What is the extension of dynamically loaded modules'
10384         . ./myread
10385         dlext="$ans"
10386         ;;
10387 *)
10388         dlext="none"
10389         ;;
10390 esac
10391
10392 : Check if dlsym need a leading underscore
10393 echo " "
10394 val="$undef"
10395
10396 case "$dlsrc" in
10397 dl_dlopen.xs)
10398         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10399         $cat >dyna.c <<'EOM'
10400 fred () { }
10401 EOM
10402
10403 $cat >fred.c<<EOM
10404
10405 #include <stdio.h>
10406 #$i_dlfcn I_DLFCN
10407 #ifdef I_DLFCN
10408 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10409 #else
10410 #include <sys/types.h>
10411 #include <nlist.h>
10412 #include <link.h>
10413 #endif
10414
10415 extern int fred() ;
10416
10417 int main()
10418 {
10419     void * handle ;
10420     void * symbol ;
10421 #ifndef RTLD_LAZY
10422     int mode = 1 ;
10423 #else
10424     int mode = RTLD_LAZY ;
10425 #endif
10426     handle = dlopen("./dyna.$dlext", mode) ;
10427     if (handle == NULL) {
10428         printf ("1\n") ;
10429         fflush (stdout) ;
10430         exit(0);
10431     }
10432     symbol = dlsym(handle, "fred") ;
10433     if (symbol == NULL) {
10434         /* try putting a leading underscore */
10435         symbol = dlsym(handle, "_fred") ;
10436         if (symbol == NULL) {
10437             printf ("2\n") ;
10438             fflush (stdout) ;
10439             exit(0);
10440         }
10441         printf ("3\n") ;
10442     }
10443     else
10444         printf ("4\n") ;
10445     fflush (stdout) ;
10446     exit(0);
10447 }
10448 EOM
10449         : Call the object file tmp-dyna.o in case dlext=o.
10450         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10451                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10452                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10453                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10454                 xxx=`$run ./fred`
10455                 case $xxx in
10456                 1)      echo "Test program failed using dlopen." >&4
10457                         echo "Perhaps you should not use dynamic loading." >&4;;
10458                 2)      echo "Test program failed using dlsym." >&4
10459                         echo "Perhaps you should not use dynamic loading." >&4;;
10460                 3)      echo "dlsym needs a leading underscore" >&4
10461                         val="$define" ;;
10462                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10463                 esac
10464         else
10465                 echo "I can't compile and run the test program." >&4
10466                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10467         fi
10468         ;;
10469 esac
10470                 
10471 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10472
10473 set d_dlsymun
10474 eval $setvar
10475
10476 : see if drand48_r exists
10477 set drand48_r d_drand48_r
10478 eval $inlibc
10479 case "$d_drand48_r" in
10480 "$define")
10481         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10482         case "$d_drand48_r_proto:$usethreads" in
10483         ":define")      d_drand48_r_proto=define
10484                 set d_drand48_r_proto drand48_r $hdrs
10485                 eval $hasproto ;;
10486         *)      ;;
10487         esac
10488         case "$d_drand48_r_proto" in
10489         define)
10490         case "$drand48_r_proto" in
10491         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10492         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10493         esac
10494         case "$drand48_r_proto" in
10495         ''|0)   d_drand48_r=undef
10496                 drand48_r_proto=0
10497                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10498         * )     case "$drand48_r_proto" in
10499                 REENTRANT_PROTO*) ;;
10500                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10501                 esac
10502                 echo "Prototype: $try" ;;
10503         esac
10504         ;;
10505         *)      case "$usethreads" in
10506                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10507                 esac
10508                 d_drand48_r=undef
10509                 drand48_r_proto=0
10510                 ;;
10511         esac
10512         ;;
10513 *)      drand48_r_proto=0
10514         ;;
10515 esac
10516
10517 : see if prototype for drand48 is available
10518 echo " "
10519 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10520 eval $hasproto
10521
10522 : see if dup2 exists
10523 set dup2 d_dup2
10524 eval $inlibc
10525
10526 : see if eaccess exists
10527 set eaccess d_eaccess
10528 eval $inlibc
10529
10530 : see if endgrent exists
10531 set endgrent d_endgrent
10532 eval $inlibc
10533
10534 : see if this is an grp system
10535 set grp.h i_grp
10536 eval $inhdr
10537
10538 case "$i_grp" in
10539 $define)
10540         xxx=`./findhdr grp.h`
10541         $cppstdin $cppflags $cppminus < $xxx >$$.h
10542
10543         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10544                 val="$define"
10545         else
10546                 val="$undef"
10547         fi
10548         set d_grpasswd
10549         eval $setvar
10550
10551         $rm -f $$.h
10552         ;;
10553 *)
10554         val="$undef";
10555         set d_grpasswd; eval $setvar
10556         ;;
10557 esac
10558
10559 : see if endgrent_r exists
10560 set endgrent_r d_endgrent_r
10561 eval $inlibc
10562 case "$d_endgrent_r" in
10563 "$define")
10564         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10565         case "$d_endgrent_r_proto:$usethreads" in
10566         ":define")      d_endgrent_r_proto=define
10567                 set d_endgrent_r_proto endgrent_r $hdrs
10568                 eval $hasproto ;;
10569         *)      ;;
10570         esac
10571         case "$d_endgrent_r_proto" in
10572         define)
10573         case "$endgrent_r_proto" in
10574         ''|0) try='int endgrent_r(FILE**);'
10575         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10576         esac
10577         case "$endgrent_r_proto" in
10578         ''|0) try='void endgrent_r(FILE**);'
10579         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10580         esac
10581         case "$endgrent_r_proto" in
10582         ''|0)   d_endgrent_r=undef
10583                 endgrent_r_proto=0
10584                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10585         * )     case "$endgrent_r_proto" in
10586                 REENTRANT_PROTO*) ;;
10587                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10588                 esac
10589                 echo "Prototype: $try" ;;
10590         esac
10591         ;;
10592         *)      case "$usethreads" in
10593                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
10594                 esac
10595                 d_endgrent_r=undef
10596                 endgrent_r_proto=0
10597                 ;;
10598         esac
10599         ;;
10600 *)      endgrent_r_proto=0
10601         ;;
10602 esac
10603
10604 : see if endhostent exists
10605 set endhostent d_endhent
10606 eval $inlibc
10607
10608 : see if this is a netdb.h system
10609 set netdb.h i_netdb
10610 eval $inhdr
10611
10612 : see if endhostent_r exists
10613 set endhostent_r d_endhostent_r
10614 eval $inlibc
10615 case "$d_endhostent_r" in
10616 "$define")
10617         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10618         case "$d_endhostent_r_proto:$usethreads" in
10619         ":define")      d_endhostent_r_proto=define
10620                 set d_endhostent_r_proto endhostent_r $hdrs
10621                 eval $hasproto ;;
10622         *)      ;;
10623         esac
10624         case "$d_endhostent_r_proto" in
10625         define)
10626         case "$endhostent_r_proto" in
10627         ''|0) try='int endhostent_r(struct hostent_data*);'
10628         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
10629         esac
10630         case "$endhostent_r_proto" in
10631         ''|0) try='void endhostent_r(struct hostent_data*);'
10632         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
10633         esac
10634         case "$endhostent_r_proto" in
10635         ''|0)   d_endhostent_r=undef
10636                 endhostent_r_proto=0
10637                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
10638         * )     case "$endhostent_r_proto" in
10639                 REENTRANT_PROTO*) ;;
10640                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
10641                 esac
10642                 echo "Prototype: $try" ;;
10643         esac
10644         ;;
10645         *)      case "$usethreads" in
10646                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
10647                 esac
10648                 d_endhostent_r=undef
10649                 endhostent_r_proto=0
10650                 ;;
10651         esac
10652         ;;
10653 *)      endhostent_r_proto=0
10654         ;;
10655 esac
10656
10657 : see if endnetent exists
10658 set endnetent d_endnent
10659 eval $inlibc
10660
10661 : see if endnetent_r exists
10662 set endnetent_r d_endnetent_r
10663 eval $inlibc
10664 case "$d_endnetent_r" in
10665 "$define")
10666         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10667         case "$d_endnetent_r_proto:$usethreads" in
10668         ":define")      d_endnetent_r_proto=define
10669                 set d_endnetent_r_proto endnetent_r $hdrs
10670                 eval $hasproto ;;
10671         *)      ;;
10672         esac
10673         case "$d_endnetent_r_proto" in
10674         define)
10675         case "$endnetent_r_proto" in
10676         ''|0) try='int endnetent_r(struct netent_data*);'
10677         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
10678         esac
10679         case "$endnetent_r_proto" in
10680         ''|0) try='void endnetent_r(struct netent_data*);'
10681         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
10682         esac
10683         case "$endnetent_r_proto" in
10684         ''|0)   d_endnetent_r=undef
10685                 endnetent_r_proto=0
10686                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
10687         * )     case "$endnetent_r_proto" in
10688                 REENTRANT_PROTO*) ;;
10689                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
10690                 esac
10691                 echo "Prototype: $try" ;;
10692         esac
10693         ;;
10694         *)      case "$usethreads" in
10695                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
10696                 esac
10697                 d_endnetent_r=undef
10698                 endnetent_r_proto=0
10699                 ;;
10700         esac
10701         ;;
10702 *)      endnetent_r_proto=0
10703         ;;
10704 esac
10705
10706 : see if endprotoent exists
10707 set endprotoent d_endpent
10708 eval $inlibc
10709
10710 : see if endprotoent_r exists
10711 set endprotoent_r d_endprotoent_r
10712 eval $inlibc
10713 case "$d_endprotoent_r" in
10714 "$define")
10715         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10716         case "$d_endprotoent_r_proto:$usethreads" in
10717         ":define")      d_endprotoent_r_proto=define
10718                 set d_endprotoent_r_proto endprotoent_r $hdrs
10719                 eval $hasproto ;;
10720         *)      ;;
10721         esac
10722         case "$d_endprotoent_r_proto" in
10723         define)
10724         case "$endprotoent_r_proto" in
10725         ''|0) try='int endprotoent_r(struct protoent_data*);'
10726         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
10727         esac
10728         case "$endprotoent_r_proto" in
10729         ''|0) try='void endprotoent_r(struct protoent_data*);'
10730         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
10731         esac
10732         case "$endprotoent_r_proto" in
10733         ''|0)   d_endprotoent_r=undef
10734                 endprotoent_r_proto=0
10735                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
10736         * )     case "$endprotoent_r_proto" in
10737                 REENTRANT_PROTO*) ;;
10738                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
10739                 esac
10740                 echo "Prototype: $try" ;;
10741         esac
10742         ;;
10743         *)      case "$usethreads" in
10744                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
10745                 esac
10746                 d_endprotoent_r=undef
10747                 endprotoent_r_proto=0
10748                 ;;
10749         esac
10750         ;;
10751 *)      endprotoent_r_proto=0
10752         ;;
10753 esac
10754
10755 : see if endpwent exists
10756 set endpwent d_endpwent
10757 eval $inlibc
10758
10759 : see if this is a pwd.h system
10760 set pwd.h i_pwd
10761 eval $inhdr
10762
10763 case "$i_pwd" in
10764 $define)
10765         xxx=`./findhdr pwd.h`
10766         $cppstdin $cppflags $cppminus < $xxx >$$.h
10767
10768         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10769                 val="$define"
10770         else
10771                 val="$undef"
10772         fi
10773         set d_pwquota
10774         eval $setvar
10775
10776         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10777                 val="$define"
10778         else
10779                 val="$undef"
10780         fi
10781         set d_pwage
10782         eval $setvar
10783
10784         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10785                 val="$define"
10786         else
10787                 val="$undef"
10788         fi
10789         set d_pwchange
10790         eval $setvar
10791
10792         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10793                 val="$define"
10794         else
10795                 val="$undef"
10796         fi
10797         set d_pwclass
10798         eval $setvar
10799
10800         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10801                 val="$define"
10802         else
10803                 val="$undef"
10804         fi
10805         set d_pwexpire
10806         eval $setvar
10807
10808         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10809                 val="$define"
10810         else
10811                 val="$undef"
10812         fi
10813         set d_pwcomment
10814         eval $setvar
10815
10816         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10817                 val="$define"
10818         else
10819                 val="$undef"
10820         fi
10821         set d_pwgecos
10822         eval $setvar
10823
10824         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10825                 val="$define"
10826         else
10827                 val="$undef"
10828         fi
10829         set d_pwpasswd
10830         eval $setvar
10831
10832         $rm -f $$.h
10833         ;;
10834 *)
10835         val="$undef"; 
10836         set d_pwquota; eval $setvar
10837         set d_pwage; eval $setvar
10838         set d_pwchange; eval $setvar
10839         set d_pwclass; eval $setvar
10840         set d_pwexpire; eval $setvar
10841         set d_pwcomment; eval $setvar
10842         set d_pwgecos; eval $setvar
10843         set d_pwpasswd; eval $setvar
10844         ;;
10845 esac
10846
10847 : see if endpwent_r exists
10848 set endpwent_r d_endpwent_r
10849 eval $inlibc
10850 case "$d_endpwent_r" in
10851 "$define")
10852         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
10853         case "$d_endpwent_r_proto:$usethreads" in
10854         ":define")      d_endpwent_r_proto=define
10855                 set d_endpwent_r_proto endpwent_r $hdrs
10856                 eval $hasproto ;;
10857         *)      ;;
10858         esac
10859         case "$d_endpwent_r_proto" in
10860         define)
10861         case "$endpwent_r_proto" in
10862         ''|0) try='int endpwent_r(FILE**);'
10863         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
10864         esac
10865         case "$endpwent_r_proto" in
10866         ''|0) try='void endpwent_r(FILE**);'
10867         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
10868         esac
10869         case "$endpwent_r_proto" in
10870         ''|0)   d_endpwent_r=undef
10871                 endpwent_r_proto=0
10872                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
10873         * )     case "$endpwent_r_proto" in
10874                 REENTRANT_PROTO*) ;;
10875                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
10876                 esac
10877                 echo "Prototype: $try" ;;
10878         esac
10879         ;;
10880         *)      case "$usethreads" in
10881                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
10882                 esac
10883                 d_endpwent_r=undef
10884                 endpwent_r_proto=0
10885                 ;;
10886         esac
10887         ;;
10888 *)      endpwent_r_proto=0
10889         ;;
10890 esac
10891
10892 : see if endservent exists
10893 set endservent d_endsent
10894 eval $inlibc
10895
10896 : see if endservent_r exists
10897 set endservent_r d_endservent_r
10898 eval $inlibc
10899 case "$d_endservent_r" in
10900 "$define")
10901         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10902         case "$d_endservent_r_proto:$usethreads" in
10903         ":define")      d_endservent_r_proto=define
10904                 set d_endservent_r_proto endservent_r $hdrs
10905                 eval $hasproto ;;
10906         *)      ;;
10907         esac
10908         case "$d_endservent_r_proto" in
10909         define)
10910         case "$endservent_r_proto" in
10911         ''|0) try='int endservent_r(struct servent_data*);'
10912         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
10913         esac
10914         case "$endservent_r_proto" in
10915         ''|0) try='void endservent_r(struct servent_data*);'
10916         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
10917         esac
10918         case "$endservent_r_proto" in
10919         ''|0)   d_endservent_r=undef
10920                 endservent_r_proto=0
10921                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
10922         * )     case "$endservent_r_proto" in
10923                 REENTRANT_PROTO*) ;;
10924                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
10925                 esac
10926                 echo "Prototype: $try" ;;
10927         esac
10928         ;;
10929         *)      case "$usethreads" in
10930                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
10931                 esac
10932                 d_endservent_r=undef
10933                 endservent_r_proto=0
10934                 ;;
10935         esac
10936         ;;
10937 *)      endservent_r_proto=0
10938         ;;
10939 esac
10940
10941 : Locate the flags for 'open()'
10942 echo " "
10943 $cat >try.c <<'EOCP'
10944 #include <sys/types.h>
10945 #ifdef I_FCNTL
10946 #include <fcntl.h>
10947 #endif
10948 #ifdef I_SYS_FILE
10949 #include <sys/file.h>
10950 #endif
10951 int main() {
10952         if(O_RDONLY);
10953 #ifdef O_TRUNC
10954         exit(0);
10955 #else
10956         exit(1);
10957 #endif
10958 }
10959 EOCP
10960 : check sys/file.h first to get FREAD on Sun
10961 if $test `./findhdr sys/file.h` && \
10962                 set try -DI_SYS_FILE && eval $compile; then
10963         h_sysfile=true;
10964         echo "<sys/file.h> defines the O_* constants..." >&4
10965         if $run ./try; then
10966                 echo "and you have the 3 argument form of open()." >&4
10967                 val="$define"
10968         else
10969                 echo "but not the 3 argument form of open().  Oh, well." >&4
10970                 val="$undef"
10971         fi
10972 elif $test `./findhdr fcntl.h` && \
10973                 set try -DI_FCNTL && eval $compile; then
10974         h_fcntl=true;
10975         echo "<fcntl.h> defines the O_* constants..." >&4
10976         if $run ./try; then
10977                 echo "and you have the 3 argument form of open()." >&4
10978                 val="$define"
10979         else
10980                 echo "but not the 3 argument form of open().  Oh, well." >&4
10981                 val="$undef"
10982         fi
10983 else
10984         val="$undef"
10985         echo "I can't find the O_* constant definitions!  You got problems." >&4
10986 fi
10987 set d_open3
10988 eval $setvar
10989 $rm -f try try.*
10990
10991 : see which of string.h or strings.h is needed
10992 echo " "
10993 strings=`./findhdr string.h`
10994 if $test "$strings" && $test -r "$strings"; then
10995         echo "Using <string.h> instead of <strings.h>." >&4
10996         val="$define"
10997 else
10998         val="$undef"
10999         strings=`./findhdr strings.h`
11000         if $test "$strings" && $test -r "$strings"; then
11001                 echo "Using <strings.h> instead of <string.h>." >&4
11002         else
11003                 echo "No string header found -- You'll surely have problems." >&4
11004         fi
11005 fi
11006 set i_string
11007 eval $setvar
11008 case "$i_string" in
11009 "$undef") strings=`./findhdr strings.h`;;
11010 *)        strings=`./findhdr string.h`;;
11011 esac
11012
11013 : see if this is a sys/file.h system
11014 val=''
11015 set sys/file.h val
11016 eval $inhdr
11017
11018 : do we need to include sys/file.h ?
11019 case "$val" in
11020 "$define")
11021         echo " "
11022         if $h_sysfile; then
11023                 val="$define"
11024                 echo "We'll be including <sys/file.h>." >&4
11025         else
11026                 val="$undef"
11027                 echo "We won't be including <sys/file.h>." >&4
11028         fi
11029         ;;
11030 *)
11031         h_sysfile=false
11032         ;;
11033 esac
11034 set i_sysfile
11035 eval $setvar
11036
11037 : see if fcntl.h is there
11038 val=''
11039 set fcntl.h val
11040 eval $inhdr
11041
11042 : see if we can include fcntl.h
11043 case "$val" in
11044 "$define")
11045         echo " "
11046         if $h_fcntl; then
11047                 val="$define"
11048                 echo "We'll be including <fcntl.h>." >&4
11049         else
11050                 val="$undef"
11051                 if $h_sysfile; then
11052         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11053                 else
11054                         echo "We won't be including <fcntl.h>." >&4
11055                 fi
11056         fi
11057         ;;
11058 *)
11059         h_fcntl=false
11060         val="$undef"
11061         ;;
11062 esac
11063 set i_fcntl
11064 eval $setvar
11065
11066 : check for non-blocking I/O stuff
11067 case "$h_sysfile" in
11068 true) echo "#include <sys/file.h>" > head.c;;
11069 *)
11070        case "$h_fcntl" in
11071        true) echo "#include <fcntl.h>" > head.c;;
11072        *) echo "#include <sys/fcntl.h>" > head.c;;
11073        esac
11074        ;;
11075 esac
11076 echo " "
11077 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11078 case "$o_nonblock" in
11079 '')
11080         $cat head.c > try.c
11081         $cat >>try.c <<EOCP
11082 #include <stdio.h>
11083 #include <stdlib.h>
11084 #$i_fcntl I_FCNTL
11085 #ifdef I_FCNTL
11086 #include <fcntl.h>
11087 #endif
11088 int main() {
11089 #ifdef O_NONBLOCK
11090         printf("O_NONBLOCK\n");
11091         exit(0);
11092 #endif
11093 #ifdef O_NDELAY
11094         printf("O_NDELAY\n");
11095         exit(0);
11096 #endif
11097 #ifdef FNDELAY
11098         printf("FNDELAY\n");
11099         exit(0);
11100 #endif
11101         exit(0);
11102 }
11103 EOCP
11104         set try
11105         if eval $compile_ok; then
11106                 o_nonblock=`$run ./try`
11107                 case "$o_nonblock" in
11108                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11109                 *) echo "Seems like we can use $o_nonblock.";;
11110                 esac
11111         else
11112                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11113         fi
11114         ;;
11115 *) echo "Using $hint value $o_nonblock.";;
11116 esac
11117 $rm -f try try.* .out core
11118
11119 echo " "
11120 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11121 case "$eagain" in
11122 '')
11123         $cat head.c > try.c
11124         $cat >>try.c <<EOCP
11125 #include <errno.h>
11126 #include <sys/types.h>
11127 #include <signal.h>
11128 #include <stdio.h> 
11129 #include <stdlib.h> 
11130 #$i_fcntl I_FCNTL
11131 #ifdef I_FCNTL
11132 #include <fcntl.h>
11133 #endif
11134 #define MY_O_NONBLOCK $o_nonblock
11135 #ifndef errno  /* XXX need better Configure test */
11136 extern int errno;
11137 #endif
11138 #$i_unistd I_UNISTD
11139 #ifdef I_UNISTD
11140 #include <unistd.h>
11141 #endif
11142 #$i_string I_STRING
11143 #ifdef I_STRING
11144 #include <string.h>
11145 #else
11146 #include <strings.h>
11147 #endif
11148 $signal_t blech(x) int x; { exit(3); }
11149 EOCP
11150         $cat >> try.c <<'EOCP'
11151 int main()
11152 {
11153         int pd[2];
11154         int pu[2];
11155         char buf[1];
11156         char string[100];
11157
11158         pipe(pd);       /* Down: child -> parent */
11159         pipe(pu);       /* Up: parent -> child */
11160         if (0 != fork()) {
11161                 int ret;
11162                 close(pd[1]);   /* Parent reads from pd[0] */
11163                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11164 #ifdef F_SETFL
11165                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11166                         exit(1);
11167 #else
11168                 exit(4);
11169 #endif
11170                 signal(SIGALRM, blech);
11171                 alarm(5);
11172                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11173                         exit(2);
11174                 sprintf(string, "%d\n", ret);
11175                 write(2, string, strlen(string));
11176                 alarm(0);
11177 #ifdef EAGAIN
11178                 if (errno == EAGAIN) {
11179                         printf("EAGAIN\n");
11180                         goto ok;
11181                 }
11182 #endif
11183 #ifdef EWOULDBLOCK
11184                 if (errno == EWOULDBLOCK)
11185                         printf("EWOULDBLOCK\n");
11186 #endif
11187         ok:
11188                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11189                 sleep(2);                               /* Give it time to close our pipe */
11190                 alarm(5);
11191                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11192                 alarm(0);
11193                 sprintf(string, "%d\n", ret);
11194                 write(4, string, strlen(string));
11195                 exit(0);
11196         }
11197
11198         close(pd[0]);                   /* We write to pd[1] */
11199         close(pu[1]);                   /* We read from pu[0] */
11200         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11201         close(pd[1]);                   /* Pipe pd is now fully closed! */
11202         exit(0);                                /* Bye bye, thank you for playing! */
11203 }
11204 EOCP
11205         set try
11206         if eval $compile_ok; then
11207                 echo "$startsh" >mtry
11208                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11209                 chmod +x mtry
11210                 ./mtry >/dev/null 2>&1
11211                 case $? in
11212                 0) eagain=`$cat try.out`;;
11213                 1) echo "Could not perform non-blocking setting!";;
11214                 2) echo "I did a successful read() for something that was not there!";;
11215                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11216                 4) echo "Could not find F_SETFL!";;
11217                 *) echo "Something terribly wrong happened during testing.";;
11218                 esac
11219                 rd_nodata=`$cat try.ret`
11220                 echo "A read() system call with no data present returns $rd_nodata."
11221                 case "$rd_nodata" in
11222                 0|-1) ;;
11223                 *)
11224                         echo "(That's peculiar, fixing that to be -1.)"
11225                         rd_nodata=-1
11226                         ;;
11227                 esac
11228                 case "$eagain" in
11229                 '')
11230                         echo "Forcing errno EAGAIN on read() with no data available."
11231                         eagain=EAGAIN
11232                         ;;
11233                 *)
11234                         echo "Your read() sets errno to $eagain when no data is available."
11235                         ;;
11236                 esac
11237                 status=`$cat try.err`
11238                 case "$status" in
11239                 0) echo "And it correctly returns 0 to signal EOF.";;
11240                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11241                 *) echo "However, your read() returns '$status' on EOF??";;
11242                 esac
11243                 val="$define"
11244                 if test "$status" = "$rd_nodata"; then
11245                         echo "WARNING: you can't distinguish between EOF and no data!"
11246                         val="$undef"
11247                 fi
11248         else
11249                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11250                 eagain=EAGAIN
11251         fi
11252         set d_eofnblk
11253         eval $setvar
11254         ;;
11255 *)
11256         echo "Using $hint value $eagain."
11257         echo "Your read() returns $rd_nodata when no data is present."
11258         case "$d_eofnblk" in
11259         "$define") echo "And you can see EOF because read() returns 0.";;
11260         "$undef") echo "But you can't see EOF status from read() returned value.";;
11261         *)
11262                 echo "(Assuming you can't see EOF status from read anyway.)"
11263                 d_eofnblk=$undef
11264                 ;;
11265         esac
11266         ;;
11267 esac
11268 $rm -f try try.* .out core head.c mtry
11269
11270 : see if fchdir exists
11271 set fchdir d_fchdir
11272 eval $inlibc
11273
11274 : see if fchmod exists
11275 set fchmod d_fchmod
11276 eval $inlibc
11277
11278 : see if fchown exists
11279 set fchown d_fchown
11280 eval $inlibc
11281
11282 : see if this is an fcntl system
11283 set fcntl d_fcntl
11284 eval $inlibc
11285
11286 echo " "
11287 : See if fcntl-based locking works.
11288 $cat >try.c <<EOCP
11289 #include <stdlib.h>
11290 #include <unistd.h>
11291 #include <fcntl.h>
11292 #include <signal.h>
11293 $signal_t blech(x) int x; { exit(3); }
11294 int main() {
11295 #if defined(F_SETLK) && defined(F_SETLKW)
11296      struct flock flock;
11297      int retval, fd;
11298      fd = open("try.c", O_RDONLY);
11299      flock.l_type = F_RDLCK;
11300      flock.l_whence = SEEK_SET;
11301      flock.l_start = flock.l_len = 0;
11302      signal(SIGALRM, blech);
11303      alarm(10);
11304      retval = fcntl(fd, F_SETLK, &flock);
11305      close(fd);
11306      (retval < 0 ? exit(2) : exit(0));
11307 #else
11308      exit(2);
11309 #endif
11310 }
11311 EOCP
11312 echo "Checking if fcntl-based file locking works... "
11313 case "$d_fcntl" in
11314 "$define")
11315         set try
11316         if eval $compile_ok; then
11317                 if $run ./try; then
11318                         echo "Yes, it seems to work."
11319                         val="$define"
11320                 else
11321                         echo "Nope, it didn't work."
11322                         val="$undef"
11323                         case "$?" in
11324                         3) $cat >&4 <<EOM
11325 ***
11326 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11327 *** This is (almost) impossible.
11328 *** If your NFS lock daemons are not feeling well, something like
11329 *** this may happen, please investigate.  Cannot continue, aborting.
11330 ***
11331 EOM
11332                                 exit 1
11333                                 ;;
11334                         esac
11335                 fi
11336         else
11337                 echo "I'm unable to compile the test program, so I'll assume not."
11338                 val="$undef"
11339         fi
11340         ;;
11341 *) val="$undef";
11342         echo "Nope, since you don't even have fcntl()."
11343         ;;
11344 esac
11345 set d_fcntl_can_lock
11346 eval $setvar
11347 $rm -f try*
11348
11349
11350 : check for fd_set items
11351 $cat <<EOM
11352
11353 Checking to see how well your C compiler handles fd_set and friends ...
11354 EOM
11355 $cat >try.c <<EOCP
11356 #$i_systime I_SYS_TIME
11357 #$i_sysselct I_SYS_SELECT
11358 #$d_socket HAS_SOCKET
11359 #include <sys/types.h>
11360 #ifdef HAS_SOCKET
11361 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11362 #endif
11363 #ifdef I_SYS_TIME
11364 #include <sys/time.h>
11365 #endif
11366 #ifdef I_SYS_SELECT
11367 #include <sys/select.h>
11368 #endif
11369 int main() {
11370         fd_set fds;
11371
11372 #ifdef TRYBITS
11373         if(fds.fds_bits);
11374 #endif
11375
11376 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11377         exit(0);
11378 #else
11379         exit(1);
11380 #endif
11381 }
11382 EOCP
11383 set try -DTRYBITS
11384 if eval $compile; then
11385         d_fds_bits="$define"
11386         d_fd_set="$define"
11387         echo "Well, your system knows about the normal fd_set typedef..." >&4
11388         if $run ./try; then
11389                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11390                 d_fd_macros="$define"
11391         else
11392                 $cat >&4 <<'EOM'
11393 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
11394 EOM
11395                 d_fd_macros="$undef"
11396         fi
11397 else
11398         $cat <<'EOM'
11399 Hmm, your compiler has some difficulty with fd_set.  Checking further...
11400 EOM
11401         set try
11402         if eval $compile; then
11403                 d_fds_bits="$undef"
11404                 d_fd_set="$define"
11405                 echo "Well, your system has some sort of fd_set available..." >&4
11406                 if $run ./try; then
11407                         echo "and you have the normal fd_set macros." >&4
11408                         d_fd_macros="$define"
11409                 else
11410                         $cat <<'EOM'
11411 but not the normal fd_set macros!  Gross!  More work for me...
11412 EOM
11413                         d_fd_macros="$undef"
11414                 fi
11415         else
11416         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
11417                 d_fd_set="$undef"
11418                 d_fds_bits="$undef"
11419                 d_fd_macros="$undef"
11420         fi
11421 fi
11422 $rm -f try try.*
11423
11424 : see if fgetpos exists
11425 set fgetpos d_fgetpos
11426 eval $inlibc
11427
11428 : see if finite exists
11429 set finite d_finite
11430 eval $inlibc
11431
11432 : see if finitel exists
11433 set finitel d_finitel
11434 eval $inlibc
11435
11436 : see if flock exists
11437 set flock d_flock
11438 eval $inlibc
11439
11440 : see if prototype for flock is available
11441 echo " "
11442 set d_flockproto flock $i_sysfile sys/file.h
11443 eval $hasproto
11444
11445 : see if fork exists
11446 set fork d_fork
11447 eval $inlibc
11448
11449 : see if fp_class exists
11450 set fp_class d_fp_class
11451 eval $inlibc
11452
11453 : see if pathconf exists
11454 set pathconf d_pathconf
11455 eval $inlibc
11456
11457 : see if fpathconf exists
11458 set fpathconf d_fpathconf
11459 eval $inlibc
11460
11461 : see if fpclass exists
11462 set fpclass d_fpclass
11463 eval $inlibc
11464
11465 : see if fpclassify exists
11466 set fpclassify d_fpclassify
11467 eval $inlibc
11468
11469 : see if fpclassl exists
11470 set fpclassl d_fpclassl
11471 eval $inlibc
11472
11473
11474 : check for fpos64_t
11475 echo " "
11476 echo "Checking to see if you have fpos64_t..." >&4
11477 $cat >try.c <<EOCP
11478 #include <stdio.h>
11479 int main() { fpos64_t x = 7; }
11480 EOCP
11481 set try
11482 if eval $compile; then
11483         val="$define"
11484         echo "You have fpos64_t."
11485 else
11486         val="$undef"
11487         echo "You do not have fpos64_t."
11488         case "$fpossize" in
11489         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11490         esac
11491 fi
11492 $rm -f try.* try
11493 set d_fpos64_t
11494 eval $setvar
11495
11496 : see if frexpl exists
11497 set frexpl d_frexpl
11498 eval $inlibc
11499
11500 : see if this is a sys/param system
11501 set sys/param.h i_sysparam
11502 eval $inhdr
11503
11504 : see if this is a sys/mount.h system
11505 set sys/mount.h i_sysmount
11506 eval $inhdr
11507
11508
11509 echo " "
11510 echo "Checking to see if your system supports struct fs_data..." >&4
11511 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11512 eval $hasstruct
11513 case "$d_fs_data_s" in
11514 "$define")      echo "Yes, it does."   ;;
11515 *)              echo "No, it doesn't." ;;
11516 esac
11517
11518 : see if fseeko exists
11519 set fseeko d_fseeko
11520 eval $inlibc
11521 case "$longsize" in
11522 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11523 esac
11524
11525 : see if fsetpos exists
11526 set fsetpos d_fsetpos
11527 eval $inlibc
11528
11529
11530 : see if fstatfs exists
11531 set fstatfs d_fstatfs
11532 eval $inlibc
11533
11534
11535 : see if statvfs exists
11536 set statvfs d_statvfs
11537 eval $inlibc
11538
11539 : see if fstatvfs exists
11540 set fstatvfs d_fstatvfs
11541 eval $inlibc
11542
11543
11544 : see if fsync exists
11545 set fsync d_fsync
11546 eval $inlibc
11547
11548 : see if ftello exists
11549 set ftello d_ftello
11550 eval $inlibc
11551 case "$longsize" in
11552 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11553 esac
11554
11555 : see if getcwd exists
11556 set getcwd d_getcwd
11557 eval $inlibc
11558
11559 : see if getespwnam exists
11560 set getespwnam d_getespwnam
11561 eval $inlibc
11562
11563
11564 : see if getfsstat exists
11565 set getfsstat d_getfsstat
11566 eval $inlibc
11567
11568 : see if getgrent exists
11569 set getgrent d_getgrent
11570 eval $inlibc
11571
11572 : see if getgrent_r exists
11573 set getgrent_r d_getgrent_r
11574 eval $inlibc
11575 case "$d_getgrent_r" in
11576 "$define")
11577         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11578         case "$d_getgrent_r_proto:$usethreads" in
11579         ":define")      d_getgrent_r_proto=define
11580                 set d_getgrent_r_proto getgrent_r $hdrs
11581                 eval $hasproto ;;
11582         *)      ;;
11583         esac
11584         case "$d_getgrent_r_proto" in
11585         define)
11586         case "$getgrent_r_proto" in
11587         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
11588         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
11589         esac
11590         case "$getgrent_r_proto" in
11591         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
11592         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
11593         esac
11594         case "$getgrent_r_proto" in
11595         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
11596         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
11597         esac
11598         case "$getgrent_r_proto" in
11599         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
11600         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
11601         esac
11602         case "$getgrent_r_proto" in
11603         ''|0) try='int getgrent_r(struct group*, char*, int);'
11604         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
11605         esac
11606         case "$getgrent_r_proto" in
11607         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
11608         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
11609         esac
11610         case "$getgrent_r_proto" in
11611         ''|0)   d_getgrent_r=undef
11612                 getgrent_r_proto=0
11613                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
11614         * )     case "$getgrent_r_proto" in
11615                 REENTRANT_PROTO*) ;;
11616                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
11617                 esac
11618                 echo "Prototype: $try" ;;
11619         esac
11620         ;;
11621         *)      case "$usethreads" in
11622                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
11623                 esac
11624                 d_getgrent_r=undef
11625                 getgrent_r_proto=0
11626                 ;;
11627         esac
11628         ;;
11629 *)      getgrent_r_proto=0
11630         ;;
11631 esac
11632
11633 : see if getgrgid_r exists
11634 set getgrgid_r d_getgrgid_r
11635 eval $inlibc
11636 case "$d_getgrgid_r" in
11637 "$define")
11638         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11639         case "$d_getgrgid_r_proto:$usethreads" in
11640         ":define")      d_getgrgid_r_proto=define
11641                 set d_getgrgid_r_proto getgrgid_r $hdrs
11642                 eval $hasproto ;;
11643         *)      ;;
11644         esac
11645         case "$d_getgrgid_r_proto" in
11646         define)
11647         case "$getgrgid_r_proto" in
11648         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
11649         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
11650         esac
11651         case "$getgrgid_r_proto" in
11652         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
11653         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
11654         esac
11655         case "$getgrgid_r_proto" in
11656         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
11657         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
11658         esac
11659         case "$getgrgid_r_proto" in
11660         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
11661         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
11662         esac
11663         case "$getgrgid_r_proto" in
11664         ''|0)   d_getgrgid_r=undef
11665                 getgrgid_r_proto=0
11666                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
11667         * )     case "$getgrgid_r_proto" in
11668                 REENTRANT_PROTO*) ;;
11669                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
11670                 esac
11671                 echo "Prototype: $try" ;;
11672         esac
11673         ;;
11674         *)      case "$usethreads" in
11675                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
11676                 esac
11677                 d_getgrgid_r=undef
11678                 getgrgid_r_proto=0
11679                 ;;
11680         esac
11681         ;;
11682 *)      getgrgid_r_proto=0
11683         ;;
11684 esac
11685
11686 : see if getgrnam_r exists
11687 set getgrnam_r d_getgrnam_r
11688 eval $inlibc
11689 case "$d_getgrnam_r" in
11690 "$define")
11691         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11692         case "$d_getgrnam_r_proto:$usethreads" in
11693         ":define")      d_getgrnam_r_proto=define
11694                 set d_getgrnam_r_proto getgrnam_r $hdrs
11695                 eval $hasproto ;;
11696         *)      ;;
11697         esac
11698         case "$d_getgrnam_r_proto" in
11699         define)
11700         case "$getgrnam_r_proto" in
11701         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
11702         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
11703         esac
11704         case "$getgrnam_r_proto" in
11705         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
11706         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
11707         esac
11708         case "$getgrnam_r_proto" in
11709         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
11710         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
11711         esac
11712         case "$getgrnam_r_proto" in
11713         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
11714         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
11715         esac
11716         case "$getgrnam_r_proto" in
11717         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
11718         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
11719         esac
11720         case "$getgrnam_r_proto" in
11721         ''|0)   d_getgrnam_r=undef
11722                 getgrnam_r_proto=0
11723                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
11724         * )     case "$getgrnam_r_proto" in
11725                 REENTRANT_PROTO*) ;;
11726                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
11727                 esac
11728                 echo "Prototype: $try" ;;
11729         esac
11730         ;;
11731         *)      case "$usethreads" in
11732                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
11733                 esac
11734                 d_getgrnam_r=undef
11735                 getgrnam_r_proto=0
11736                 ;;
11737         esac
11738         ;;
11739 *)      getgrnam_r_proto=0
11740         ;;
11741 esac
11742
11743 : see if gethostbyaddr exists
11744 set gethostbyaddr d_gethbyaddr
11745 eval $inlibc
11746
11747 : see if gethostbyname exists
11748 set gethostbyname d_gethbyname
11749 eval $inlibc
11750
11751 : see if gethostent exists
11752 set gethostent d_gethent
11753 eval $inlibc
11754
11755 : see how we will look up host name
11756 echo " "
11757 call=''
11758 if set gethostname val -f d_gethname; eval $csym; $val; then
11759         echo 'gethostname() found.' >&4
11760         d_gethname="$define"
11761         call=gethostname
11762 fi
11763 if set uname val -f d_uname; eval $csym; $val; then
11764         if ./xenix; then
11765                 $cat <<'EOM'
11766 uname() was found, but you're running xenix, and older versions of xenix
11767 have a broken uname(). If you don't really know whether your xenix is old
11768 enough to have a broken system call, use the default answer.
11769
11770 EOM
11771                 dflt=y
11772                 case "$d_uname" in
11773                 "$define") dflt=n;;
11774                 esac
11775                 rp='Is your uname() broken?'
11776                 . ./myread
11777                 case "$ans" in
11778                 n*) d_uname="$define"; call=uname;;
11779                 esac
11780         else
11781                 echo 'uname() found.' >&4
11782                 d_uname="$define"
11783                 case "$call" in
11784                 '') call=uname ;;
11785                 esac
11786         fi
11787 fi
11788 case "$d_gethname" in
11789 '') d_gethname="$undef";;
11790 esac
11791 case "$d_uname" in
11792 '') d_uname="$undef";;
11793 esac
11794 case "$d_uname$d_gethname" in
11795 *define*)
11796         dflt=n
11797         cat <<EOM
11798  
11799 Every now and then someone has a $call() that lies about the hostname
11800 but can't be fixed for political or economic reasons.  If you wish, I can
11801 pretend $call() isn't there and maybe compute hostname at run-time
11802 thanks to the '$phostname' command.
11803
11804 EOM
11805         rp="Shall I ignore $call() from now on?"
11806         . ./myread
11807         case "$ans" in
11808         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
11809         esac;;
11810 esac
11811 case "$phostname" in
11812 '') aphostname='';;
11813 *) case "$aphostname" in
11814         /*) ;;
11815         *) set X $phostname
11816                 shift
11817                 file=$1
11818                 shift
11819                 file=`./loc $file $file $pth`
11820                 aphostname=`echo $file $*`
11821                 ;;
11822         esac
11823         ;;
11824 esac
11825 case "$d_uname$d_gethname" in
11826 *define*) ;;
11827 *)
11828         case "$phostname" in
11829         '')
11830                 echo "There will be no way for $package to get your hostname." >&4;;
11831         *)
11832         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
11833                 ;;
11834         esac;;
11835 esac
11836 case "$d_phostname" in
11837 '') d_phostname="$undef";;
11838 esac
11839
11840 : see if gethostbyaddr_r exists
11841 set gethostbyaddr_r d_gethostbyaddr_r
11842 eval $inlibc
11843 case "$d_gethostbyaddr_r" in
11844 "$define")
11845         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11846         case "$d_gethostbyaddr_r_proto:$usethreads" in
11847         ":define")      d_gethostbyaddr_r_proto=define
11848                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
11849                 eval $hasproto ;;
11850         *)      ;;
11851         esac
11852         case "$d_gethostbyaddr_r_proto" in
11853         define)
11854         case "$gethostbyaddr_r_proto" in
11855         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
11856         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
11857         esac
11858         case "$gethostbyaddr_r_proto" in
11859         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
11860         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
11861         esac
11862         case "$gethostbyaddr_r_proto" in
11863         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
11864         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
11865         esac
11866         case "$gethostbyaddr_r_proto" in
11867         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
11868         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
11869         esac
11870         case "$gethostbyaddr_r_proto" in
11871         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
11872         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
11873         esac
11874         case "$gethostbyaddr_r_proto" in
11875         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
11876         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
11877         esac
11878         case "$gethostbyaddr_r_proto" in
11879         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
11880         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
11881         esac
11882         case "$gethostbyaddr_r_proto" in
11883         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
11884         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
11885         esac
11886         case "$gethostbyaddr_r_proto" in
11887         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
11888         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
11889         esac
11890         case "$gethostbyaddr_r_proto" in
11891         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
11892         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
11893         esac
11894         case "$gethostbyaddr_r_proto" in
11895         ''|0)   d_gethostbyaddr_r=undef
11896                 gethostbyaddr_r_proto=0
11897                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
11898         * )     case "$gethostbyaddr_r_proto" in
11899                 REENTRANT_PROTO*) ;;
11900                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
11901                 esac
11902                 echo "Prototype: $try" ;;
11903         esac
11904         ;;
11905         *)      case "$usethreads" in
11906                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
11907                 esac
11908                 d_gethostbyaddr_r=undef
11909                 gethostbyaddr_r_proto=0
11910                 ;;
11911         esac
11912         ;;
11913 *)      gethostbyaddr_r_proto=0
11914         ;;
11915 esac
11916
11917 : see if gethostbyname_r exists
11918 set gethostbyname_r d_gethostbyname_r
11919 eval $inlibc
11920 case "$d_gethostbyname_r" in
11921 "$define")
11922         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11923         case "$d_gethostbyname_r_proto:$usethreads" in
11924         ":define")      d_gethostbyname_r_proto=define
11925                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
11926                 eval $hasproto ;;
11927         *)      ;;
11928         esac
11929         case "$d_gethostbyname_r_proto" in
11930         define)
11931         case "$gethostbyname_r_proto" in
11932         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
11933         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
11934         esac
11935         case "$gethostbyname_r_proto" in
11936         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
11937         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
11938         esac
11939         case "$gethostbyname_r_proto" in
11940         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
11941         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
11942         esac
11943         case "$gethostbyname_r_proto" in
11944         ''|0)   d_gethostbyname_r=undef
11945                 gethostbyname_r_proto=0
11946                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
11947         * )     case "$gethostbyname_r_proto" in
11948                 REENTRANT_PROTO*) ;;
11949                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
11950                 esac
11951                 echo "Prototype: $try" ;;
11952         esac
11953         ;;
11954         *)      case "$usethreads" in
11955                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
11956                 esac
11957                 d_gethostbyname_r=undef
11958                 gethostbyname_r_proto=0
11959                 ;;
11960         esac
11961         ;;
11962 *)      gethostbyname_r_proto=0
11963         ;;
11964 esac
11965
11966 : see if gethostent_r exists
11967 set gethostent_r d_gethostent_r
11968 eval $inlibc
11969 case "$d_gethostent_r" in
11970 "$define")
11971         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11972         case "$d_gethostent_r_proto:$usethreads" in
11973         ":define")      d_gethostent_r_proto=define
11974                 set d_gethostent_r_proto gethostent_r $hdrs
11975                 eval $hasproto ;;
11976         *)      ;;
11977         esac
11978         case "$d_gethostent_r_proto" in
11979         define)
11980         case "$gethostent_r_proto" in
11981         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
11982         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
11983         esac
11984         case "$gethostent_r_proto" in
11985         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
11986         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
11987         esac
11988         case "$gethostent_r_proto" in
11989         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
11990         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
11991         esac
11992         case "$gethostent_r_proto" in
11993         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
11994         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
11995         esac
11996         case "$gethostent_r_proto" in
11997         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
11998         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
11999         esac
12000         case "$gethostent_r_proto" in
12001         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12002         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12003         esac
12004         case "$gethostent_r_proto" in
12005         ''|0)   d_gethostent_r=undef
12006                 gethostent_r_proto=0
12007                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12008         * )     case "$gethostent_r_proto" in
12009                 REENTRANT_PROTO*) ;;
12010                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12011                 esac
12012                 echo "Prototype: $try" ;;
12013         esac
12014         ;;
12015         *)      case "$usethreads" in
12016                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12017                 esac
12018                 d_gethostent_r=undef
12019                 gethostent_r_proto=0
12020                 ;;
12021         esac
12022         ;;
12023 *)      gethostent_r_proto=0
12024         ;;
12025 esac
12026
12027 : see if prototypes for various gethostxxx netdb.h functions are available
12028 echo " "
12029 set d_gethostprotos gethostent $i_netdb netdb.h
12030 eval $hasproto
12031
12032 : see if getitimer exists
12033 set getitimer d_getitimer
12034 eval $inlibc
12035
12036 : see if getlogin exists
12037 set getlogin d_getlogin
12038 eval $inlibc
12039
12040 : see if getlogin_r exists
12041 set getlogin_r d_getlogin_r
12042 eval $inlibc
12043 case "$d_getlogin_r" in
12044 "$define")
12045         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12046         case "$d_getlogin_r_proto:$usethreads" in
12047         ":define")      d_getlogin_r_proto=define
12048                 set d_getlogin_r_proto getlogin_r $hdrs
12049                 eval $hasproto ;;
12050         *)      ;;
12051         esac
12052         case "$d_getlogin_r_proto" in
12053         define)
12054         case "$getlogin_r_proto" in
12055         ''|0) try='int getlogin_r(char*, size_t);'
12056         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12057         esac
12058         case "$getlogin_r_proto" in
12059         ''|0) try='int getlogin_r(char*, int);'
12060         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12061         esac
12062         case "$getlogin_r_proto" in
12063         ''|0) try='char* getlogin_r(char*, size_t);'
12064         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12065         esac
12066         case "$getlogin_r_proto" in
12067         ''|0) try='char* getlogin_r(char*, int);'
12068         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12069         esac
12070         case "$getlogin_r_proto" in
12071         ''|0)   d_getlogin_r=undef
12072                 getlogin_r_proto=0
12073                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12074         * )     case "$getlogin_r_proto" in
12075                 REENTRANT_PROTO*) ;;
12076                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12077                 esac
12078                 echo "Prototype: $try" ;;
12079         esac
12080         ;;
12081         *)      case "$usethreads" in
12082                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12083                 esac
12084                 d_getlogin_r=undef
12085                 getlogin_r_proto=0
12086                 ;;
12087         esac
12088         ;;
12089 *)      getlogin_r_proto=0
12090         ;;
12091 esac
12092
12093 : see if getmnt exists
12094 set getmnt d_getmnt
12095 eval $inlibc
12096
12097 : see if getmntent exists
12098 set getmntent d_getmntent
12099 eval $inlibc
12100
12101 : see if getnetbyaddr exists
12102 set getnetbyaddr d_getnbyaddr
12103 eval $inlibc
12104
12105 : see if getnetbyname exists
12106 set getnetbyname d_getnbyname
12107 eval $inlibc
12108
12109 : see if getnetent exists
12110 set getnetent d_getnent
12111 eval $inlibc
12112
12113 : see if getnetbyaddr_r exists
12114 set getnetbyaddr_r d_getnetbyaddr_r
12115 eval $inlibc
12116 case "$d_getnetbyaddr_r" in
12117 "$define")
12118         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12119         case "$d_getnetbyaddr_r_proto:$usethreads" in
12120         ":define")      d_getnetbyaddr_r_proto=define
12121                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12122                 eval $hasproto ;;
12123         *)      ;;
12124         esac
12125         case "$d_getnetbyaddr_r_proto" in
12126         define)
12127         case "$getnetbyaddr_r_proto" in
12128         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12129         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12130         esac
12131         case "$getnetbyaddr_r_proto" in
12132         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12133         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12134         esac
12135         case "$getnetbyaddr_r_proto" in
12136         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12137         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12138         esac
12139         case "$getnetbyaddr_r_proto" in
12140         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12141         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12142         esac
12143         case "$getnetbyaddr_r_proto" in
12144         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12145         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12146         esac
12147         case "$getnetbyaddr_r_proto" in
12148         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12149         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12150         esac
12151         case "$getnetbyaddr_r_proto" in
12152         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12153         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12154         esac
12155         case "$getnetbyaddr_r_proto" in
12156         ''|0)   d_getnetbyaddr_r=undef
12157                 getnetbyaddr_r_proto=0
12158                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12159         * )     case "$getnetbyaddr_r_proto" in
12160                 REENTRANT_PROTO*) ;;
12161                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12162                 esac
12163                 echo "Prototype: $try" ;;
12164         esac
12165         ;;
12166         *)      case "$usethreads" in
12167                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12168                 esac
12169                 d_getnetbyaddr_r=undef
12170                 getnetbyaddr_r_proto=0
12171                 ;;
12172         esac
12173         ;;
12174 *)      getnetbyaddr_r_proto=0
12175         ;;
12176 esac
12177
12178 : see if getnetbyname_r exists
12179 set getnetbyname_r d_getnetbyname_r
12180 eval $inlibc
12181 case "$d_getnetbyname_r" in
12182 "$define")
12183         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12184         case "$d_getnetbyname_r_proto:$usethreads" in
12185         ":define")      d_getnetbyname_r_proto=define
12186                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12187                 eval $hasproto ;;
12188         *)      ;;
12189         esac
12190         case "$d_getnetbyname_r_proto" in
12191         define)
12192         case "$getnetbyname_r_proto" in
12193         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12194         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12195         esac
12196         case "$getnetbyname_r_proto" in
12197         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12198         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12199         esac
12200         case "$getnetbyname_r_proto" in
12201         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12202         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12203         esac
12204         case "$getnetbyname_r_proto" in
12205         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12206         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12207         esac
12208         case "$getnetbyname_r_proto" in
12209         ''|0)   d_getnetbyname_r=undef
12210                 getnetbyname_r_proto=0
12211                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12212         * )     case "$getnetbyname_r_proto" in
12213                 REENTRANT_PROTO*) ;;
12214                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12215                 esac
12216                 echo "Prototype: $try" ;;
12217         esac
12218         ;;
12219         *)      case "$usethreads" in
12220                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12221                 esac
12222                 d_getnetbyname_r=undef
12223                 getnetbyname_r_proto=0
12224                 ;;
12225         esac
12226         ;;
12227 *)      getnetbyname_r_proto=0
12228         ;;
12229 esac
12230
12231 : see if getnetent_r exists
12232 set getnetent_r d_getnetent_r
12233 eval $inlibc
12234 case "$d_getnetent_r" in
12235 "$define")
12236         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12237         case "$d_getnetent_r_proto:$usethreads" in
12238         ":define")      d_getnetent_r_proto=define
12239                 set d_getnetent_r_proto getnetent_r $hdrs
12240                 eval $hasproto ;;
12241         *)      ;;
12242         esac
12243         case "$d_getnetent_r_proto" in
12244         define)
12245         case "$getnetent_r_proto" in
12246         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12247         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12248         esac
12249         case "$getnetent_r_proto" in
12250         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12251         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12252         esac
12253         case "$getnetent_r_proto" in
12254         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12255         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12256         esac
12257         case "$getnetent_r_proto" in
12258         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12259         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12260         esac
12261         case "$getnetent_r_proto" in
12262         ''|0) try='int getnetent_r(struct netent*, char*, int);'
12263         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12264         esac
12265         case "$getnetent_r_proto" in
12266         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12267         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12268         esac
12269         case "$getnetent_r_proto" in
12270         ''|0)   d_getnetent_r=undef
12271                 getnetent_r_proto=0
12272                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
12273         * )     case "$getnetent_r_proto" in
12274                 REENTRANT_PROTO*) ;;
12275                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12276                 esac
12277                 echo "Prototype: $try" ;;
12278         esac
12279         ;;
12280         *)      case "$usethreads" in
12281                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12282                 esac
12283                 d_getnetent_r=undef
12284                 getnetent_r_proto=0
12285                 ;;
12286         esac
12287         ;;
12288 *)      getnetent_r_proto=0
12289         ;;
12290 esac
12291
12292 : see if prototypes for various getnetxxx netdb.h functions are available
12293 echo " "
12294 set d_getnetprotos getnetent $i_netdb netdb.h
12295 eval $hasproto
12296
12297 : see if getpagesize exists
12298 set getpagesize d_getpagsz
12299 eval $inlibc
12300
12301
12302 : see if getprotobyname exists
12303 set getprotobyname d_getpbyname
12304 eval $inlibc
12305
12306 : see if getprotobynumber exists
12307 set getprotobynumber d_getpbynumber
12308 eval $inlibc
12309
12310 : see if getprotoent exists
12311 set getprotoent d_getpent
12312 eval $inlibc
12313
12314 : see if getpgid exists
12315 set getpgid d_getpgid
12316 eval $inlibc
12317
12318 : see if getpgrp2 exists
12319 set getpgrp2 d_getpgrp2
12320 eval $inlibc
12321
12322 : see if getppid exists
12323 set getppid d_getppid
12324 eval $inlibc
12325
12326 : see if getpriority exists
12327 set getpriority d_getprior
12328 eval $inlibc
12329
12330 : see if getprotobyname_r exists
12331 set getprotobyname_r d_getprotobyname_r
12332 eval $inlibc
12333 case "$d_getprotobyname_r" in
12334 "$define")
12335         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12336         case "$d_getprotobyname_r_proto:$usethreads" in
12337         ":define")      d_getprotobyname_r_proto=define
12338                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12339                 eval $hasproto ;;
12340         *)      ;;
12341         esac
12342         case "$d_getprotobyname_r_proto" in
12343         define)
12344         case "$getprotobyname_r_proto" in
12345         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12346         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12347         esac
12348         case "$getprotobyname_r_proto" in
12349         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12350         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12351         esac
12352         case "$getprotobyname_r_proto" in
12353         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12354         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12355         esac
12356         case "$getprotobyname_r_proto" in
12357         ''|0)   d_getprotobyname_r=undef
12358                 getprotobyname_r_proto=0
12359                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
12360         * )     case "$getprotobyname_r_proto" in
12361                 REENTRANT_PROTO*) ;;
12362                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12363                 esac
12364                 echo "Prototype: $try" ;;
12365         esac
12366         ;;
12367         *)      case "$usethreads" in
12368                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12369                 esac
12370                 d_getprotobyname_r=undef
12371                 getprotobyname_r_proto=0
12372                 ;;
12373         esac
12374         ;;
12375 *)      getprotobyname_r_proto=0
12376         ;;
12377 esac
12378
12379 : see if getprotobynumber_r exists
12380 set getprotobynumber_r d_getprotobynumber_r
12381 eval $inlibc
12382 case "$d_getprotobynumber_r" in
12383 "$define")
12384         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12385         case "$d_getprotobynumber_r_proto:$usethreads" in
12386         ":define")      d_getprotobynumber_r_proto=define
12387                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12388                 eval $hasproto ;;
12389         *)      ;;
12390         esac
12391         case "$d_getprotobynumber_r_proto" in
12392         define)
12393         case "$getprotobynumber_r_proto" in
12394         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12395         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12396         esac
12397         case "$getprotobynumber_r_proto" in
12398         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12399         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12400         esac
12401         case "$getprotobynumber_r_proto" in
12402         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12403         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12404         esac
12405         case "$getprotobynumber_r_proto" in
12406         ''|0)   d_getprotobynumber_r=undef
12407                 getprotobynumber_r_proto=0
12408                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
12409         * )     case "$getprotobynumber_r_proto" in
12410                 REENTRANT_PROTO*) ;;
12411                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12412                 esac
12413                 echo "Prototype: $try" ;;
12414         esac
12415         ;;
12416         *)      case "$usethreads" in
12417                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12418                 esac
12419                 d_getprotobynumber_r=undef
12420                 getprotobynumber_r_proto=0
12421                 ;;
12422         esac
12423         ;;
12424 *)      getprotobynumber_r_proto=0
12425         ;;
12426 esac
12427
12428 : see if getprotoent_r exists
12429 set getprotoent_r d_getprotoent_r
12430 eval $inlibc
12431 case "$d_getprotoent_r" in
12432 "$define")
12433         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12434         case "$d_getprotoent_r_proto:$usethreads" in
12435         ":define")      d_getprotoent_r_proto=define
12436                 set d_getprotoent_r_proto getprotoent_r $hdrs
12437                 eval $hasproto ;;
12438         *)      ;;
12439         esac
12440         case "$d_getprotoent_r_proto" in
12441         define)
12442         case "$getprotoent_r_proto" in
12443         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12444         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12445         esac
12446         case "$getprotoent_r_proto" in
12447         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12448         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12449         esac
12450         case "$getprotoent_r_proto" in
12451         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12452         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12453         esac
12454         case "$getprotoent_r_proto" in
12455         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12456         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12457         esac
12458         case "$getprotoent_r_proto" in
12459         ''|0)   d_getprotoent_r=undef
12460                 getprotoent_r_proto=0
12461                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
12462         * )     case "$getprotoent_r_proto" in
12463                 REENTRANT_PROTO*) ;;
12464                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12465                 esac
12466                 echo "Prototype: $try" ;;
12467         esac
12468         ;;
12469         *)      case "$usethreads" in
12470                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12471                 esac
12472                 d_getprotoent_r=undef
12473                 getprotoent_r_proto=0
12474                 ;;
12475         esac
12476         ;;
12477 *)      getprotoent_r_proto=0
12478         ;;
12479 esac
12480
12481 : see if prototypes for various getprotoxxx netdb.h functions are available
12482 echo " "
12483 set d_getprotoprotos getprotoent $i_netdb netdb.h
12484 eval $hasproto
12485
12486 : see if getprpwnam exists
12487 set getprpwnam d_getprpwnam
12488 eval $inlibc
12489
12490 : see if getpwent exists
12491 set getpwent d_getpwent
12492 eval $inlibc
12493
12494 : see if getpwent_r exists
12495 set getpwent_r d_getpwent_r
12496 eval $inlibc
12497 case "$d_getpwent_r" in
12498 "$define")
12499         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12500         case "$d_getpwent_r_proto:$usethreads" in
12501         ":define")      d_getpwent_r_proto=define
12502                 set d_getpwent_r_proto getpwent_r $hdrs
12503                 eval $hasproto ;;
12504         *)      ;;
12505         esac
12506         case "$d_getpwent_r_proto" in
12507         define)
12508         case "$getpwent_r_proto" in
12509         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12510         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12511         esac
12512         case "$getpwent_r_proto" in
12513         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12514         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12515         esac
12516         case "$getpwent_r_proto" in
12517         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12518         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12519         esac
12520         case "$getpwent_r_proto" in
12521         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12522         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12523         esac
12524         case "$getpwent_r_proto" in
12525         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12526         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12527         esac
12528         case "$getpwent_r_proto" in
12529         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12530         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12531         esac
12532         case "$getpwent_r_proto" in
12533         ''|0)   d_getpwent_r=undef
12534                 getpwent_r_proto=0
12535                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
12536         * )     case "$getpwent_r_proto" in
12537                 REENTRANT_PROTO*) ;;
12538                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12539                 esac
12540                 echo "Prototype: $try" ;;
12541         esac
12542         ;;
12543         *)      case "$usethreads" in
12544                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
12545                 esac
12546                 d_getpwent_r=undef
12547                 getpwent_r_proto=0
12548                 ;;
12549         esac
12550         ;;
12551 *)      getpwent_r_proto=0
12552         ;;
12553 esac
12554
12555 : see if getpwnam_r exists
12556 set getpwnam_r d_getpwnam_r
12557 eval $inlibc
12558 case "$d_getpwnam_r" in
12559 "$define")
12560         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12561         case "$d_getpwnam_r_proto:$usethreads" in
12562         ":define")      d_getpwnam_r_proto=define
12563                 set d_getpwnam_r_proto getpwnam_r $hdrs
12564                 eval $hasproto ;;
12565         *)      ;;
12566         esac
12567         case "$d_getpwnam_r_proto" in
12568         define)
12569         case "$getpwnam_r_proto" in
12570         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12571         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12572         esac
12573         case "$getpwnam_r_proto" in
12574         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
12575         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
12576         esac
12577         case "$getpwnam_r_proto" in
12578         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
12579         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
12580         esac
12581         case "$getpwnam_r_proto" in
12582         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
12583         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
12584         esac
12585         case "$getpwnam_r_proto" in
12586         ''|0)   d_getpwnam_r=undef
12587                 getpwnam_r_proto=0
12588                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
12589         * )     case "$getpwnam_r_proto" in
12590                 REENTRANT_PROTO*) ;;
12591                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
12592                 esac
12593                 echo "Prototype: $try" ;;
12594         esac
12595         ;;
12596         *)      case "$usethreads" in
12597                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
12598                 esac
12599                 d_getpwnam_r=undef
12600                 getpwnam_r_proto=0
12601                 ;;
12602         esac
12603         ;;
12604 *)      getpwnam_r_proto=0
12605         ;;
12606 esac
12607
12608 : see if getpwuid_r exists
12609 set getpwuid_r d_getpwuid_r
12610 eval $inlibc
12611 case "$d_getpwuid_r" in
12612 "$define")
12613         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12614         case "$d_getpwuid_r_proto:$usethreads" in
12615         ":define")      d_getpwuid_r_proto=define
12616                 set d_getpwuid_r_proto getpwuid_r $hdrs
12617                 eval $hasproto ;;
12618         *)      ;;
12619         esac
12620         case "$d_getpwuid_r_proto" in
12621         define)
12622         case "$getpwuid_r_proto" in
12623         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
12624         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
12625         esac
12626         case "$getpwuid_r_proto" in
12627         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
12628         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
12629         esac
12630         case "$getpwuid_r_proto" in
12631         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
12632         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
12633         esac
12634         case "$getpwuid_r_proto" in
12635         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
12636         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
12637         esac
12638         case "$getpwuid_r_proto" in
12639         ''|0)   d_getpwuid_r=undef
12640                 getpwuid_r_proto=0
12641                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
12642         * )     case "$getpwuid_r_proto" in
12643                 REENTRANT_PROTO*) ;;
12644                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
12645                 esac
12646                 echo "Prototype: $try" ;;
12647         esac
12648         ;;
12649         *)      case "$usethreads" in
12650                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
12651                 esac
12652                 d_getpwuid_r=undef
12653                 getpwuid_r_proto=0
12654                 ;;
12655         esac
12656         ;;
12657 *)      getpwuid_r_proto=0
12658         ;;
12659 esac
12660
12661
12662 : see if getservbyname exists
12663 set getservbyname d_getsbyname
12664 eval $inlibc
12665
12666 : see if getservbyport exists
12667 set getservbyport d_getsbyport
12668 eval $inlibc
12669
12670 : see if getservent exists
12671 set getservent d_getsent
12672 eval $inlibc
12673
12674 : see if getservbyname_r exists
12675 set getservbyname_r d_getservbyname_r
12676 eval $inlibc
12677 case "$d_getservbyname_r" in
12678 "$define")
12679         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12680         case "$d_getservbyname_r_proto:$usethreads" in
12681         ":define")      d_getservbyname_r_proto=define
12682                 set d_getservbyname_r_proto getservbyname_r $hdrs
12683                 eval $hasproto ;;
12684         *)      ;;
12685         esac
12686         case "$d_getservbyname_r_proto" in
12687         define)
12688         case "$getservbyname_r_proto" in
12689         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
12690         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
12691         esac
12692         case "$getservbyname_r_proto" in
12693         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
12694         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
12695         esac
12696         case "$getservbyname_r_proto" in
12697         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
12698         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
12699         esac
12700         case "$getservbyname_r_proto" in
12701         ''|0)   d_getservbyname_r=undef
12702                 getservbyname_r_proto=0
12703                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
12704         * )     case "$getservbyname_r_proto" in
12705                 REENTRANT_PROTO*) ;;
12706                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
12707                 esac
12708                 echo "Prototype: $try" ;;
12709         esac
12710         ;;
12711         *)      case "$usethreads" in
12712                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
12713                 esac
12714                 d_getservbyname_r=undef
12715                 getservbyname_r_proto=0
12716                 ;;
12717         esac
12718         ;;
12719 *)      getservbyname_r_proto=0
12720         ;;
12721 esac
12722
12723 : see if getservbyport_r exists
12724 set getservbyport_r d_getservbyport_r
12725 eval $inlibc
12726 case "$d_getservbyport_r" in
12727 "$define")
12728         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12729         case "$d_getservbyport_r_proto:$usethreads" in
12730         ":define")      d_getservbyport_r_proto=define
12731                 set d_getservbyport_r_proto getservbyport_r $hdrs
12732                 eval $hasproto ;;
12733         *)      ;;
12734         esac
12735         case "$d_getservbyport_r_proto" in
12736         define)
12737         case "$getservbyport_r_proto" in
12738         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
12739         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
12740         esac
12741         case "$getservbyport_r_proto" in
12742         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
12743         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
12744         esac
12745         case "$getservbyport_r_proto" in
12746         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
12747         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
12748         esac
12749         case "$getservbyport_r_proto" in
12750         ''|0)   d_getservbyport_r=undef
12751                 getservbyport_r_proto=0
12752                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
12753         * )     case "$getservbyport_r_proto" in
12754                 REENTRANT_PROTO*) ;;
12755                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
12756                 esac
12757                 echo "Prototype: $try" ;;
12758         esac
12759         ;;
12760         *)      case "$usethreads" in
12761                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
12762                 esac
12763                 d_getservbyport_r=undef
12764                 getservbyport_r_proto=0
12765                 ;;
12766         esac
12767         ;;
12768 *)      getservbyport_r_proto=0
12769         ;;
12770 esac
12771
12772 : see if getservent_r exists
12773 set getservent_r d_getservent_r
12774 eval $inlibc
12775 case "$d_getservent_r" in
12776 "$define")
12777         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12778         case "$d_getservent_r_proto:$usethreads" in
12779         ":define")      d_getservent_r_proto=define
12780                 set d_getservent_r_proto getservent_r $hdrs
12781                 eval $hasproto ;;
12782         *)      ;;
12783         esac
12784         case "$d_getservent_r_proto" in
12785         define)
12786         case "$getservent_r_proto" in
12787         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
12788         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
12789         esac
12790         case "$getservent_r_proto" in
12791         ''|0) try='int getservent_r(struct servent*, char*, int);'
12792         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
12793         esac
12794         case "$getservent_r_proto" in
12795         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
12796         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
12797         esac
12798         case "$getservent_r_proto" in
12799         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
12800         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
12801         esac
12802         case "$getservent_r_proto" in
12803         ''|0)   d_getservent_r=undef
12804                 getservent_r_proto=0
12805                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
12806         * )     case "$getservent_r_proto" in
12807                 REENTRANT_PROTO*) ;;
12808                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
12809                 esac
12810                 echo "Prototype: $try" ;;
12811         esac
12812         ;;
12813         *)      case "$usethreads" in
12814                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
12815                 esac
12816                 d_getservent_r=undef
12817                 getservent_r_proto=0
12818                 ;;
12819         esac
12820         ;;
12821 *)      getservent_r_proto=0
12822         ;;
12823 esac
12824
12825 : see if prototypes for various getservxxx netdb.h functions are available
12826 echo " "
12827 set d_getservprotos getservent $i_netdb netdb.h
12828 eval $hasproto
12829
12830 : see if getspnam exists
12831 set getspnam d_getspnam
12832 eval $inlibc
12833
12834 : see if this is a shadow.h system
12835 set shadow.h i_shadow
12836 eval $inhdr
12837
12838 : see if getspnam_r exists
12839 set getspnam_r d_getspnam_r
12840 eval $inlibc
12841 case "$d_getspnam_r" in
12842 "$define")
12843         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
12844         case "$d_getspnam_r_proto:$usethreads" in
12845         ":define")      d_getspnam_r_proto=define
12846                 set d_getspnam_r_proto getspnam_r $hdrs
12847                 eval $hasproto ;;
12848         *)      ;;
12849         esac
12850         case "$d_getspnam_r_proto" in
12851         define)
12852         case "$getspnam_r_proto" in
12853         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
12854         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
12855         esac
12856         case "$getspnam_r_proto" in
12857         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
12858         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
12859         esac
12860         case "$getspnam_r_proto" in
12861         ''|0)   d_getspnam_r=undef
12862                 getspnam_r_proto=0
12863                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
12864         * )     case "$getspnam_r_proto" in
12865                 REENTRANT_PROTO*) ;;
12866                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
12867                 esac
12868                 echo "Prototype: $try" ;;
12869         esac
12870         ;;
12871         *)      case "$usethreads" in
12872                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
12873                 esac
12874                 d_getspnam_r=undef
12875                 getspnam_r_proto=0
12876                 ;;
12877         esac
12878         ;;
12879 *)      getspnam_r_proto=0
12880         ;;
12881 esac
12882
12883 : see if gettimeofday or ftime exists
12884 set gettimeofday d_gettimeod
12885 eval $inlibc
12886 case "$d_gettimeod" in
12887 "$undef")
12888         set ftime d_ftime 
12889         eval $inlibc
12890         ;;
12891 *)
12892         val="$undef"; set d_ftime; eval $setvar
12893         ;;
12894 esac
12895 case "$d_gettimeod$d_ftime" in
12896 "$undef$undef")
12897         echo " "
12898         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
12899         ;;
12900 esac
12901
12902 : see if gmtime_r exists
12903 set gmtime_r d_gmtime_r
12904 eval $inlibc
12905 case "$d_gmtime_r" in
12906 "$define")
12907         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
12908         case "$d_gmtime_r_proto:$usethreads" in
12909         ":define")      d_gmtime_r_proto=define
12910                 set d_gmtime_r_proto gmtime_r $hdrs
12911                 eval $hasproto ;;
12912         *)      ;;
12913         esac
12914         case "$d_gmtime_r_proto" in
12915         define)
12916         case "$gmtime_r_proto" in
12917         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
12918         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
12919         esac
12920         case "$gmtime_r_proto" in
12921         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
12922         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
12923         esac
12924         case "$gmtime_r_proto" in
12925         ''|0)   d_gmtime_r=undef
12926                 gmtime_r_proto=0
12927                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
12928         * )     case "$gmtime_r_proto" in
12929                 REENTRANT_PROTO*) ;;
12930                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
12931                 esac
12932                 echo "Prototype: $try" ;;
12933         esac
12934         ;;
12935         *)      case "$usethreads" in
12936                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
12937                 esac
12938                 d_gmtime_r=undef
12939                 gmtime_r_proto=0
12940                 ;;
12941         esac
12942         ;;
12943 *)      gmtime_r_proto=0
12944         ;;
12945 esac
12946
12947 : see if hasmntopt exists
12948 set hasmntopt d_hasmntopt
12949 eval $inlibc
12950
12951 : see if this is a netinet/in.h or sys/in.h system
12952 set netinet/in.h i_niin sys/in.h i_sysin
12953 eval $inhdr
12954
12955 : see if arpa/inet.h has to be included
12956 set arpa/inet.h i_arpainet
12957 eval $inhdr
12958
12959 : see if htonl --and friends-- exists
12960 val=''
12961 set htonl val
12962 eval $inlibc
12963
12964 : Maybe they are macros.
12965 case "$val" in
12966 $undef)
12967         $cat >htonl.c <<EOM
12968 #include <stdio.h>
12969 #include <sys/types.h>
12970 #$i_niin I_NETINET_IN
12971 #$i_sysin I_SYS_IN
12972 #$i_arpainet I_ARPA_INET
12973 #ifdef I_NETINET_IN
12974 #include <netinet/in.h>
12975 #endif
12976 #ifdef I_SYS_IN
12977 #include <sys/in.h>
12978 #endif
12979 #ifdef I_ARPA_INET
12980 #include <arpa/inet.h>
12981 #endif
12982 #ifdef htonl
12983 printf("Defined as a macro.");
12984 #endif
12985 EOM
12986         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
12987         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
12988                 val="$define"
12989                 echo "But it seems to be defined as a macro." >&4
12990         fi
12991         $rm -f htonl.?
12992         ;;
12993 esac
12994 set d_htonl
12995 eval $setvar
12996
12997 : index or strchr
12998 echo " "
12999 if set index val -f; eval $csym; $val; then
13000         if set strchr val -f d_strchr; eval $csym; $val; then
13001                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13002                         val="$define"
13003                         vali="$undef"
13004                         echo "strchr() found." >&4
13005                 else
13006                         val="$undef"
13007                         vali="$define"
13008                         echo "index() found." >&4
13009                 fi
13010         else
13011                 val="$undef"
13012                 vali="$define"
13013                 echo "index() found." >&4
13014         fi
13015 else
13016         if set strchr val -f d_strchr; eval $csym; $val; then
13017                 val="$define"
13018                 vali="$undef"
13019                 echo "strchr() found." >&4
13020         else
13021                 echo "No index() or strchr() found!" >&4
13022                 val="$undef"
13023                 vali="$undef"
13024         fi
13025 fi
13026 set d_strchr; eval $setvar
13027 val="$vali"
13028 set d_index; eval $setvar
13029
13030 : check whether inet_aton exists
13031 set inet_aton d_inetaton
13032 eval $inlibc
13033
13034 : Look for isascii
13035 echo " "
13036 $cat >isascii.c <<'EOCP'
13037 #include <stdio.h>
13038 #include <ctype.h>
13039 int main() {
13040         int c = 'A';
13041         if (isascii(c))
13042                 exit(0);
13043         else
13044                 exit(1);
13045 }
13046 EOCP
13047 set isascii
13048 if eval $compile; then
13049         echo "isascii() found." >&4
13050         val="$define"
13051 else
13052         echo "isascii() NOT found." >&4
13053         val="$undef"
13054 fi
13055 set d_isascii
13056 eval $setvar
13057 $rm -f isascii*
13058
13059 : see if isfinite exists
13060 set isfinite d_isfinite
13061 eval $inlibc
13062
13063 : see if isinf exists
13064 set isinf d_isinf
13065 eval $inlibc
13066
13067 : see if isnan exists
13068 set isnan d_isnan
13069 eval $inlibc
13070
13071 : see if isnanl exists
13072 set isnanl d_isnanl
13073 eval $inlibc
13074
13075 : see if killpg exists
13076 set killpg d_killpg
13077 eval $inlibc
13078
13079 : see if lchown exists
13080 echo " "
13081 $cat > try.c <<'EOCP'
13082 /* System header to define __stub macros and hopefully few prototypes,
13083     which can conflict with char lchown(); below.  */
13084 #include <assert.h>
13085 /* Override any gcc2 internal prototype to avoid an error.  */
13086 /* We use char because int might match the return type of a gcc2
13087    builtin and then its argument prototype would still apply.  */
13088 char lchown();
13089 int main() {
13090     /*  The GNU C library defines this for functions which it implements
13091         to always fail with ENOSYS.  Some functions are actually named
13092         something starting with __ and the normal name is an alias.  */
13093 #if defined (__stub_lchown) || defined (__stub___lchown)
13094 choke me
13095 #else
13096 lchown();
13097 #endif
13098 ; return 0; }
13099 EOCP
13100 set try
13101 if eval $compile; then
13102     $echo "lchown() found." >&4
13103     val="$define"
13104 else
13105     $echo "lchown() NOT found." >&4
13106     val="$undef"
13107 fi
13108 set d_lchown
13109 eval $setvar
13110
13111 : See if number of significant digits in a double precision number is known
13112 echo " "
13113 $cat >ldbl_dig.c <<EOM
13114 #$i_limits I_LIMITS
13115 #$i_float I_FLOAT
13116 #ifdef I_LIMITS
13117 #include <limits.h>
13118 #endif
13119 #ifdef I_FLOAT
13120 #include <float.h>
13121 #endif
13122 #ifdef LDBL_DIG
13123 printf("Contains LDBL_DIG");
13124 #endif
13125 EOM
13126 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13127 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13128         echo "LDBL_DIG found." >&4
13129         val="$define"
13130 else
13131         echo "LDBL_DIG NOT found." >&4
13132         val="$undef"
13133 fi
13134 $rm -f ldbl_dig.?
13135 set d_ldbl_dig
13136 eval $setvar
13137
13138 : see if link exists
13139 set link d_link
13140 eval $inlibc
13141
13142 : see if localtime_r exists
13143 set localtime_r d_localtime_r
13144 eval $inlibc
13145 case "$d_localtime_r" in
13146 "$define")
13147         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13148         case "$d_localtime_r_proto:$usethreads" in
13149         ":define")      d_localtime_r_proto=define
13150                 set d_localtime_r_proto localtime_r $hdrs
13151                 eval $hasproto ;;
13152         *)      ;;
13153         esac
13154         case "$d_localtime_r_proto" in
13155         define)
13156         case "$localtime_r_proto" in
13157         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13158         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13159         esac
13160         case "$localtime_r_proto" in
13161         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13162         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13163         esac
13164         case "$localtime_r_proto" in
13165         ''|0)   d_localtime_r=undef
13166                 localtime_r_proto=0
13167                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13168         * )     case "$localtime_r_proto" in
13169                 REENTRANT_PROTO*) ;;
13170                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13171                 esac
13172                 echo "Prototype: $try" ;;
13173         esac
13174         ;;
13175         *)      case "$usethreads" in
13176                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13177                 esac
13178                 d_localtime_r=undef
13179                 localtime_r_proto=0
13180                 ;;
13181         esac
13182         ;;
13183 *)      localtime_r_proto=0
13184         ;;
13185 esac
13186
13187 : see if localeconv exists
13188 set localeconv d_locconv
13189 eval $inlibc
13190
13191 : see if lockf exists
13192 set lockf d_lockf
13193 eval $inlibc
13194
13195 : see if prototype for lseek is available
13196 echo " "
13197 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13198 eval $hasproto
13199
13200 : see if lstat exists
13201 set lstat d_lstat
13202 eval $inlibc
13203
13204 : see if madvise exists
13205 set madvise d_madvise
13206 eval $inlibc
13207
13208 : see if mblen exists
13209 set mblen d_mblen
13210 eval $inlibc
13211
13212 : see if mbstowcs exists
13213 set mbstowcs d_mbstowcs
13214 eval $inlibc
13215
13216 : see if mbtowc exists
13217 set mbtowc d_mbtowc
13218 eval $inlibc
13219
13220 : see if memchr exists
13221 set memchr d_memchr
13222 eval $inlibc
13223
13224 : see if memcmp exists
13225 set memcmp d_memcmp
13226 eval $inlibc
13227
13228 : see if memcpy exists
13229 set memcpy d_memcpy
13230 eval $inlibc
13231
13232 : see if memmove exists
13233 set memmove d_memmove
13234 eval $inlibc
13235
13236 : see if memset exists
13237 set memset d_memset
13238 eval $inlibc
13239
13240 : see if mkdir exists
13241 set mkdir d_mkdir
13242 eval $inlibc
13243
13244 : see if mkdtemp exists
13245 set mkdtemp d_mkdtemp
13246 eval $inlibc
13247
13248 : see if mkfifo exists
13249 set mkfifo d_mkfifo
13250 eval $inlibc
13251
13252 : see if mkstemp exists
13253 set mkstemp d_mkstemp
13254 eval $inlibc
13255
13256 : see if mkstemps exists
13257 set mkstemps d_mkstemps
13258 eval $inlibc
13259
13260 : see if mktime exists
13261 set mktime d_mktime
13262 eval $inlibc
13263
13264 : see if this is a sys/mman.h system
13265 set sys/mman.h i_sysmman
13266 eval $inhdr
13267
13268 : see if mmap exists
13269 set mmap d_mmap
13270 eval $inlibc
13271 : see what shmat returns
13272 : default to something harmless
13273 mmaptype='void *'
13274 case "$i_sysmman$d_mmap" in
13275 "$define$define")
13276         $cat >mmap.c <<'END'
13277 #include <sys/mman.h>
13278 void *mmap();
13279 END
13280         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13281                 mmaptype='void *'
13282         else
13283                 mmaptype='caddr_t'
13284         fi
13285         echo "and it returns ($mmaptype)." >&4
13286         ;;
13287 esac
13288
13289
13290
13291 : see if mprotect exists
13292 set mprotect d_mprotect
13293 eval $inlibc
13294
13295 : see if msgctl exists
13296 set msgctl d_msgctl
13297 eval $inlibc
13298
13299 : see if msgget exists
13300 set msgget d_msgget
13301 eval $inlibc
13302
13303 : see if msgsnd exists
13304 set msgsnd d_msgsnd
13305 eval $inlibc
13306
13307 : see if msgrcv exists
13308 set msgrcv d_msgrcv
13309 eval $inlibc
13310
13311 : see how much of the 'msg*(2)' library is present.
13312 h_msg=true
13313 echo " "
13314 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13315 *"$undef"*) h_msg=false;;
13316 esac
13317 case "$osname" in
13318 freebsd)
13319     case "`ipcs 2>&1`" in
13320     "SVID messages"*"not configured"*)
13321         echo "Your $osname does not have the msg*(2) configured." >&4
13322         h_msg=false
13323         val="$undef"
13324         set msgctl d_msgctl
13325         eval $setvar
13326         set msgget d_msgget
13327         eval $setvar
13328         set msgsnd d_msgsnd
13329         eval $setvar
13330         set msgrcv d_msgrcv
13331         eval $setvar
13332         ;;
13333     esac
13334     ;;
13335 esac
13336 : we could also check for sys/ipc.h ...
13337 if $h_msg && $test `./findhdr sys/msg.h`; then
13338         echo "You have the full msg*(2) library." >&4
13339         val="$define"
13340 else
13341         echo "You don't have the full msg*(2) library." >&4
13342         val="$undef"
13343 fi
13344 set d_msg
13345 eval $setvar
13346
13347
13348 echo " "
13349 echo "Checking to see if your system supports struct msghdr..." >&4
13350 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13351 eval $hasstruct
13352 case "$d_msghdr_s" in
13353 "$define")      echo "Yes, it does."   ;;
13354 *)              echo "No, it doesn't." ;;
13355 esac
13356
13357
13358 : see if msync exists
13359 set msync d_msync
13360 eval $inlibc
13361
13362 : see if munmap exists
13363 set munmap d_munmap
13364 eval $inlibc
13365
13366 : see if nice exists
13367 set nice d_nice
13368 eval $inlibc
13369
13370 : see if this is a langinfo.h system
13371 set langinfo.h i_langinfo
13372 eval $inhdr
13373
13374 : see if nl_langinfo exists
13375 set nl_langinfo d_nl_langinfo
13376 eval $inlibc
13377
13378 : check for length of character
13379 echo " "
13380 case "$charsize" in
13381 '')
13382         echo "Checking to see how big your characters are (hey, you never know)..." >&4
13383         $cat >try.c <<'EOCP'
13384 #include <stdio.h>
13385 int main()
13386 {
13387     printf("%d\n", (int)sizeof(char));
13388     exit(0);
13389 }
13390 EOCP
13391         set try
13392         if eval $compile_ok; then
13393                 dflt=`$run ./try`
13394         else
13395                 dflt='1'
13396                 echo "(I can't seem to compile the test program.  Guessing...)"
13397         fi
13398         ;;
13399 *)
13400         dflt="$charsize"
13401         ;;
13402 esac
13403 rp="What is the size of a character (in bytes)?"
13404 . ./myread
13405 charsize="$ans"
13406 $rm -f try.c try
13407
13408 : check for volatile keyword
13409 echo " "
13410 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13411 $cat >try.c <<'EOCP'
13412 main()
13413 {
13414         typedef struct _goo_struct goo_struct;
13415         goo_struct * volatile goo = ((goo_struct *)0);
13416         struct _goo_struct {
13417                 long long_int;
13418                 int reg_int;
13419                 char char_var;
13420         };
13421         typedef unsigned short foo_t;
13422         char *volatile foo;
13423         volatile int bar;
13424         volatile foo_t blech;
13425         foo = foo;
13426 }
13427 EOCP
13428 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13429         val="$define"
13430         echo "Yup, it does."
13431 else
13432         val="$undef"
13433         echo "Nope, it doesn't."
13434 fi
13435 set d_volatile
13436 eval $setvar
13437 $rm -f try.*
13438
13439
13440 echo " "
13441 $echo "Choosing the C types to be used for Perl's internal types..." >&4
13442
13443 case "$use64bitint:$d_quad:$quadtype" in
13444 define:define:?*)
13445         ivtype="$quadtype"
13446         uvtype="$uquadtype"
13447         ivsize=8
13448         uvsize=8
13449         ;;
13450 *)      ivtype="long"
13451         uvtype="unsigned long"
13452         ivsize=$longsize
13453         uvsize=$longsize
13454         ;;
13455 esac
13456
13457 case "$uselongdouble:$d_longdbl" in
13458 define:define)
13459         nvtype="long double"
13460         nvsize=$longdblsize
13461         ;;
13462 *)      nvtype=double
13463         nvsize=$doublesize
13464         ;;
13465 esac
13466
13467 $echo "(IV will be "$ivtype", $ivsize bytes)"
13468 $echo "(UV will be "$uvtype", $uvsize bytes)"
13469 $echo "(NV will be "$nvtype", $nvsize bytes)"
13470
13471 $cat >try.c <<EOCP
13472 #$i_inttypes I_INTTYPES
13473 #ifdef I_INTTYPES
13474 #include <inttypes.h>
13475 #endif
13476 #include <stdio.h>
13477 int main() {
13478 #ifdef INT8
13479    int8_t i =  INT8_MAX;
13480   uint8_t u = UINT8_MAX;
13481   printf("int8_t\n");
13482 #endif
13483 #ifdef INT16
13484    int16_t i =  INT16_MAX;
13485   uint16_t i = UINT16_MAX;
13486   printf("int16_t\n");
13487 #endif
13488 #ifdef INT32
13489    int32_t i =  INT32_MAX;
13490   uint32_t u = UINT32_MAX;
13491   printf("int32_t\n");
13492 #endif
13493 }
13494 EOCP
13495
13496 case "$i8type" in
13497 '')     case "$charsize" in
13498         1)      i8type=char
13499                 u8type="unsigned char"
13500                 i8size=$charsize
13501                 u8size=$charsize
13502                 ;;
13503         esac
13504         ;;
13505 esac
13506 case "$i8type" in
13507 '')     set try -DINT8
13508         if eval $compile; then
13509                 case "`$run ./try`" in
13510                 int8_t) i8type=int8_t
13511                         u8type=uint8_t
13512                         i8size=1
13513                         u8size=1
13514                         ;;
13515                 esac
13516         fi
13517         ;;
13518 esac
13519 case "$i8type" in
13520 '')     if $test $charsize -ge 1; then
13521                 i8type=char
13522                 u8type="unsigned char"
13523                 i8size=$charsize
13524                 u8size=$charsize
13525         fi
13526         ;;
13527 esac
13528
13529 case "$i16type" in
13530 '')     case "$shortsize" in
13531         2)      i16type=short
13532                 u16type="unsigned short"
13533                 i16size=$shortsize
13534                 u16size=$shortsize
13535                 ;;
13536         esac
13537         ;;
13538 esac
13539 case "$i16type" in
13540 '')     set try -DINT16
13541         if eval $compile; then
13542                 case "`$run ./try`" in
13543                 int16_t)
13544                         i16type=int16_t
13545                         u16type=uint16_t
13546                         i16size=2
13547                         u16size=2
13548                         ;;
13549                 esac
13550         fi
13551         ;;
13552 esac
13553 case "$i16type" in
13554 '')     if $test $shortsize -ge 2; then
13555                 i16type=short
13556                 u16type="unsigned short"
13557                 i16size=$shortsize
13558                 u16size=$shortsize
13559         fi
13560         ;;
13561 esac
13562
13563 case "$i32type" in
13564 '')     case "$longsize" in
13565         4)      i32type=long
13566                 u32type="unsigned long"
13567                 i32size=$longsize
13568                 u32size=$longsize
13569                 ;;
13570         *)      case "$intsize" in
13571                 4)      i32type=int
13572                         u32type="unsigned int"
13573                         i32size=$intsize
13574                         u32size=$intsize
13575                         ;;
13576                 esac
13577                 ;;
13578         esac
13579         ;;
13580 esac
13581 case "$i32type" in
13582 '')     set try -DINT32
13583         if eval $compile; then
13584                 case "`$run ./try`" in
13585                 int32_t)
13586                         i32type=int32_t
13587                         u32type=uint32_t
13588                         i32size=4
13589                         u32size=4
13590                         ;;
13591                 esac
13592         fi
13593         ;;
13594 esac
13595 case "$i32type" in
13596 '')     if $test $intsize -ge 4; then
13597                 i32type=int
13598                 u32type="unsigned int"
13599                 i32size=$intsize
13600                 u32size=$intsize
13601         fi
13602         ;;
13603 esac
13604
13605 case "$i64type" in
13606 '')     case "$d_quad:$quadtype" in
13607         define:?*)
13608                 i64type="$quadtype"
13609                 u64type="$uquadtype"
13610                 i64size=8
13611                 u64size=8
13612                 ;;
13613         esac
13614         ;;
13615 esac
13616
13617 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
13618 : volatile so that the compiler has to store it out to memory.
13619 if test X"$d_volatile" = X"$define"; then
13620         volatile=volatile
13621 fi
13622 $cat <<EOP >try.c
13623 #include <stdio.h>
13624 #include <sys/types.h>
13625 #include <signal.h>
13626 #ifdef SIGFPE
13627 $volatile int bletched = 0;
13628 $signal_t blech(s) int s; { bletched = 1; }
13629 #endif
13630 int main() {
13631     $uvtype u = 0;
13632     $nvtype d;
13633     int     n = 8 * $uvsize;
13634     int     i;
13635 #ifdef SIGFPE
13636     signal(SIGFPE, blech);
13637 #endif
13638
13639     for (i = 0; i < n; i++) {
13640       u = u << 1 | ($uvtype)1;
13641       d = ($nvtype)u;
13642       if (($uvtype)d != u)
13643         break;
13644       if (d <= 0)
13645         break;
13646       d = ($nvtype)(u - 1);
13647       if (($uvtype)d != (u - 1))
13648         break;
13649 #ifdef SIGFPE
13650       if (bletched) {
13651         break;
13652 #endif
13653       } 
13654     }
13655     printf("%d\n", ((i == n) ? -n : i));
13656     exit(0);
13657 }
13658 EOP
13659 set try
13660
13661 d_nv_preserves_uv="$undef"
13662 if eval $compile; then
13663         nv_preserves_uv_bits="`$run ./try`"
13664 fi
13665 case "$nv_preserves_uv_bits" in
13666 \-[1-9]*)       
13667         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
13668         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
13669         d_nv_preserves_uv="$define"
13670         ;;
13671 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
13672         d_nv_preserves_uv="$undef" ;;
13673 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
13674         nv_preserves_uv_bits="$undef" ;;
13675 esac
13676
13677 $rm -f try.* try
13678
13679
13680 : check for off64_t
13681 echo " "
13682 echo "Checking to see if you have off64_t..." >&4
13683 $cat >try.c <<EOCP
13684 #include <sys/types.h>
13685 #include <unistd.h>
13686 int main() { off64_t x = 7; }
13687 EOCP
13688 set try
13689 if eval $compile; then
13690         val="$define"
13691         echo "You have off64_t."
13692 else
13693         val="$undef"
13694         echo "You do not have off64_t."
13695         case "$lseeksize" in
13696         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
13697         esac
13698 fi
13699 $rm -f try.* try
13700 set d_off64_t
13701 eval $setvar
13702
13703 : how to create joinable pthreads
13704 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13705         echo " "
13706         echo "Checking what constant to use for creating joinable pthreads..." >&4 
13707         $cat >try.c <<'EOCP'
13708 #include <pthread.h>
13709 int main() {
13710     int detachstate = JOINABLE;
13711 }
13712 EOCP
13713         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
13714         if eval $compile; then
13715                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
13716                 val="$undef" # Yes, undef.
13717                 set d_old_pthread_create_joinable
13718                 eval $setvar
13719                 val=""
13720                 set old_pthread_create_joinable
13721                 eval $setvar
13722         else
13723                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
13724                 if eval $compile; then
13725                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13726                         val="$define"
13727                         set d_old_pthread_create_joinable
13728                         eval $setvar
13729                         val=PTHREAD_CREATE_UNDETACHED
13730                         set old_pthread_create_joinable
13731                         eval $setvar
13732                 else            
13733                         set try -DJOINABLE=__UNDETACHED
13734                         if eval $compile; then
13735                                 echo "You seem to use __UNDETACHED." >&4
13736                                 val="$define"
13737                                 set d_old_pthread_create_joinable
13738                                 eval $setvar
13739                                 val=__UNDETACHED
13740                                 set old_pthread_create_joinable
13741                                 eval $setvar
13742                         else
13743                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
13744                                 val="$define"
13745                                 set d_old_pthread_create_joinable
13746                                 eval $setvar
13747                                 val=0
13748                                 set old_pthread_create_joinable
13749                                 eval $setvar
13750                         fi
13751                 fi
13752         fi
13753         $rm -f try try.*
13754 else
13755     d_old_pthread_create_joinable="$undef"
13756     old_pthread_create_joinable=""
13757 fi
13758
13759 : see if pause exists
13760 set pause d_pause
13761 eval $inlibc
13762
13763 : see if pipe exists
13764 set pipe d_pipe
13765 eval $inlibc
13766
13767 : see if poll exists
13768 set poll d_poll
13769 eval $inlibc
13770
13771 : see if readlink exists
13772 set readlink d_readlink
13773 eval $inlibc
13774
13775 echo " "
13776 procselfexe=''
13777 val="$undef"
13778 case "$d_readlink" in
13779 "$define")
13780         if $issymlink /proc/self/exe ; then
13781                 $ls -l /proc/self/exe > reflect
13782                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13783                         echo "You have Linux-like /proc/self/exe."
13784                         procselfexe='"/proc/self/exe"'
13785                         val="$define"
13786                 fi
13787         fi
13788         if $issymlink /proc/curproc/file ; then
13789                 $ls -l /proc/curproc/file > reflect
13790                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13791                         echo "You have BSD-like /proc/curproc/file."
13792                         procselfexe='"/proc/curproc/file"'
13793                         val="$define"
13794                 fi
13795         fi
13796         ;;
13797 esac
13798 $rm -f reflect
13799 set d_procselfexe
13800 eval $setvar
13801
13802 : see whether the pthread_atfork exists
13803 $cat >try.c <<EOP
13804 #include <pthread.h>
13805 #include <stdio.h>
13806 int main() {
13807 #ifdef  PTHREAD_ATFORK
13808         pthread_atfork(NULL,NULL,NULL);
13809 #endif
13810 }
13811 EOP
13812
13813 : see if pthread_atfork exists
13814 set try -DPTHREAD_ATFORK
13815 if eval $compile; then
13816     val="$define"
13817 else
13818     val="$undef"
13819 fi
13820 case "$usethreads" in
13821 $define)
13822         case "$val" in
13823         $define) echo 'pthread_atfork found.' >&4        ;;
13824         *)       echo 'pthread_atfork NOT found.' >&4    ;;
13825         esac
13826 esac
13827 set d_pthread_atfork
13828 eval $setvar
13829
13830
13831 : see whether the various POSIXish _yields exist
13832 $cat >try.c <<EOP
13833 #include <pthread.h>
13834 #include <stdio.h>
13835 int main() {
13836 #ifdef SCHED_YIELD
13837         sched_yield();
13838 #else
13839 #ifdef PTHREAD_YIELD
13840         pthread_yield();
13841 #else
13842 #ifdef PTHREAD_YIELD_NULL
13843         pthread_yield(NULL);
13844 #endif
13845 #endif
13846 #endif
13847 }
13848 EOP
13849 : see if sched_yield exists
13850 set try -DSCHED_YIELD
13851 if eval $compile; then
13852     val="$define"
13853     sched_yield='sched_yield()'
13854 else
13855     val="$undef"
13856 fi
13857 case "$usethreads" in
13858 $define)
13859         case "$val" in
13860         $define) echo 'sched_yield() found.' >&4        ;;
13861         *)       echo 'sched_yield() NOT found.' >&4    ;;
13862         esac
13863 esac
13864 set d_sched_yield
13865 eval $setvar
13866
13867 : see if pthread_yield exists
13868 set try -DPTHREAD_YIELD
13869 if eval $compile; then
13870     val="$define"
13871     case "$sched_yield" in
13872     '') sched_yield='pthread_yield()' ;;
13873     esac
13874 else
13875     set try -DPTHREAD_YIELD_NULL
13876     if eval $compile; then
13877         val="$define"
13878         case "$sched_yield" in
13879         '') sched_yield='pthread_yield(NULL)' ;;
13880         esac
13881     else
13882         val="$undef"
13883     fi
13884 fi
13885 case "$usethreads" in
13886 $define)
13887         case "$val" in
13888         $define) echo 'pthread_yield() found.' >&4      ;;
13889         *)       echo 'pthread_yield() NOT found.' >&4  ;;
13890         esac
13891         ;;
13892 esac
13893 set d_pthread_yield
13894 eval $setvar
13895
13896 case "$sched_yield" in
13897 '') sched_yield=undef ;;
13898 esac
13899
13900 $rm -f try try.*
13901
13902 : see if random_r exists
13903 set random_r d_random_r
13904 eval $inlibc
13905 case "$d_random_r" in
13906 "$define")
13907         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
13908         case "$d_random_r_proto:$usethreads" in
13909         ":define")      d_random_r_proto=define
13910                 set d_random_r_proto random_r $hdrs
13911                 eval $hasproto ;;
13912         *)      ;;
13913         esac
13914         case "$d_random_r_proto" in
13915         define)
13916         case "$random_r_proto" in
13917         ''|0) try='int random_r(int*, struct random_data*);'
13918         ./protochk "extern $try" $hdrs && random_r_proto=I_TS ;;
13919         esac
13920         case "$random_r_proto" in
13921         ''|0)   d_random_r=undef
13922                 random_r_proto=0
13923                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
13924         * )     case "$random_r_proto" in
13925                 REENTRANT_PROTO*) ;;
13926                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
13927                 esac
13928                 echo "Prototype: $try" ;;
13929         esac
13930         ;;
13931         *)      case "$usethreads" in
13932                 define) echo "random_r has no prototype, not using it." >&4 ;;
13933                 esac
13934                 d_random_r=undef
13935                 random_r_proto=0
13936                 ;;
13937         esac
13938         ;;
13939 *)      random_r_proto=0
13940         ;;
13941 esac
13942
13943 : see if readdir and friends exist
13944 set readdir d_readdir
13945 eval $inlibc
13946 set seekdir d_seekdir
13947 eval $inlibc
13948 set telldir d_telldir
13949 eval $inlibc
13950 set rewinddir d_rewinddir
13951 eval $inlibc
13952
13953 : see if readdir64_r exists
13954 set readdir64_r d_readdir64_r
13955 eval $inlibc
13956 case "$d_readdir64_r" in
13957 "$define")
13958         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
13959         case "$d_readdir64_r_proto:$usethreads" in
13960         ":define")      d_readdir64_r_proto=define
13961                 set d_readdir64_r_proto readdir64_r $hdrs
13962                 eval $hasproto ;;
13963         *)      ;;
13964         esac
13965         case "$d_readdir64_r_proto" in
13966         define)
13967         case "$readdir64_r_proto" in
13968         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
13969         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
13970         esac
13971         case "$readdir64_r_proto" in
13972         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
13973         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
13974         esac
13975         case "$readdir64_r_proto" in
13976         ''|0)   d_readdir64_r=undef
13977                 readdir64_r_proto=0
13978                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
13979         * )     case "$readdir64_r_proto" in
13980                 REENTRANT_PROTO*) ;;
13981                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
13982                 esac
13983                 echo "Prototype: $try" ;;
13984         esac
13985         ;;
13986         *)      case "$usethreads" in
13987                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
13988                 esac
13989                 d_readdir64_r=undef
13990                 readdir64_r_proto=0
13991                 ;;
13992         esac
13993         ;;
13994 *)      readdir64_r_proto=0
13995         ;;
13996 esac
13997
13998 : see if readdir_r exists
13999 set readdir_r d_readdir_r
14000 eval $inlibc
14001 case "$d_readdir_r" in
14002 "$define")
14003         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14004         case "$d_readdir_r_proto:$usethreads" in
14005         ":define")      d_readdir_r_proto=define
14006                 set d_readdir_r_proto readdir_r $hdrs
14007                 eval $hasproto ;;
14008         *)      ;;
14009         esac
14010         case "$d_readdir_r_proto" in
14011         define)
14012         case "$readdir_r_proto" in
14013         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14014         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14015         esac
14016         case "$readdir_r_proto" in
14017         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14018         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14019         esac
14020         case "$readdir_r_proto" in
14021         ''|0)   d_readdir_r=undef
14022                 readdir_r_proto=0
14023                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14024         * )     case "$readdir_r_proto" in
14025                 REENTRANT_PROTO*) ;;
14026                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14027                 esac
14028                 echo "Prototype: $try" ;;
14029         esac
14030         ;;
14031         *)      case "$usethreads" in
14032                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14033                 esac
14034                 d_readdir_r=undef
14035                 readdir_r_proto=0
14036                 ;;
14037         esac
14038         ;;
14039 *)      readdir_r_proto=0
14040         ;;
14041 esac
14042
14043 : see if readv exists
14044 set readv d_readv
14045 eval $inlibc
14046
14047 : see if recvmsg exists
14048 set recvmsg d_recvmsg
14049 eval $inlibc
14050
14051 : see if rename exists
14052 set rename d_rename
14053 eval $inlibc
14054
14055 : see if rmdir exists
14056 set rmdir d_rmdir
14057 eval $inlibc
14058
14059 : see if memory.h is available.
14060 val=''
14061 set memory.h val
14062 eval $inhdr
14063
14064 : See if it conflicts with string.h
14065 case "$val" in
14066 $define)
14067         case "$strings" in
14068         '') ;;
14069         *)
14070                 $cppstdin $cppflags $cppminus < $strings > mem.h
14071                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14072                         echo " "
14073                         echo "We won't be including <memory.h>."
14074                         val="$undef"
14075                 fi
14076                 $rm -f mem.h
14077                 ;;
14078         esac
14079 esac
14080 set i_memory
14081 eval $setvar
14082
14083 : can bcopy handle overlapping blocks?
14084 echo " "
14085 val="$undef"
14086 case "$d_memmove" in
14087 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14088 *)      case "$d_bcopy" in
14089         "$define")
14090                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14091                 $cat >try.c <<EOCP
14092 #$i_memory I_MEMORY
14093 #$i_stdlib I_STDLIB
14094 #$i_string I_STRING
14095 #$i_unistd I_UNISTD
14096 EOCP
14097         $cat >>try.c <<'EOCP'
14098 #include <stdio.h>
14099 #ifdef I_MEMORY
14100 #  include <memory.h>
14101 #endif
14102 #ifdef I_STDLIB
14103 #  include <stdlib.h>
14104 #endif
14105 #ifdef I_STRING
14106 #  include <string.h>
14107 #else
14108 #  include <strings.h>
14109 #endif
14110 #ifdef I_UNISTD
14111 #  include <unistd.h>  /* Needed for NetBSD */
14112 #endif
14113 int main()
14114 {
14115 char buf[128], abc[128];
14116 char *b;
14117 int len;
14118 int off;
14119 int align;
14120
14121 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14122    try to store the string in read-only memory. */
14123 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14124
14125 for (align = 7; align >= 0; align--) {
14126         for (len = 36; len; len--) {
14127                 b = buf+align;
14128                 bcopy(abc, b, len);
14129                 for (off = 1; off <= len; off++) {
14130                         bcopy(b, b+off, len);
14131                         bcopy(b+off, b, len);
14132                         if (bcmp(b, abc, len))
14133                                 exit(1);
14134                 }
14135         }
14136 }
14137 exit(0);
14138 }
14139 EOCP
14140                 set try
14141                 if eval $compile_ok; then
14142                         if ./try 2>/dev/null; then
14143                                 echo "Yes, it can."
14144                                 val="$define"
14145                         else
14146                                 echo "It can't, sorry."
14147                         fi
14148                 else
14149                         echo "(I can't compile the test program, so we'll assume not...)"
14150                 fi
14151                 ;;
14152         esac
14153         $rm -f try.* try core
14154         ;;
14155 esac
14156 set d_safebcpy
14157 eval $setvar
14158
14159 : can memcpy handle overlapping blocks?
14160 echo " "
14161 val="$undef"
14162 case "$d_memmove" in
14163 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14164 *)      case "$d_memcpy" in
14165         "$define")
14166                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14167                 $cat >try.c <<EOCP
14168 #$i_memory I_MEMORY
14169 #$i_stdlib I_STDLIB
14170 #$i_string I_STRING
14171 #$i_unistd I_UNISTD
14172 EOCP
14173         $cat >>try.c <<'EOCP'
14174 #include <stdio.h>
14175 #ifdef I_MEMORY
14176 #  include <memory.h>
14177 #endif
14178 #ifdef I_STDLIB
14179 #  include <stdlib.h>
14180 #endif
14181 #ifdef I_STRING
14182 #  include <string.h>
14183 #else
14184 #  include <strings.h>
14185 #endif
14186 #ifdef I_UNISTD
14187 #  include <unistd.h>  /* Needed for NetBSD */
14188 #endif
14189 int main()
14190 {
14191 char buf[128], abc[128];
14192 char *b;
14193 int len;
14194 int off;
14195 int align;
14196
14197 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14198    try to store the string in read-only memory. */
14199 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14200
14201 for (align = 7; align >= 0; align--) {
14202         for (len = 36; len; len--) {
14203                 b = buf+align;
14204                 memcpy(b, abc, len);
14205                 for (off = 1; off <= len; off++) {
14206                         memcpy(b+off, b, len);
14207                         memcpy(b, b+off, len);
14208                         if (memcmp(b, abc, len))
14209                                 exit(1);
14210                 }
14211         }
14212 }
14213 exit(0);
14214 }
14215 EOCP
14216                 set try
14217                 if eval $compile_ok; then
14218                         if ./try 2>/dev/null; then
14219                                 echo "Yes, it can."
14220                                 val="$define"
14221                         else
14222                                 echo "It can't, sorry."
14223                         fi
14224                 else
14225                         echo "(I can't compile the test program, so we'll assume not...)"
14226                 fi
14227                 ;;
14228         esac
14229         $rm -f try.* try core
14230         ;;
14231 esac
14232 set d_safemcpy
14233 eval $setvar
14234
14235 : can memcmp be trusted to compare relative magnitude?
14236 val="$undef"
14237 case "$d_memcmp" in
14238 "$define")
14239         echo " "
14240         echo "Checking if your memcmp() can compare relative magnitude..." >&4
14241         $cat >try.c <<EOCP
14242 #$i_memory I_MEMORY
14243 #$i_stdlib I_STDLIB
14244 #$i_string I_STRING
14245 #$i_unistd I_UNISTD
14246 EOCP
14247         $cat >>try.c <<'EOCP'
14248 #include <stdio.h>
14249 #ifdef I_MEMORY
14250 #  include <memory.h>
14251 #endif
14252 #ifdef I_STDLIB
14253 #  include <stdlib.h>
14254 #endif
14255 #ifdef I_STRING
14256 #  include <string.h>
14257 #else
14258 #  include <strings.h>
14259 #endif
14260 #ifdef I_UNISTD
14261 #  include <unistd.h>  /* Needed for NetBSD */
14262 #endif
14263 int main()
14264 {
14265 char a = -1;
14266 char b = 0;
14267 if ((a < b) && memcmp(&a, &b, 1) < 0)
14268         exit(1);
14269 exit(0);
14270 }
14271 EOCP
14272         set try
14273         if eval $compile_ok; then
14274                 if $run ./try 2>/dev/null; then
14275                         echo "Yes, it can."
14276                         val="$define"
14277                 else
14278                         echo "No, it can't (it uses signed chars)."
14279                 fi
14280         else
14281                 echo "(I can't compile the test program, so we'll assume not...)"
14282         fi
14283         ;;
14284 esac
14285 $rm -f try.* try core
14286 set d_sanemcmp
14287 eval $setvar
14288
14289 : see if prototype for sbrk is available
14290 echo " "
14291 set d_sbrkproto sbrk $i_unistd unistd.h
14292 eval $hasproto
14293
14294 : see if select exists
14295 set select d_select
14296 eval $inlibc
14297
14298 : see if semctl exists
14299 set semctl d_semctl
14300 eval $inlibc
14301
14302 : see if semget exists
14303 set semget d_semget
14304 eval $inlibc
14305
14306 : see if semop exists
14307 set semop d_semop
14308 eval $inlibc
14309
14310 : see how much of the 'sem*(2)' library is present.
14311 h_sem=true
14312 echo " "
14313 case "$d_semctl$d_semget$d_semop" in
14314 *"$undef"*) h_sem=false;;
14315 esac
14316 case "$osname" in
14317 freebsd)
14318     case "`ipcs 2>&1`" in
14319     "SVID messages"*"not configured"*)
14320         echo "Your $osname does not have the sem*(2) configured." >&4
14321         h_sem=false
14322         val="$undef"
14323         set semctl d_semctl
14324         eval $setvar
14325         set semget d_semget
14326         eval $setvar
14327         set semop d_semop
14328         eval $setvar
14329         ;;
14330     esac
14331     ;;
14332 esac
14333 : we could also check for sys/ipc.h ...
14334 if $h_sem && $test `./findhdr sys/sem.h`; then
14335         echo "You have the full sem*(2) library." >&4
14336         val="$define"
14337 else
14338         echo "You don't have the full sem*(2) library." >&4
14339         val="$undef"
14340 fi
14341 set d_sem
14342 eval $setvar
14343
14344 : see whether sys/sem.h defines union semun
14345 echo " "
14346 $cat > try.c <<'END'
14347 #include <sys/types.h>
14348 #include <sys/ipc.h>
14349 #include <sys/sem.h>
14350 int main () { union semun semun; semun.buf = 0; }
14351 END
14352 set try
14353 if eval $compile; then
14354     echo "You have union semun in <sys/sem.h>." >&4
14355     val="$define"
14356 else
14357     echo "You do not have union semun in <sys/sem.h>." >&4
14358     val="$undef"
14359 fi
14360 $rm -f try try.c try.h
14361 set d_union_semun
14362 eval $setvar
14363
14364 : see how to do semctl IPC_STAT
14365 case "$d_sem" in
14366 $define)
14367     : see whether semctl IPC_STAT can use union semun
14368     echo " "
14369     $cat > try.h <<END
14370 #ifndef S_IRUSR
14371 #   ifdef S_IREAD
14372 #       define S_IRUSR S_IREAD
14373 #       define S_IWUSR S_IWRITE
14374 #       define S_IXUSR S_IEXEC
14375 #   else
14376 #       define S_IRUSR 0400
14377 #       define S_IWUSR 0200
14378 #       define S_IXUSR 0100
14379 #   endif
14380 #   define S_IRGRP (S_IRUSR>>3)
14381 #   define S_IWGRP (S_IWUSR>>3)
14382 #   define S_IXGRP (S_IXUSR>>3)
14383 #   define S_IROTH (S_IRUSR>>6)
14384 #   define S_IWOTH (S_IWUSR>>6)
14385 #   define S_IXOTH (S_IXUSR>>6)
14386 #endif
14387 #ifndef S_IRWXU
14388 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14389 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14390 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14391 #endif
14392 END
14393
14394     $cat > try.c <<END
14395 #include <sys/types.h>
14396 #include <sys/ipc.h>
14397 #include <sys/sem.h>
14398 #include <sys/stat.h>
14399 #include <stdio.h>
14400 #include <errno.h>
14401 #include "try.h"
14402 #ifndef errno
14403 extern int errno;
14404 #endif
14405 #$d_union_semun HAS_UNION_SEMUN
14406 int main() {
14407     union semun
14408 #ifndef HAS_UNION_SEMUN
14409     {
14410         int val;
14411         struct semid_ds *buf;
14412         unsigned short *array;
14413     }
14414 #endif
14415     arg;
14416     int sem, st;
14417
14418 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14419     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14420     if (sem > -1) {
14421         struct semid_ds argbuf;
14422         arg.buf = &argbuf;
14423 #       ifdef IPC_STAT
14424         st = semctl(sem, 0, IPC_STAT, arg);
14425         if (st == 0)
14426             printf("semun\n");
14427         else
14428 #       endif /* IPC_STAT */
14429             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14430 #       ifdef IPC_RMID
14431         if (semctl(sem, 0, IPC_RMID, arg) != 0)
14432 #       endif /* IPC_RMID */
14433             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14434     } else
14435 #endif /* IPC_PRIVATE && ... */
14436         printf("semget failed: errno = %d\n", errno);
14437   return 0;
14438 }
14439 END
14440     val="$undef"
14441     set try
14442     if eval $compile; then
14443         xxx=`$run ./try`
14444         case "$xxx" in
14445         semun) val="$define" ;;
14446         esac
14447     fi
14448     $rm -f try try.c
14449     set d_semctl_semun
14450     eval $setvar
14451     case "$d_semctl_semun" in
14452     $define)
14453         echo "You can use union semun for semctl IPC_STAT." >&4
14454         also='also'
14455         ;;
14456     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
14457         also=''
14458         ;;
14459     esac
14460
14461     : see whether semctl IPC_STAT can use struct semid_ds pointer
14462     $cat > try.c <<'END'
14463 #include <sys/types.h>
14464 #include <sys/ipc.h>
14465 #include <sys/sem.h>
14466 #include <sys/stat.h>
14467 #include "try.h"
14468 #include <stdio.h>
14469 #include <errno.h>
14470 #ifndef errno
14471 extern int errno;
14472 #endif
14473 int main() {
14474     struct semid_ds arg;
14475     int sem, st;
14476
14477 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
14478     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14479     if (sem > -1) {
14480 #       ifdef IPC_STAT
14481         st = semctl(sem, 0, IPC_STAT, &arg);
14482         if (st == 0)
14483             printf("semid_ds\n");
14484         else
14485 #       endif /* IPC_STAT */
14486             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14487 #       ifdef IPC_RMID
14488         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
14489 #       endif /* IPC_RMID */
14490             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14491     } else
14492 #endif /* IPC_PRIVATE && ... */
14493         printf("semget failed: errno = %d\n", errno);
14494
14495     return 0;
14496 }
14497 END
14498     val="$undef"
14499     set try
14500     if eval $compile; then
14501         xxx=`$run ./try`
14502         case "$xxx" in
14503         semid_ds) val="$define" ;;
14504         esac
14505     fi
14506     $rm -f try try.c
14507     set d_semctl_semid_ds
14508     eval $setvar
14509     case "$d_semctl_semid_ds" in
14510     $define)
14511         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
14512         ;;
14513     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
14514         ;;
14515     esac
14516     $rm -f try.h
14517     ;;
14518 *)  val="$undef"
14519
14520     # We do not have the full sem*(2) library, so assume we can not
14521     # use either.
14522
14523     set d_semctl_semun
14524     eval $setvar
14525
14526     set d_semctl_semid_ds
14527     eval $setvar
14528     ;;
14529 esac
14530
14531 : see if sendmsg exists
14532 set sendmsg d_sendmsg
14533 eval $inlibc
14534
14535 : see if setegid exists
14536 set setegid d_setegid
14537 eval $inlibc
14538
14539 : see if seteuid exists
14540 set seteuid d_seteuid
14541 eval $inlibc
14542
14543 : see if setgrent exists
14544 set setgrent d_setgrent
14545 eval $inlibc
14546
14547 : see if setgrent_r exists
14548 set setgrent_r d_setgrent_r
14549 eval $inlibc
14550 case "$d_setgrent_r" in
14551 "$define")
14552         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
14553         case "$d_setgrent_r_proto:$usethreads" in
14554         ":define")      d_setgrent_r_proto=define
14555                 set d_setgrent_r_proto setgrent_r $hdrs
14556                 eval $hasproto ;;
14557         *)      ;;
14558         esac
14559         case "$d_setgrent_r_proto" in
14560         define)
14561         case "$setgrent_r_proto" in
14562         ''|0) try='int setgrent_r(FILE**);'
14563         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
14564         esac
14565         case "$setgrent_r_proto" in
14566         ''|0) try='void setgrent_r(FILE**);'
14567         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
14568         esac
14569         case "$setgrent_r_proto" in
14570         ''|0)   d_setgrent_r=undef
14571                 setgrent_r_proto=0
14572                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
14573         * )     case "$setgrent_r_proto" in
14574                 REENTRANT_PROTO*) ;;
14575                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
14576                 esac
14577                 echo "Prototype: $try" ;;
14578         esac
14579         ;;
14580         *)      case "$usethreads" in
14581                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
14582                 esac
14583                 d_setgrent_r=undef
14584                 setgrent_r_proto=0
14585                 ;;
14586         esac
14587         ;;
14588 *)      setgrent_r_proto=0
14589         ;;
14590 esac
14591
14592 : see if sethostent exists
14593 set sethostent d_sethent
14594 eval $inlibc
14595
14596 : see if sethostent_r exists
14597 set sethostent_r d_sethostent_r
14598 eval $inlibc
14599 case "$d_sethostent_r" in
14600 "$define")
14601         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14602         case "$d_sethostent_r_proto:$usethreads" in
14603         ":define")      d_sethostent_r_proto=define
14604                 set d_sethostent_r_proto sethostent_r $hdrs
14605                 eval $hasproto ;;
14606         *)      ;;
14607         esac
14608         case "$d_sethostent_r_proto" in
14609         define)
14610         case "$sethostent_r_proto" in
14611         ''|0) try='int sethostent_r(int, struct hostent_data*);'
14612         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
14613         esac
14614         case "$sethostent_r_proto" in
14615         ''|0) try='void sethostent_r(int, struct hostent_data*);'
14616         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
14617         esac
14618         case "$sethostent_r_proto" in
14619         ''|0)   d_sethostent_r=undef
14620                 sethostent_r_proto=0
14621                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
14622         * )     case "$sethostent_r_proto" in
14623                 REENTRANT_PROTO*) ;;
14624                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
14625                 esac
14626                 echo "Prototype: $try" ;;
14627         esac
14628         ;;
14629         *)      case "$usethreads" in
14630                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
14631                 esac
14632                 d_sethostent_r=undef
14633                 sethostent_r_proto=0
14634                 ;;
14635         esac
14636         ;;
14637 *)      sethostent_r_proto=0
14638         ;;
14639 esac
14640
14641 : see if setitimer exists
14642 set setitimer d_setitimer
14643 eval $inlibc
14644
14645 : see if setlinebuf exists
14646 set setlinebuf d_setlinebuf
14647 eval $inlibc
14648
14649 : see if setlocale exists
14650 set setlocale d_setlocale
14651 eval $inlibc
14652
14653 : see if locale.h is available
14654 set locale.h i_locale
14655 eval $inhdr
14656
14657 : see if setlocale_r exists
14658 set setlocale_r d_setlocale_r
14659 eval $inlibc
14660 case "$d_setlocale_r" in
14661 "$define")
14662         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
14663         case "$d_setlocale_r_proto:$usethreads" in
14664         ":define")      d_setlocale_r_proto=define
14665                 set d_setlocale_r_proto setlocale_r $hdrs
14666                 eval $hasproto ;;
14667         *)      ;;
14668         esac
14669         case "$d_setlocale_r_proto" in
14670         define)
14671         case "$setlocale_r_proto" in
14672         ''|0) try='int setlocale_r(int, const char*, char*, int);'
14673         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
14674         esac
14675         case "$setlocale_r_proto" in
14676         ''|0)   d_setlocale_r=undef
14677                 setlocale_r_proto=0
14678                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
14679         * )     case "$setlocale_r_proto" in
14680                 REENTRANT_PROTO*) ;;
14681                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
14682                 esac
14683                 echo "Prototype: $try" ;;
14684         esac
14685         ;;
14686         *)      case "$usethreads" in
14687                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
14688                 esac
14689                 d_setlocale_r=undef
14690                 setlocale_r_proto=0
14691                 ;;
14692         esac
14693         ;;
14694 *)      setlocale_r_proto=0
14695         ;;
14696 esac
14697
14698 : see if setnetent exists
14699 set setnetent d_setnent
14700 eval $inlibc
14701
14702 : see if setnetent_r exists
14703 set setnetent_r d_setnetent_r
14704 eval $inlibc
14705 case "$d_setnetent_r" in
14706 "$define")
14707         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14708         case "$d_setnetent_r_proto:$usethreads" in
14709         ":define")      d_setnetent_r_proto=define
14710                 set d_setnetent_r_proto setnetent_r $hdrs
14711                 eval $hasproto ;;
14712         *)      ;;
14713         esac
14714         case "$d_setnetent_r_proto" in
14715         define)
14716         case "$setnetent_r_proto" in
14717         ''|0) try='int setnetent_r(int, struct netent_data*);'
14718         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
14719         esac
14720         case "$setnetent_r_proto" in
14721         ''|0) try='void setnetent_r(int, struct netent_data*);'
14722         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
14723         esac
14724         case "$setnetent_r_proto" in
14725         ''|0)   d_setnetent_r=undef
14726                 setnetent_r_proto=0
14727                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
14728         * )     case "$setnetent_r_proto" in
14729                 REENTRANT_PROTO*) ;;
14730                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
14731                 esac
14732                 echo "Prototype: $try" ;;
14733         esac
14734         ;;
14735         *)      case "$usethreads" in
14736                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
14737                 esac
14738                 d_setnetent_r=undef
14739                 setnetent_r_proto=0
14740                 ;;
14741         esac
14742         ;;
14743 *)      setnetent_r_proto=0
14744         ;;
14745 esac
14746
14747 : see if setprotoent exists
14748 set setprotoent d_setpent
14749 eval $inlibc
14750
14751 : see if setpgid exists
14752 set setpgid d_setpgid
14753 eval $inlibc
14754
14755 : see if setpgrp2 exists
14756 set setpgrp2 d_setpgrp2
14757 eval $inlibc
14758
14759 : see if setpriority exists
14760 set setpriority d_setprior
14761 eval $inlibc
14762
14763 : see if setproctitle exists
14764 set setproctitle d_setproctitle
14765 eval $inlibc
14766
14767 : see if setprotoent_r exists
14768 set setprotoent_r d_setprotoent_r
14769 eval $inlibc
14770 case "$d_setprotoent_r" in
14771 "$define")
14772         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14773         case "$d_setprotoent_r_proto:$usethreads" in
14774         ":define")      d_setprotoent_r_proto=define
14775                 set d_setprotoent_r_proto setprotoent_r $hdrs
14776                 eval $hasproto ;;
14777         *)      ;;
14778         esac
14779         case "$d_setprotoent_r_proto" in
14780         define)
14781         case "$setprotoent_r_proto" in
14782         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
14783         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
14784         esac
14785         case "$setprotoent_r_proto" in
14786         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
14787         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
14788         esac
14789         case "$setprotoent_r_proto" in
14790         ''|0)   d_setprotoent_r=undef
14791                 setprotoent_r_proto=0
14792                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
14793         * )     case "$setprotoent_r_proto" in
14794                 REENTRANT_PROTO*) ;;
14795                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
14796                 esac
14797                 echo "Prototype: $try" ;;
14798         esac
14799         ;;
14800         *)      case "$usethreads" in
14801                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
14802                 esac
14803                 d_setprotoent_r=undef
14804                 setprotoent_r_proto=0
14805                 ;;
14806         esac
14807         ;;
14808 *)      setprotoent_r_proto=0
14809         ;;
14810 esac
14811
14812 : see if setpwent exists
14813 set setpwent d_setpwent
14814 eval $inlibc
14815
14816 : see if setpwent_r exists
14817 set setpwent_r d_setpwent_r
14818 eval $inlibc
14819 case "$d_setpwent_r" in
14820 "$define")
14821         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14822         case "$d_setpwent_r_proto:$usethreads" in
14823         ":define")      d_setpwent_r_proto=define
14824                 set d_setpwent_r_proto setpwent_r $hdrs
14825                 eval $hasproto ;;
14826         *)      ;;
14827         esac
14828         case "$d_setpwent_r_proto" in
14829         define)
14830         case "$setpwent_r_proto" in
14831         ''|0) try='int setpwent_r(FILE**);'
14832         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
14833         esac
14834         case "$setpwent_r_proto" in
14835         ''|0) try='void setpwent_r(FILE**);'
14836         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
14837         esac
14838         case "$setpwent_r_proto" in
14839         ''|0)   d_setpwent_r=undef
14840                 setpwent_r_proto=0
14841                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
14842         * )     case "$setpwent_r_proto" in
14843                 REENTRANT_PROTO*) ;;
14844                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
14845                 esac
14846                 echo "Prototype: $try" ;;
14847         esac
14848         ;;
14849         *)      case "$usethreads" in
14850                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
14851                 esac
14852                 d_setpwent_r=undef
14853                 setpwent_r_proto=0
14854                 ;;
14855         esac
14856         ;;
14857 *)      setpwent_r_proto=0
14858         ;;
14859 esac
14860
14861 : see if setregid exists
14862 set setregid d_setregid
14863 eval $inlibc
14864 set setresgid d_setresgid
14865 eval $inlibc
14866
14867 : see if setreuid exists
14868 set setreuid d_setreuid
14869 eval $inlibc
14870 set setresuid d_setresuid
14871 eval $inlibc
14872
14873 : see if setrgid exists
14874 set setrgid d_setrgid
14875 eval $inlibc
14876
14877 : see if setruid exists
14878 set setruid d_setruid
14879 eval $inlibc
14880
14881 : see if setservent exists
14882 set setservent d_setsent
14883 eval $inlibc
14884
14885 : see if setservent_r exists
14886 set setservent_r d_setservent_r
14887 eval $inlibc
14888 case "$d_setservent_r" in
14889 "$define")
14890         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14891         case "$d_setservent_r_proto:$usethreads" in
14892         ":define")      d_setservent_r_proto=define
14893                 set d_setservent_r_proto setservent_r $hdrs
14894                 eval $hasproto ;;
14895         *)      ;;
14896         esac
14897         case "$d_setservent_r_proto" in
14898         define)
14899         case "$setservent_r_proto" in
14900         ''|0) try='int setservent_r(int, struct servent_data*);'
14901         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
14902         esac
14903         case "$setservent_r_proto" in
14904         ''|0) try='void setservent_r(int, struct servent_data*);'
14905         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
14906         esac
14907         case "$setservent_r_proto" in
14908         ''|0)   d_setservent_r=undef
14909                 setservent_r_proto=0
14910                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
14911         * )     case "$setservent_r_proto" in
14912                 REENTRANT_PROTO*) ;;
14913                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
14914                 esac
14915                 echo "Prototype: $try" ;;
14916         esac
14917         ;;
14918         *)      case "$usethreads" in
14919                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
14920                 esac
14921                 d_setservent_r=undef
14922                 setservent_r_proto=0
14923                 ;;
14924         esac
14925         ;;
14926 *)      setservent_r_proto=0
14927         ;;
14928 esac
14929
14930 : see if setsid exists
14931 set setsid d_setsid
14932 eval $inlibc
14933
14934 : see if setvbuf exists
14935 set setvbuf d_setvbuf
14936 eval $inlibc
14937
14938 : see if sfio.h is available
14939 set sfio.h i_sfio
14940 eval $inhdr
14941
14942
14943 : see if sfio library is available
14944 case "$i_sfio" in
14945 $define)
14946         val=''
14947         set sfreserve val
14948         eval $inlibc
14949         ;;
14950 *)
14951         val="$undef"
14952         ;;
14953 esac
14954 : Ok, but do we want to use it.
14955 case "$val" in
14956 $define)
14957         case "$usesfio" in
14958         true|$define|[yY]*) dflt='y';;
14959         *) dflt='n';;
14960         esac
14961         echo "$package can use the sfio library, but it is experimental."
14962         case "$useperlio" in
14963         "$undef")
14964             echo "For sfio also the PerlIO abstraction layer is needed."
14965             echo "Earlier you said you wouldn't want that."
14966             ;;
14967         esac
14968         rp="You seem to have sfio available, do you want to try using it?"
14969         . ./myread
14970         case "$ans" in
14971         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
14972                 useperlio="$define"
14973                 val="$define"
14974                 ;;
14975         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
14976                 val="$undef"
14977                 ;;
14978         esac
14979         ;;
14980 *)      case "$usesfio" in
14981         true|$define|[yY]*)
14982                 echo "Sorry, cannot find sfio on this machine." >&4
14983                 echo "Ignoring your setting of usesfio=$usesfio." >&4
14984                 val="$undef"
14985                 ;;
14986         esac
14987         ;;
14988 esac
14989 set d_sfio
14990 eval $setvar
14991 case "$d_sfio" in
14992 $define) usesfio='true';;
14993 *) usesfio='false';;
14994 esac
14995 case "$d_sfio" in
14996 $define) ;;
14997 *)      : Remove sfio from list of libraries to use
14998         case "$libs" in
14999         *-lsfio*)
15000                 echo "Removing unneeded -lsfio from library list" >&4
15001                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15002                 shift
15003                 libs="$*"
15004                 echo "libs = $libs" >&4
15005                 ;;
15006         esac
15007 ;;
15008 esac
15009
15010
15011 : see if shmctl exists
15012 set shmctl d_shmctl
15013 eval $inlibc
15014
15015 : see if shmget exists
15016 set shmget d_shmget
15017 eval $inlibc
15018
15019 : see if shmat exists
15020 set shmat d_shmat
15021 eval $inlibc
15022 : see what shmat returns
15023 case "$d_shmat" in
15024 "$define")
15025         $cat >shmat.c <<'END'
15026 #include <sys/shm.h>
15027 void *shmat();
15028 END
15029         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15030                 shmattype='void *'
15031         else
15032                 shmattype='char *'
15033         fi
15034         echo "and it returns ($shmattype)." >&4
15035         : see if a prototype for shmat is available
15036         xxx=`./findhdr sys/shm.h`
15037         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15038         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15039                 val="$define"
15040         else
15041                 val="$undef"
15042         fi
15043         $rm -f shmat.[co]
15044         ;;
15045 *)
15046         val="$undef"
15047         ;;
15048 esac
15049 set d_shmatprototype
15050 eval $setvar
15051
15052 : see if shmdt exists
15053 set shmdt d_shmdt
15054 eval $inlibc
15055
15056 : see how much of the 'shm*(2)' library is present.
15057 h_shm=true
15058 echo " "
15059 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15060 *"$undef"*) h_shm=false;;
15061 esac
15062 case "$osname" in
15063 freebsd)
15064     case "`ipcs 2>&1`" in
15065     "SVID shared memory"*"not configured"*)
15066         echo "Your $osname does not have the shm*(2) configured." >&4
15067         h_shm=false
15068         val="$undef"
15069         set shmctl d_shmctl
15070         evat $setvar
15071         set shmget d_shmget
15072         evat $setvar
15073         set shmat d_shmat
15074         evat $setvar
15075         set shmdt d_shmdt
15076         evat $setvar
15077         ;;
15078     esac
15079     ;;
15080 esac
15081 : we could also check for sys/ipc.h ...
15082 if $h_shm && $test `./findhdr sys/shm.h`; then
15083         echo "You have the full shm*(2) library." >&4
15084         val="$define"
15085 else
15086         echo "You don't have the full shm*(2) library." >&4
15087         val="$undef"
15088 fi
15089 set d_shm
15090 eval $setvar
15091
15092 echo " "
15093 : see if we have sigaction
15094 if set sigaction val -f d_sigaction; eval $csym; $val; then
15095         echo 'sigaction() found.' >&4
15096         $cat > try.c <<'EOP'
15097 #include <stdio.h>
15098 #include <sys/types.h>
15099 #include <signal.h>
15100 int main()
15101 {
15102     struct sigaction act, oact;
15103     act.sa_flags = 0;
15104     oact.sa_handler = 0;
15105     /* so that act and oact are used */
15106     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
15107 }
15108 EOP
15109         set try
15110         if eval $compile_ok; then
15111                 val="$define"
15112         else
15113                 echo "But you don't seem to have a useable struct sigaction." >&4
15114                 val="$undef"
15115         fi
15116 else
15117         echo 'sigaction NOT found.' >&4
15118         val="$undef"
15119 fi
15120 set d_sigaction; eval $setvar
15121 $rm -f try try$_o try.c
15122
15123 : see if sigprocmask exists
15124 set sigprocmask d_sigprocmask
15125 eval $inlibc
15126
15127 : see if sigsetjmp exists
15128 echo " "
15129 case "$d_sigsetjmp" in
15130 '')
15131         $cat >try.c <<'EOP'
15132 #include <setjmp.h>
15133 sigjmp_buf env;
15134 int set = 1;
15135 int main()
15136 {
15137         if (sigsetjmp(env,1))
15138                 exit(set);
15139         set = 0;
15140         siglongjmp(env, 1);
15141         exit(1);
15142 }
15143 EOP
15144         set try
15145         if eval $compile; then
15146                 if $run ./try >/dev/null 2>&1; then
15147                         echo "POSIX sigsetjmp found." >&4
15148                         val="$define"
15149                 else
15150                         $cat >&4 <<EOM
15151 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15152 I'll ignore them.
15153 EOM
15154                         val="$undef"
15155                 fi
15156         else
15157                 echo "sigsetjmp not found." >&4
15158                 val="$undef"
15159         fi
15160         ;;
15161 *) val="$d_sigsetjmp"
15162         case "$d_sigsetjmp" in
15163         $define) echo "POSIX sigsetjmp found." >&4;;
15164         $undef) echo "sigsetjmp not found." >&4;;
15165         esac
15166         ;;
15167 esac
15168 set d_sigsetjmp
15169 eval $setvar
15170 $rm -f try.c try
15171
15172 : see if sockatmark exists
15173 set sockatmark d_sockatmark
15174 eval $inlibc
15175
15176 : see if prototype for sockatmark is available
15177 echo " "
15178 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15179 eval $hasproto
15180
15181 : see if socks5_init exists
15182 set socks5_init d_socks5_init
15183 eval $inlibc
15184
15185 : see if srand48_r exists
15186 set srand48_r d_srand48_r
15187 eval $inlibc
15188 case "$d_srand48_r" in
15189 "$define")
15190         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15191         case "$d_srand48_r_proto:$usethreads" in
15192         ":define")      d_srand48_r_proto=define
15193                 set d_srand48_r_proto srand48_r $hdrs
15194                 eval $hasproto ;;
15195         *)      ;;
15196         esac
15197         case "$d_srand48_r_proto" in
15198         define)
15199         case "$srand48_r_proto" in
15200         ''|0) try='int srand48_r(long, struct drand48_data*);'
15201         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15202         esac
15203         case "$srand48_r_proto" in
15204         ''|0)   d_srand48_r=undef
15205                 srand48_r_proto=0
15206                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
15207         * )     case "$srand48_r_proto" in
15208                 REENTRANT_PROTO*) ;;
15209                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15210                 esac
15211                 echo "Prototype: $try" ;;
15212         esac
15213         ;;
15214         *)      case "$usethreads" in
15215                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15216                 esac
15217                 d_srand48_r=undef
15218                 srand48_r_proto=0
15219                 ;;
15220         esac
15221         ;;
15222 *)      srand48_r_proto=0
15223         ;;
15224 esac
15225
15226 : see if srandom_r exists
15227 set srandom_r d_srandom_r
15228 eval $inlibc
15229 case "$d_srandom_r" in
15230 "$define")
15231         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15232         case "$d_srandom_r_proto:$usethreads" in
15233         ":define")      d_srandom_r_proto=define
15234                 set d_srandom_r_proto srandom_r $hdrs
15235                 eval $hasproto ;;
15236         *)      ;;
15237         esac
15238         case "$d_srandom_r_proto" in
15239         define)
15240         case "$srandom_r_proto" in
15241         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15242         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15243         esac
15244         case "$srandom_r_proto" in
15245         ''|0)   d_srandom_r=undef
15246                 srandom_r_proto=0
15247                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
15248         * )     case "$srandom_r_proto" in
15249                 REENTRANT_PROTO*) ;;
15250                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15251                 esac
15252                 echo "Prototype: $try" ;;
15253         esac
15254         ;;
15255         *)      case "$usethreads" in
15256                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15257                 esac
15258                 d_srandom_r=undef
15259                 srandom_r_proto=0
15260                 ;;
15261         esac
15262         ;;
15263 *)      srandom_r_proto=0
15264         ;;
15265 esac
15266
15267 : see if prototype for setresgid is available
15268 echo " "
15269 set d_sresgproto setresgid $i_unistd unistd.h
15270 eval $hasproto
15271
15272 : see if prototype for setresuid is available
15273 echo " "
15274 set d_sresuproto setresuid $i_unistd unistd.h
15275 eval $hasproto
15276
15277 : see if sys/stat.h is available
15278 set sys/stat.h i_sysstat
15279 eval $inhdr
15280
15281
15282 : see if stat knows about block sizes
15283 echo " "
15284 echo "Checking to see if your struct stat has st_blocks field..." >&4
15285 set d_statblks stat st_blocks $i_sysstat sys/stat.h
15286 eval $hasfield
15287
15288
15289 : see if this is a sys/vfs.h system
15290 set sys/vfs.h i_sysvfs
15291 eval $inhdr
15292
15293
15294 : see if this is a sys/statfs.h system
15295 set sys/statfs.h i_sysstatfs
15296 eval $inhdr
15297
15298
15299 echo " "
15300 echo "Checking to see if your system supports struct statfs..." >&4
15301 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
15302 eval $hasstruct
15303 case "$d_statfs_s" in
15304 "$define")      echo "Yes, it does."   ;;
15305 *)              echo "No, it doesn't." ;;
15306 esac
15307
15308
15309
15310 : see if struct statfs knows about f_flags
15311 case "$d_statfs_s" in
15312 define) 
15313         echo " "
15314         echo "Checking to see if your struct statfs has f_flags field..." >&4
15315         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
15316         eval $hasfield
15317         ;;
15318 *)      val="$undef"
15319         set d_statfs_f_flags
15320         eval $setvar
15321         ;;
15322 esac
15323 case "$d_statfs_f_flags" in
15324 "$define")      echo "Yes, it does."   ;;
15325 *)              echo "No, it doesn't." ;;
15326 esac
15327
15328 : see if _ptr and _cnt from stdio act std
15329 echo " "
15330
15331 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15332         echo "(Looks like you have stdio.h from BSD.)"
15333         case "$stdio_ptr" in
15334         '') stdio_ptr='((fp)->_p)'
15335                 ptr_lval=$define
15336                 ;;
15337         *)      ptr_lval=$d_stdio_ptr_lval;;
15338         esac
15339         case "$stdio_cnt" in
15340         '') stdio_cnt='((fp)->_r)'
15341                 cnt_lval=$define
15342                 ;;
15343         *)      cnt_lval=$d_stdio_cnt_lval;;
15344         esac
15345         case "$stdio_base" in
15346         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15347         esac
15348         case "$stdio_bufsiz" in
15349         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15350         esac
15351 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
15352         echo "(Looks like you have stdio.h from Linux.)"
15353         case "$stdio_ptr" in
15354         '') stdio_ptr='((fp)->_IO_read_ptr)'
15355                 ptr_lval=$define
15356                 ;;
15357         *)      ptr_lval=$d_stdio_ptr_lval;;
15358         esac
15359         case "$stdio_cnt" in
15360         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15361                 cnt_lval=$undef
15362                 ;;
15363         *)      cnt_lval=$d_stdio_cnt_lval;;
15364         esac
15365         case "$stdio_base" in
15366         '') stdio_base='((fp)->_IO_read_base)';;
15367         esac
15368         case "$stdio_bufsiz" in
15369         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15370         esac
15371 else
15372         case "$stdio_ptr" in
15373         '') stdio_ptr='((fp)->_ptr)'
15374                 ptr_lval=$define
15375                 ;;
15376         *)      ptr_lval=$d_stdio_ptr_lval;;
15377         esac
15378         case "$stdio_cnt" in
15379         '') stdio_cnt='((fp)->_cnt)'
15380                 cnt_lval=$define
15381                 ;;
15382         *)      cnt_lval=$d_stdio_cnt_lval;;
15383         esac
15384         case "$stdio_base" in
15385         '') stdio_base='((fp)->_base)';;
15386         esac
15387         case "$stdio_bufsiz" in
15388         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15389         esac
15390 fi
15391
15392 : test whether _ptr and _cnt really work
15393 echo "Checking how std your stdio is..." >&4
15394 $cat >try.c <<EOP
15395 #include <stdio.h>
15396 #define FILE_ptr(fp)    $stdio_ptr
15397 #define FILE_cnt(fp)    $stdio_cnt
15398 int main() {
15399         FILE *fp = fopen("try.c", "r");
15400         char c = getc(fp);
15401         if (
15402                 18 <= FILE_cnt(fp) &&
15403                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15404         )
15405                 exit(0);
15406         exit(1);
15407 }
15408 EOP
15409 val="$undef"
15410 set try
15411 if eval $compile && $to try.c; then
15412         if $run ./try; then
15413                 echo "Your stdio acts pretty std."
15414                 val="$define"
15415         else
15416                 echo "Your stdio isn't very std."
15417         fi
15418 else
15419         echo "Your stdio doesn't appear very std."
15420 fi
15421 $rm -f try.c try
15422
15423 # glibc 2.2.90 and above apparently change stdio streams so Perl's
15424 # direct buffer manipulation no longer works.  The Configure tests
15425 # should be changed to correctly detect this, but until then,
15426 # the following check should at least let perl compile and run.
15427 # (This quick fix should be updated before 5.8.1.)
15428 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
15429 # A. Dougherty, June 3, 2002.
15430 case "$d_gnulibc" in
15431 $define)
15432         case "$gnulibc_version" in
15433         2.[01]*)  ;;
15434         2.2) ;;
15435         2.2.[0-9]) ;;
15436         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
15437                 val="$undef"
15438                 ;;
15439         esac
15440         ;;
15441 esac
15442 set d_stdstdio
15443 eval $setvar
15444
15445 : Can _ptr be used as an lvalue?
15446 case "$d_stdstdio$ptr_lval" in
15447 $define$define) val=$define ;;
15448 *) val=$undef ;;
15449 esac
15450 set d_stdio_ptr_lval
15451 eval $setvar
15452
15453 : Can _cnt be used as an lvalue?
15454 case "$d_stdstdio$cnt_lval" in
15455 $define$define) val=$define ;;
15456 *) val=$undef ;;
15457 esac
15458 set d_stdio_cnt_lval
15459 eval $setvar
15460
15461
15462 : test whether setting _ptr sets _cnt as a side effect
15463 d_stdio_ptr_lval_sets_cnt="$undef"
15464 d_stdio_ptr_lval_nochange_cnt="$undef"
15465 case "$d_stdio_ptr_lval$d_stdstdio" in
15466 $define$define)
15467         echo "Checking to see what happens if we set the stdio ptr..." >&4
15468 $cat >try.c <<EOP
15469 #include <stdio.h>
15470 /* Can we scream? */
15471 /* Eat dust sed :-) */
15472 /* In the buffer space, no one can hear you scream. */
15473 #define FILE_ptr(fp)    $stdio_ptr
15474 #define FILE_cnt(fp)    $stdio_cnt
15475 #include <sys/types.h>
15476 int main() {
15477         FILE *fp = fopen("try.c", "r");
15478         int c;
15479         char *ptr;
15480         size_t cnt;
15481         if (!fp) {
15482             puts("Fail even to read");
15483             exit(1);
15484         }
15485         c = getc(fp); /* Read away the first # */
15486         if (c == EOF) {
15487             puts("Fail even to read");
15488             exit(1);
15489         }
15490         if (!(
15491                 18 <= FILE_cnt(fp) &&
15492                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15493         )) {
15494                 puts("Fail even to read");
15495                 exit (1);
15496         }
15497         ptr = (char*) FILE_ptr(fp);
15498         cnt = (size_t)FILE_cnt(fp);
15499
15500         FILE_ptr(fp) += 42;
15501
15502         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
15503                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
15504                 exit (1);
15505         }
15506         if (FILE_cnt(fp) <= 20) {
15507                 printf ("Fail (<20 chars to test)");
15508                 exit (1);
15509         }
15510         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
15511                 puts("Fail compare");
15512                 exit (1);
15513         }
15514         if (cnt == FILE_cnt(fp)) {
15515                 puts("Pass_unchanged");
15516                 exit (0);
15517         }       
15518         if (FILE_cnt(fp) == (cnt - 42)) {
15519                 puts("Pass_changed");
15520                 exit (0);
15521         }
15522         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
15523         return 1;
15524
15525 }
15526 EOP
15527         set try
15528         if eval $compile && $to try.c; then
15529                 case `$run ./try` in
15530                 Pass_changed)
15531                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
15532                         d_stdio_ptr_lval_sets_cnt="$define" ;;
15533                 Pass_unchanged)
15534                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
15535                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
15536                 Fail*)
15537                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
15538                 *)
15539                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
15540         esac
15541         else
15542                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
15543         fi
15544         $rm -f try.c try
15545         ;;
15546 esac
15547
15548 : see if _base is also standard
15549 val="$undef"
15550 case "$d_stdstdio" in
15551 $define)
15552         $cat >try.c <<EOP
15553 #include <stdio.h>
15554 #define FILE_base(fp)   $stdio_base
15555 #define FILE_bufsiz(fp) $stdio_bufsiz
15556 int main() {
15557         FILE *fp = fopen("try.c", "r");
15558         char c = getc(fp);
15559         if (
15560                 19 <= FILE_bufsiz(fp) &&
15561                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
15562         )
15563                 exit(0);
15564         exit(1);
15565 }
15566 EOP
15567         set try
15568         if eval $compile && $to try.c; then
15569                 if $run ./try; then
15570                         echo "And its _base field acts std."
15571                         val="$define"
15572                 else
15573                         echo "But its _base field isn't std."
15574                 fi
15575         else
15576                 echo "However, it seems to be lacking the _base field."
15577         fi
15578         $rm -f try.c try
15579         ;;
15580 esac
15581 set d_stdiobase
15582 eval $setvar
15583
15584 $cat >&4 <<EOM
15585 Checking how to access stdio streams by file descriptor number...
15586 EOM
15587 case "$stdio_stream_array" in
15588 '')     $cat >try.c <<EOCP
15589 #include <stdio.h>
15590 int main() {
15591   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
15592     printf("yes\n");
15593 }
15594 EOCP
15595         for s in _iob __iob __sF
15596         do
15597                 set try -DSTDIO_STREAM_ARRAY=$s
15598                 if eval $compile; then
15599                         case "`$run ./try`" in
15600                         yes)    stdio_stream_array=$s; break ;;
15601                         esac
15602                 fi
15603         done
15604         $rm -f try.* try$exe_ext
15605 esac
15606 case "$stdio_stream_array" in
15607 '')     $cat >&4 <<EOM
15608 I can't figure out how to access stdio streams by file descriptor number.
15609 EOM
15610         d_stdio_stream_array="$undef"
15611         ;;
15612 *)      $cat >&4 <<EOM
15613 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
15614 EOM
15615         d_stdio_stream_array="$define"
15616         ;;
15617 esac
15618
15619 : see if strcoll exists
15620 set strcoll d_strcoll
15621 eval $inlibc
15622
15623 : check for structure copying
15624 echo " "
15625 echo "Checking to see if your C compiler can copy structs..." >&4
15626 $cat >try.c <<'EOCP'
15627 main()
15628 {
15629         struct blurfl {
15630                 int dyick;
15631         } foo, bar;
15632
15633         foo = bar;
15634 }
15635 EOCP
15636 if $cc -c try.c >/dev/null 2>&1 ; then
15637         val="$define"
15638         echo "Yup, it can."
15639 else
15640         val="$undef"
15641         echo "Nope, it can't."
15642 fi
15643 set d_strctcpy
15644 eval $setvar
15645 $rm -f try.*
15646
15647 : see if strerror and/or sys_errlist[] exist
15648 echo " "
15649 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
15650     if set strerror val -f d_strerror; eval $csym; $val; then
15651                 echo 'strerror() found.' >&4
15652                 d_strerror="$define"
15653                 d_strerrm='strerror(e)'
15654                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
15655                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
15656                         d_syserrlst="$define"
15657                 else
15658                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
15659                         d_syserrlst="$undef"
15660                 fi
15661     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
15662                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
15663                 echo 'strerror() found in string header.' >&4
15664                 d_strerror="$define"
15665                 d_strerrm='strerror(e)'
15666                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
15667                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
15668                                 d_syserrlst="$define"
15669                 else
15670                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
15671                         d_syserrlst="$undef"
15672                 fi
15673     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
15674                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
15675                 d_strerror="$undef"
15676                 d_syserrlst="$define"
15677                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
15678     else
15679                 echo 'strerror() and sys_errlist[] NOT found.' >&4
15680                 d_strerror="$undef"
15681                 d_syserrlst="$undef"
15682                 d_strerrm='"unknown"'
15683     fi
15684 fi
15685
15686 : see if strerror_r exists
15687 set strerror_r d_strerror_r
15688 eval $inlibc
15689 case "$d_strerror_r" in
15690 "$define")
15691         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
15692         case "$d_strerror_r_proto:$usethreads" in
15693         ":define")      d_strerror_r_proto=define
15694                 set d_strerror_r_proto strerror_r $hdrs
15695                 eval $hasproto ;;
15696         *)      ;;
15697         esac
15698         case "$d_strerror_r_proto" in
15699         define)
15700         case "$strerror_r_proto" in
15701         ''|0) try='int strerror_r(int, char*, size_t);'
15702         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
15703         esac
15704         case "$strerror_r_proto" in
15705         ''|0) try='int strerror_r(int, char*, int);'
15706         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
15707         esac
15708         case "$strerror_r_proto" in
15709         ''|0) try='char* strerror_r(int, char*, size_t);'
15710         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
15711         esac
15712         case "$strerror_r_proto" in
15713         ''|0)   d_strerror_r=undef
15714                 strerror_r_proto=0
15715                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
15716         * )     case "$strerror_r_proto" in
15717                 REENTRANT_PROTO*) ;;
15718                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
15719                 esac
15720                 echo "Prototype: $try" ;;
15721         esac
15722         ;;
15723         *)      case "$usethreads" in
15724                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
15725                 esac
15726                 d_strerror_r=undef
15727                 strerror_r_proto=0
15728                 ;;
15729         esac
15730         ;;
15731 *)      strerror_r_proto=0
15732         ;;
15733 esac
15734
15735 : see if strftime exists
15736 set strftime d_strftime
15737 eval $inlibc
15738
15739 : see if strtod exists
15740 set strtod d_strtod
15741 eval $inlibc
15742
15743 : see if strtol exists
15744 set strtol d_strtol
15745 eval $inlibc
15746
15747 : see if strtold exists
15748 set strtold d_strtold
15749 eval $inlibc
15750
15751 : see if strtoll exists
15752 set strtoll d_strtoll
15753 eval $inlibc
15754
15755 case "$d_longlong-$d_strtoll" in
15756 "$define-$define")
15757         $cat <<EOM
15758 Checking whether your strtoll() works okay...
15759 EOM
15760         $cat >try.c <<'EOCP'
15761 #include <errno.h>
15762 #ifdef __hpux
15763 #define strtoll __strtoll
15764 #endif
15765 #ifdef __EMX__
15766 #define strtoll _strtoll
15767 #endif
15768 #include <stdio.h>
15769 extern long long int strtoll(char *s, char **, int); 
15770 static int bad = 0;
15771 int check(char *s, long long ell, int een) {
15772         long long gll;
15773         errno = 0;
15774         gll = strtoll(s, 0, 10);
15775         if (!((gll == ell) && (errno == een)))
15776                 bad++;
15777 }
15778 int main() {
15779         check(" 1",                                      1LL, 0);
15780         check(" 0",                                      0LL, 0);
15781         check("-1",                                     -1LL, 0);
15782         check("-9223372036854775808", -9223372036854775808LL, 0);
15783         check("-9223372036854775808", -9223372036854775808LL, 0);
15784         check(" 9223372036854775807",  9223372036854775807LL, 0);
15785         check("-9223372036854775808", -9223372036854775808LL, 0);
15786         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
15787         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
15788         if (!bad)
15789                 printf("ok\n");
15790 }
15791 EOCP
15792         set try
15793         if eval $compile; then
15794                 yyy=`$run ./try`
15795                 case "$yyy" in
15796                 ok) echo "Your strtoll() seems to be working okay." ;;
15797                 *) cat <<EOM >&4
15798 Your strtoll() doesn't seem to be working okay.
15799 EOM
15800                    d_strtoll="$undef"
15801                    ;;
15802                 esac
15803         else
15804                 echo "(I can't seem to compile the test program--assuming it doesn't)"
15805                 d_strtoll="$undef"
15806         fi
15807         ;;
15808 esac
15809
15810 : see if strtoq exists
15811 set strtoq d_strtoq
15812 eval $inlibc
15813
15814 : see if strtoul exists
15815 set strtoul d_strtoul
15816 eval $inlibc
15817
15818 case "$d_strtoul" in
15819 "$define")
15820         $cat <<EOM
15821 Checking whether your strtoul() works okay...
15822 EOM
15823         $cat >try.c <<'EOCP'
15824 #include <errno.h>
15825 #include <stdio.h>
15826 extern unsigned long int strtoul(char *s, char **, int); 
15827 static int bad = 0;
15828 void check(char *s, unsigned long eul, int een) {
15829         unsigned long gul;
15830         errno = 0;
15831         gul = strtoul(s, 0, 10);
15832         if (!((gul == eul) && (errno == een)))
15833                 bad++;
15834 }
15835 int main() {
15836         check(" 1", 1L, 0);
15837         check(" 0", 0L, 0);
15838 EOCP
15839         case "$longsize" in
15840         8)
15841             $cat >>try.c <<'EOCP'
15842         check("18446744073709551615", 18446744073709551615UL, 0);
15843         check("18446744073709551616", 18446744073709551615UL, ERANGE);
15844 #if 0 /* strtoul() for /^-/ strings is undefined. */
15845         check("-1", 18446744073709551615UL, 0);
15846         check("-18446744073709551614", 2, 0);
15847         check("-18446744073709551615", 1, 0);
15848         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
15849         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
15850 #endif
15851 EOCP
15852                 ;;
15853         4)
15854                     $cat >>try.c <<'EOCP'
15855         check("4294967295", 4294967295UL, 0);
15856         check("4294967296", 4294967295UL, ERANGE);
15857 #if 0 /* strtoul() for /^-/ strings is undefined. */
15858         check("-1", 4294967295UL, 0);
15859         check("-4294967294", 2, 0);
15860         check("-4294967295", 1, 0);
15861         check("-4294967296", 4294967295UL, ERANGE);
15862         check("-4294967297", 4294967295UL, ERANGE);
15863 #endif
15864 EOCP
15865                 ;;
15866         *)
15867 : Should we write these tests to be more portable by sprintf-ing
15868 : ~0 and then manipulating that char string as input for strtol?
15869                 ;;
15870         esac
15871         $cat >>try.c <<'EOCP'
15872         if (!bad)
15873                 printf("ok\n");
15874         return 0;
15875 }
15876 EOCP
15877         set try
15878         if eval $compile; then
15879                 case "`$run ./try`" in
15880                 ok) echo "Your strtoul() seems to be working okay." ;;
15881                 *) cat <<EOM >&4
15882 Your strtoul() doesn't seem to be working okay.
15883 EOM
15884                    d_strtoul="$undef"
15885                    ;;
15886                 esac
15887         fi
15888         ;;
15889 esac
15890
15891 : see if strtoull exists
15892 set strtoull d_strtoull
15893 eval $inlibc
15894
15895 case "$d_longlong-$d_strtoull" in
15896 "$define-$define")
15897         $cat <<EOM
15898 Checking whether your strtoull() works okay...
15899 EOM
15900         $cat >try.c <<'EOCP'
15901 #include <errno.h>
15902 #ifdef __hpux
15903 #define strtoull __strtoull
15904 #endif
15905 #include <stdio.h>
15906 extern unsigned long long int strtoull(char *s, char **, int); 
15907 static int bad = 0;
15908 int check(char *s, long long eull, int een) {
15909         long long gull;
15910         errno = 0;
15911         gull = strtoull(s, 0, 10);
15912         if (!((gull == eull) && (errno == een)))
15913                 bad++;
15914 }
15915 int main() {
15916         check(" 1",                                        1LL, 0);
15917         check(" 0",                                        0LL, 0);
15918         check("18446744073709551615",  18446744073709551615ULL, 0);
15919         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
15920 #if 0 /* strtoull() for /^-/ strings is undefined. */
15921         check("-1",                    18446744073709551615ULL, 0);
15922         check("-18446744073709551614",                     2LL, 0);
15923         check("-18446744073709551615",                     1LL, 0);
15924         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
15925         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
15926 #endif
15927         if (!bad)
15928                 printf("ok\n");
15929 }
15930 EOCP
15931         set try
15932         if eval $compile; then
15933                 case "`$run ./try`" in
15934                 ok) echo "Your strtoull() seems to be working okay." ;;
15935                 *) cat <<EOM >&4
15936 Your strtoull() doesn't seem to be working okay.
15937 EOM
15938                    d_strtoull="$undef"
15939                    ;;
15940                 esac
15941         fi
15942         ;;
15943 esac
15944
15945 : see if strtouq exists
15946 set strtouq d_strtouq
15947 eval $inlibc
15948
15949 case "$d_strtouq" in
15950 "$define")
15951         $cat <<EOM
15952 Checking whether your strtouq() works okay...
15953 EOM
15954         $cat >try.c <<'EOCP'
15955 #include <errno.h>
15956 #include <stdio.h>
15957 extern unsigned long long int strtouq(char *s, char **, int); 
15958 static int bad = 0;
15959 void check(char *s, unsigned long long eull, int een) {
15960         unsigned long long gull;
15961         errno = 0;
15962         gull = strtouq(s, 0, 10);
15963         if (!((gull == eull) && (errno == een)))
15964                 bad++;
15965 }
15966 int main() {
15967         check(" 1",                                        1LL, 0);
15968         check(" 0",                                        0LL, 0);
15969         check("18446744073709551615",  18446744073709551615ULL, 0);
15970         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
15971 #if 0 /* strtouq() for /^-/ strings is undefined. */
15972         check("-1",                    18446744073709551615ULL, 0);
15973         check("-18446744073709551614",                     2LL, 0);
15974         check("-18446744073709551615",                     1LL, 0);
15975         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
15976         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
15977 #endif
15978         if (!bad)
15979                 printf("ok\n");
15980         return 0;
15981 }
15982 EOCP
15983         set try
15984         if eval $compile; then
15985                 case "`$run ./try`" in
15986                 ok) echo "Your strtouq() seems to be working okay." ;;
15987                 *) cat <<EOM >&4
15988 Your strtouq() doesn't seem to be working okay.
15989 EOM
15990                    d_strtouq="$undef"
15991                    ;;
15992                 esac
15993         fi
15994         ;;
15995 esac
15996
15997 : see if strxfrm exists
15998 set strxfrm d_strxfrm
15999 eval $inlibc
16000
16001 : see if symlink exists
16002 set symlink d_symlink
16003 eval $inlibc
16004
16005 : see if syscall exists
16006 set syscall d_syscall
16007 eval $inlibc
16008
16009 : see if prototype for syscall is available
16010 echo " "
16011 set d_syscallproto syscall $i_unistd unistd.h
16012 eval $hasproto
16013
16014 : see if sysconf exists
16015 set sysconf d_sysconf
16016 eval $inlibc
16017
16018 : see if system exists
16019 set system d_system
16020 eval $inlibc
16021
16022 : see if tcgetpgrp exists
16023 set tcgetpgrp d_tcgetpgrp
16024 eval $inlibc
16025
16026 : see if tcsetpgrp exists
16027 set tcsetpgrp d_tcsetpgrp
16028 eval $inlibc
16029
16030 : see if prototype for telldir is available
16031 echo " "
16032 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16033 eval $hasproto
16034
16035 : see if time exists
16036 echo " "
16037 if test "X$d_time" = X -o X"$timetype" = X; then
16038     if set time val -f d_time; eval $csym; $val; then
16039                 echo 'time() found.' >&4
16040                 val="$define"
16041                 rp="What is the type returned by time() on this system?"
16042                 set time_t timetype long stdio.h sys/types.h
16043                 eval $typedef_ask
16044     else
16045                 echo 'time() not found, hope that will do.' >&4
16046                 val="$undef"
16047                 timetype='int';
16048     fi
16049     set d_time
16050     eval $setvar
16051 fi
16052
16053 : see if this is a sys/times.h system
16054 set sys/times.h i_systimes
16055 eval $inhdr
16056
16057 : see if times exists
16058 echo " "
16059 if set times val -f d_times; eval $csym; $val; then
16060         echo 'times() found.' >&4
16061         d_times="$define"
16062         inc=''
16063         case "$i_systimes" in
16064         "$define") inc='sys/times.h';;
16065         esac
16066         rp="What is the type returned by times() on this system?"
16067         set clock_t clocktype long stdio.h sys/types.h $inc
16068         eval $typedef_ask
16069 else
16070         echo 'times() NOT found, hope that will do.' >&4
16071         d_times="$undef"
16072         clocktype='int'
16073 fi
16074
16075 : see if tmpnam_r exists
16076 set tmpnam_r d_tmpnam_r
16077 eval $inlibc
16078 case "$d_tmpnam_r" in
16079 "$define")
16080         hdrs="$i_systypes sys/types.h define stdio.h "
16081         case "$d_tmpnam_r_proto:$usethreads" in
16082         ":define")      d_tmpnam_r_proto=define
16083                 set d_tmpnam_r_proto tmpnam_r $hdrs
16084                 eval $hasproto ;;
16085         *)      ;;
16086         esac
16087         case "$d_tmpnam_r_proto" in
16088         define)
16089         case "$tmpnam_r_proto" in
16090         ''|0) try='char* tmpnam_r(char*);'
16091         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16092         esac
16093         case "$tmpnam_r_proto" in
16094         ''|0)   d_tmpnam_r=undef
16095                 tmpnam_r_proto=0
16096                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16097         * )     case "$tmpnam_r_proto" in
16098                 REENTRANT_PROTO*) ;;
16099                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16100                 esac
16101                 echo "Prototype: $try" ;;
16102         esac
16103         ;;
16104         *)      case "$usethreads" in
16105                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16106                 esac
16107                 d_tmpnam_r=undef
16108                 tmpnam_r_proto=0
16109                 ;;
16110         esac
16111         ;;
16112 *)      tmpnam_r_proto=0
16113         ;;
16114 esac
16115
16116 : see if truncate exists
16117 set truncate d_truncate
16118 eval $inlibc
16119
16120 : see if ttyname_r exists
16121 set ttyname_r d_ttyname_r
16122 eval $inlibc
16123 case "$d_ttyname_r" in
16124 "$define")
16125         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16126         case "$d_ttyname_r_proto:$usethreads" in
16127         ":define")      d_ttyname_r_proto=define
16128                 set d_ttyname_r_proto ttyname_r $hdrs
16129                 eval $hasproto ;;
16130         *)      ;;
16131         esac
16132         case "$d_ttyname_r_proto" in
16133         define)
16134         case "$ttyname_r_proto" in
16135         ''|0) try='int ttyname_r(int, char*, size_t);'
16136         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16137         esac
16138         case "$ttyname_r_proto" in
16139         ''|0) try='int ttyname_r(int, char*, int);'
16140         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16141         esac
16142         case "$ttyname_r_proto" in
16143         ''|0) try='char* ttyname_r(int, char*, int);'
16144         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16145         esac
16146         case "$ttyname_r_proto" in
16147         ''|0)   d_ttyname_r=undef
16148                 ttyname_r_proto=0
16149                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16150         * )     case "$ttyname_r_proto" in
16151                 REENTRANT_PROTO*) ;;
16152                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16153                 esac
16154                 echo "Prototype: $try" ;;
16155         esac
16156         ;;
16157         *)      case "$usethreads" in
16158                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16159                 esac
16160                 d_ttyname_r=undef
16161                 ttyname_r_proto=0
16162                 ;;
16163         esac
16164         ;;
16165 *)      ttyname_r_proto=0
16166         ;;
16167 esac
16168
16169 : see if tzname[] exists
16170 echo " "
16171 if set tzname val -a d_tzname; eval $csym; $val; then
16172         val="$define"
16173         echo 'tzname[] found.' >&4
16174 else
16175         val="$undef"
16176         echo 'tzname[] NOT found.' >&4
16177 fi
16178 set d_tzname
16179 eval $setvar
16180
16181 case "$osname" in
16182 next|rhapsody|darwin) multiarch="$define" ;;
16183 esac
16184 case "$multiarch" in
16185 ''|[nN]*) multiarch="$undef" ;;
16186 esac
16187
16188 : check for ordering of bytes in a UV
16189 echo " "
16190 case "$usecrosscompile$multiarch" in
16191 *$define*)
16192         $cat <<EOM
16193 You seem to be either cross-compiling or doing a multiarchitecture build,
16194 skipping the byteorder check.
16195
16196 EOM
16197         byteorder='ffff'
16198         ;;
16199 *)
16200         case "$byteorder" in
16201         '')
16202                 $cat <<'EOM'
16203 In the following, larger digits indicate more significance.  A big-endian
16204 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16205 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16206 machines may have weird orders like 3412.  A Cray will report 87654321,
16207 an Alpha will report 12345678. If the test program works the default is
16208 probably right.
16209 I'm now running the test program...
16210 EOM
16211                 $cat >try.c <<EOCP
16212 #include <stdio.h>
16213 #include <sys/types.h>
16214 typedef $uvtype UV;
16215 int main()
16216 {
16217         int i;
16218         union {
16219                 UV l;
16220                 char c[$uvsize];
16221         } u;
16222
16223         if ($uvsize > 4)
16224                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16225         else
16226                 u.l = (UV)0x04030201;
16227         for (i = 0; i < $uvsize; i++)
16228                 printf("%c", u.c[i]+'0');
16229         printf("\n");
16230         exit(0);
16231 }
16232 EOCP
16233                 xxx_prompt=y
16234                 set try
16235                 if eval $compile && ./try > /dev/null; then
16236                         dflt=`$run ./try`
16237                         case "$dflt" in
16238                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16239                                 echo "(The test program ran ok.)"
16240                                 echo "byteorder=$dflt"
16241                                 xxx_prompt=n
16242                         ;;
16243                         ????|????????) echo "(The test program ran ok.)" ;;
16244                         *) echo "(The test program didn't run right for some reason.)" ;;
16245                         esac
16246                 else
16247                         dflt='4321'
16248                         cat <<'EOM'
16249 (I can't seem to compile the test program.  Guessing big-endian...)
16250 EOM
16251                 fi
16252                 case "$xxx_prompt" in
16253                 y)
16254                         rp="What is the order of bytes in $uvtype?"
16255                         . ./myread
16256                         byteorder="$ans"
16257                         ;;
16258                 *)      byteorder=$dflt
16259                         ;;
16260                 esac
16261                 ;;
16262         esac
16263         $rm -f try.c try
16264         ;;
16265 esac
16266
16267
16268 $cat <<EOM
16269
16270 Checking to see whether you can access character data unalignedly...
16271 EOM
16272 case "$d_u32align" in
16273 '')   $cat >try.c <<EOCP
16274 #include <stdio.h>
16275 #define U32 $u32type
16276 #define BYTEORDER 0x$byteorder
16277 #define U8 $u8type
16278 #include <signal.h>
16279 #ifdef SIGBUS
16280 $signal_t bletch(s) int s; { exit(4); }
16281 #endif
16282 int main() {
16283 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16284     U8 buf[8];
16285     U32 *up;
16286     int i;
16287
16288     if (sizeof(U32) != 4) {
16289         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16290         exit(1);
16291     }
16292
16293     fflush(stdout);
16294
16295 #ifdef SIGBUS
16296     signal(SIGBUS, bletch);
16297 #endif
16298
16299     buf[0] = 0;
16300     buf[1] = 0;
16301     buf[2] = 0;
16302     buf[3] = 1;
16303     buf[5] = 0;
16304     buf[6] = 0;
16305     buf[7] = 0;
16306     buf[8] = 1;
16307
16308     for (i = 0; i < 4; i++) {
16309         up = (U32*)(buf + i);
16310         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16311                (*up == 1 << (8*(3-i)))  /* little-endian */
16312               )
16313            )
16314         {
16315             printf("read failed (%x)\n", *up);
16316             exit(2);
16317         }
16318     }
16319
16320     /* write test */
16321     for (i = 0; i < 4; i++) {
16322         up = (U32*)(buf + i);
16323         *up = 0xBeef;
16324         if (*up != 0xBeef) {
16325             printf("write failed (%x)\n", *up);
16326             exit(3);
16327         }
16328     }
16329
16330     exit(0);
16331 #else
16332     printf("1\n");
16333     exit(1);
16334 #endif
16335     return 0;
16336 }
16337 EOCP
16338 set try
16339 if eval $compile_ok; then
16340         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16341         $run ./try 2>&1 >/dev/null
16342         case "$?" in
16343         0)      cat >&4 <<EOM
16344 You can access character data pretty unalignedly.
16345 EOM
16346                 d_u32align="$undef"
16347                 ;;
16348         *)      cat >&4 <<EOM
16349 It seems that you must access character data in an aligned manner.
16350 EOM
16351                 d_u32align="$define"
16352                 ;;
16353         esac
16354 else
16355         rp='Can you access character data at unaligned addresses?'
16356         dflt='n'
16357         . ./myread
16358         case "$ans" in
16359         [yY]*)  d_u32align="$undef"  ;;
16360         *)      d_u32align="$define" ;;
16361         esac
16362 fi
16363 $rm -f core core.try.* try.core
16364 ;;
16365 esac
16366
16367 : see if ualarm exists
16368 set ualarm d_ualarm
16369 eval $inlibc
16370
16371 : see if umask exists
16372 set umask d_umask
16373 eval $inlibc
16374
16375 : see if unordered exists
16376 set unordered d_unordered
16377 eval $inlibc
16378
16379 : see if usleep exists
16380 set usleep d_usleep
16381 eval $inlibc
16382
16383 : see if prototype for usleep is available
16384 echo " "
16385 set d_usleepproto usleep $i_unistd unistd.h
16386 eval $hasproto
16387
16388 : see if ustat exists
16389 set ustat d_ustat
16390 eval $inlibc
16391
16392 : backward compatibility for d_hvfork
16393 if test X$d_hvfork != X; then
16394         d_vfork="$d_hvfork"
16395         d_hvfork=''
16396 fi
16397 : see if there is a vfork
16398 val=''
16399 set vfork val
16400 eval $inlibc
16401
16402 : Ok, but do we want to use it. vfork is reportedly unreliable in 
16403 : perl on Solaris 2.x, and probably elsewhere.
16404 case "$val" in
16405 $define)
16406         echo " "
16407         case "$usevfork" in
16408         false) dflt='n';;
16409         *) dflt='y';;
16410         esac
16411         cat <<'EOM'
16412  
16413 Perl can only use a vfork() that doesn't suffer from strict
16414 restrictions on calling functions or modifying global data in
16415 the child.  For example, glibc-2.1 contains such a vfork()
16416 that is unsuitable.  If your system provides a proper fork()
16417 call, chances are that you do NOT want perl to use vfork().
16418
16419 EOM
16420         rp="Do you still want to use vfork()?"
16421         . ./myread
16422         case "$ans" in
16423         y|Y) ;;
16424         *)
16425                 echo "Ok, we won't use vfork()."
16426                 val="$undef"
16427                 ;;
16428         esac
16429         ;;
16430 esac
16431 set d_vfork
16432 eval $setvar
16433 case "$d_vfork" in
16434 $define) usevfork='true';;
16435 *) usevfork='false';;
16436 esac
16437
16438 : see if closedir exists
16439 set closedir d_closedir
16440 eval $inlibc
16441
16442 case "$d_closedir" in
16443 "$define")
16444         echo " "
16445         echo "Checking whether closedir() returns a status..." >&4
16446         cat > try.c <<EOM
16447 #$i_dirent I_DIRENT             /**/
16448 #$i_sysdir I_SYS_DIR            /**/
16449 #$i_sysndir I_SYS_NDIR          /**/
16450 #$i_systypes I_SYS_TYPES        /**/
16451
16452 #if defined(I_SYS_TYPES)
16453 #include <sys/types.h>
16454 #endif
16455 #if defined(I_DIRENT)
16456 #include <dirent.h>
16457 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
16458 #include <sys/dir.h>
16459 #endif
16460 #else
16461 #ifdef I_SYS_NDIR
16462 #include <sys/ndir.h>
16463 #else
16464 #ifdef I_SYS_DIR
16465 #ifdef hp9000s500
16466 #include <ndir.h>       /* may be wrong in the future */
16467 #else
16468 #include <sys/dir.h>
16469 #endif
16470 #endif
16471 #endif
16472 #endif 
16473 int main() { return closedir(opendir(".")); }
16474 EOM
16475         set try
16476         if eval $compile_ok; then
16477                 if $run ./try > /dev/null 2>&1 ; then
16478                         echo "Yes, it does."
16479                         val="$undef"
16480                 else
16481                         echo "No, it doesn't."
16482                         val="$define"
16483                 fi
16484         else
16485                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16486                 val="$define"
16487         fi
16488         ;;
16489 *)
16490         val="$undef";
16491         ;;
16492 esac
16493 set d_void_closedir
16494 eval $setvar
16495 $rm -f try try.*
16496 : see if there is a wait4
16497 set wait4 d_wait4
16498 eval $inlibc
16499
16500 : see if waitpid exists
16501 set waitpid d_waitpid
16502 eval $inlibc
16503
16504 : see if wcstombs exists
16505 set wcstombs d_wcstombs
16506 eval $inlibc
16507
16508 : see if wctomb exists
16509 set wctomb d_wctomb
16510 eval $inlibc
16511
16512 : see if writev exists
16513 set writev d_writev
16514 eval $inlibc
16515
16516 : preserve RCS keywords in files with variable substitution, grrr
16517 Date='$Date'
16518 Id='$Id'
16519 Log='$Log'
16520 RCSfile='$RCSfile'
16521 Revision='$Revision'
16522
16523 : check for alignment requirements
16524 echo " "
16525 case "$usecrosscompile$multiarch" in
16526 *$define*)
16527         $cat <<EOM
16528 You seem to be either cross-compiling or doing a multiarchitecture build,
16529 skipping the memory alignment check.
16530
16531 EOM
16532         case "$alignbytes" in
16533         '') alignbytes=8 ;;
16534         esac
16535         ;;
16536 *)
16537         case "$alignbytes" in
16538         '') echo "Checking alignment constraints..." >&4
16539                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
16540                         $cat >try.c <<'EOCP'
16541 typedef long double NV;
16542 EOCP
16543                 else
16544                         $cat >try.c <<'EOCP'
16545 typedef double NV;
16546 EOCP
16547                 fi
16548                 $cat >>try.c <<'EOCP'
16549 #include <stdio.h>
16550 struct foobar {
16551         char foo;
16552         NV bar;
16553 } try_algn;
16554 int main()
16555 {
16556     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
16557     return(0);
16558 }
16559 EOCP
16560                 set try
16561                 if eval $compile_ok; then
16562                         dflt=`$run ./try`
16563                 else
16564                         dflt='8'
16565                         echo "(I can't seem to compile the test program...)"
16566                 fi
16567                 ;;
16568         *) dflt="$alignbytes"
16569                 ;;
16570         esac
16571         rp="Doubles must be aligned on a how-many-byte boundary?"
16572         . ./myread
16573         alignbytes="$ans"
16574         $rm -f try.c try
16575         ;;
16576 esac
16577
16578
16579 : set the base revision
16580 baserev=5.0
16581
16582 : how do we catenate cpp tokens here?
16583 echo " "
16584 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
16585 $cat >cpp_stuff.c <<'EOCP'
16586 #define RCAT(a,b)a/**/b
16587 #define ACAT(a,b)a ## b
16588 RCAT(Rei,ser)
16589 ACAT(Cir,cus)
16590 EOCP
16591 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
16592 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
16593         echo "Oh!  Smells like ANSI's been here." >&4
16594         echo "We can catify or stringify, separately or together!"
16595         cpp_stuff=42
16596 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
16597         echo "Ah, yes!  The good old days!" >&4
16598         echo "However, in the good old days we don't know how to stringify and"
16599         echo "catify at the same time."
16600         cpp_stuff=1
16601 else
16602         $cat >&4 <<EOM
16603 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
16604 to have to edit the values of CAT[2-5] in config.h...
16605 EOM
16606         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
16607 fi
16608 $rm -f cpp_stuff.*
16609
16610 : see if this is a db.h system
16611 set db.h i_db
16612 eval $inhdr
16613
16614 case "$i_db" in
16615 $define)
16616         : Check db version.
16617         echo " "
16618         echo "Checking Berkeley DB version ..." >&4
16619         $cat >try.c <<EOCP
16620 #$d_const HASCONST
16621 #ifndef HASCONST
16622 #define const
16623 #endif
16624 #include <sys/types.h>
16625 #include <stdio.h>
16626 #include <db.h>
16627 int main(int argc, char *argv[])
16628 {
16629 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
16630     int Major, Minor, Patch ;
16631     unsigned long Version ;
16632     (void)db_version(&Major, &Minor, &Patch) ;
16633     if (argc == 2) {
16634         printf("%d %d %d %d %d %d\n",
16635                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
16636                Major, Minor, Patch);
16637         exit(0);
16638     }
16639     printf("You have Berkeley DB Version 2 or greater.\n");
16640
16641     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
16642                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
16643     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
16644                 Major, Minor, Patch) ;
16645
16646     /* check that db.h & libdb are compatible */
16647     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
16648         printf("db.h and libdb are incompatible.\n") ;
16649         exit(3);        
16650     }
16651
16652     printf("db.h and libdb are compatible.\n") ;
16653
16654     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
16655                 + DB_VERSION_PATCH ;
16656
16657     /* needs to be >= 2.3.4 */
16658     if (Version < 2003004) {
16659     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
16660         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
16661         exit(2);        
16662     }
16663
16664     exit(0);
16665 #else
16666 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
16667     if (argc == 2) {
16668         printf("1 0 0\n");
16669         exit(0);
16670     }
16671     printf("You have Berkeley DB Version 1.\n");
16672     exit(0);    /* DB version < 2: the coast is clear. */
16673 #else
16674     exit(1);    /* <db.h> not Berkeley DB? */
16675 #endif
16676 #endif
16677 }
16678 EOCP
16679         set try
16680         if eval $compile_ok && $run ./try; then
16681                 echo 'Looks OK.' >&4
16682                 set `$run ./try 1`
16683                 db_version_major=$1
16684                 db_version_minor=$2
16685                 db_version_patch=$3
16686         else
16687                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
16688                 i_db=$undef
16689                 case " $libs " in
16690                 *"-ldb "*)
16691                         : Remove db from list of libraries to use
16692                         echo "Removing unusable -ldb from library list" >&4
16693                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
16694                         shift
16695                         libs="$*"
16696                         echo "libs = $libs" >&4
16697                         ;;
16698                 esac
16699         fi
16700         $rm -f try.*
16701         ;;
16702 esac
16703
16704 case "$i_db" in
16705 define)
16706         : Check the return type needed for hash 
16707         echo " "
16708         echo "Checking return type needed for hash for Berkeley DB ..." >&4
16709         $cat >try.c <<EOCP
16710 #$d_const HASCONST
16711 #ifndef HASCONST
16712 #define const
16713 #endif
16714 #include <sys/types.h>
16715 #include <db.h>
16716
16717 #ifndef DB_VERSION_MAJOR
16718 u_int32_t hash_cb (ptr, size)
16719 const void *ptr;
16720 size_t size;
16721 {
16722 }
16723 HASHINFO info;
16724 int main()
16725 {
16726         info.hash = hash_cb;
16727 }
16728 #endif
16729 EOCP
16730         if $cc $ccflags -c try.c >try.out 2>&1 ; then
16731                 if $contains warning try.out >>/dev/null 2>&1 ; then
16732                         db_hashtype='int'
16733                 else
16734                         db_hashtype='u_int32_t'
16735                 fi
16736         else
16737                 : XXX Maybe we should just give up here.
16738                 db_hashtype=u_int32_t
16739                 $cat try.out >&4
16740                 echo "Help:  I can't seem to compile the db test program." >&4
16741                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
16742         fi
16743         $rm -f try.*
16744         echo "Your version of Berkeley DB uses $db_hashtype for hash."
16745         ;;
16746 *)      db_hashtype=u_int32_t
16747         ;;
16748 esac
16749 case "$i_db" in
16750 define)
16751         : Check the return type needed for prefix 
16752         echo " "
16753         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
16754         cat >try.c <<EOCP
16755 #$d_const HASCONST
16756 #ifndef HASCONST
16757 #define const
16758 #endif
16759 #include <sys/types.h>
16760 #include <db.h>
16761
16762 #ifndef DB_VERSION_MAJOR
16763 size_t prefix_cb (key1, key2)
16764 const DBT *key1;
16765 const DBT *key2;
16766 {
16767 }
16768 BTREEINFO info;
16769 int main()
16770 {
16771         info.prefix = prefix_cb;
16772 }
16773 #endif
16774 EOCP
16775         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
16776                 if $contains warning try.out >>/dev/null 2>&1 ; then
16777                         db_prefixtype='int'
16778                 else
16779                         db_prefixtype='size_t'
16780                 fi
16781         else
16782                 db_prefixtype='size_t'
16783                 : XXX Maybe we should just give up here.
16784                 $cat try.out >&4
16785                 echo "Help:  I can't seem to compile the db test program." >&4
16786                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
16787         fi
16788         $rm -f try.*
16789         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
16790         ;;
16791 *)      db_prefixtype='size_t'
16792         ;;
16793 esac
16794
16795
16796 : How can we generate normalized random numbers ?
16797 echo " "
16798 echo "Looking for a random number function..." >&4
16799 case "$randfunc" in
16800 '')
16801         if set drand48 val -f; eval $csym; $val; then
16802                 dflt="drand48"
16803                 echo "Good, found drand48()." >&4
16804         elif set random val -f; eval $csym; $val; then
16805                 dflt="random"
16806                 echo "OK, found random()." >&4
16807         else
16808                 dflt="rand"
16809                 echo "Yick, looks like I have to use rand()." >&4
16810         fi
16811         echo " "
16812         ;;
16813 *)
16814         dflt="$randfunc"
16815         ;;
16816 esac
16817 cont=true
16818
16819 case "$ccflags" in
16820 *-Dmy_rand=*|*-Dmy_srand=*)
16821         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
16822         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
16823         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
16824         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
16825         ;;
16826 esac
16827
16828 while $test "$cont"; do
16829         rp="Use which function to generate random numbers?"
16830         . ./myread
16831         if $test "$ans" = "$dflt"; then
16832                 : null
16833         else
16834                 randbits=''
16835         fi
16836         randfunc="$ans"
16837         if set $ans val -f; eval $csym; $val; then
16838                 cont=''
16839         else
16840                 dflt=y
16841                 rp="I cannot find function $ans. Use that name anyway?"
16842                 . ./myread
16843                 dflt=rand
16844                 case "$ans" in
16845                         [yY]*) cont='';;
16846                 esac
16847         fi
16848         case "$cont" in
16849         '')
16850                 case "$randfunc" in
16851                 drand48)
16852                         drand01="drand48()"
16853                         seedfunc="srand48"
16854                         randbits=48
16855                         randseedtype=long
16856                         ;;
16857                 rand|random)
16858                         case "$randbits" in
16859                         '')
16860 echo "Checking to see how many bits your $randfunc() function produces..." >&4
16861                                 $cat >try.c <<EOCP
16862 #$i_unistd I_UNISTD
16863 #$i_stdlib I_STDLIB
16864 #include <stdio.h>
16865 #ifdef I_UNISTD
16866 #  include <unistd.h>
16867 #endif
16868 #ifdef I_STDLIB
16869 #  include <stdlib.h>
16870 #endif
16871 int main()
16872 {
16873         register int i;
16874         register unsigned long tmp;
16875         register unsigned long max = 0L;
16876
16877         for (i = 1000; i; i--) {
16878                 tmp = (unsigned long) $randfunc();
16879                 if (tmp > max) max = tmp;
16880         }
16881         for (i = 0; max; i++)
16882                 max /= 2;
16883         printf("%d\n",i);
16884 }
16885 EOCP
16886                                 set try
16887                                 if eval $compile_ok; then
16888                                         dflt=`try`
16889                                 else
16890                                         dflt='?'
16891                                         echo "(I can't seem to compile the test program...)"
16892                                 fi
16893                                 ;;
16894                         *)
16895                                 dflt="$randbits"
16896                                 ;;
16897                         esac
16898                         rp="How many bits does your $randfunc() function produce?"
16899                         . ./myread
16900                         randbits="$ans"
16901                         $rm -f try.c try
16902                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
16903                         seedfunc="s$randfunc"
16904                         randseedtype=unsigned
16905                         ;;
16906                 *)
16907                         dflt="31"
16908                         rp="How many bits does your $randfunc() function produce?"
16909                         . ./myread
16910                         randbits="$ans"
16911                         seedfunc="s$randfunc"
16912                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
16913                         if set $seedfunc val -f; eval $csym; $val; then
16914                                 echo "(Using $seedfunc() to seed random generator)"
16915                         else
16916                                 echo "(Warning: no $seedfunc() to seed random generator)"
16917                                 seedfunc=rand
16918                         fi
16919                         randseedtype=unsigned
16920                         ;;
16921                 esac
16922                 ;;
16923         esac
16924 done
16925
16926 echo " "
16927 echo "Determining whether or not we are on an EBCDIC system..." >&4
16928 $cat >try.c <<'EOM'
16929 int main()
16930 {
16931   if ('M'==0xd4) return 0;
16932   return 1;
16933 }
16934 EOM
16935
16936 val=$undef
16937 set try
16938 if eval $compile_ok; then
16939         if $run ./try; then
16940                 echo "You seem to speak EBCDIC." >&4
16941                 val="$define"
16942         else
16943                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
16944         fi
16945 else
16946         echo "I'm unable to compile the test program." >&4
16947         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
16948 fi
16949 $rm -f try try.*
16950 set ebcdic
16951 eval $setvar
16952
16953 echo " "
16954 $cat >&4 <<EOM
16955 Checking how to flush all pending stdio output...
16956 EOM
16957 # I only know how to find the first 32 possibly open files on SunOS.
16958 # See also hints/sunos_4_1.sh and util.c  --AD
16959 case "$osname" in
16960 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
16961 esac
16962 $cat >>try.c <<EOCP
16963 #include <stdio.h>
16964 #$i_unistd I_UNISTD
16965 #ifdef I_UNISTD
16966 # include <unistd.h>
16967 #endif
16968 #$d_sysconf HAS_SYSCONF
16969 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
16970 #ifdef HAS_STDIO_STREAM_ARRAY
16971 # define STDIO_STREAM_ARRAY $stdio_stream_array
16972 #endif
16973 int main() {
16974   FILE* p;
16975   unlink("try.out");
16976   p = fopen("try.out", "w");
16977 #ifdef TRY_FPUTC
16978   fputc('x', p);
16979 #else
16980 # ifdef TRY_FPRINTF
16981   fprintf(p, "x");
16982 # endif
16983 #endif
16984 #ifdef TRY_FFLUSH_NULL
16985   fflush(NULL);
16986 #endif
16987 #ifdef TRY_FFLUSH_ALL
16988   {
16989     long open_max = -1;
16990 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
16991     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
16992 # else
16993 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
16994     open_max = sysconf(_SC_OPEN_MAX);
16995 #  else
16996 #   ifdef FOPEN_MAX
16997     open_max = FOPEN_MAX;
16998 #   else
16999 #    ifdef OPEN_MAX
17000     open_max = OPEN_MAX;
17001 #    else
17002 #     ifdef _NFILE
17003     open_max = _NFILE;
17004 #     endif
17005 #    endif
17006 #   endif
17007 #  endif
17008 # endif 
17009 # ifdef HAS_STDIO_STREAM_ARRAY
17010     if (open_max > 0) {
17011       long i;
17012       for (i = 0; i < open_max; i++)
17013             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17014                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17015                 STDIO_STREAM_ARRAY[i]._flag)
17016                 fflush(&STDIO_STREAM_ARRAY[i]);
17017     }   
17018   }
17019 # endif
17020 #endif
17021   _exit(42);
17022 }
17023 EOCP
17024 : first we have to find out how _not_ to flush
17025 $to try.c
17026 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17027     output=''
17028     set try -DTRY_FPUTC
17029     if eval $compile; then
17030             $run ./try 2>/dev/null
17031             code="$?"
17032             $from try.out
17033             if $test ! -s try.out -a "X$code" = X42; then
17034                 output=-DTRY_FPUTC
17035             fi
17036     fi
17037     case "$output" in
17038     '')
17039             set try -DTRY_FPRINTF
17040             if eval $compile; then
17041                     $run ./try 2>/dev/null
17042                     code="$?"
17043                     $from try.out
17044                     if $test ! -s try.out -a "X$code" = X42; then
17045                         output=-DTRY_FPRINTF
17046                     fi
17047             fi
17048         ;;
17049     esac
17050 fi
17051 : check for fflush NULL behaviour
17052 case "$fflushNULL" in
17053 '')     set try -DTRY_FFLUSH_NULL $output
17054         if eval $compile; then
17055                 $run ./try 2>/dev/null
17056                 code="$?"
17057                 $from try.out
17058                 if $test -s try.out -a "X$code" = X42; then
17059                         fflushNULL="`$cat try.out`"
17060                 else
17061                         if $test "X$code" != X42; then
17062                                 $cat >&4 <<EOM
17063 (If this test failed, don't worry, we'll try another method shortly.)
17064 EOM
17065                         fi
17066                 fi
17067         fi
17068         $rm -f core try.core core.try.*
17069         case "$fflushNULL" in
17070         x)      $cat >&4 <<EOM
17071 Your fflush(NULL) works okay for output streams.
17072 Let's see if it clobbers input pipes...
17073 EOM
17074 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17075 # bug that improperly flushes the input end of pipes.  So we avoid the
17076 # autoflush on fork/system/exec support for now. :-(
17077 $cat >tryp.c <<EOCP
17078 #include <stdio.h>
17079 int
17080 main(int argc, char **argv)
17081 {
17082     char buf[1024];
17083     int i;
17084     char *bp = buf;
17085     while (1) {
17086         while ((i = getc(stdin)) != -1
17087                && (*bp++ = i) != '\n'
17088                && bp < &buf[1024])
17089         /* DO NOTHING */ ;
17090         *bp = '\0';
17091         fprintf(stdout, "%s", buf);
17092         fflush(NULL);
17093         if (i == -1)
17094             return 0;
17095         bp = buf;
17096     }
17097 }
17098 EOCP
17099                 fflushNULL="$define"
17100                 set tryp
17101                 if eval $compile; then
17102                     $rm -f tryp.out
17103                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17104                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17105                        $cat >&4 <<EOM
17106 fflush(NULL) seems to behave okay with input streams.
17107 EOM
17108                         fflushNULL="$define"
17109                     else
17110                         $cat >&4 <<EOM
17111 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17112 EOM
17113                         fflushNULL="$undef"
17114                     fi
17115                 fi
17116                 $rm -f core tryp.c tryp.core core.tryp.*
17117                 ;;
17118         '')     $cat >&4 <<EOM
17119 Your fflush(NULL) isn't working (contrary to ANSI C).
17120 EOM
17121                 fflushNULL="$undef"
17122                 ;;
17123         *)      $cat >&4 <<EOM
17124 Cannot figure out whether your fflush(NULL) works or not.
17125 I'm assuming it doesn't (contrary to ANSI C).
17126 EOM
17127                 fflushNULL="$undef"
17128                 ;;
17129         esac
17130         ;;
17131 $define|true|[yY]*)
17132         fflushNULL="$define"
17133         ;;
17134 *)
17135         fflushNULL="$undef"
17136         ;;
17137 esac
17138 : check explicit looping only if NULL did not work, and if the pipe
17139 : bug does not show up on an explicit flush too
17140 case "$fflushNULL" in
17141 "$undef")
17142         $cat >tryp.c <<EOCP
17143 #include <stdio.h>
17144 int
17145 main(int argc, char **argv)
17146 {
17147     char buf[1024];
17148     int i;
17149     char *bp = buf;
17150     while (1) {
17151         while ((i = getc(stdin)) != -1
17152                && (*bp++ = i) != '\n'
17153                && bp < &buf[1024])
17154         /* DO NOTHING */ ;
17155         *bp = '\0';
17156         fprintf(stdout, "%s", buf);
17157         fflush(stdin);
17158         if (i == -1)
17159             return 0;
17160         bp = buf;
17161     }
17162 }
17163 EOCP
17164         set tryp
17165         if eval $compile; then
17166             $rm -f tryp.out
17167             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17168             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17169                $cat >&4 <<EOM
17170 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17171 EOM
17172                 : now check for fflushall behaviour
17173                 case "$fflushall" in
17174                 '')     set try -DTRY_FFLUSH_ALL $output
17175                         if eval $compile; then
17176                                 $cat >&4 <<EOM
17177 (Now testing the other method--but note that this also may fail.)
17178 EOM
17179                                 $run ./try 2>/dev/null
17180                                 code=$?
17181                                 $from try.out
17182                                 if $test -s try.out -a "X$code" = X42; then
17183                                         fflushall="`$cat try.out`"
17184                                 fi
17185                         fi
17186                         $rm -f core try.core core.try.*
17187                         case "$fflushall" in
17188                         x)      $cat >&4 <<EOM
17189 Whew. Flushing explicitly all the stdio streams works.
17190 EOM
17191                                 fflushall="$define"
17192                                 ;;
17193                         '')     $cat >&4 <<EOM
17194 Sigh. Flushing explicitly all the stdio streams doesn't work.
17195 EOM
17196                                 fflushall="$undef"
17197                                 ;;
17198                         *)      $cat >&4 <<EOM
17199 Cannot figure out whether flushing stdio streams explicitly works or not.
17200 I'm assuming it doesn't.
17201 EOM
17202                                 fflushall="$undef"
17203                                 ;;
17204                         esac
17205                         ;;
17206                 "$define"|true|[yY]*)
17207                         fflushall="$define"
17208                         ;;
17209                 *)
17210                         fflushall="$undef"
17211                         ;;
17212                 esac
17213             else
17214                 $cat >&4 <<EOM
17215 All is futile.  Even fflush(stdin) clobbers input pipes!
17216 EOM
17217                 fflushall="$undef"
17218             fi
17219         else
17220             fflushall="$undef"
17221         fi
17222         $rm -f core tryp.c tryp.core core.tryp.*
17223         ;;
17224 *)      fflushall="$undef"
17225         ;;
17226 esac
17227
17228 case "$fflushNULL$fflushall" in
17229 undefundef)
17230         $cat <<EOM
17231 OK, I give up.  I cannot figure out how to flush pending stdio output.
17232 We won't be flushing handles at all before fork/exec/popen.
17233 EOM
17234         ;;
17235 esac
17236 $rm -f try.* try$exe_ext
17237
17238 : Store the full pathname to the ar program for use in the C program
17239 : Respect a hint or command line value for full_ar.
17240 case "$full_ar" in
17241 '') full_ar=$ar ;;
17242 esac
17243
17244 : Store the full pathname to the sed program for use in the C program
17245 full_sed=$sed
17246
17247 : see what type gids are declared as in the kernel
17248 echo " "
17249 echo "Looking for the type for group ids returned by getgid()."
17250 set gid_t gidtype xxx stdio.h sys/types.h
17251 eval $typedef
17252 case "$gidtype" in
17253 xxx)
17254         xxx=`./findhdr sys/user.h`
17255         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17256         case $1 in
17257         unsigned) dflt="$1 $2" ;;
17258         *) dflt="$1" ;;
17259         esac
17260         ;;
17261 *) dflt="$gidtype";;
17262 esac
17263 case "$gidtype" in
17264 gid_t) echo "gid_t found." ;;
17265 *)      rp="What is the type for group ids returned by getgid()?"
17266         . ./myread
17267         gidtype="$ans"
17268         ;;
17269 esac
17270
17271 echo " "
17272 case "$gidtype" in
17273 *_t) zzz="$gidtype"     ;;
17274 *)   zzz="gid"          ;;
17275 esac
17276 echo "Checking the size of $zzz..." >&4 
17277 cat > try.c <<EOCP
17278 #include <sys/types.h>
17279 #include <stdio.h>
17280 int main() {
17281     printf("%d\n", (int)sizeof($gidtype));
17282     exit(0);
17283 }
17284 EOCP
17285 set try
17286 if eval $compile_ok; then
17287         yyy=`$run ./try`
17288         case "$yyy" in
17289         '')     gidsize=4
17290                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17291                 ;;
17292         *)      gidsize=$yyy
17293                 echo "Your $zzz is $gidsize bytes long."
17294                 ;;
17295         esac
17296 else
17297         gidsize=4
17298         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17299 fi
17300
17301
17302 echo " "
17303 case "$gidtype" in
17304 *_t) zzz="$gidtype"     ;;
17305 *)   zzz="gid"          ;;
17306 esac
17307 echo "Checking the sign of $zzz..." >&4 
17308 cat > try.c <<EOCP
17309 #include <sys/types.h>
17310 #include <stdio.h>
17311 int main() {
17312         $gidtype foo = -1;
17313         if (foo < 0)
17314                 printf("-1\n");
17315         else
17316                 printf("1\n");
17317 }
17318 EOCP
17319 set try
17320 if eval $compile; then
17321         yyy=`$run ./try`
17322         case "$yyy" in
17323         '')     gidsign=1
17324                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17325                 ;;
17326         *)      gidsign=$yyy
17327                 case "$gidsign" in
17328                  1) echo "Your $zzz is unsigned." ;;
17329                 -1) echo "Your $zzz is signed."   ;;
17330                 esac
17331                 ;;
17332         esac
17333 else
17334         gidsign=1
17335         echo "(I can't compile the test program--guessing unsigned.)" >&4
17336 fi
17337
17338
17339 echo " "
17340
17341 if $test X"$quadtype" != X; then
17342
17343 echo "Checking how to print 64-bit integers..." >&4
17344
17345 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17346         $cat >try.c <<'EOCP'
17347 #include <sys/types.h>
17348 #include <stdio.h>
17349 int main() {
17350   int q = 12345678901;
17351   printf("%ld\n", q);
17352 }
17353 EOCP
17354         set try
17355         if eval $compile; then
17356                 yyy=`$run ./try`
17357                 case "$yyy" in
17358                 12345678901)
17359                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17360                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17361                         echo "We will use %d."
17362                         ;;
17363                 esac
17364         fi
17365 fi
17366
17367 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17368         $cat >try.c <<'EOCP'
17369 #include <sys/types.h>
17370 #include <stdio.h>
17371 int main() {
17372   long q = 12345678901;
17373   printf("%ld\n", q);
17374 }
17375 EOCP
17376         set try
17377         if eval $compile; then
17378                 yyy=`$run ./try`
17379                 case "$yyy" in
17380                 12345678901)
17381                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17382                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17383                         echo "We will use %ld."
17384                         ;;
17385                 esac
17386         fi
17387 fi
17388
17389 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17390         $cat >try.c <<'EOCP'
17391 #include <sys/types.h>
17392 #include <inttypes.h>
17393 #include <stdio.h>
17394 int main() {
17395   int64_t q = 12345678901;
17396   printf("%" PRId64 "\n", q);
17397 }
17398 EOCP
17399         set try
17400         if eval $compile; then
17401                 yyy=`$run ./try`
17402                 case "$yyy" in
17403                 12345678901)
17404                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
17405                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
17406                         echo "We will use the C9X style."
17407                         ;;
17408                 esac
17409         fi
17410 fi
17411
17412 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
17413         $cat >try.c <<EOCP
17414 #include <sys/types.h>
17415 #include <stdio.h>
17416 int main() {
17417   $quadtype q = 12345678901;
17418   printf("%Ld\n", q);
17419 }
17420 EOCP
17421         set try
17422         if eval $compile; then
17423                 yyy=`$run ./try`
17424                 case "$yyy" in
17425                 12345678901)
17426                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
17427                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
17428                         echo "We will use %Ld."
17429                         ;;
17430                 esac
17431         fi
17432 fi
17433
17434 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
17435         $cat >try.c <<'EOCP'
17436 #include <sys/types.h>
17437 #include <stdio.h>
17438 int main() {
17439   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
17440   printf("%lld\n", q);
17441 }
17442 EOCP
17443         set try
17444         if eval $compile; then
17445                 yyy=`$run ./try`
17446                 case "$yyy" in
17447                 12345678901)
17448                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
17449                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
17450                         echo "We will use the %lld style."
17451                         ;;
17452                 esac
17453         fi
17454 fi
17455
17456 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
17457         $cat >try.c <<EOCP
17458 #include <sys/types.h>
17459 #include <stdio.h>
17460 int main() {
17461   $quadtype q = 12345678901;
17462   printf("%qd\n", q);
17463 }
17464 EOCP
17465         set try
17466         if eval $compile; then
17467                 yyy=`$run ./try`
17468                 case "$yyy" in
17469                 12345678901)
17470                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
17471                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
17472                         echo "We will use %qd."
17473                         ;;
17474                 esac
17475         fi
17476 fi
17477
17478 if $test X"$sPRId64" = X; then
17479         echo "Cannot figure out how to print 64-bit integers." >&4
17480 fi
17481
17482 $rm -f try try.*
17483
17484 fi
17485
17486 case "$sPRId64" in
17487 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
17488         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
17489         ;;
17490 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
17491         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
17492         ;;
17493 esac
17494
17495
17496 echo " "
17497 $echo "Checking the format strings to be used for Perl's internal types..." >&4
17498
17499 if $test X"$ivsize" = X8; then
17500         ivdformat="$sPRId64"
17501         uvuformat="$sPRIu64"
17502         uvoformat="$sPRIo64"
17503         uvxformat="$sPRIx64"
17504         uvXUformat="$sPRIXU64"
17505 else
17506         if $test X"$ivsize" = X"$longsize"; then
17507                 ivdformat='"ld"'
17508                 uvuformat='"lu"'
17509                 uvoformat='"lo"'
17510                 uvxformat='"lx"'
17511                 uvXUformat='"lX"'
17512         else
17513                 if $test X"$ivsize" = X"$intsize"; then
17514                         ivdformat='"d"'
17515                         uvuformat='"u"'
17516                         uvoformat='"o"'
17517                         uvxformat='"x"'
17518                         uvXUformat='"X"'
17519                 else
17520                         : far out
17521                         if $test X"$ivsize" = X"$shortsize"; then
17522                                 ivdformat='"hd"'
17523                                 uvuformat='"hu"'
17524                                 uvoformat='"ho"'
17525                                 uvxformat='"hx"'
17526                                 uvXUformat='"hX"'
17527                         fi
17528                 fi
17529         fi
17530 fi
17531
17532 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
17533         nveformat="$sPRIeldbl"
17534         nvfformat="$sPRIfldbl"
17535         nvgformat="$sPRIgldbl"
17536         nvEUformat="$sPRIEUldbl"
17537         nvFUformat="$sPRIFUldbl"
17538         nvGUformat="$sPRIGUldbl"
17539 else
17540         nveformat='"e"'
17541         nvfformat='"f"'
17542         nvgformat='"g"'
17543         nvEUformat='"E"'
17544         nvFUformat='"F"'
17545         nvGUformat='"G"'
17546 fi
17547
17548 case "$ivdformat" in
17549 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
17550     exit 1
17551     ;;
17552 esac
17553
17554
17555 echo " "
17556 $echo "Checking the format string to be used for gids..." >&4
17557
17558 case "$gidsign" in
17559 -1)     if $test X"$gidsize" = X"$ivsize"; then
17560                 gidformat="$ivdformat"
17561         else
17562                 if $test X"$gidsize" = X"$longsize"; then
17563                         gidformat='"ld"'
17564                 else
17565                         if $test X"$gidsize" = X"$intsize"; then
17566                                 gidformat='"d"'
17567                         else
17568                                 if $test X"$gidsize" = X"$shortsize"; then
17569                                         gidformat='"hd"'
17570                                 fi
17571                         fi
17572                 fi
17573         fi
17574         ;;
17575 *)      if $test X"$gidsize" = X"$uvsize"; then
17576                 gidformat="$uvuformat"
17577         else
17578                 if $test X"$gidsize" = X"$longsize"; then
17579                         gidformat='"lu"'
17580                 else
17581                         if $test X"$gidsize" = X"$intsize"; then
17582                                 gidformat='"u"'
17583                         else
17584                                 if $test X"$gidsize" = X"$shortsize"; then
17585                                         gidformat='"hu"'
17586                                 fi
17587                         fi
17588                 fi
17589         fi
17590         ;;
17591 esac
17592
17593 : see if getgroups exists
17594 set getgroups d_getgrps
17595 eval $inlibc
17596
17597 : see if setgroups exists
17598 set setgroups d_setgrps
17599 eval $inlibc
17600
17601
17602 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
17603 echo " "
17604 case "$d_getgrps$d_setgrps" in
17605 *define*)
17606         case "$groupstype" in
17607         '') dflt="$gidtype" ;;
17608         *)  dflt="$groupstype" ;;
17609         esac
17610         $cat <<EOM
17611 What type of pointer is the second argument to getgroups() and setgroups()?
17612 Usually this is the same as group ids, $gidtype, but not always.
17613
17614 EOM
17615         rp='What type pointer is the second argument to getgroups() and setgroups()?'
17616         . ./myread
17617         groupstype="$ans"
17618         ;;
17619 *)  groupstype="$gidtype";;
17620 esac
17621
17622 echo " "
17623 echo "Checking if your $make program sets \$(MAKE)..." >&4
17624 case "$make_set_make" in
17625 '')
17626         $sed 's/^X //' > testmake.mak << 'EOF'
17627 Xall:
17628 X       @echo 'maketemp="$(MAKE)"'
17629 EOF
17630         case "`$make -f testmake.mak 2>/dev/null`" in
17631         *maketemp=*) make_set_make='#' ;;
17632         *)      make_set_make="MAKE=$make" ;;
17633         esac
17634         $rm -f testmake.mak
17635         ;;
17636 esac
17637 case "$make_set_make" in
17638 '#') echo "Yup, it does.";;
17639 *) echo "Nope, it doesn't.";;
17640 esac
17641
17642 : see what type is used for mode_t
17643 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
17644 set mode_t modetype int stdio.h sys/types.h
17645 eval $typedef_ask
17646
17647 : see if stdarg is available
17648 echo " "
17649 if $test `./findhdr stdarg.h`; then
17650         echo "<stdarg.h> found." >&4
17651         valstd="$define"
17652 else
17653         echo "<stdarg.h> NOT found." >&4
17654         valstd="$undef"
17655 fi
17656
17657 : see if varags is available
17658 echo " "
17659 if $test `./findhdr varargs.h`; then
17660         echo "<varargs.h> found." >&4
17661 else
17662         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
17663 fi
17664
17665 : set up the varargs testing programs
17666 $cat > varargs.c <<EOP
17667 #ifdef I_STDARG
17668 #include <stdarg.h>
17669 #endif
17670 #ifdef I_VARARGS
17671 #include <varargs.h>
17672 #endif
17673
17674 #ifdef I_STDARG
17675 int f(char *p, ...)
17676 #else
17677 int f(va_alist)
17678 va_dcl
17679 #endif
17680 {
17681         va_list ap;
17682 #ifndef I_STDARG
17683         char *p;
17684 #endif
17685 #ifdef I_STDARG
17686         va_start(ap,p);
17687 #else
17688         va_start(ap);
17689         p = va_arg(ap, char *);
17690 #endif
17691         va_end(ap);
17692 }
17693 EOP
17694 $cat > varargs <<EOP
17695 $startsh
17696 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
17697         echo "true"
17698 else
17699         echo "false"
17700 fi
17701 $rm -f varargs$_o
17702 EOP
17703 chmod +x varargs
17704
17705 : now check which varargs header should be included
17706 echo " "
17707 i_varhdr=''
17708 case "$valstd" in
17709 "$define")
17710         if `./varargs I_STDARG`; then
17711                 val='stdarg.h'
17712         elif `./varargs I_VARARGS`; then
17713                 val='varargs.h'
17714         fi
17715         ;;
17716 *)
17717         if `./varargs I_VARARGS`; then
17718                 val='varargs.h'
17719         fi
17720         ;;
17721 esac
17722 case "$val" in
17723 '')
17724 echo "I could not find the definition for va_dcl... You have problems..." >&4
17725         val="$undef"; set i_stdarg; eval $setvar
17726         val="$undef"; set i_varargs; eval $setvar
17727         ;;
17728 *) 
17729         set i_varhdr
17730         eval $setvar
17731         case "$i_varhdr" in
17732         stdarg.h)
17733                 val="$define"; set i_stdarg; eval $setvar
17734                 val="$undef"; set i_varargs; eval $setvar
17735                 ;;
17736         varargs.h)
17737                 val="$undef"; set i_stdarg; eval $setvar
17738                 val="$define"; set i_varargs; eval $setvar
17739                 ;;
17740         esac
17741         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
17742 esac
17743 $rm -f varargs*
17744
17745 : see if we need va_copy
17746 echo " "
17747 case "$i_stdarg" in
17748 "$define")
17749         $cat >try.c <<EOCP
17750 #include <stdarg.h>
17751 #include <stdio.h>
17752 #$i_stdlib I_STDLIB
17753 #ifdef I_STDLIB
17754 #include <stdlib.h>
17755 #endif
17756 #include <signal.h>
17757
17758 int
17759 ivfprintf(FILE *f, const char *fmt, va_list *valp)
17760 {
17761   return vfprintf(f, fmt, *valp);
17762 }
17763  
17764 int    
17765 myvfprintf(FILE *f, const  char *fmt, va_list val)
17766 {
17767   return ivfprintf(f, fmt, &val);
17768 }
17769       
17770 int
17771 myprintf(char *fmt, ...) 
17772 {
17773   va_list val;
17774   va_start(val, fmt);
17775   return myvfprintf(stdout, fmt, val); 
17776 }         
17777
17778 int
17779 main(int ac, char **av)
17780 {
17781   signal(SIGSEGV, exit);
17782
17783   myprintf("%s%cs all right, then\n", "that", '\'');                            
17784   exit(0);      
17785 }
17786 EOCP
17787         set try
17788         if eval $compile && $run ./try 2>&1 >/dev/null; then
17789                 case "`$run ./try`" in
17790                 "that's all right, then")
17791                         okay=yes
17792                         ;;
17793                 esac
17794         fi
17795         case "$okay" in
17796         yes)    echo "It seems that you don't need va_copy()." >&4
17797                 need_va_copy="$undef"
17798                 ;;
17799         *)      echo "It seems that va_copy() or similar will be needed." >&4
17800                 need_va_copy="$define"
17801                 ;;
17802         esac
17803         $rm -f try.* core core.* *.core *.core.*
17804         ;;
17805 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
17806         ;;
17807 esac
17808
17809 : see what type is used for size_t
17810 rp="What is the type used for the length parameter for string functions?"
17811 set size_t sizetype 'unsigned int' stdio.h sys/types.h
17812 eval $typedef_ask
17813
17814 : check for type of arguments to gethostbyaddr. 
17815 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
17816         case "$d_gethbyaddr" in
17817         $define)
17818                 $cat <<EOM
17819
17820 Checking to see what type of arguments are accepted by gethostbyaddr().
17821 EOM
17822                 hdrs="$define sys/types.h
17823                         $d_socket sys/socket.h 
17824                         $i_niin netinet/in.h 
17825                         $i_netdb netdb.h
17826                         $i_unistd unistd.h"
17827                 : The first arg can 'char *' or 'void *'
17828                 : The second arg is some of integral type
17829                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
17830                         for yyy in size_t long int; do
17831                                 case "$netdb_host_type" in
17832                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
17833                                         if ./protochk "$try" $hdrs; then
17834                                                 echo "Your system accepts $xxx for the first arg."
17835                                                 echo "...and $yyy for the second arg."
17836                                                 netdb_host_type="$xxx"
17837                                                 netdb_hlen_type="$yyy"
17838                                         fi
17839                                         ;;
17840                                 esac
17841                         done
17842                 done
17843                 : In case none of those worked, prompt the user.
17844                 case "$netdb_host_type" in
17845                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
17846                         dflt='char *'
17847                         . ./myread
17848                         netdb_host_type=$ans
17849                         rp='What is the type for the 2nd argument to gethostbyaddr?'
17850                         dflt="$sizetype"
17851                         . ./myread
17852                         netdb_hlen_type=$ans
17853                         ;;
17854                 esac
17855                 ;;
17856         *)      : no gethostbyaddr, so pick harmless defaults
17857                 netdb_host_type='char *'
17858                 netdb_hlen_type="$sizetype"
17859                 ;;
17860         esac
17861         # Remove the "const" if needed. -- but then we'll have a 
17862         # prototype clash!
17863         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
17864 fi
17865
17866 : check for type of argument to gethostbyname. 
17867 if test "X$netdb_name_type" = X ; then
17868         case "$d_gethbyname" in
17869         $define)
17870                 $cat <<EOM
17871
17872 Checking to see what type of argument is accepted by gethostbyname().
17873 EOM
17874                 hdrs="$define sys/types.h
17875                         $d_socket sys/socket.h 
17876                         $i_niin netinet/in.h 
17877                         $i_netdb netdb.h
17878                         $i_unistd unistd.h"
17879                 for xxx in "const char *" "char *"; do
17880                         case "$netdb_name_type" in
17881                         '')     try="extern struct hostent *gethostbyname($xxx);"
17882                                 if ./protochk "$try" $hdrs; then
17883                                         echo "Your system accepts $xxx."
17884                                         netdb_name_type="$xxx"
17885                                 fi
17886                                 ;;
17887                         esac
17888                 done
17889                 : In case none of those worked, prompt the user.
17890                 case "$netdb_name_type" in
17891                 '')     rp='What is the type for the 1st argument to gethostbyname?'
17892                         dflt='char *'
17893                         . ./myread
17894                         netdb_name_type=$ans
17895                         ;;
17896                 esac
17897                 ;;
17898         *)      : no gethostbyname, so pick harmless default
17899                 netdb_name_type='char *'
17900                 ;;
17901         esac
17902 fi
17903
17904 : check for type of 1st argument to getnetbyaddr. 
17905 if test "X$netdb_net_type" = X ; then
17906         case "$d_getnbyaddr" in
17907         $define)
17908                 $cat <<EOM
17909
17910 Checking to see what type of 1st argument is accepted by getnetbyaddr().
17911 EOM
17912                 hdrs="$define sys/types.h
17913                         $d_socket sys/socket.h 
17914                         $i_niin netinet/in.h 
17915                         $i_netdb netdb.h
17916                         $i_unistd unistd.h"
17917                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
17918                         case "$netdb_net_type" in
17919                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
17920                                 if ./protochk "$try" $hdrs; then
17921                                         echo "Your system accepts $xxx."
17922                                         netdb_net_type="$xxx"
17923                                 fi
17924                                 ;;
17925                         esac
17926                 done
17927                 : In case none of those worked, prompt the user.
17928                 case "$netdb_net_type" in
17929                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
17930                         dflt='long'
17931                         . ./myread
17932                         netdb_net_type=$ans
17933                         ;;
17934                 esac
17935                 ;;
17936         *)      : no getnetbyaddr, so pick harmless default
17937                 netdb_net_type='long'
17938                 ;;
17939         esac
17940 fi
17941 : locate the preferred pager for this system
17942 fn=f/
17943 case "$pager" in
17944 '')
17945         dflt=''
17946         case "$pg" in
17947         /*) dflt=$pg;;
17948         [a-zA-Z]:/*) dflt=$pg;;
17949         esac
17950         case "$more" in
17951         /*) dflt=$more;;
17952         [a-zA-Z]:/*) dflt=$more;;
17953         esac
17954         case "$less" in
17955         /*) dflt=$less;;
17956         [a-zA-Z]:/*) dflt=$less;;
17957         esac
17958         case "$dflt" in
17959         '') dflt=/usr/ucb/more;;
17960         esac
17961         ;;
17962 *)      dflt="$pager"
17963         : Instruct ./getfile to trust the hinted or previous pager value,
17964         : even if it does not begin with a slash.  For example, on os2,
17965         : pager might be cmd /c more.  See comments in UU/getfile.
17966         fn="f/($pager)"
17967         ;;
17968 esac
17969 echo " "
17970 rp='What pager is used on your system?'
17971 . ./getfile
17972 pager="$ans"
17973
17974 : see what type pids are declared as in the kernel
17975 rp="What is the type of process ids on this system?"
17976 set pid_t pidtype int stdio.h sys/types.h
17977 eval $typedef_ask
17978
17979 : Find earliest binary compatible site_perl subdirectory perl can use.
17980 xs_apiversion=$version # The current site_perl version.
17981 : Find earliest pure perl site_perl subdirectory perl can use.
17982 : The versioned directories started at 5.005.
17983 pm_apiversion='5.005'
17984
17985 : see if ar generates random libraries by itself
17986 echo " "
17987 echo "Checking how to generate random libraries on your machine..." >&4
17988 echo 'int bar1() { return bar2(); }' > bar1.c
17989 echo 'int bar2() { return 2; }' > bar2.c
17990 $cat > foo.c <<'EOP'
17991 int main() { printf("%d\n", bar1()); exit(0); }
17992 EOP
17993 $cc $ccflags -c bar1.c >/dev/null 2>&1
17994 $cc $ccflags -c bar2.c >/dev/null 2>&1
17995 $cc $ccflags -c foo.c >/dev/null 2>&1
17996 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
17997 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
17998         $run ./foobar >/dev/null 2>&1; then
17999         echo "$ar appears to generate random libraries itself."
18000         orderlib=false
18001         ranlib=":"
18002 elif $ar ts bar$_a >/dev/null 2>&1 &&
18003         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18004         $run ./foobar >/dev/null 2>&1; then
18005                 echo "a table of contents needs to be added with '$ar ts'."
18006                 orderlib=false
18007                 ranlib="$ar ts"
18008 else
18009         case "$ranlib" in
18010         :) ranlib='';;
18011         '')
18012                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18013                 $test -f $ranlib || ranlib=''
18014                 ;;
18015         esac
18016         if $test -n "$ranlib"; then
18017                 echo "your system has '$ranlib'; we'll use that."
18018                 orderlib=false
18019         else
18020                 echo "your system doesn't seem to support random libraries"
18021                 echo "so we'll use lorder and tsort to order the libraries."
18022                 orderlib=true
18023                 ranlib=":"
18024         fi
18025 fi
18026 $rm -f foo* bar* 
18027
18028 : check for type of arguments to select. 
18029 case "$selecttype" in
18030 '') case "$d_select" in
18031         $define)
18032                 echo " "
18033                 $cat <<EOM
18034 Checking to see what type of arguments are accepted by select().
18035 EOM
18036                 hdrs="$define sys/types.h
18037                         $i_systime sys/time.h 
18038                         $i_sysselct sys/select.h
18039                         $d_socket sys/socket.h"
18040                 : The first arg can be int, unsigned, or size_t
18041                 : The last arg may or may not be 'const'
18042                 val=''
18043                 : void pointer has been seen but using that
18044                 : breaks the selectminbits test
18045                 for xxx in 'fd_set *' 'int *'; do
18046                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18047                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18048                                         case "$val" in
18049                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18050                                                 if ./protochk "$try" $hdrs; then
18051                                                         echo "Your system accepts $xxx."
18052                                                         val="$xxx"
18053                                                 fi
18054                                                 ;;
18055                                         esac
18056                                 done
18057                         done
18058                 done
18059                 case "$val" in
18060                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18061                         case "$d_fd_set" in
18062                                 $define) dflt="fd_set *" ;;
18063                                 *)              dflt="int *" ;;
18064                         esac
18065                         . ./myread
18066                         val=$ans
18067                         ;;
18068                 esac
18069                 selecttype="$val"
18070                 ;;
18071         *)      : no select, so pick a harmless default
18072                 selecttype='int *'
18073                 ;;
18074         esac
18075         ;;
18076 esac
18077
18078 : check for the select 'width'
18079 case "$selectminbits" in
18080 '') case "$d_select" in
18081         $define)
18082                 $cat <<EOM
18083
18084 Checking to see on how many bits at a time your select() operates...
18085 EOM
18086                 $cat >try.c <<EOCP
18087 #include <sys/types.h>
18088 #$i_time I_TIME
18089 #$i_systime I_SYS_TIME
18090 #$i_systimek I_SYS_TIME_KERNEL
18091 #ifdef I_TIME
18092 #   include <time.h>
18093 #endif
18094 #ifdef I_SYS_TIME
18095 #   ifdef I_SYS_TIME_KERNEL
18096 #       define KERNEL
18097 #   endif
18098 #   include <sys/time.h>
18099 #   ifdef I_SYS_TIME_KERNEL
18100 #       undef KERNEL
18101 #   endif
18102 #endif
18103 #$i_sysselct I_SYS_SELECT
18104 #ifdef I_SYS_SELECT
18105 #include <sys/select.h>
18106 #endif
18107 #$d_socket HAS_SOCKET
18108 #ifdef HAS_SOCKET
18109 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18110 #endif
18111 #include <stdio.h>
18112 $selecttype b;
18113 #define S sizeof(*(b))
18114 #define MINBITS 64
18115 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18116 #define NBITS  (NBYTES * 8)
18117 int main() {
18118     char s[NBYTES];
18119     struct timeval t;
18120     int i;
18121     FILE* fp;
18122     int fd;
18123
18124     fclose(stdin);
18125     fp = fopen("try.c", "r");
18126     if (fp == 0)
18127       exit(1);
18128     fd = fileno(fp);
18129     if (fd < 0)
18130       exit(2);
18131     b = ($selecttype)s;
18132     for (i = 0; i < NBITS; i++)
18133         FD_SET(i, b);
18134     t.tv_sec  = 0;
18135     t.tv_usec = 0;
18136     select(fd + 1, b, 0, 0, &t);
18137     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18138     printf("%d\n", i + 1);
18139     return 0;
18140 }
18141 EOCP
18142                 set try
18143                 if eval $compile_ok; then
18144                         selectminbits=`$run ./try`
18145                         case "$selectminbits" in
18146                         '')     cat >&4 <<EOM
18147 Cannot figure out on how many bits at a time your select() operates.
18148 I'll play safe and guess it is 32 bits.
18149 EOM
18150                                 selectminbits=32
18151                                 bits="32 bits"
18152                                 ;;
18153                         1)      bits="1 bit" ;;
18154                         *)      bits="$selectminbits bits" ;;
18155                         esac
18156                         echo "Your select() operates on $bits at a time." >&4
18157                 else
18158                         rp='What is the minimum number of bits your select() operates on?'
18159                         case "$byteorder" in
18160                         1234|12345678)  dflt=32 ;;
18161                         *)              dflt=1  ;;
18162                         esac
18163                         . ./myread
18164                         val=$ans
18165                         selectminbits="$val"
18166                 fi
18167                 $rm -f try.* try
18168                 ;;
18169         *)      : no select, so pick a harmless default
18170                 selectminbits='32'
18171                 ;;
18172         esac
18173         ;;
18174 esac
18175
18176 : Trace out the files included by signal.h, then look for SIGxxx names.
18177 : Remove SIGARRAYSIZE used by HPUX.
18178 : Remove SIGSTKSIZE used by Linux.
18179 : Remove SIGSTKSZ used by Posix.
18180 : Remove SIGTYP void lines used by OS2.
18181 : Some cpps, like os390, dont give the file name anywhere
18182 if [ "X$fieldn" = X ]; then
18183         : Just make some guesses.  We check them later.
18184         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18185 else
18186         xxx=`echo '#include <signal.h>' |
18187         $cppstdin $cppminus $cppflags 2>/dev/null |
18188         $grep '^[       ]*#.*include' | 
18189         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18190 fi
18191 : Check this list of files to be sure we have parsed the cpp output ok.
18192 : This will also avoid potentially non-existent files, such 
18193 : as ../foo/bar.h
18194 xxxfiles=''
18195 for xx in $xxx /dev/null ; do
18196         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18197 done
18198 : If we have found no files, at least try signal.h
18199 case "$xxxfiles" in
18200 '')     xxxfiles=`./findhdr signal.h` ;;
18201 esac
18202 xxx=`awk '
18203 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18204         print substr($2, 4, 20)
18205 }
18206 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18207         print substr($3, 4, 20)
18208 }' $xxxfiles`
18209 : Append some common names just in case the awk scan failed.
18210 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18211 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18212 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18213 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18214 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18215
18216 : generate a few handy files for later
18217 $cat > signal.c <<'EOCP'
18218 #include <sys/types.h>
18219 #include <signal.h>
18220 #include <stdio.h>
18221 int main() {
18222
18223 /* Strange style to avoid deeply-nested #if/#else/#endif */
18224 #ifndef NSIG
18225 #  ifdef _NSIG
18226 #    define NSIG (_NSIG)
18227 #  endif
18228 #endif
18229
18230 #ifndef NSIG
18231 #  ifdef SIGMAX
18232 #    define NSIG (SIGMAX+1)
18233 #  endif
18234 #endif
18235
18236 #ifndef NSIG
18237 #  ifdef SIG_MAX
18238 #    define NSIG (SIG_MAX+1)
18239 #  endif
18240 #endif
18241
18242 #ifndef NSIG
18243 #  ifdef MAXSIG
18244 #    define NSIG (MAXSIG+1)
18245 #  endif
18246 #endif
18247
18248 #ifndef NSIG
18249 #  ifdef MAX_SIG
18250 #    define NSIG (MAX_SIG+1)
18251 #  endif
18252 #endif
18253
18254 #ifndef NSIG
18255 #  ifdef SIGARRAYSIZE
18256 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18257 #  endif
18258 #endif
18259
18260 #ifndef NSIG
18261 #  ifdef _sys_nsig
18262 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18263 #  endif
18264 #endif
18265
18266 /* Default to some arbitrary number that's big enough to get most
18267    of the common signals.
18268 */
18269 #ifndef NSIG
18270 #    define NSIG 50
18271 #endif
18272
18273 printf("NSIG %d\n", NSIG);
18274
18275 #ifndef JUST_NSIG
18276
18277 EOCP
18278
18279 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18280 {
18281         printf "#ifdef SIG"; printf $1; printf "\n"
18282         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18283         printf $1; printf ");\n"
18284         printf "#endif\n"
18285 }
18286 END {
18287         printf "#endif /* JUST_NSIG */\n";
18288         printf "exit(0);\n}\n";
18289 }
18290 ' >>signal.c
18291 $cat >signal.awk <<'EOP'
18292 BEGIN { ndups = 0 }
18293 $1 ~ /^NSIG$/ { nsig = $2 }
18294 ($1 !~ /^NSIG$/) && (NF == 2) {
18295     if ($2 > maxsig) { maxsig = $2 }
18296     if (sig_name[$2]) {
18297         dup_name[ndups] = $1
18298         dup_num[ndups] = $2
18299         ndups++ 
18300     }
18301     else {
18302         sig_name[$2] = $1
18303         sig_num[$2] = $2
18304     }
18305 }
18306 END { 
18307     if (nsig == 0) {
18308         nsig = maxsig + 1
18309     }
18310     printf("NSIG %d\n", nsig);
18311     for (n = 1; n < nsig; n++) {
18312         if (sig_name[n]) {
18313             printf("%s %d\n", sig_name[n], sig_num[n])
18314         }
18315         else {
18316             printf("NUM%d %d\n", n, n) 
18317         }
18318     }
18319     for (n = 0; n < ndups; n++) {
18320         printf("%s %d\n", dup_name[n], dup_num[n])
18321     }
18322 }
18323 EOP
18324 $cat >signal_cmd <<EOS
18325 $startsh
18326 if $test -s signal.lst; then
18327     echo "Using your existing signal.lst file"
18328         exit 0
18329 fi
18330 xxx="$xxx"
18331 EOS
18332 $cat >>signal_cmd <<'EOS'
18333
18334 set signal
18335 if eval $compile_ok; then
18336         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
18337 else
18338         echo "(I can't seem be able to compile the whole test program)" >&4
18339         echo "(I'll try it in little pieces.)" >&4
18340         set signal -DJUST_NSIG
18341         if eval $compile_ok; then
18342                 $run ./signal$_exe > signal.nsg
18343                 $cat signal.nsg
18344         else
18345                 echo "I can't seem to figure out how many signals you have." >&4
18346                 echo "Guessing 50." >&4
18347                 echo 'NSIG 50' > signal.nsg
18348         fi
18349         : Now look at all the signal names, one at a time.
18350         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18351                 $cat > signal.c <<EOCP
18352 #include <sys/types.h>
18353 #include <signal.h>
18354 #include <stdio.h>
18355 int main() {
18356 printf("$xx %d\n", SIG${xx});
18357 return 0;
18358 }
18359 EOCP
18360                 set signal
18361                 if eval $compile; then
18362                         echo "SIG${xx} found."
18363                         $run ./signal$_exe  >> signal.ls1
18364                 else
18365                         echo "SIG${xx} NOT found."
18366                 fi
18367         done
18368         if $test -s signal.ls1; then
18369                 $cat signal.nsg signal.ls1 |
18370                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
18371         fi
18372
18373 fi
18374 if $test -s signal.lst; then
18375         :
18376 else
18377         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
18378         echo 'kill -l' >signal
18379         set X `csh -f <signal`
18380         $rm -f signal
18381         shift
18382         case $# in
18383         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
18384         esac
18385         echo $@ | $tr ' ' $trnl | \
18386             $awk '{ printf "%s %d\n", $1, ++s; }
18387                   END { printf "NSIG %d\n", ++s }' >signal.lst
18388 fi
18389 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
18390 EOS
18391 chmod a+x signal_cmd
18392 $eunicefix signal_cmd
18393
18394 : generate list of signal names
18395 echo " "
18396 case "$sig_name_init" in
18397 '') doinit=yes ;;
18398 *)  case "$sig_num_init" in
18399     ''|*,*) doinit=yes ;;
18400     esac ;;
18401 esac
18402 case "$doinit" in
18403 yes)
18404         echo "Generating a list of signal names and numbers..." >&4
18405         . ./signal_cmd
18406         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
18407         sig_name=`$awk 'BEGIN { printf "ZERO " }
18408                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
18409         sig_num=`$awk  'BEGIN { printf "0 " }
18410                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
18411         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
18412                              !/^NSIG/   { printf "\"%s\", ", $1 }
18413                              END        { printf "0\n" }' signal.lst`
18414         sig_num_init=`$awk  'BEGIN      { printf "0, " }
18415                              !/^NSIG/   { printf "%d, ", $2}
18416                              END        { printf "0\n"}' signal.lst`
18417         ;;
18418 esac
18419 echo "The following $sig_count signals are available:"
18420 echo " "
18421 echo $sig_name | $awk \
18422 'BEGIN { linelen = 0 }
18423 {
18424         for (i = 1; i <= NF; i++) {
18425                 name = "SIG" $i " "
18426                 linelen = linelen + length(name)
18427                 if (linelen > 70) {
18428                         printf "\n"
18429                         linelen = length(name)
18430                 }
18431                 printf "%s", name
18432         }
18433         printf "\n"
18434 }'
18435 sig_size=`echo $sig_name | awk '{print NF}'`
18436 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
18437
18438 echo " "
18439 case "$sizetype" in
18440 *_t) zzz="$sizetype"    ;;
18441 *)   zzz="filesize"     ;;
18442 esac
18443 echo "Checking the size of $zzz..." >&4 
18444 cat > try.c <<EOCP
18445 #include <sys/types.h>
18446 #include <stdio.h>
18447 int main() {
18448     printf("%d\n", (int)sizeof($sizetype));
18449     exit(0);
18450 }
18451 EOCP
18452 set try
18453 if eval $compile_ok; then
18454         yyy=`$run ./try`
18455         case "$yyy" in
18456         '')     sizesize=4
18457                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
18458                 ;;
18459         *)      sizesize=$yyy
18460                 echo "Your $zzz size is $sizesize bytes."
18461                 ;;
18462         esac
18463 else
18464         sizesize=4
18465         echo "(I can't compile the test program--guessing $sizesize.)" >&4
18466 fi
18467
18468
18469 : check for socklen_t
18470 echo " "
18471 echo "Checking to see if you have socklen_t..." >&4
18472 $cat >try.c <<EOCP
18473 #include <sys/types.h>
18474 #$d_socket HAS_SOCKET
18475 #ifdef HAS_SOCKET
18476 #include <sys/socket.h>
18477 #endif
18478 int main() { socklen_t x = 16; }
18479 EOCP
18480 set try
18481 if eval $compile; then
18482         val="$define"
18483         echo "You have socklen_t."
18484 else
18485         val="$undef"
18486         echo "You do not have socklen_t."
18487         case "$sizetype" in
18488         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
18489         esac
18490 fi
18491 $rm -f try try.*
18492 set d_socklen_t
18493 eval $setvar
18494
18495 : see if this is a socks.h system
18496 set socks.h i_socks
18497 eval $inhdr
18498
18499 : check for type of the size argument to socket calls
18500 case "$d_socket" in
18501 "$define")
18502         $cat <<EOM
18503
18504 Checking to see what type is the last argument of accept().
18505 EOM
18506         yyy=''
18507         case "$d_socklen_t" in
18508         "$define") yyy="$yyy socklen_t"
18509         esac
18510         yyy="$yyy $sizetype int long unsigned"
18511         for xxx in $yyy; do
18512                 case "$socksizetype" in
18513                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
18514                         case "$usesocks" in
18515                         "$define")
18516                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
18517                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
18518                                         socksizetype="$xxx"
18519                                 fi
18520                                 ;;
18521                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
18522                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
18523                                         socksizetype="$xxx"
18524                                 fi
18525                                 ;;
18526                         esac
18527                         ;;
18528                 esac
18529         done
18530 : In case none of those worked, prompt the user.
18531         case "$socksizetype" in
18532         '')     rp='What is the type for socket address structure sizes?'
18533                 dflt='int'
18534                 . ./myread
18535                 socksizetype=$ans
18536                 ;;
18537         esac
18538         ;;
18539 *)      : no sockets, so pick relatively harmless default
18540         socksizetype='int'
18541         ;;
18542 esac
18543
18544 : see what type is used for signed size_t
18545 set ssize_t ssizetype int stdio.h sys/types.h
18546 eval $typedef
18547 dflt="$ssizetype"
18548 $cat > try.c <<EOM
18549 #include <stdio.h>
18550 #include <sys/types.h>
18551 #define Size_t $sizetype
18552 #define SSize_t $dflt
18553 int main()
18554 {
18555         if (sizeof(Size_t) == sizeof(SSize_t))
18556                 printf("$dflt\n");
18557         else if (sizeof(Size_t) == sizeof(int))
18558                 printf("int\n");
18559         else 
18560                 printf("long\n");
18561         exit(0);
18562 }
18563 EOM
18564 echo " "
18565 set try
18566 if eval $compile_ok && $run ./try > /dev/null; then
18567         ssizetype=`$run ./try`
18568         echo "I'll be using $ssizetype for functions returning a byte count." >&4
18569 else
18570         $cat >&4 <<EOM
18571 Help! I can't compile and run the ssize_t test program: please enlighten me!
18572 (This is probably a misconfiguration in your system or libraries, and
18573 you really ought to fix it.  Still, I'll try anyway.)
18574
18575 I need a type that is the same size as $sizetype, but is guaranteed to
18576 be signed.  Common values are ssize_t, int and long.
18577
18578 EOM
18579         rp="What signed type is the same size as $sizetype?"
18580         . ./myread
18581         ssizetype="$ans"
18582 fi
18583 $rm -f try try.*
18584
18585 : see what type of char stdio uses.
18586 echo " "
18587 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
18588 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
18589         echo "Your stdio uses unsigned chars." >&4
18590         stdchar="unsigned char"
18591 else
18592         echo "Your stdio uses signed chars." >&4
18593         stdchar="char"
18594 fi
18595 $rm -f stdioh
18596
18597
18598
18599 : see what type uids are declared as in the kernel
18600 echo " "
18601 echo "Looking for the type for user ids returned by getuid()."
18602 set uid_t uidtype xxx stdio.h sys/types.h
18603 eval $typedef
18604 case "$uidtype" in
18605 xxx)
18606         xxx=`./findhdr sys/user.h`
18607         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
18608         case $1 in
18609         unsigned) dflt="$1 $2" ;;
18610         *) dflt="$1" ;;
18611         esac
18612         ;;
18613 *) dflt="$uidtype";;
18614 esac
18615 case "$uidtype" in
18616 uid_t)  echo "uid_t found." ;;
18617 *)      rp="What is the type for user ids returned by getuid()?"
18618         . ./myread
18619         uidtype="$ans"
18620         ;;
18621 esac
18622
18623 echo " "
18624 case "$uidtype" in
18625 *_t) zzz="$uidtype"     ;;
18626 *)   zzz="uid"          ;;
18627 esac
18628 echo "Checking the size of $zzz..." >&4 
18629 cat > try.c <<EOCP
18630 #include <sys/types.h>
18631 #include <stdio.h>
18632 int main() {
18633     printf("%d\n", (int)sizeof($uidtype));
18634     exit(0);
18635 }
18636 EOCP
18637 set try
18638 if eval $compile_ok; then
18639         yyy=`$run ./try`
18640         case "$yyy" in
18641         '')     uidsize=4
18642                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
18643                 ;;
18644         *)      uidsize=$yyy
18645                 echo "Your $zzz is $uidsize bytes long."
18646                 ;;
18647         esac
18648 else
18649         uidsize=4
18650         echo "(I can't compile the test program--guessing $uidsize.)" >&4
18651 fi
18652
18653 echo " "
18654 case "$uidtype" in
18655 *_t) zzz="$uidtype"     ;;
18656 *)   zzz="uid"          ;;
18657 esac
18658 echo "Checking the sign of $zzz..." >&4
18659 cat > try.c <<EOCP
18660 #include <sys/types.h>
18661 #include <stdio.h>
18662 int main() {
18663         $uidtype foo = -1;
18664         if (foo < 0)
18665                 printf("-1\n");
18666         else
18667                 printf("1\n");
18668 }
18669 EOCP
18670 set try
18671 if eval $compile; then
18672         yyy=`$run ./try`
18673         case "$yyy" in
18674         '')     uidsign=1
18675                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18676                 ;;
18677         *)      uidsign=$yyy
18678                 case "$uidsign" in
18679                  1) echo "Your $zzz is unsigned." ;;
18680                 -1) echo "Your $zzz is signed."   ;;
18681                 esac
18682                 ;;
18683         esac
18684 else
18685         uidsign=1
18686         echo "(I can't compile the test program--guessing unsigned.)" >&4
18687 fi
18688
18689
18690
18691 echo " "
18692 $echo "Checking the format string to be used for uids..." >&4
18693
18694 case "$uidsign" in
18695 -1)     if $test X"$uidsize" = X"$ivsize"; then
18696                 uidformat="$ivdformat"
18697         else
18698                 if $test X"$uidsize" = X"$longsize"; then
18699                         uidformat='"ld"'
18700                 else
18701                         if $test X"$uidsize" = X"$intsize"; then
18702                                 uidformat='"d"'
18703                         else
18704                                 if $test X"$uidsize" = X"$shortsize"; then
18705                                         uidformat='"hd"'
18706                                 fi
18707                         fi
18708                 fi
18709         fi
18710         ;;
18711 *)      if $test X"$uidsize" = X"$uvsize"; then
18712                 uidformat="$uvuformat"
18713         else
18714                 if $test X"$uidsize" = X"$longsize"; then
18715                         uidformat='"lu"'
18716                 else
18717                         if $test X"$uidsize" = X"$intsize"; then
18718                                 uidformat='"u"'
18719                         else
18720                                 if $test X"$uidsize" = X"$shortsize"; then
18721                                         uidformat='"hu"'
18722                                 fi
18723                         fi
18724                 fi
18725         fi
18726         ;;
18727 esac
18728
18729 : determine compiler compiler
18730 case "$yacc" in
18731 '')
18732         dflt=yacc;;
18733 *)
18734         dflt="$yacc";;
18735 esac
18736 echo " "
18737 comp='yacc'
18738 if $test -f "$byacc$_exe"; then
18739         dflt="$byacc"
18740         comp="byacc or $comp"
18741 fi
18742 if $test -f "$bison$_exe"; then
18743         comp="$comp or bison -y"
18744 fi
18745 rp="Which compiler compiler ($comp) shall I use?"
18746 . ./myread
18747 yacc="$ans"
18748 case "$yacc" in
18749 *bis*)
18750         case "$yacc" in
18751         *-y*) ;;
18752         *)
18753                 yacc="$yacc -y"
18754                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
18755                 ;;
18756         esac
18757         ;;
18758 esac
18759
18760 : see if this is a fp.h system
18761 set fp.h i_fp
18762 eval $inhdr
18763
18764 : see if this is a fp_class.h system
18765 set fp_class.h i_fp_class
18766 eval $inhdr
18767
18768 : see if this is a ieeefp.h system
18769 case "$i_ieeefp" in
18770 '' ) set ieeefp.h i_ieeefp
18771      eval $inhdr
18772      ;;
18773 esac
18774
18775 : see if this is a libutil.h system
18776 set libutil.h i_libutil
18777 eval $inhdr
18778
18779 : see if mach cthreads are available
18780 if test "X$usethreads" = "X$define"; then
18781         set mach/cthreads.h i_machcthr
18782         eval $inhdr
18783 else
18784         i_machcthr="$undef"
18785 fi
18786
18787
18788
18789 : see if this is a math.h system
18790 set math.h i_math
18791 eval $inhdr
18792
18793 : see if this is a mntent.h system
18794 set mntent.h i_mntent
18795 eval $inhdr
18796
18797 : see if ndbm.h is available
18798 set ndbm.h t_ndbm
18799 eval $inhdr
18800
18801 case "$t_ndbm" in
18802 $undef)
18803     # Some Linux distributions such as RedHat 7.1 put the
18804     # ndbm.h header in /usr/include/gdbm/ndbm.h.
18805     if $test -f /usr/include/gdbm/ndbm.h; then
18806         echo '<gdbm/ndbm.h> found.'
18807         ccflags="$ccflags -I/usr/include/gdbm"
18808         cppflags="$cppflags -I/usr/include/gdbm"
18809         t_ndbm=$define
18810     fi
18811     ;;
18812 esac
18813
18814 case "$t_ndbm" in
18815 $define)
18816         : see if dbm_open exists
18817         set dbm_open d_dbm_open
18818         eval $inlibc
18819         case "$d_dbm_open" in
18820         $undef)
18821                 t_ndbm="$undef"
18822                 echo "We won't be including <ndbm.h>"
18823                 ;;
18824         esac
18825         ;;
18826 esac
18827 val="$t_ndbm"
18828 set i_ndbm
18829 eval $setvar
18830
18831 : see if net/errno.h is available
18832 val=''
18833 set net/errno.h val
18834 eval $inhdr
18835
18836 : Unfortunately, it causes problems on some systems.  Arrgh.
18837 case "$val" in
18838 $define)
18839         cat > try.c <<'EOM'
18840 #include <stdio.h>
18841 #include <errno.h>
18842 #include <net/errno.h>
18843 int func()
18844 {
18845         return ENOTSOCK;
18846 }
18847 EOM
18848         if $cc $ccflags -c try.c >/dev/null 2>&1; then
18849                 echo "We'll be including <net/errno.h>." >&4
18850         else
18851                 echo "We won't be including <net/errno.h>." >&4
18852                 val="$undef"
18853         fi
18854         $rm -f try.* try
18855         ;;
18856 esac
18857 set i_neterrno
18858 eval $setvar
18859
18860 : see if netinet/tcp.h is available
18861 set netinet/tcp.h i_netinettcp
18862 eval $inhdr
18863
18864 : see if this is a poll.h system
18865 set poll.h i_poll
18866 eval $inhdr
18867
18868 : see if this is a prot.h system
18869 set prot.h i_prot
18870 eval $inhdr
18871
18872 echo " "
18873 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
18874 $cat <<'EOSH' > Cppsym.know
18875 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
18876 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
18877 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
18878 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
18879 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
18880 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
18881 bull c cadmus clipper CMU COFF COMPILER_VERSION
18882 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
18883 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
18884 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
18885 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
18886 GLIBC GLIBC_MINOR
18887 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
18888 H3050R H3050RX hbullx20 hcx host_mips
18889 hp200 hp300 hp700 HP700 hp800 hp9000
18890 hp9000s200 hp9000s300 hp9000s400 hp9000s500
18891 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
18892 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
18893 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
18894 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
18895 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
18896 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
18897 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
18898 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
18899 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
18900 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
18901 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
18902 MATH_HAS_NO_SIDE_EFFECTS
18903 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
18904 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
18905 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
18906 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
18907 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
18908 NetBSD news1500 news1700 news1800 news1900 news3700
18909 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
18910 ns32016 ns32332 ns32k nsc32000
18911 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
18912 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
18913 pc532 pdp11 PGC PIC plexus PORTAR posix
18914 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
18915 POSIX_C_SOURCE POSIX_SOURCE POWER
18916 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
18917 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
18918 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
18919 sony sony_news sonyrisc sparc sparclite spectrum
18920 stardent stdc STDC_EXT stratos sun sun3 sun386
18921 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
18922 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
18923 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
18924 sysV68 sysV88 Tek4132 Tek4300 titan
18925 TM3200 TM5400 TM5600
18926 tower tower32 tower32_200 tower32_600 tower32_700
18927 tower32_800 tower32_850 tss
18928 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
18929 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
18930 unix UNIX95 UNIX99 unixpc unos
18931 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
18932 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
18933 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
18934 USGr4 USGr4_2
18935 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
18936 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
18937 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
18938 z8000
18939 EOSH
18940 # Maybe put other stuff here too.
18941 cat <<EOSH >>Cppsym.know
18942 $osname
18943 EOSH
18944 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
18945 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
18946 $cat Cppsym.know > Cppsym.c
18947 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
18948 $rm -f Cppsym.a Cppsym.b Cppsym.c
18949 cat <<EOSH > Cppsym
18950 $startsh
18951 if $test \$# -gt 0; then
18952     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
18953     if $test -s Cppsym.got; then
18954         $rm -f Cppsym.got
18955         exit 0
18956     fi
18957     $rm -f Cppsym.got
18958     exit 1
18959 else
18960     $tr " " "$trnl" | ./Cppsym.try
18961     exit 0
18962 fi
18963 EOSH
18964 chmod +x Cppsym
18965 $eunicefix Cppsym
18966 cat <<EOSH > Cppsym.try
18967 $startsh
18968 cat <<'EOCP' > try.c
18969 #include <stdio.h>
18970 int main() {
18971 EOCP
18972 $awk \\
18973 EOSH
18974 cat <<'EOSH' >> Cppsym.try
18975 'length($1) > 0 {
18976     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
18977     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
18978     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
18979     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
18980 }'       >> try.c
18981 echo 'return 0;}' >> try.c
18982 EOSH
18983 cat <<EOSH >> Cppsym.try
18984 ccflags="$ccflags"
18985 case "$osname-$gccversion" in
18986 irix-) ccflags="\$ccflags -woff 1178" ;;
18987 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
18988 esac
18989 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
18990 EOSH
18991 chmod +x Cppsym.try
18992 $eunicefix Cppsym.try
18993 ./Cppsym < Cppsym.know > Cppsym.true
18994 : now check the C compiler for additional symbols
18995 postprocess_cc_v=''
18996 case "$osname" in
18997 aix) postprocess_cc_v="|$tr , ' '" ;;
18998 esac
18999 $cat >ccsym <<EOS
19000 $startsh
19001 $cat >tmp.c <<EOF
19002 extern int foo;
19003 EOF
19004 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19005 do
19006         case "\$i" in
19007         -D*) echo "\$i" | $sed 's/^-D//';;
19008         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19009         esac
19010 done
19011 $rm -f try.c
19012 EOS
19013 postprocess_cc_v=''
19014 chmod +x ccsym
19015 $eunicefix ccsym
19016 ./ccsym > ccsym1.raw
19017 if $test -s ccsym1.raw; then
19018        $sort ccsym1.raw | $uniq >ccsym.raw
19019 else
19020        mv ccsym1.raw ccsym.raw
19021 fi
19022
19023 $awk '/\=/ { print $0; next }
19024         { print $0"=1" }' ccsym.raw >ccsym.list
19025 $awk '/\=/ { print $0; next }
19026         { print $0"=1" }' Cppsym.true >ccsym.true
19027 $comm -13 ccsym.true ccsym.list >ccsym.own
19028 $comm -12 ccsym.true ccsym.list >ccsym.com
19029 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19030 also=''
19031 if $test -z ccsym.raw; then
19032         echo "Your C compiler doesn't seem to define any symbols!" >&4
19033         echo " "
19034         echo "However, your C preprocessor defines the following symbols:"
19035         $cat Cppsym.true
19036         ccsymbols=''
19037         cppsymbols=`$cat Cppsym.true`
19038         cppsymbols=`echo $cppsymbols`
19039         cppccsymbols="$cppsymbols"
19040 else
19041         if $test -s ccsym.com; then
19042                 echo "Your C compiler and pre-processor define these symbols:"
19043                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19044                 also='also '
19045                 symbols='ones'
19046                 cppccsymbols=`$cat ccsym.com`
19047                 cppccsymbols=`echo $cppccsymbols`
19048                 $test "$silent" || sleep 1
19049         fi
19050         if $test -s ccsym.cpp; then
19051                 $test "$also" && echo " "
19052                 echo "Your C pre-processor ${also}defines the following symbols:"
19053                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19054                 also='further '
19055                 cppsymbols=`$cat ccsym.cpp`
19056                 cppsymbols=`echo $cppsymbols`
19057                 $test "$silent" || sleep 1
19058         fi
19059         if $test -s ccsym.own; then
19060                 $test "$also" && echo " "
19061                 echo "Your C compiler ${also}defines the following cpp symbols:"
19062                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19063                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19064                 ccsymbols=`$cat ccsym.own`
19065                 ccsymbols=`echo $ccsymbols`
19066                 $test "$silent" || sleep 1
19067         fi
19068 fi
19069
19070 : see if this is a termio system
19071 val="$undef"
19072 val2="$undef"
19073 val3="$undef"
19074 if $test `./findhdr termios.h`; then
19075         set tcsetattr i_termios
19076         eval $inlibc
19077         val3="$i_termios"
19078 fi
19079 echo " "
19080 case "$val3" in
19081 "$define") echo "You have POSIX termios.h... good!" >&4;;
19082 *) if ./Cppsym pyr; then
19083                 case "`/bin/universe`" in
19084                 ucb) if $test `./findhdr sgtty.h`; then
19085                                 val2="$define"
19086                                 echo "<sgtty.h> found." >&4
19087                         else
19088                                 echo "System is pyramid with BSD universe."
19089                                 echo "<sgtty.h> not found--you could have problems." >&4
19090                         fi;;
19091                 *) if $test `./findhdr termio.h`; then
19092                                 val="$define"
19093                                 echo "<termio.h> found." >&4
19094                         else
19095                                 echo "System is pyramid with USG universe."
19096                                 echo "<termio.h> not found--you could have problems." >&4
19097                         fi;;
19098                 esac
19099         elif ./usg; then
19100                 if $test `./findhdr termio.h`; then
19101                         echo "<termio.h> found." >&4
19102                         val="$define"
19103                 elif $test `./findhdr sgtty.h`; then
19104                         echo "<sgtty.h> found." >&4
19105                         val2="$define"
19106                 else
19107 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19108                 fi
19109         else
19110                 if $test `./findhdr sgtty.h`; then
19111                         echo "<sgtty.h> found." >&4
19112                         val2="$define"
19113                 elif $test `./findhdr termio.h`; then
19114                         echo "<termio.h> found." >&4
19115                         val="$define"
19116                 else
19117 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19118                 fi
19119         fi;;
19120 esac
19121 set i_termio; eval $setvar
19122 val=$val2; set i_sgtty; eval $setvar
19123 val=$val3; set i_termios; eval $setvar
19124
19125 : see if stddef is available
19126 set stddef.h i_stddef
19127 eval $inhdr
19128
19129 : see if this is a sunmath.h system
19130 set sunmath.h i_sunmath
19131 eval $inhdr
19132
19133 : see if sys/access.h is available
19134 set sys/access.h i_sysaccess
19135 eval $inhdr
19136
19137 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19138 set sys/filio.h i_sysfilio
19139 eval $inhdr
19140 echo " "
19141 if $test `./findhdr sys/ioctl.h`; then
19142         val="$define"
19143         echo '<sys/ioctl.h> found.' >&4
19144 else
19145         val="$undef"
19146         if $test $i_sysfilio = "$define"; then
19147             echo '<sys/ioctl.h> NOT found.' >&4
19148         else
19149                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19150                 $test $i_termio = "$define" && xxx="termio.h"
19151                 $test $i_termios = "$define" && xxx="termios.h"
19152 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19153         fi
19154 fi
19155 set i_sysioctl
19156 eval $setvar
19157
19158 : see if socket ioctl defs are in sys/sockio.h
19159 echo " "
19160 xxx=`./findhdr sys/sockio.h`
19161 if $test "$xxx"; then
19162         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19163                 val="$define"
19164                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19165         else
19166                 val="$undef"
19167                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19168         fi
19169 else
19170         val="$undef"
19171         $cat <<EOM
19172 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19173 EOM
19174 fi
19175 set i_syssockio
19176 eval $setvar
19177
19178
19179 : see if this is a syslog.h system
19180 set syslog.h i_syslog
19181 eval $inhdr
19182
19183
19184 : see if this is a sys/mode.h system
19185 set sys/mode.h i_sysmode
19186 eval $inhdr
19187
19188 : see if sys/resource.h has to be included
19189 set sys/resource.h i_sysresrc
19190 eval $inhdr
19191
19192 : see if sys/security.h is available
19193 set sys/security.h i_syssecrt
19194 eval $inhdr
19195
19196 : see if this is a sys/statvfs.h system
19197 set sys/statvfs.h i_sysstatvfs
19198 eval $inhdr
19199
19200 : see if this is a sys/un.h system
19201 set sys/un.h i_sysun
19202 eval $inhdr
19203
19204
19205 : see if this is a sys/utsname.h system
19206 set sys/utsname.h i_sysutsname
19207 eval $inhdr
19208
19209 : see if this is a syswait system
19210 set sys/wait.h i_syswait
19211 eval $inhdr
19212
19213 : see if this is a ustat.h system
19214 set ustat.h i_ustat
19215 eval $inhdr
19216
19217 : see if this is an utime system
19218 set utime.h i_utime
19219 eval $inhdr
19220
19221 : see if this is a values.h system
19222 set values.h i_values
19223 eval $inhdr
19224
19225 : see if this is a vfork system
19226 case "$d_vfork" in
19227 "$define")
19228         set vfork.h i_vfork
19229         eval $inhdr
19230         ;;
19231 *)
19232         i_vfork="$undef"
19233         ;;
19234 esac
19235
19236 : see if gdbm.h is available
19237 set gdbm.h t_gdbm
19238 eval $inhdr
19239 case "$t_gdbm" in
19240 $define)
19241         : see if gdbm_open exists
19242         set gdbm_open d_gdbm_open
19243         eval $inlibc
19244         case "$d_gdbm_open" in
19245         $undef)
19246                 t_gdbm="$undef"
19247                 echo "We won't be including <gdbm.h>"
19248                 ;;
19249         esac
19250         ;;
19251 esac
19252 val="$t_gdbm"
19253 set i_gdbm
19254 eval $setvar
19255
19256 echo " "
19257 echo "Looking for extensions..." >&4
19258 : If we are using the old config.sh, known_extensions may contain
19259 : old or inaccurate or duplicate values.
19260 known_extensions=''
19261 nonxs_extensions=''
19262 : We do not use find because it might not be available.
19263 : We do not just use MANIFEST because the user may have dropped
19264 : some additional extensions into the source tree and expect them
19265 : to be built.
19266
19267 : Function to recursively find available extensions, ignoring DynaLoader
19268 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19269 find_extensions='
19270     for xxx in *; do
19271        case "$xxx" in
19272            DynaLoader|dynaload) ;;
19273            *)
19274            if $test -f $xxx/$xxx.xs; then
19275                known_extensions="$known_extensions $1$xxx";
19276            elif $test -f $xxx/Makefile.PL; then
19277                nonxs_extensions="$nonxs_extensions $1$xxx";
19278            else
19279                if $test -d $xxx -a $# -lt 10; then
19280                    set $1$xxx/ $*;
19281                    cd "$xxx";
19282                    eval $find_extensions;
19283                    cd ..;
19284                    shift;
19285                fi;
19286            fi
19287            ;;
19288        esac;
19289     done'
19290 tdir=`pwd`
19291 cd "$rsrc/ext"
19292 set X
19293 shift
19294 eval $find_extensions
19295 # Special case:  Add in threads/shared since it is not picked up by the
19296 # recursive find above (and adding in general recursive finding breaks
19297 # SDBM_File/sdbm).  A.D.  10/25/2001.
19298 known_extensions="$known_extensions threads/shared"
19299 set X $nonxs_extensions
19300 shift
19301 nonxs_extensions="$*"
19302 set X $known_extensions
19303 shift
19304 known_extensions="$*"
19305 cd "$tdir"
19306
19307 : Now see which are supported on this system.
19308 avail_ext=''
19309 for xxx in $known_extensions ; do
19310         case "$xxx" in
19311         DB_File|db_file)
19312                 case "$i_db" in
19313                 $define) avail_ext="$avail_ext $xxx" ;;
19314                 esac
19315                 ;;
19316         GDBM_File|gdbm_fil)
19317                 case "$i_gdbm" in 
19318                 $define) avail_ext="$avail_ext $xxx" ;;
19319                 esac
19320                 ;;
19321         I18N/Langinfo|i18n_lan)
19322                 case "$i_langinfo$d_nl_langinfo" in 
19323                 $define$define) avail_ext="$avail_ext $xxx" ;;
19324                 esac
19325                 ;;
19326         NDBM_File|ndbm_fil)
19327                 case "$i_ndbm" in
19328                 $define)
19329                     case "$osname-$use64bitint" in
19330                     hpux-define)
19331                         case "$libs" in
19332                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19333                         esac
19334                         ;;
19335                     *) avail_ext="$avail_ext $xxx" ;;
19336                     esac
19337                     ;;
19338                 esac
19339                 ;;
19340         ODBM_File|odbm_fil) 
19341                 case "${i_dbm}${i_rpcsvcdbm}" in
19342                 *"${define}"*)
19343                     case "$osname-$use64bitint" in
19344                     hpux-define)
19345                         case "$libs" in
19346                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19347                         esac
19348                         ;;
19349                     *) avail_ext="$avail_ext $xxx" ;;
19350                     esac
19351                     ;;
19352                 esac
19353                 ;;
19354         POSIX|posix)
19355                 case "$useposix" in
19356                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19357                 esac
19358                 ;;
19359         Opcode|opcode)
19360                 case "$useopcode" in
19361                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19362                 esac
19363                 ;;
19364         Socket|socket)
19365                 case "$d_socket" in 
19366                 true|$define|y)
19367                     case "$osname" in
19368                     beos) ;; # not unless BONE
19369                     *) avail_ext="$avail_ext $xxx" ;;
19370                     esac
19371                     ;;
19372                 esac
19373                 ;;
19374         Sys/Syslog|sys/syslog)
19375                 : XXX syslog requires socket
19376                 case "$d_socket" in 
19377                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
19378                 esac
19379                 ;;
19380         Thread|thread)
19381                 case "$usethreads" in
19382                 true|$define|y)
19383                         case "$useithreads" in
19384                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
19385                         esac
19386                 esac
19387                 ;;
19388         XS/APItest|xs/apitest)
19389                 # This is just for testing.  Skip it unless we have dynamic loading.
19390
19391                 case "$usedl" in
19392                 $define) avail_ext="$avail_ext $xxx" ;;
19393                 esac
19394                 ;;
19395         XS/Typemap|xs/typemap)
19396                 # This is just for testing.  Skip it unless we have dynamic loading.
19397                 case "$usedl" in
19398                 $define) avail_ext="$avail_ext $xxx" ;;
19399                 esac
19400                 ;;
19401         threads|threads/shared)
19402                 # threads and threads::shared are special cases.
19403                 # To stop people from asking "Perl 5.8.0 was supposed
19404                 # to have this new fancy threads implementation but my
19405                 # perl doesn't have it" and from people trying to
19406                 # (re)install the threads module using CPAN.pm and
19407                 # CPAN.pm then offering to reinstall Perl 5.8.0,
19408                 # the threads.pm and threads/shared.pm will always be
19409                 # there, croaking informatively ("you need to rebuild
19410                 # all of Perl with threads, sorry") when threads haven't
19411                 # been compiled in.
19412                 # --jhi
19413                 avail_ext="$avail_ext $xxx"
19414                 ;;
19415         IPC/SysV|ipc/sysv)
19416                 : XXX Do we need a useipcsysv variable here
19417                 case "${d_msg}${d_sem}${d_shm}" in 
19418                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
19419                 esac
19420                 ;;
19421         *)      avail_ext="$avail_ext $xxx"
19422                 ;;
19423         esac
19424 done
19425
19426 set X $avail_ext
19427 shift
19428 avail_ext="$*"
19429
19430 : Now see which nonxs extensions are supported on this system.
19431 : For now assume all are.
19432 nonxs_ext=''
19433 for xxx in $nonxs_extensions ; do
19434         case "$xxx" in
19435         *)      nonxs_ext="$nonxs_ext $xxx"
19436                 ;;
19437         esac
19438 done
19439
19440 set X $nonxs_ext
19441 shift
19442 nonxs_ext="$*"
19443
19444 case $usedl in
19445 $define)
19446         $cat <<EOM
19447 A number of extensions are supplied with $package.  You may choose to
19448 compile these extensions for dynamic loading (the default), compile
19449 them into the $package executable (static loading), or not include
19450 them at all.  Answer "none" to include no extensions.
19451 Note that DynaLoader is always built and need not be mentioned here.
19452
19453 EOM
19454         case "$dynamic_ext" in
19455         '')
19456                 : Exclude those listed in static_ext
19457                 dflt=''
19458                 for xxx in $avail_ext; do
19459                         case " $static_ext " in
19460                         *" $xxx "*) ;;
19461                         *) dflt="$dflt $xxx" ;;
19462                         esac
19463                 done
19464                 set X $dflt
19465                 shift
19466                 dflt="$*"
19467                 ;;
19468         *)      dflt="$dynamic_ext"
19469                 # Perhaps we are reusing an old out-of-date config.sh.
19470                 case "$hint" in
19471                 previous)
19472                         if test X"$dynamic_ext" != X"$avail_ext"; then
19473                                 $cat <<EOM
19474 NOTICE:  Your previous config.sh list may be incorrect. 
19475 The extensions now available to you are 
19476         ${avail_ext}
19477 but the default list from your previous config.sh is
19478         ${dynamic_ext} 
19479
19480 EOM
19481                         fi
19482                         ;;
19483                 esac
19484                 ;;
19485         esac
19486         case "$dflt" in
19487         '')     dflt=none;;
19488         esac
19489         rp="What extensions do you wish to load dynamically?"
19490         . ./myread
19491         case "$ans" in
19492         none) dynamic_ext=' ' ;;
19493         *) dynamic_ext="$ans" ;;
19494         esac
19495
19496         case "$static_ext" in
19497         '')
19498                 : Exclude those already listed in dynamic linking
19499                 dflt=''
19500                 for xxx in $avail_ext; do
19501                         case " $dynamic_ext " in
19502                         *" $xxx "*) ;;
19503                         *) dflt="$dflt $xxx" ;;
19504                         esac
19505                 done
19506                 set X $dflt
19507                 shift
19508                 dflt="$*"
19509                 ;;
19510         *)  dflt="$static_ext" 
19511                 ;;
19512         esac
19513
19514         case "$dflt" in
19515         '')     dflt=none;;
19516         esac
19517         rp="What extensions do you wish to load statically?"
19518         . ./myread
19519         case "$ans" in
19520         none) static_ext=' ' ;;
19521         *) static_ext="$ans" ;;
19522         esac
19523         ;;
19524 *)
19525         $cat <<EOM
19526 A number of extensions are supplied with $package.  Answer "none" 
19527 to include no extensions. 
19528 Note that DynaLoader is always built and need not be mentioned here.
19529
19530 EOM
19531         case "$static_ext" in
19532         '') dflt="$avail_ext" ;;
19533         *)      dflt="$static_ext"
19534                 # Perhaps we are reusing an old out-of-date config.sh.
19535                 case "$hint" in
19536                 previous)
19537                         if test X"$static_ext" != X"$avail_ext"; then
19538                                 $cat <<EOM
19539 NOTICE:  Your previous config.sh list may be incorrect. 
19540 The extensions now available to you are 
19541         ${avail_ext}
19542 but the default list from your previous config.sh is
19543         ${static_ext} 
19544
19545 EOM
19546                         fi
19547                         ;;
19548                 esac
19549                 ;;
19550         esac
19551         : Exclude those that are not xs extensions
19552         case "$dflt" in
19553         '')     dflt=none;;
19554         esac
19555         rp="What extensions do you wish to include?"
19556         . ./myread
19557         case "$ans" in
19558         none) static_ext=' ' ;;
19559         *) static_ext="$ans" ;;
19560         esac
19561         ;;
19562 esac
19563 #        
19564 # Encode is a special case.  If we are building Encode as a static
19565 # extension, we need to explicitly list its subextensions as well.
19566 # For other nested extensions, this is handled automatically by
19567 # the appropriate Makefile.PL.
19568 case " $static_ext " in
19569         *" Encode "*) # Add the subextensions of Encode
19570         cd "$rsrc/ext"
19571         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
19572                 static_ext="$static_ext Encode/$xxx"
19573         done
19574         cd "$tdir"
19575         ;;
19576 esac
19577
19578 set X $dynamic_ext $static_ext $nonxs_ext
19579 shift
19580 extensions="$*"
19581
19582 : Remove libraries needed only for extensions
19583 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
19584 : The exception is SunOS 4.x, which needs them.
19585 case "${osname}X${osvers}" in
19586 sunos*X4*)
19587     perllibs="$libs"
19588     ;;
19589 *) case "$usedl" in
19590     $define|true|[yY]*)
19591             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
19592             shift
19593             perllibs="$*"
19594             ;;
19595     *)  perllibs="$libs"
19596             ;;
19597     esac
19598     ;;
19599 esac
19600
19601 : Remove build directory name from cppstdin so it can be used from
19602 : either the present location or the final installed location.
19603 echo " "
19604 : Get out of the UU directory to get correct path name.
19605 cd ..
19606 case "$cppstdin" in
19607 `pwd`/cppstdin)
19608         echo "Stripping down cppstdin path name"
19609         cppstdin=cppstdin
19610         ;;
19611 esac
19612 cd UU
19613
19614 : end of configuration questions
19615 echo " "
19616 echo "End of configuration questions."
19617 echo " "
19618
19619 : back to where it started
19620 if test -d ../UU; then
19621         cd ..
19622 fi
19623
19624 : configuration may be patched via a 'config.arch' file
19625 if $test -f config.arch; then
19626         echo "I see a config.arch file, loading it."
19627         . ./config.arch
19628 fi
19629
19630 : configuration may be patched via a 'config.over' file
19631 if $test -f config.over; then
19632         echo " "
19633         dflt=y
19634         rp='I see a config.over file.  Do you wish to load it?'
19635         . UU/myread
19636         case "$ans" in
19637         n*) echo "OK, I'll ignore it.";;
19638         *)      . ./config.over
19639                 echo "Configuration override changes have been loaded."
19640                 ;;
19641         esac
19642 fi
19643
19644 : in case they want portability, strip down executable paths
19645 case "$d_portable" in
19646 "$define")
19647         echo " "
19648         echo "Stripping down executable paths..." >&4
19649         for file in $loclist $trylist; do
19650                 eval temp=\$$file
19651                 eval $file=`basename $temp`
19652         done
19653         ;;
19654 esac
19655
19656 : create config.sh file
19657 echo " "
19658 echo "Creating config.sh..." >&4
19659 $spitshell <<EOT >config.sh
19660 $startsh
19661 #
19662 # This file was produced by running the Configure script. It holds all the
19663 # definitions figured out by Configure. Should you modify one of these values,
19664 # do not forget to propagate your changes by running "Configure -der". You may
19665 # instead choose to run each of the .SH files by yourself, or "Configure -S".
19666 #
19667
19668 # Package name      : $package
19669 # Source directory  : $src
19670 # Configuration time: $cf_time
19671 # Configured by     : $cf_by
19672 # Target system     : $myuname
19673
19674 Author='$Author'
19675 Date='$Date'
19676 Header='$Header'
19677 Id='$Id'
19678 Locker='$Locker'
19679 Log='$Log'
19680 Mcc='$Mcc'
19681 RCSfile='$RCSfile'
19682 Revision='$Revision'
19683 Source='$Source'
19684 State='$State'
19685 _a='$_a'
19686 _exe='$_exe'
19687 _o='$_o'
19688 afs='$afs'
19689 afsroot='$afsroot'
19690 alignbytes='$alignbytes'
19691 ansi2knr='$ansi2knr'
19692 aphostname='$aphostname'
19693 api_revision='$api_revision'
19694 api_subversion='$api_subversion'
19695 api_version='$api_version'
19696 api_versionstring='$api_versionstring'
19697 ar='$ar'
19698 archlib='$archlib'
19699 archlibexp='$archlibexp'
19700 archname64='$archname64'
19701 archname='$archname'
19702 archobjs='$archobjs'
19703 asctime_r_proto='$asctime_r_proto'
19704 awk='$awk'
19705 baserev='$baserev'
19706 bash='$bash'
19707 bin='$bin'
19708 binexp='$binexp'
19709 bison='$bison'
19710 byacc='$byacc'
19711 byteorder='$byteorder'
19712 c='$c'
19713 castflags='$castflags'
19714 cat='$cat'
19715 cc='$cc'
19716 cccdlflags='$cccdlflags'
19717 ccdlflags='$ccdlflags'
19718 ccflags='$ccflags'
19719 ccflags_uselargefiles='$ccflags_uselargefiles'
19720 ccname='$ccname'
19721 ccsymbols='$ccsymbols'
19722 ccversion='$ccversion'
19723 cf_by='$cf_by'
19724 cf_email='$cf_email'
19725 cf_time='$cf_time'
19726 charsize='$charsize'
19727 chgrp='$chgrp'
19728 chmod='$chmod'
19729 chown='$chown'
19730 clocktype='$clocktype'
19731 comm='$comm'
19732 compress='$compress'
19733 contains='$contains'
19734 cp='$cp'
19735 cpio='$cpio'
19736 cpp='$cpp'
19737 cpp_stuff='$cpp_stuff'
19738 cppccsymbols='$cppccsymbols'
19739 cppflags='$cppflags'
19740 cpplast='$cpplast'
19741 cppminus='$cppminus'
19742 cpprun='$cpprun'
19743 cppstdin='$cppstdin'
19744 cppsymbols='$cppsymbols'
19745 crypt_r_proto='$crypt_r_proto'
19746 cryptlib='$cryptlib'
19747 csh='$csh'
19748 ctermid_r_proto='$ctermid_r_proto'
19749 ctime_r_proto='$ctime_r_proto'
19750 d_Gconvert='$d_Gconvert'
19751 d_PRIEUldbl='$d_PRIEUldbl'
19752 d_PRIFUldbl='$d_PRIFUldbl'
19753 d_PRIGUldbl='$d_PRIGUldbl'
19754 d_PRIXU64='$d_PRIXU64'
19755 d_PRId64='$d_PRId64'
19756 d_PRIeldbl='$d_PRIeldbl'
19757 d_PRIfldbl='$d_PRIfldbl'
19758 d_PRIgldbl='$d_PRIgldbl'
19759 d_PRIi64='$d_PRIi64'
19760 d_PRIo64='$d_PRIo64'
19761 d_PRIu64='$d_PRIu64'
19762 d_PRIx64='$d_PRIx64'
19763 d_SCNfldbl='$d_SCNfldbl'
19764 d__fwalk='$d__fwalk'
19765 d_access='$d_access'
19766 d_accessx='$d_accessx'
19767 d_alarm='$d_alarm'
19768 d_archlib='$d_archlib'
19769 d_asctime_r='$d_asctime_r'
19770 d_atolf='$d_atolf'
19771 d_atoll='$d_atoll'
19772 d_attribut='$d_attribut'
19773 d_bcmp='$d_bcmp'
19774 d_bcopy='$d_bcopy'
19775 d_bsd='$d_bsd'
19776 d_bsdgetpgrp='$d_bsdgetpgrp'
19777 d_bsdsetpgrp='$d_bsdsetpgrp'
19778 d_bzero='$d_bzero'
19779 d_casti32='$d_casti32'
19780 d_castneg='$d_castneg'
19781 d_charvspr='$d_charvspr'
19782 d_chown='$d_chown'
19783 d_chroot='$d_chroot'
19784 d_chsize='$d_chsize'
19785 d_class='$d_class'
19786 d_closedir='$d_closedir'
19787 d_cmsghdr_s='$d_cmsghdr_s'
19788 d_const='$d_const'
19789 d_crypt='$d_crypt'
19790 d_crypt_r='$d_crypt_r'
19791 d_csh='$d_csh'
19792 d_ctermid_r='$d_ctermid_r'
19793 d_ctime_r='$d_ctime_r'
19794 d_cuserid='$d_cuserid'
19795 d_dbl_dig='$d_dbl_dig'
19796 d_dbminitproto='$d_dbminitproto'
19797 d_difftime='$d_difftime'
19798 d_dirfd='$d_dirfd'
19799 d_dirnamlen='$d_dirnamlen'
19800 d_dlerror='$d_dlerror'
19801 d_dlopen='$d_dlopen'
19802 d_dlsymun='$d_dlsymun'
19803 d_dosuid='$d_dosuid'
19804 d_drand48_r='$d_drand48_r'
19805 d_drand48proto='$d_drand48proto'
19806 d_dup2='$d_dup2'
19807 d_eaccess='$d_eaccess'
19808 d_endgrent='$d_endgrent'
19809 d_endgrent_r='$d_endgrent_r'
19810 d_endhent='$d_endhent'
19811 d_endhostent_r='$d_endhostent_r'
19812 d_endnent='$d_endnent'
19813 d_endnetent_r='$d_endnetent_r'
19814 d_endpent='$d_endpent'
19815 d_endprotoent_r='$d_endprotoent_r'
19816 d_endpwent='$d_endpwent'
19817 d_endpwent_r='$d_endpwent_r'
19818 d_endsent='$d_endsent'
19819 d_endservent_r='$d_endservent_r'
19820 d_eofnblk='$d_eofnblk'
19821 d_eunice='$d_eunice'
19822 d_fchdir='$d_fchdir'
19823 d_fchmod='$d_fchmod'
19824 d_fchown='$d_fchown'
19825 d_fcntl='$d_fcntl'
19826 d_fcntl_can_lock='$d_fcntl_can_lock'
19827 d_fd_macros='$d_fd_macros'
19828 d_fd_set='$d_fd_set'
19829 d_fds_bits='$d_fds_bits'
19830 d_fgetpos='$d_fgetpos'
19831 d_finite='$d_finite'
19832 d_finitel='$d_finitel'
19833 d_flexfnam='$d_flexfnam'
19834 d_flock='$d_flock'
19835 d_flockproto='$d_flockproto'
19836 d_fork='$d_fork'
19837 d_fp_class='$d_fp_class'
19838 d_fpathconf='$d_fpathconf'
19839 d_fpclass='$d_fpclass'
19840 d_fpclassify='$d_fpclassify'
19841 d_fpclassl='$d_fpclassl'
19842 d_fpos64_t='$d_fpos64_t'
19843 d_frexpl='$d_frexpl'
19844 d_fs_data_s='$d_fs_data_s'
19845 d_fseeko='$d_fseeko'
19846 d_fsetpos='$d_fsetpos'
19847 d_fstatfs='$d_fstatfs'
19848 d_fstatvfs='$d_fstatvfs'
19849 d_fsync='$d_fsync'
19850 d_ftello='$d_ftello'
19851 d_ftime='$d_ftime'
19852 d_getcwd='$d_getcwd'
19853 d_getespwnam='$d_getespwnam'
19854 d_getfsstat='$d_getfsstat'
19855 d_getgrent='$d_getgrent'
19856 d_getgrent_r='$d_getgrent_r'
19857 d_getgrgid_r='$d_getgrgid_r'
19858 d_getgrnam_r='$d_getgrnam_r'
19859 d_getgrps='$d_getgrps'
19860 d_gethbyaddr='$d_gethbyaddr'
19861 d_gethbyname='$d_gethbyname'
19862 d_gethent='$d_gethent'
19863 d_gethname='$d_gethname'
19864 d_gethostbyaddr_r='$d_gethostbyaddr_r'
19865 d_gethostbyname_r='$d_gethostbyname_r'
19866 d_gethostent_r='$d_gethostent_r'
19867 d_gethostprotos='$d_gethostprotos'
19868 d_getitimer='$d_getitimer'
19869 d_getlogin='$d_getlogin'
19870 d_getlogin_r='$d_getlogin_r'
19871 d_getmnt='$d_getmnt'
19872 d_getmntent='$d_getmntent'
19873 d_getnbyaddr='$d_getnbyaddr'
19874 d_getnbyname='$d_getnbyname'
19875 d_getnent='$d_getnent'
19876 d_getnetbyaddr_r='$d_getnetbyaddr_r'
19877 d_getnetbyname_r='$d_getnetbyname_r'
19878 d_getnetent_r='$d_getnetent_r'
19879 d_getnetprotos='$d_getnetprotos'
19880 d_getpagsz='$d_getpagsz'
19881 d_getpbyname='$d_getpbyname'
19882 d_getpbynumber='$d_getpbynumber'
19883 d_getpent='$d_getpent'
19884 d_getpgid='$d_getpgid'
19885 d_getpgrp2='$d_getpgrp2'
19886 d_getpgrp='$d_getpgrp'
19887 d_getppid='$d_getppid'
19888 d_getprior='$d_getprior'
19889 d_getprotobyname_r='$d_getprotobyname_r'
19890 d_getprotobynumber_r='$d_getprotobynumber_r'
19891 d_getprotoent_r='$d_getprotoent_r'
19892 d_getprotoprotos='$d_getprotoprotos'
19893 d_getprpwnam='$d_getprpwnam'
19894 d_getpwent='$d_getpwent'
19895 d_getpwent_r='$d_getpwent_r'
19896 d_getpwnam_r='$d_getpwnam_r'
19897 d_getpwuid_r='$d_getpwuid_r'
19898 d_getsbyname='$d_getsbyname'
19899 d_getsbyport='$d_getsbyport'
19900 d_getsent='$d_getsent'
19901 d_getservbyname_r='$d_getservbyname_r'
19902 d_getservbyport_r='$d_getservbyport_r'
19903 d_getservent_r='$d_getservent_r'
19904 d_getservprotos='$d_getservprotos'
19905 d_getspnam='$d_getspnam'
19906 d_getspnam_r='$d_getspnam_r'
19907 d_gettimeod='$d_gettimeod'
19908 d_gmtime_r='$d_gmtime_r'
19909 d_gnulibc='$d_gnulibc'
19910 d_grpasswd='$d_grpasswd'
19911 d_hasmntopt='$d_hasmntopt'
19912 d_htonl='$d_htonl'
19913 d_index='$d_index'
19914 d_inetaton='$d_inetaton'
19915 d_int64_t='$d_int64_t'
19916 d_isascii='$d_isascii'
19917 d_isfinite='$d_isfinite'
19918 d_isinf='$d_isinf'
19919 d_isnan='$d_isnan'
19920 d_isnanl='$d_isnanl'
19921 d_killpg='$d_killpg'
19922 d_lchown='$d_lchown'
19923 d_ldbl_dig='$d_ldbl_dig'
19924 d_link='$d_link'
19925 d_localtime_r='$d_localtime_r'
19926 d_locconv='$d_locconv'
19927 d_lockf='$d_lockf'
19928 d_longdbl='$d_longdbl'
19929 d_longlong='$d_longlong'
19930 d_lseekproto='$d_lseekproto'
19931 d_lstat='$d_lstat'
19932 d_madvise='$d_madvise'
19933 d_mblen='$d_mblen'
19934 d_mbstowcs='$d_mbstowcs'
19935 d_mbtowc='$d_mbtowc'
19936 d_memchr='$d_memchr'
19937 d_memcmp='$d_memcmp'
19938 d_memcpy='$d_memcpy'
19939 d_memmove='$d_memmove'
19940 d_memset='$d_memset'
19941 d_mkdir='$d_mkdir'
19942 d_mkdtemp='$d_mkdtemp'
19943 d_mkfifo='$d_mkfifo'
19944 d_mkstemp='$d_mkstemp'
19945 d_mkstemps='$d_mkstemps'
19946 d_mktime='$d_mktime'
19947 d_mmap='$d_mmap'
19948 d_modfl='$d_modfl'
19949 d_modfl_pow32_bug='$d_modfl_pow32_bug'
19950 d_modflproto='$d_modflproto'
19951 d_mprotect='$d_mprotect'
19952 d_msg='$d_msg'
19953 d_msg_ctrunc='$d_msg_ctrunc'
19954 d_msg_dontroute='$d_msg_dontroute'
19955 d_msg_oob='$d_msg_oob'
19956 d_msg_peek='$d_msg_peek'
19957 d_msg_proxy='$d_msg_proxy'
19958 d_msgctl='$d_msgctl'
19959 d_msgget='$d_msgget'
19960 d_msghdr_s='$d_msghdr_s'
19961 d_msgrcv='$d_msgrcv'
19962 d_msgsnd='$d_msgsnd'
19963 d_msync='$d_msync'
19964 d_munmap='$d_munmap'
19965 d_mymalloc='$d_mymalloc'
19966 d_nice='$d_nice'
19967 d_nl_langinfo='$d_nl_langinfo'
19968 d_nv_preserves_uv='$d_nv_preserves_uv'
19969 d_off64_t='$d_off64_t'
19970 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
19971 d_oldpthreads='$d_oldpthreads'
19972 d_oldsock='$d_oldsock'
19973 d_open3='$d_open3'
19974 d_pathconf='$d_pathconf'
19975 d_pause='$d_pause'
19976 d_perl_otherlibdirs='$d_perl_otherlibdirs'
19977 d_phostname='$d_phostname'
19978 d_pipe='$d_pipe'
19979 d_poll='$d_poll'
19980 d_portable='$d_portable'
19981 d_procselfexe='$d_procselfexe'
19982 d_pthread_atfork='$d_pthread_atfork'
19983 d_pthread_yield='$d_pthread_yield'
19984 d_pwage='$d_pwage'
19985 d_pwchange='$d_pwchange'
19986 d_pwclass='$d_pwclass'
19987 d_pwcomment='$d_pwcomment'
19988 d_pwexpire='$d_pwexpire'
19989 d_pwgecos='$d_pwgecos'
19990 d_pwpasswd='$d_pwpasswd'
19991 d_pwquota='$d_pwquota'
19992 d_qgcvt='$d_qgcvt'
19993 d_quad='$d_quad'
19994 d_random_r='$d_random_r'
19995 d_readdir64_r='$d_readdir64_r'
19996 d_readdir='$d_readdir'
19997 d_readdir_r='$d_readdir_r'
19998 d_readlink='$d_readlink'
19999 d_readv='$d_readv'
20000 d_recvmsg='$d_recvmsg'
20001 d_rename='$d_rename'
20002 d_rewinddir='$d_rewinddir'
20003 d_rmdir='$d_rmdir'
20004 d_safebcpy='$d_safebcpy'
20005 d_safemcpy='$d_safemcpy'
20006 d_sanemcmp='$d_sanemcmp'
20007 d_sbrkproto='$d_sbrkproto'
20008 d_sched_yield='$d_sched_yield'
20009 d_scm_rights='$d_scm_rights'
20010 d_seekdir='$d_seekdir'
20011 d_select='$d_select'
20012 d_sem='$d_sem'
20013 d_semctl='$d_semctl'
20014 d_semctl_semid_ds='$d_semctl_semid_ds'
20015 d_semctl_semun='$d_semctl_semun'
20016 d_semget='$d_semget'
20017 d_semop='$d_semop'
20018 d_sendmsg='$d_sendmsg'
20019 d_setegid='$d_setegid'
20020 d_seteuid='$d_seteuid'
20021 d_setgrent='$d_setgrent'
20022 d_setgrent_r='$d_setgrent_r'
20023 d_setgrps='$d_setgrps'
20024 d_sethent='$d_sethent'
20025 d_sethostent_r='$d_sethostent_r'
20026 d_setitimer='$d_setitimer'
20027 d_setlinebuf='$d_setlinebuf'
20028 d_setlocale='$d_setlocale'
20029 d_setlocale_r='$d_setlocale_r'
20030 d_setnent='$d_setnent'
20031 d_setnetent_r='$d_setnetent_r'
20032 d_setpent='$d_setpent'
20033 d_setpgid='$d_setpgid'
20034 d_setpgrp2='$d_setpgrp2'
20035 d_setpgrp='$d_setpgrp'
20036 d_setprior='$d_setprior'
20037 d_setproctitle='$d_setproctitle'
20038 d_setprotoent_r='$d_setprotoent_r'
20039 d_setpwent='$d_setpwent'
20040 d_setpwent_r='$d_setpwent_r'
20041 d_setregid='$d_setregid'
20042 d_setresgid='$d_setresgid'
20043 d_setresuid='$d_setresuid'
20044 d_setreuid='$d_setreuid'
20045 d_setrgid='$d_setrgid'
20046 d_setruid='$d_setruid'
20047 d_setsent='$d_setsent'
20048 d_setservent_r='$d_setservent_r'
20049 d_setsid='$d_setsid'
20050 d_setvbuf='$d_setvbuf'
20051 d_sfio='$d_sfio'
20052 d_shm='$d_shm'
20053 d_shmat='$d_shmat'
20054 d_shmatprototype='$d_shmatprototype'
20055 d_shmctl='$d_shmctl'
20056 d_shmdt='$d_shmdt'
20057 d_shmget='$d_shmget'
20058 d_sigaction='$d_sigaction'
20059 d_sigprocmask='$d_sigprocmask'
20060 d_sigsetjmp='$d_sigsetjmp'
20061 d_sockatmark='$d_sockatmark'
20062 d_sockatmarkproto='$d_sockatmarkproto'
20063 d_socket='$d_socket'
20064 d_socklen_t='$d_socklen_t'
20065 d_sockpair='$d_sockpair'
20066 d_socks5_init='$d_socks5_init'
20067 d_sqrtl='$d_sqrtl'
20068 d_srand48_r='$d_srand48_r'
20069 d_srandom_r='$d_srandom_r'
20070 d_sresgproto='$d_sresgproto'
20071 d_sresuproto='$d_sresuproto'
20072 d_statblks='$d_statblks'
20073 d_statfs_f_flags='$d_statfs_f_flags'
20074 d_statfs_s='$d_statfs_s'
20075 d_statvfs='$d_statvfs'
20076 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20077 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20078 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20079 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20080 d_stdio_stream_array='$d_stdio_stream_array'
20081 d_stdiobase='$d_stdiobase'
20082 d_stdstdio='$d_stdstdio'
20083 d_strchr='$d_strchr'
20084 d_strcoll='$d_strcoll'
20085 d_strctcpy='$d_strctcpy'
20086 d_strerrm='$d_strerrm'
20087 d_strerror='$d_strerror'
20088 d_strerror_r='$d_strerror_r'
20089 d_strftime='$d_strftime'
20090 d_strtod='$d_strtod'
20091 d_strtol='$d_strtol'
20092 d_strtold='$d_strtold'
20093 d_strtoll='$d_strtoll'
20094 d_strtoq='$d_strtoq'
20095 d_strtoul='$d_strtoul'
20096 d_strtoull='$d_strtoull'
20097 d_strtouq='$d_strtouq'
20098 d_strxfrm='$d_strxfrm'
20099 d_suidsafe='$d_suidsafe'
20100 d_symlink='$d_symlink'
20101 d_syscall='$d_syscall'
20102 d_syscallproto='$d_syscallproto'
20103 d_sysconf='$d_sysconf'
20104 d_sysernlst='$d_sysernlst'
20105 d_syserrlst='$d_syserrlst'
20106 d_system='$d_system'
20107 d_tcgetpgrp='$d_tcgetpgrp'
20108 d_tcsetpgrp='$d_tcsetpgrp'
20109 d_telldir='$d_telldir'
20110 d_telldirproto='$d_telldirproto'
20111 d_time='$d_time'
20112 d_times='$d_times'
20113 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20114 d_tm_tm_zone='$d_tm_tm_zone'
20115 d_tmpnam_r='$d_tmpnam_r'
20116 d_truncate='$d_truncate'
20117 d_ttyname_r='$d_ttyname_r'
20118 d_tzname='$d_tzname'
20119 d_u32align='$d_u32align'
20120 d_ualarm='$d_ualarm'
20121 d_umask='$d_umask'
20122 d_uname='$d_uname'
20123 d_union_semun='$d_union_semun'
20124 d_unordered='$d_unordered'
20125 d_usleep='$d_usleep'
20126 d_usleepproto='$d_usleepproto'
20127 d_ustat='$d_ustat'
20128 d_vendorarch='$d_vendorarch'
20129 d_vendorbin='$d_vendorbin'
20130 d_vendorlib='$d_vendorlib'
20131 d_vfork='$d_vfork'
20132 d_void_closedir='$d_void_closedir'
20133 d_voidsig='$d_voidsig'
20134 d_voidtty='$d_voidtty'
20135 d_volatile='$d_volatile'
20136 d_vprintf='$d_vprintf'
20137 d_wait4='$d_wait4'
20138 d_waitpid='$d_waitpid'
20139 d_wcstombs='$d_wcstombs'
20140 d_wctomb='$d_wctomb'
20141 d_writev='$d_writev'
20142 d_xenix='$d_xenix'
20143 date='$date'
20144 db_hashtype='$db_hashtype'
20145 db_prefixtype='$db_prefixtype'
20146 db_version_major='$db_version_major'
20147 db_version_minor='$db_version_minor'
20148 db_version_patch='$db_version_patch'
20149 defvoidused='$defvoidused'
20150 direntrytype='$direntrytype'
20151 dlext='$dlext'
20152 dlsrc='$dlsrc'
20153 doublesize='$doublesize'
20154 drand01='$drand01'
20155 drand48_r_proto='$drand48_r_proto'
20156 dynamic_ext='$dynamic_ext'
20157 eagain='$eagain'
20158 ebcdic='$ebcdic'
20159 echo='$echo'
20160 egrep='$egrep'
20161 emacs='$emacs'
20162 endgrent_r_proto='$endgrent_r_proto'
20163 endhostent_r_proto='$endhostent_r_proto'
20164 endnetent_r_proto='$endnetent_r_proto'
20165 endprotoent_r_proto='$endprotoent_r_proto'
20166 endpwent_r_proto='$endpwent_r_proto'
20167 endservent_r_proto='$endservent_r_proto'
20168 eunicefix='$eunicefix'
20169 exe_ext='$exe_ext'
20170 expr='$expr'
20171 extensions='$extensions'
20172 extras='$extras'
20173 fflushNULL='$fflushNULL'
20174 fflushall='$fflushall'
20175 find='$find'
20176 firstmakefile='$firstmakefile'
20177 flex='$flex'
20178 fpossize='$fpossize'
20179 fpostype='$fpostype'
20180 freetype='$freetype'
20181 from='$from'
20182 full_ar='$full_ar'
20183 full_csh='$full_csh'
20184 full_sed='$full_sed'
20185 gccosandvers='$gccosandvers'
20186 gccversion='$gccversion'
20187 getgrent_r_proto='$getgrent_r_proto'
20188 getgrgid_r_proto='$getgrgid_r_proto'
20189 getgrnam_r_proto='$getgrnam_r_proto'
20190 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20191 gethostbyname_r_proto='$gethostbyname_r_proto'
20192 gethostent_r_proto='$gethostent_r_proto'
20193 getlogin_r_proto='$getlogin_r_proto'
20194 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20195 getnetbyname_r_proto='$getnetbyname_r_proto'
20196 getnetent_r_proto='$getnetent_r_proto'
20197 getprotobyname_r_proto='$getprotobyname_r_proto'
20198 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20199 getprotoent_r_proto='$getprotoent_r_proto'
20200 getpwent_r_proto='$getpwent_r_proto'
20201 getpwnam_r_proto='$getpwnam_r_proto'
20202 getpwuid_r_proto='$getpwuid_r_proto'
20203 getservbyname_r_proto='$getservbyname_r_proto'
20204 getservbyport_r_proto='$getservbyport_r_proto'
20205 getservent_r_proto='$getservent_r_proto'
20206 getspnam_r_proto='$getspnam_r_proto'
20207 gidformat='$gidformat'
20208 gidsign='$gidsign'
20209 gidsize='$gidsize'
20210 gidtype='$gidtype'
20211 glibpth='$glibpth'
20212 gmake='$gmake'
20213 gmtime_r_proto='$gmtime_r_proto'
20214 gnulibc_version='$gnulibc_version'
20215 grep='$grep'
20216 groupcat='$groupcat'
20217 groupstype='$groupstype'
20218 gzip='$gzip'
20219 h_fcntl='$h_fcntl'
20220 h_sysfile='$h_sysfile'
20221 hint='$hint'
20222 hostcat='$hostcat'
20223 i16size='$i16size'
20224 i16type='$i16type'
20225 i32size='$i32size'
20226 i32type='$i32type'
20227 i64size='$i64size'
20228 i64type='$i64type'
20229 i8size='$i8size'
20230 i8type='$i8type'
20231 i_arpainet='$i_arpainet'
20232 i_bsdioctl='$i_bsdioctl'
20233 i_crypt='$i_crypt'
20234 i_db='$i_db'
20235 i_dbm='$i_dbm'
20236 i_dirent='$i_dirent'
20237 i_dld='$i_dld'
20238 i_dlfcn='$i_dlfcn'
20239 i_fcntl='$i_fcntl'
20240 i_float='$i_float'
20241 i_fp='$i_fp'
20242 i_fp_class='$i_fp_class'
20243 i_gdbm='$i_gdbm'
20244 i_grp='$i_grp'
20245 i_ieeefp='$i_ieeefp'
20246 i_inttypes='$i_inttypes'
20247 i_langinfo='$i_langinfo'
20248 i_libutil='$i_libutil'
20249 i_limits='$i_limits'
20250 i_locale='$i_locale'
20251 i_machcthr='$i_machcthr'
20252 i_malloc='$i_malloc'
20253 i_math='$i_math'
20254 i_memory='$i_memory'
20255 i_mntent='$i_mntent'
20256 i_ndbm='$i_ndbm'
20257 i_netdb='$i_netdb'
20258 i_neterrno='$i_neterrno'
20259 i_netinettcp='$i_netinettcp'
20260 i_niin='$i_niin'
20261 i_poll='$i_poll'
20262 i_prot='$i_prot'
20263 i_pthread='$i_pthread'
20264 i_pwd='$i_pwd'
20265 i_rpcsvcdbm='$i_rpcsvcdbm'
20266 i_sfio='$i_sfio'
20267 i_sgtty='$i_sgtty'
20268 i_shadow='$i_shadow'
20269 i_socks='$i_socks'
20270 i_stdarg='$i_stdarg'
20271 i_stddef='$i_stddef'
20272 i_stdlib='$i_stdlib'
20273 i_string='$i_string'
20274 i_sunmath='$i_sunmath'
20275 i_sysaccess='$i_sysaccess'
20276 i_sysdir='$i_sysdir'
20277 i_sysfile='$i_sysfile'
20278 i_sysfilio='$i_sysfilio'
20279 i_sysin='$i_sysin'
20280 i_sysioctl='$i_sysioctl'
20281 i_syslog='$i_syslog'
20282 i_sysmman='$i_sysmman'
20283 i_sysmode='$i_sysmode'
20284 i_sysmount='$i_sysmount'
20285 i_sysndir='$i_sysndir'
20286 i_sysparam='$i_sysparam'
20287 i_sysresrc='$i_sysresrc'
20288 i_syssecrt='$i_syssecrt'
20289 i_sysselct='$i_sysselct'
20290 i_syssockio='$i_syssockio'
20291 i_sysstat='$i_sysstat'
20292 i_sysstatfs='$i_sysstatfs'
20293 i_sysstatvfs='$i_sysstatvfs'
20294 i_systime='$i_systime'
20295 i_systimek='$i_systimek'
20296 i_systimes='$i_systimes'
20297 i_systypes='$i_systypes'
20298 i_sysuio='$i_sysuio'
20299 i_sysun='$i_sysun'
20300 i_sysutsname='$i_sysutsname'
20301 i_sysvfs='$i_sysvfs'
20302 i_syswait='$i_syswait'
20303 i_termio='$i_termio'
20304 i_termios='$i_termios'
20305 i_time='$i_time'
20306 i_unistd='$i_unistd'
20307 i_ustat='$i_ustat'
20308 i_utime='$i_utime'
20309 i_values='$i_values'
20310 i_varargs='$i_varargs'
20311 i_varhdr='$i_varhdr'
20312 i_vfork='$i_vfork'
20313 ignore_versioned_solibs='$ignore_versioned_solibs'
20314 inc_version_list='$inc_version_list'
20315 inc_version_list_init='$inc_version_list_init'
20316 incpath='$incpath'
20317 inews='$inews'
20318 installarchlib='$installarchlib'
20319 installbin='$installbin'
20320 installman1dir='$installman1dir'
20321 installman3dir='$installman3dir'
20322 installprefix='$installprefix'
20323 installprefixexp='$installprefixexp'
20324 installprivlib='$installprivlib'
20325 installscript='$installscript'
20326 installsitearch='$installsitearch'
20327 installsitebin='$installsitebin'
20328 installsitelib='$installsitelib'
20329 installstyle='$installstyle'
20330 installusrbinperl='$installusrbinperl'
20331 installvendorarch='$installvendorarch'
20332 installvendorbin='$installvendorbin'
20333 installvendorlib='$installvendorlib'
20334 intsize='$intsize'
20335 issymlink='$issymlink'
20336 ivdformat='$ivdformat'
20337 ivsize='$ivsize'
20338 ivtype='$ivtype'
20339 known_extensions='$known_extensions'
20340 ksh='$ksh'
20341 ld='$ld'
20342 lddlflags='$lddlflags'
20343 ldflags='$ldflags'
20344 ldflags_uselargefiles='$ldflags_uselargefiles'
20345 ldlibpthname='$ldlibpthname'
20346 less='$less'
20347 lib_ext='$lib_ext'
20348 libc='$libc'
20349 libperl='$libperl'
20350 libpth='$libpth'
20351 libs='$libs'
20352 libsdirs='$libsdirs'
20353 libsfiles='$libsfiles'
20354 libsfound='$libsfound'
20355 libspath='$libspath'
20356 libswanted='$libswanted'
20357 libswanted_uselargefiles='$libswanted_uselargefiles'
20358 line='$line'
20359 lint='$lint'
20360 lkflags='$lkflags'
20361 ln='$ln'
20362 lns='$lns'
20363 localtime_r_proto='$localtime_r_proto'
20364 locincpth='$locincpth'
20365 loclibpth='$loclibpth'
20366 longdblsize='$longdblsize'
20367 longlongsize='$longlongsize'
20368 longsize='$longsize'
20369 lp='$lp'
20370 lpr='$lpr'
20371 ls='$ls'
20372 lseeksize='$lseeksize'
20373 lseektype='$lseektype'
20374 mail='$mail'
20375 mailx='$mailx'
20376 make='$make'
20377 make_set_make='$make_set_make'
20378 mallocobj='$mallocobj'
20379 mallocsrc='$mallocsrc'
20380 malloctype='$malloctype'
20381 man1dir='$man1dir'
20382 man1direxp='$man1direxp'
20383 man1ext='$man1ext'
20384 man3dir='$man3dir'
20385 man3direxp='$man3direxp'
20386 man3ext='$man3ext'
20387 mips_type='$mips_type'
20388 mkdir='$mkdir'
20389 mmaptype='$mmaptype'
20390 modetype='$modetype'
20391 more='$more'
20392 multiarch='$multiarch'
20393 mv='$mv'
20394 myarchname='$myarchname'
20395 mydomain='$mydomain'
20396 myhostname='$myhostname'
20397 myuname='$myuname'
20398 n='$n'
20399 need_va_copy='$need_va_copy'
20400 netdb_hlen_type='$netdb_hlen_type'
20401 netdb_host_type='$netdb_host_type'
20402 netdb_name_type='$netdb_name_type'
20403 netdb_net_type='$netdb_net_type'
20404 nm='$nm'
20405 nm_opt='$nm_opt'
20406 nm_so_opt='$nm_so_opt'
20407 nonxs_ext='$nonxs_ext'
20408 nroff='$nroff'
20409 nvEUformat='$nvEUformat'
20410 nvFUformat='$nvFUformat'
20411 nvGUformat='$nvGUformat'
20412 nv_preserves_uv_bits='$nv_preserves_uv_bits'
20413 nveformat='$nveformat'
20414 nvfformat='$nvfformat'
20415 nvgformat='$nvgformat'
20416 nvsize='$nvsize'
20417 nvtype='$nvtype'
20418 o_nonblock='$o_nonblock'
20419 obj_ext='$obj_ext'
20420 old_pthread_create_joinable='$old_pthread_create_joinable'
20421 optimize='$optimize'
20422 orderlib='$orderlib'
20423 osname='$osname'
20424 osvers='$osvers'
20425 otherlibdirs='$otherlibdirs'
20426 package='$package'
20427 pager='$pager'
20428 passcat='$passcat'
20429 patchlevel='$patchlevel'
20430 path_sep='$path_sep'
20431 perl5='$perl5'
20432 perl='$perl'
20433 perl_patchlevel='$perl_patchlevel'
20434 perladmin='$perladmin'
20435 perllibs='$perllibs'
20436 perlpath='$perlpath'
20437 pg='$pg'
20438 phostname='$phostname'
20439 pidtype='$pidtype'
20440 plibpth='$plibpth'
20441 pm_apiversion='$pm_apiversion'
20442 pmake='$pmake'
20443 pr='$pr'
20444 prefix='$prefix'
20445 prefixexp='$prefixexp'
20446 privlib='$privlib'
20447 privlibexp='$privlibexp'
20448 procselfexe='$procselfexe'
20449 prototype='$prototype'
20450 ptrsize='$ptrsize'
20451 quadkind='$quadkind'
20452 quadtype='$quadtype'
20453 randbits='$randbits'
20454 randfunc='$randfunc'
20455 random_r_proto='$random_r_proto'
20456 randseedtype='$randseedtype'
20457 ranlib='$ranlib'
20458 rd_nodata='$rd_nodata'
20459 readdir64_r_proto='$readdir64_r_proto'
20460 readdir_r_proto='$readdir_r_proto'
20461 revision='$revision'
20462 rm='$rm'
20463 rmail='$rmail'
20464 run='$run'
20465 runnm='$runnm'
20466 sPRIEUldbl='$sPRIEUldbl'
20467 sPRIFUldbl='$sPRIFUldbl'
20468 sPRIGUldbl='$sPRIGUldbl'
20469 sPRIXU64='$sPRIXU64'
20470 sPRId64='$sPRId64'
20471 sPRIeldbl='$sPRIeldbl'
20472 sPRIfldbl='$sPRIfldbl'
20473 sPRIgldbl='$sPRIgldbl'
20474 sPRIi64='$sPRIi64'
20475 sPRIo64='$sPRIo64'
20476 sPRIu64='$sPRIu64'
20477 sPRIx64='$sPRIx64'
20478 sSCNfldbl='$sSCNfldbl'
20479 sched_yield='$sched_yield'
20480 scriptdir='$scriptdir'
20481 scriptdirexp='$scriptdirexp'
20482 sed='$sed'
20483 seedfunc='$seedfunc'
20484 selectminbits='$selectminbits'
20485 selecttype='$selecttype'
20486 sendmail='$sendmail'
20487 setgrent_r_proto='$setgrent_r_proto'
20488 sethostent_r_proto='$sethostent_r_proto'
20489 setlocale_r_proto='$setlocale_r_proto'
20490 setnetent_r_proto='$setnetent_r_proto'
20491 setprotoent_r_proto='$setprotoent_r_proto'
20492 setpwent_r_proto='$setpwent_r_proto'
20493 setservent_r_proto='$setservent_r_proto'
20494 sh='$sh'
20495 shar='$shar'
20496 sharpbang='$sharpbang'
20497 shmattype='$shmattype'
20498 shortsize='$shortsize'
20499 shrpenv='$shrpenv'
20500 shsharp='$shsharp'
20501 sig_count='$sig_count'
20502 sig_name='$sig_name'
20503 sig_name_init='$sig_name_init'
20504 sig_num='$sig_num'
20505 sig_num_init='$sig_num_init'
20506 sig_size='$sig_size'
20507 signal_t='$signal_t'
20508 sitearch='$sitearch'
20509 sitearchexp='$sitearchexp'
20510 sitebin='$sitebin'
20511 sitebinexp='$sitebinexp'
20512 sitelib='$sitelib'
20513 sitelib_stem='$sitelib_stem'
20514 sitelibexp='$sitelibexp'
20515 siteprefix='$siteprefix'
20516 siteprefixexp='$siteprefixexp'
20517 sizesize='$sizesize'
20518 sizetype='$sizetype'
20519 sleep='$sleep'
20520 smail='$smail'
20521 so='$so'
20522 sockethdr='$sockethdr'
20523 socketlib='$socketlib'
20524 socksizetype='$socksizetype'
20525 sort='$sort'
20526 spackage='$spackage'
20527 spitshell='$spitshell'
20528 srand48_r_proto='$srand48_r_proto'
20529 srandom_r_proto='$srandom_r_proto'
20530 src='$src'
20531 ssizetype='$ssizetype'
20532 startperl='$startperl'
20533 startsh='$startsh'
20534 static_ext='$static_ext'
20535 stdchar='$stdchar'
20536 stdio_base='$stdio_base'
20537 stdio_bufsiz='$stdio_bufsiz'
20538 stdio_cnt='$stdio_cnt'
20539 stdio_filbuf='$stdio_filbuf'
20540 stdio_ptr='$stdio_ptr'
20541 stdio_stream_array='$stdio_stream_array'
20542 strerror_r_proto='$strerror_r_proto'
20543 strings='$strings'
20544 submit='$submit'
20545 subversion='$subversion'
20546 sysman='$sysman'
20547 tail='$tail'
20548 tar='$tar'
20549 targetarch='$targetarch'
20550 tbl='$tbl'
20551 tee='$tee'
20552 test='$test'
20553 timeincl='$timeincl'
20554 timetype='$timetype'
20555 tmpnam_r_proto='$tmpnam_r_proto'
20556 to='$to'
20557 touch='$touch'
20558 tr='$tr'
20559 trnl='$trnl'
20560 troff='$troff'
20561 ttyname_r_proto='$ttyname_r_proto'
20562 u16size='$u16size'
20563 u16type='$u16type'
20564 u32size='$u32size'
20565 u32type='$u32type'
20566 u64size='$u64size'
20567 u64type='$u64type'
20568 u8size='$u8size'
20569 u8type='$u8type'
20570 uidformat='$uidformat'
20571 uidsign='$uidsign'
20572 uidsize='$uidsize'
20573 uidtype='$uidtype'
20574 uname='$uname'
20575 uniq='$uniq'
20576 uquadtype='$uquadtype'
20577 use5005threads='$use5005threads'
20578 use64bitall='$use64bitall'
20579 use64bitint='$use64bitint'
20580 usecrosscompile='$usecrosscompile'
20581 usedl='$usedl'
20582 useithreads='$useithreads'
20583 uselargefiles='$uselargefiles'
20584 uselongdouble='$uselongdouble'
20585 usemorebits='$usemorebits'
20586 usemultiplicity='$usemultiplicity'
20587 usemymalloc='$usemymalloc'
20588 usenm='$usenm'
20589 useopcode='$useopcode'
20590 useperlio='$useperlio'
20591 useposix='$useposix'
20592 usereentrant='$usereentrant'
20593 usesfio='$usesfio'
20594 useshrplib='$useshrplib'
20595 usesocks='$usesocks'
20596 usethreads='$usethreads'
20597 usevendorprefix='$usevendorprefix'
20598 usevfork='$usevfork'
20599 usrinc='$usrinc'
20600 uuname='$uuname'
20601 uvXUformat='$uvXUformat'
20602 uvoformat='$uvoformat'
20603 uvsize='$uvsize'
20604 uvtype='$uvtype'
20605 uvuformat='$uvuformat'
20606 uvxformat='$uvxformat'
20607 vendorarch='$vendorarch'
20608 vendorarchexp='$vendorarchexp'
20609 vendorbin='$vendorbin'
20610 vendorbinexp='$vendorbinexp'
20611 vendorlib='$vendorlib'
20612 vendorlib_stem='$vendorlib_stem'
20613 vendorlibexp='$vendorlibexp'
20614 vendorprefix='$vendorprefix'
20615 vendorprefixexp='$vendorprefixexp'
20616 version='$version'
20617 version_patchlevel_string='$version_patchlevel_string'
20618 versiononly='$versiononly'
20619 vi='$vi'
20620 voidflags='$voidflags'
20621 xlibpth='$xlibpth'
20622 xs_apiversion='$xs_apiversion'
20623 yacc='$yacc'
20624 yaccflags='$yaccflags'
20625 zcat='$zcat'
20626 zip='$zip'
20627 EOT
20628
20629 : Add in command line options if available
20630 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
20631
20632 : add special variables
20633 $test -f $src/patchlevel.h && \
20634 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
20635 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
20636 echo "PERL_CONFIG_SH=true" >>config.sh
20637
20638 : propagate old symbols
20639 if $test -f UU/config.sh; then
20640         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
20641         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
20642         $sort | $uniq -u >UU/oldsyms
20643         set X `cat UU/oldsyms`
20644         shift
20645         case $# in
20646         0) ;;
20647         *)
20648                 cat <<EOM
20649 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
20650 EOM
20651                 echo "# Variables propagated from previous config.sh file." >>config.sh
20652                 for sym in `cat UU/oldsyms`; do
20653                         echo "    Propagating $hint variable "'$'"$sym..."
20654                         eval 'tmp="$'"${sym}"'"'
20655                         echo "$tmp" | \
20656                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
20657                 done
20658                 ;;
20659         esac
20660 fi
20661
20662 : Finish up by extracting the .SH files
20663 case "$alldone" in
20664 exit)
20665         $rm -rf UU
20666         echo "Extraction done."
20667         exit 0
20668         ;;
20669 cont)
20670         ;;
20671 '')
20672         dflt=''
20673         nostick=true
20674         $cat <<EOM
20675
20676 If you'd like to make any changes to the config.sh file before I begin
20677 to configure things, do it as a shell escape now (e.g. !vi config.sh).
20678
20679 EOM
20680         rp="Press return or use a shell escape to edit config.sh:"
20681         . UU/myread
20682         nostick=''
20683         case "$ans" in
20684         '') ;;
20685         *) : in case they cannot read
20686                 sh 1>&4 -c "$ans";;
20687         esac
20688         ;;
20689 esac
20690
20691 : if this fails, just run all the .SH files by hand
20692 . ./config.sh
20693
20694 echo " "
20695 exec 1>&4
20696 pwd=`pwd`
20697 . ./UU/extract
20698 cd "$pwd"
20699
20700 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
20701         dflt=y
20702         case "$silent" in
20703         true) ;;
20704         *)
20705                 $cat <<EOM
20706
20707 Now you need to generate make dependencies by running "$make depend".
20708 You might prefer to run it in background: "$make depend > makedepend.out &"
20709 It can take a while, so you might not want to run it right now.
20710
20711 EOM
20712                 ;;
20713         esac
20714         rp="Run $make depend now?"
20715         . UU/myread
20716         case "$ans" in
20717         y*)
20718                 $make depend && echo "Now you must run '$make'."
20719                 ;;
20720         *)
20721                 echo "You must run '$make depend' then '$make'."
20722                 ;;
20723         esac
20724 elif test -f [Mm]akefile; then
20725         echo " "
20726         echo "Now you must run a $make."
20727 else
20728         echo "Configure done."
20729 fi
20730
20731 if $test -f Policy.sh; then
20732     $cat <<EOM
20733
20734 If you compile $package on a different machine or from a different object
20735 directory, copy the Policy.sh file from this object directory to the
20736 new one before you run Configure -- this will help you with most of
20737 the policy defaults.
20738
20739 EOM
20740 fi
20741 if $test -f config.msg; then
20742     echo "Hmm.  I also noted the following information while running:"
20743     echo " "
20744     $cat config.msg >&4
20745     $rm -f config.msg
20746 fi
20747 $rm -f kit*isdone ark*isdone
20748 $rm -rf UU
20749
20750 : End of Configure
20751