Don't assume too much about how print will scale
[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 Mon Jun 10 07:25:01 EET DST 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_mprotect=''
542 d_msg=''
543 d_msgctl=''
544 d_msgget=''
545 d_msghdr_s=''
546 d_msgrcv=''
547 d_msgsnd=''
548 d_msync=''
549 d_munmap=''
550 d_nice=''
551 d_nl_langinfo=''
552 d_off64_t=''
553 d_open3=''
554 d_fpathconf=''
555 d_pathconf=''
556 d_pause=''
557 d_pipe=''
558 d_poll=''
559 d_portable=''
560 d_procselfexe=''
561 procselfexe=''
562 d_old_pthread_create_joinable=''
563 old_pthread_create_joinable=''
564 d_pthread_atfork=''
565 d_pthread_yield=''
566 d_sched_yield=''
567 sched_yield=''
568 d_qgcvt=''
569 d_random_r=''
570 random_r_proto=''
571 d_readdir64_r=''
572 readdir64_r_proto=''
573 d_readdir=''
574 d_rewinddir=''
575 d_seekdir=''
576 d_telldir=''
577 d_readdir_r=''
578 readdir_r_proto=''
579 d_readlink=''
580 d_readv=''
581 d_recvmsg=''
582 d_rename=''
583 d_rmdir=''
584 d_safebcpy=''
585 d_safemcpy=''
586 d_sanemcmp=''
587 d_sbrkproto=''
588 d_select=''
589 d_sem=''
590 d_semctl=''
591 d_semget=''
592 d_semop=''
593 d_sendmsg=''
594 d_setegid=''
595 d_seteuid=''
596 d_setgrent=''
597 d_setgrent_r=''
598 setgrent_r_proto=''
599 d_setgrps=''
600 d_sethent=''
601 d_sethostent_r=''
602 sethostent_r_proto=''
603 d_setitimer=''
604 d_setlinebuf=''
605 d_setlocale=''
606 d_setlocale_r=''
607 setlocale_r_proto=''
608 d_setnent=''
609 d_setnetent_r=''
610 setnetent_r_proto=''
611 d_setpent=''
612 d_setpgid=''
613 d_setpgrp2=''
614 d_bsdsetpgrp=''
615 d_setpgrp=''
616 d_setprior=''
617 d_setproctitle=''
618 d_setprotoent_r=''
619 setprotoent_r_proto=''
620 d_setpwent=''
621 d_setpwent_r=''
622 setpwent_r_proto=''
623 d_setregid=''
624 d_setresgid=''
625 d_setresuid=''
626 d_setreuid=''
627 d_setrgid=''
628 d_setruid=''
629 d_setsent=''
630 d_setservent_r=''
631 setservent_r_proto=''
632 d_setsid=''
633 d_setvbuf=''
634 d_sfio=''
635 usesfio=''
636 d_shm=''
637 d_shmat=''
638 d_shmatprototype=''
639 shmattype=''
640 d_shmctl=''
641 d_shmdt=''
642 d_shmget=''
643 d_sigaction=''
644 d_sigprocmask=''
645 d_sigsetjmp=''
646 d_sockatmark=''
647 d_sockatmarkproto=''
648 d_msg_ctrunc=''
649 d_msg_dontroute=''
650 d_msg_oob=''
651 d_msg_peek=''
652 d_msg_proxy=''
653 d_oldsock=''
654 d_scm_rights=''
655 d_socket=''
656 d_sockpair=''
657 sockethdr=''
658 socketlib=''
659 d_socklen_t=''
660 d_socks5_init=''
661 d_sqrtl=''
662 d_srand48_r=''
663 srand48_r_proto=''
664 d_srandom_r=''
665 srandom_r_proto=''
666 d_sresgproto=''
667 d_sresuproto=''
668 d_statblks=''
669 d_statfs_f_flags=''
670 d_statfs_s=''
671 d_fstatvfs=''
672 d_statvfs=''
673 d_stdio_cnt_lval=''
674 d_stdio_ptr_lval=''
675 d_stdio_ptr_lval_nochange_cnt=''
676 d_stdio_ptr_lval_sets_cnt=''
677 d_stdiobase=''
678 d_stdstdio=''
679 stdio_base=''
680 stdio_bufsiz=''
681 stdio_cnt=''
682 stdio_filbuf=''
683 stdio_ptr=''
684 d_index=''
685 d_strchr=''
686 d_strcoll=''
687 d_strctcpy=''
688 d_strerrm=''
689 d_strerror=''
690 d_sysernlst=''
691 d_syserrlst=''
692 d_strerror_r=''
693 strerror_r_proto=''
694 d_strftime=''
695 d_strtod=''
696 d_strtol=''
697 d_strtold=''
698 d_strtoll=''
699 d_strtoq=''
700 d_strtoul=''
701 d_strtoull=''
702 d_strtouq=''
703 d_strxfrm=''
704 d_symlink=''
705 d_syscall=''
706 d_syscallproto=''
707 d_sysconf=''
708 d_system=''
709 d_tcgetpgrp=''
710 d_tcsetpgrp=''
711 d_telldirproto=''
712 d_time=''
713 timetype=''
714 clocktype=''
715 d_times=''
716 d_tmpnam_r=''
717 tmpnam_r_proto=''
718 d_truncate=''
719 d_ttyname_r=''
720 ttyname_r_proto=''
721 d_tzname=''
722 d_u32align=''
723 d_ualarm=''
724 d_umask=''
725 d_semctl_semid_ds=''
726 d_semctl_semun=''
727 d_union_semun=''
728 d_unordered=''
729 d_usleep=''
730 d_usleepproto=''
731 d_ustat=''
732 d_vfork=''
733 usevfork=''
734 d_voidsig=''
735 signal_t=''
736 d_volatile=''
737 d_charvspr=''
738 d_vprintf=''
739 d_wait4=''
740 d_waitpid=''
741 d_wcstombs=''
742 d_wctomb=''
743 d_writev=''
744 dlext=''
745 cccdlflags=''
746 ccdlflags=''
747 dlsrc=''
748 ld=''
749 lddlflags=''
750 usedl=''
751 doublesize=''
752 ebcdic=''
753 fflushNULL=''
754 fflushall=''
755 fpossize=''
756 fpostype=''
757 gccosandvers=''
758 gccversion=''
759 gidformat=''
760 gidsign=''
761 gidsize=''
762 gidtype=''
763 groupstype=''
764 h_fcntl=''
765 h_sysfile=''
766 i_arpainet=''
767 i_crypt=''
768 db_hashtype=''
769 db_prefixtype=''
770 db_version_major=''
771 db_version_minor=''
772 db_version_patch=''
773 i_db=''
774 i_dbm=''
775 i_rpcsvcdbm=''
776 d_dirnamlen=''
777 direntrytype=''
778 i_dirent=''
779 i_dld=''
780 i_dlfcn=''
781 i_fcntl=''
782 i_float=''
783 i_fp=''
784 i_fp_class=''
785 i_gdbm=''
786 d_grpasswd=''
787 i_grp=''
788 i_ieeefp=''
789 i_inttypes=''
790 i_langinfo=''
791 i_libutil=''
792 i_limits=''
793 i_locale=''
794 i_machcthr=''
795 i_malloc=''
796 i_math=''
797 i_memory=''
798 i_mntent=''
799 i_ndbm=''
800 i_netdb=''
801 i_neterrno=''
802 i_netinettcp=''
803 i_niin=''
804 i_sysin=''
805 i_poll=''
806 i_prot=''
807 i_pthread=''
808 d_pwage=''
809 d_pwchange=''
810 d_pwclass=''
811 d_pwcomment=''
812 d_pwexpire=''
813 d_pwgecos=''
814 d_pwpasswd=''
815 d_pwquota=''
816 i_pwd=''
817 i_sfio=''
818 i_shadow=''
819 i_socks=''
820 i_stddef=''
821 i_stdlib=''
822 i_string=''
823 strings=''
824 i_sunmath=''
825 i_sysaccess=''
826 i_sysdir=''
827 i_sysfile=''
828 d_voidtty=''
829 i_bsdioctl=''
830 i_sysfilio=''
831 i_sysioctl=''
832 i_syssockio=''
833 i_syslog=''
834 i_sysmman=''
835 i_sysmode=''
836 i_sysmount=''
837 i_sysndir=''
838 i_sysparam=''
839 i_sysresrc=''
840 i_syssecrt=''
841 i_sysselct=''
842 i_sysstat=''
843 i_sysstatfs=''
844 i_sysstatvfs=''
845 i_systimes=''
846 i_systypes=''
847 i_sysuio=''
848 i_sysun=''
849 i_sysutsname=''
850 i_sysvfs=''
851 i_syswait=''
852 i_sgtty=''
853 i_termio=''
854 i_termios=''
855 d_tm_tm_gmtoff=''
856 d_tm_tm_zone=''
857 i_systime=''
858 i_systimek=''
859 i_time=''
860 timeincl=''
861 i_unistd=''
862 i_ustat=''
863 i_utime=''
864 i_values=''
865 i_stdarg=''
866 i_varargs=''
867 i_varhdr=''
868 i_vfork=''
869 inc_version_list=''
870 inc_version_list_init=''
871 installprefix=''
872 installprefixexp=''
873 installstyle=''
874 installusrbinperl=''
875 intsize=''
876 longsize=''
877 shortsize=''
878 issymlink=''
879 libc=''
880 ldlibpthname=''
881 libperl=''
882 shrpenv=''
883 useshrplib=''
884 glibpth=''
885 libpth=''
886 loclibpth=''
887 plibpth=''
888 xlibpth=''
889 ignore_versioned_solibs=''
890 libs=''
891 libsdirs=''
892 libsfiles=''
893 libsfound=''
894 libspath=''
895 lns=''
896 d_PRIEUldbl=''
897 d_PRIFUldbl=''
898 d_PRIGUldbl=''
899 d_PRIeldbl=''
900 d_PRIfldbl=''
901 d_PRIgldbl=''
902 d_SCNfldbl=''
903 sPRIEUldbl=''
904 sPRIFUldbl=''
905 sPRIGUldbl=''
906 sPRIeldbl=''
907 sPRIfldbl=''
908 sPRIgldbl=''
909 sSCNfldbl=''
910 lseeksize=''
911 lseektype=''
912 make_set_make=''
913 d_mymalloc=''
914 freetype=''
915 mallocobj=''
916 mallocsrc=''
917 malloctype=''
918 usemymalloc=''
919 installman1dir=''
920 man1dir=''
921 man1direxp=''
922 man1ext=''
923 installman3dir=''
924 man3dir=''
925 man3direxp=''
926 man3ext=''
927 modetype=''
928 multiarch=''
929 mydomain=''
930 myhostname=''
931 phostname=''
932 c=''
933 n=''
934 d_eofnblk=''
935 eagain=''
936 o_nonblock=''
937 rd_nodata=''
938 need_va_copy=''
939 netdb_hlen_type=''
940 netdb_host_type=''
941 netdb_name_type=''
942 netdb_net_type=''
943 groupcat=''
944 hostcat=''
945 passcat=''
946 orderlib=''
947 ranlib=''
948 d_perl_otherlibdirs=''
949 otherlibdirs=''
950 package=''
951 spackage=''
952 pager=''
953 api_revision=''
954 api_subversion=''
955 api_version=''
956 api_versionstring=''
957 patchlevel=''
958 perl_patchlevel=''
959 revision=''
960 subversion=''
961 version=''
962 version_patchlevel_string=''
963 perl5=''
964 perladmin=''
965 perlpath=''
966 d_nv_preserves_uv=''
967 i16size=''
968 i16type=''
969 i32size=''
970 i32type=''
971 i64size=''
972 i64type=''
973 i8size=''
974 i8type=''
975 ivsize=''
976 ivtype=''
977 nv_preserves_uv_bits=''
978 nvsize=''
979 nvtype=''
980 u16size=''
981 u16type=''
982 u32size=''
983 u32type=''
984 u64size=''
985 u64type=''
986 u8size=''
987 u8type=''
988 uvsize=''
989 uvtype=''
990 ivdformat=''
991 nvEUformat=''
992 nvFUformat=''
993 nvGUformat=''
994 nveformat=''
995 nvfformat=''
996 nvgformat=''
997 uvXUformat=''
998 uvoformat=''
999 uvuformat=''
1000 uvxformat=''
1001 pidtype=''
1002 prefix=''
1003 prefixexp=''
1004 installprivlib=''
1005 privlib=''
1006 privlibexp=''
1007 prototype=''
1008 ptrsize=''
1009 d_PRIXU64=''
1010 d_PRId64=''
1011 d_PRIi64=''
1012 d_PRIo64=''
1013 d_PRIu64=''
1014 d_PRIx64=''
1015 sPRIXU64=''
1016 sPRId64=''
1017 sPRIi64=''
1018 sPRIo64=''
1019 sPRIu64=''
1020 sPRIx64=''
1021 d_quad=''
1022 quadkind=''
1023 quadtype=''
1024 uquadtype=''
1025 drand01=''
1026 randbits=''
1027 randfunc=''
1028 randseedtype=''
1029 seedfunc=''
1030 installscript=''
1031 scriptdir=''
1032 scriptdirexp=''
1033 selectminbits=''
1034 selecttype=''
1035 sh=''
1036 sig_count=''
1037 sig_name=''
1038 sig_name_init=''
1039 sig_num=''
1040 sig_num_init=''
1041 sig_size=''
1042 installsitearch=''
1043 sitearch=''
1044 sitearchexp=''
1045 installsitebin=''
1046 sitebin=''
1047 sitebinexp=''
1048 installsitelib=''
1049 sitelib=''
1050 sitelib_stem=''
1051 sitelibexp=''
1052 siteprefix=''
1053 siteprefixexp=''
1054 sizesize=''
1055 sizetype=''
1056 so=''
1057 socksizetype=''
1058 sharpbang=''
1059 shsharp=''
1060 spitshell=''
1061 src=''
1062 ssizetype=''
1063 startperl=''
1064 startsh=''
1065 stdchar=''
1066 d_stdio_stream_array=''
1067 stdio_stream_array=''
1068 sysman=''
1069 trnl=''
1070 uidformat=''
1071 uidsign=''
1072 uidsize=''
1073 uidtype=''
1074 archname64=''
1075 use64bitall=''
1076 use64bitint=''
1077 ccflags_uselargefiles=''
1078 ldflags_uselargefiles=''
1079 libswanted_uselargefiles=''
1080 uselargefiles=''
1081 uselongdouble=''
1082 usemorebits=''
1083 usemultiplicity=''
1084 nm_opt=''
1085 nm_so_opt=''
1086 runnm=''
1087 usenm=''
1088 useperlio=''
1089 usesocks=''
1090 d_oldpthreads=''
1091 use5005threads=''
1092 useithreads=''
1093 usereentrant=''
1094 usethreads=''
1095 incpath=''
1096 mips_type=''
1097 usrinc=''
1098 d_vendorarch=''
1099 installvendorarch=''
1100 vendorarch=''
1101 vendorarchexp=''
1102 d_vendorbin=''
1103 installvendorbin=''
1104 vendorbin=''
1105 vendorbinexp=''
1106 d_vendorlib=''
1107 installvendorlib=''
1108 vendorlib=''
1109 vendorlib_stem=''
1110 vendorlibexp=''
1111 usevendorprefix=''
1112 vendorprefix=''
1113 vendorprefixexp=''
1114 versiononly=''
1115 defvoidused=''
1116 voidflags=''
1117 pm_apiversion=''
1118 xs_apiversion=''
1119 yacc=''
1120 yaccflags=''
1121 CONFIG=''
1122
1123 define='define'
1124 undef='undef'
1125 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1126 rmlist=''
1127
1128 : We must find out about Eunice early
1129 eunicefix=':'
1130 if test -f /etc/unixtovms; then
1131         eunicefix=/etc/unixtovms
1132 fi
1133 if test -f /etc/unixtovms.exe; then
1134         eunicefix=/etc/unixtovms.exe
1135 fi
1136
1137 : Set executable suffix now -- needed before hints available
1138 if test -f "/libs/version.library"; then
1139 : Amiga OS
1140     _exe=""
1141 elif test -f "/system/gnu_library/bin/ar.pm"; then
1142 : Stratus VOS
1143     _exe=".pm"
1144 elif test -n "$DJGPP"; then
1145 : DOS DJGPP
1146     _exe=".exe"
1147 elif test -d c:/. ; then
1148 : OS/2 or cygwin
1149     _exe=".exe"
1150 fi
1151
1152 i_whoami=''
1153 ccname=''
1154 ccversion=''
1155 perllibs=''
1156 : set useposix=false in your hint file to disable the POSIX extension.
1157 useposix=true
1158 : set useopcode=false in your hint file to disable the Opcode extension.
1159 useopcode=true
1160 : Trailing extension.  Override this in a hint file, if needed.
1161 : Extra object files, if any, needed on this platform.
1162 archobjs=''
1163 archname=''
1164 : Possible local include directories to search.
1165 : Set locincpth to "" in a hint file to defeat local include searches.
1166 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1167 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1168 :
1169 : no include file wanted by default
1170 inclwanted=''
1171
1172 groupstype=''
1173 libnames=''
1174 : change the next line if compiling for Xenix/286 on Xenix/386
1175 xlibpth='/usr/lib/386 /lib/386'
1176 : Possible local library directories to search.
1177 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1178 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1179
1180 : general looking path for locating libraries
1181 glibpth="/lib /usr/lib $xlibpth"
1182 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1183 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1184 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1185
1186 : Private path used by Configure to find libraries.  Its value
1187 : is prepended to libpth. This variable takes care of special
1188 : machines, like the mips.  Usually, it should be empty.
1189 plibpth=''
1190
1191 : default library list
1192 libswanted=''
1193 : some systems want to use only the non-versioned libso:s
1194 ignore_versioned_solibs=''
1195 archname64=''
1196 ccflags_uselargefiles=''
1197 ldflags_uselargefiles=''
1198 libswanted_uselargefiles=''
1199 : set usemultiplicity on the Configure command line to enable multiplicity.
1200 : set usesocks on the Configure command line to enable socks.
1201 : set usethreads on the Configure command line to enable threads.
1202 usereentrant='undef'
1203 : full support for void wanted by default
1204 defvoidused=15
1205
1206 : List of libraries we want.
1207 : If anyone needs -lnet, put it in a hint file.
1208 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1209 libswanted="$libswanted dld ld sun m c cposix posix"
1210 libswanted="$libswanted ndir dir crypt sec"
1211 libswanted="$libswanted ucb bsd BSD PW x util"
1212 : We probably want to search /usr/shlib before most other libraries.
1213 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1214 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1215 glibpth="/usr/shlib $glibpth"
1216 : Do not use vfork unless overridden by a hint file.
1217 usevfork=false
1218
1219 : Find the basic shell for Bourne shell scripts
1220 case "$sh" in
1221 '')
1222         case "$SYSTYPE" in
1223         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1224         *) xxx='/bin/sh';;
1225         esac
1226         if test -f "$xxx"; then
1227                 sh="$xxx"
1228         else
1229                 : Build up a list and do a single loop so we can 'break' out.
1230                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1231                 for xxx in sh bash ksh pdksh ash; do
1232                         for p in $pth; do
1233                                 try="$try ${p}/${xxx}"
1234                         done
1235                 done
1236                 for xxx in $try; do
1237                         if test -f "$xxx"; then
1238                                 sh="$xxx";
1239                                 break
1240                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1241                                 sh="$xxx";
1242                                 break
1243                         elif test -f "$xxx.exe"; then
1244                                 sh="$xxx";
1245                                 break
1246                         fi
1247                 done
1248         fi
1249         ;;
1250 esac
1251
1252 case "$sh" in
1253 '')     cat >&2 <<EOM
1254 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1255
1256 Usually it's in /bin/sh.  How did you even get this far?
1257 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1258 we'll try to straighten this all out.
1259 EOM
1260         exit 1
1261         ;;
1262 esac
1263
1264 : see if sh knows # comments
1265 if `$sh -c '#' >/dev/null 2>&1`; then
1266         shsharp=true
1267         spitshell=cat
1268         xcat=/bin/cat
1269         test -f $xcat$_exe || xcat=/usr/bin/cat
1270         if test ! -f $xcat$_exe; then
1271                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1272                         if test -f $p/cat$_exe; then
1273                                 xcat=$p/cat
1274                                 break
1275                         fi
1276                 done
1277                 if test ! -f $xcat$_exe; then
1278                         echo "Can't find cat anywhere!"
1279                         exit 1
1280                 fi
1281         fi
1282         echo "#!$xcat" >sharp
1283         $eunicefix sharp
1284         chmod +x sharp
1285         ./sharp > today
1286         if test -s today; then
1287                 sharpbang='#!'
1288         else
1289                 echo "#! $xcat" > sharp
1290                 $eunicefix sharp
1291                 chmod +x sharp
1292                 ./sharp > today
1293                 if test -s today; then
1294                         sharpbang='#! '
1295                 else
1296                         sharpbang=': use '
1297                 fi
1298         fi
1299 else
1300         echo " "
1301         echo "Your $sh doesn't grok # comments--I will strip them later on."
1302         shsharp=false
1303         cd ..
1304         echo "exec grep -v '^[  ]*#'" >spitshell
1305         chmod +x spitshell
1306         $eunicefix spitshell
1307         spitshell=`pwd`/spitshell
1308         cd UU
1309         echo "I presume that if # doesn't work, #! won't work either!"
1310         sharpbang=': use '
1311 fi
1312 rm -f sharp today
1313
1314 : figure out how to guarantee sh startup
1315 case "$startsh" in
1316 '') startsh=${sharpbang}${sh} ;;
1317 *)
1318 esac
1319 cat >sharp <<EOSS
1320 $startsh
1321 set abc
1322 test "$?abc" != 1
1323 EOSS
1324
1325 chmod +x sharp
1326 $eunicefix sharp
1327 if ./sharp; then
1328         : echo "Yup, it does."
1329 else
1330         echo "Hmm... '$startsh' does not guarantee sh startup..."
1331         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1332 fi
1333 rm -f sharp
1334
1335
1336 : Save command line options in file UU/cmdline.opt for later use in
1337 : generating config.sh.
1338 cat > cmdline.opt <<EOSH
1339 # Configure command line arguments.
1340 config_arg0='$0'
1341 config_args='$*'
1342 config_argc=$#
1343 EOSH
1344 argn=1
1345 args_exp=''
1346 args_sep=''
1347 for arg in "$@"; do
1348         cat >>cmdline.opt <<EOSH
1349 config_arg$argn='$arg'
1350 EOSH
1351         # Extreme backslashitis: replace each ' by '"'"'
1352         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1353 $arg
1354 EOC
1355         arg_exp=`cat cmdl.opt`
1356         args_exp="$args_exp$args_sep'$arg_exp'"
1357         argn=`expr $argn + 1`
1358         args_sep=' '
1359 done
1360 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1361 # used by ./hints/os2.sh
1362 rm -f cmdl.opt
1363
1364 : produce awk script to parse command line options
1365 cat >options.awk <<'EOF'
1366 BEGIN {
1367         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1368
1369         len = length(optstr);
1370         for (i = 1; i <= len; i++) {
1371                 c = substr(optstr, i, 1);
1372                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1373                 if (a == ":") {
1374                         arg[c] = 1;
1375                         i++;
1376                 }
1377                 opt[c] = 1;
1378         }
1379 }
1380 {
1381         expect = 0;
1382         str = $0;
1383         if (substr(str, 1, 1) != "-") {
1384                 printf("'%s'\n", str);
1385                 next;
1386         }
1387         len = length($0);
1388         for (i = 2; i <= len; i++) {
1389                 c = substr(str, i, 1);
1390                 if (!opt[c]) {
1391                         printf("-%s\n", substr(str, i));
1392                         next;
1393                 }
1394                 printf("-%s\n", c);
1395                 if (arg[c]) {
1396                         if (i < len)
1397                                 printf("'%s'\n", substr(str, i + 1));
1398                         else
1399                                 expect = 1;
1400                         next;
1401                 }
1402         }
1403 }
1404 END {
1405         if (expect)
1406                 print "?";
1407 }
1408 EOF
1409
1410 : process the command line options
1411 set X `for arg in "$@"; do echo "X$arg"; done |
1412         sed -e s/X// | awk -f options.awk`
1413 eval "set $*"
1414 shift
1415 rm -f options.awk
1416
1417 : set up default values
1418 fastread=''
1419 reuseval=false
1420 config_sh=''
1421 alldone=''
1422 error=''
1423 silent=''
1424 extractsh=''
1425 override=''
1426 knowitall=''
1427 rm -f optdef.sh posthint.sh
1428 cat >optdef.sh <<EOS
1429 $startsh
1430 EOS
1431
1432
1433 : option parsing
1434 while test $# -gt 0; do
1435         case "$1" in
1436         -d) shift; fastread=yes;;
1437         -e) shift; alldone=cont;;
1438         -f)
1439                 shift
1440                 cd ..
1441                 if test -r "$1"; then
1442                         config_sh="$1"
1443                 else
1444                         echo "$me: cannot read config file $1." >&2
1445                         error=true
1446                 fi
1447                 cd UU
1448                 shift;;
1449         -h) shift; error=true;;
1450         -r) shift; reuseval=true;;
1451         -s) shift; silent=true; realsilent=true;;
1452         -E) shift; alldone=exit;;
1453         -K) shift; knowitall=true;;
1454         -O) shift; override=true;;
1455         -S) shift; silent=true; extractsh=true;;
1456         -D)
1457                 shift
1458                 case "$1" in
1459                 *=)
1460                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1461                         echo "$me: ignoring -D $1" >&2
1462                         ;;
1463                 *=*) echo "$1" | \
1464                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1465                 *) echo "$1='define'" >> optdef.sh;;
1466                 esac
1467                 shift
1468                 ;;
1469         -U)
1470                 shift
1471                 case "$1" in
1472                 *=) echo "$1" >> optdef.sh;;
1473                 *=*)
1474                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1475                         echo "$me: ignoring -U $1" >&2
1476                         ;;
1477                 *) echo "$1='undef'" >> optdef.sh;;
1478                 esac
1479                 shift
1480                 ;;
1481         -A)
1482             shift
1483             xxx=''
1484             yyy="$1"
1485             zzz=''
1486             uuu=undef
1487             case "$yyy" in
1488             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1489                  case "$zzz" in
1490                  *:*) zzz='' ;;
1491                  *)   xxx=append
1492                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1493                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1494                  esac
1495                  ;;
1496             esac
1497             case "$xxx" in
1498             '')  case "$yyy" in
1499                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1500                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1501                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1502                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1503                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1504                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1505                  esac
1506                  ;;       
1507             esac
1508             case "$xxx" in
1509             append)
1510                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1511             clear)
1512                 echo "$yyy=''"                  >> posthint.sh ;;
1513             define)
1514                 case "$zzz" in
1515                 '') zzz=define ;;
1516                 esac
1517                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1518             eval)
1519                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1520             prepend)
1521                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1522             undef)
1523                 case "$zzz" in
1524                 '') zzz="$uuu" ;;
1525                 esac
1526                 echo "$yyy=$zzz"                >> posthint.sh ;;
1527             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1528             esac
1529             shift
1530             ;;
1531         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1532             exit 0;;
1533         --) break;;
1534         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1535         *) break;;
1536         esac
1537 done
1538
1539 case "$error" in
1540 true)
1541         cat >&2 <<EOM
1542 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1543                  [-U symbol] [-U symbol=] [-A command:symbol...]
1544   -d : use defaults for all answers.
1545   -e : go on without questioning past the production of config.sh.
1546   -f : specify an alternate default configuration file.
1547   -h : print this help message and exit (with an error status).
1548   -r : reuse C symbols value if possible (skips costly nm extraction).
1549   -s : silent mode, only echoes questions and essential information.
1550   -D : define symbol to have some value:
1551          -D symbol         symbol gets the value 'define'
1552          -D symbol=value   symbol gets the value 'value'
1553   -E : stop at the end of questions, after having produced config.sh.
1554   -K : do not use unless you know what you are doing.
1555   -O : let -D and -U override definitions from loaded configuration file.
1556   -S : perform variable substitutions on all .SH files (can mix with -f)
1557   -U : undefine symbol:
1558          -U symbol    symbol gets the value 'undef'
1559          -U symbol=   symbol gets completely empty
1560   -A : manipulate symbol after the platform specific hints have been applied:
1561          -A symbol=value                append " "value to symbol
1562          -A append:symbol=value         append value to symbol
1563          -A define:symbol=value         define symbol to have value
1564          -A clear:symbol                define symbol to be ''
1565          -A define:symbol               define symbol to be 'define'
1566          -A eval:symbol=value           define symbol to be eval of value
1567          -A prepend:symbol=value        prepend value to symbol
1568          -A undef:symbol                define symbol to be 'undef'
1569          -A undef:symbol=               define symbol to be ''
1570   -V : print version number and exit (with a zero status).
1571 EOM
1572         exit 1
1573         ;;
1574 esac
1575
1576 : Sanity checks
1577 case "$fastread$alldone" in
1578 yescont|yesexit) ;;
1579 *)
1580         case "$extractsh" in
1581         true) ;;
1582         *)
1583                 if test ! -t 0; then
1584                         echo "Say 'sh Configure', not 'sh <Configure'"
1585                         exit 1
1586                 fi
1587                 ;;
1588         esac
1589         ;;
1590 esac
1591
1592 exec 4>&1
1593 case "$silent" in
1594 true) exec 1>/dev/null;;
1595 esac
1596
1597 : run the defines and the undefines, if any, but leave the file out there...
1598 touch optdef.sh
1599 . ./optdef.sh
1600 : create the posthint manipulation script and leave the file out there...
1601 touch posthint.sh
1602
1603 : set package name
1604 package=perl5
1605 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1606 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1607 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1608 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1609 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1610 esac
1611
1612 : Some greps do not return status, grrr.
1613 echo "grimblepritz" >grimble
1614 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1615         contains=contains
1616 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1617         contains=grep
1618 else
1619         contains=contains
1620 fi
1621 rm -f grimble
1622 : the following should work in any shell
1623 case "$contains" in
1624 contains*)
1625         echo " "
1626         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1627         cat >contains <<'EOSS'
1628 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1629 EOSS
1630 chmod +x contains
1631 esac
1632
1633 : Find the path to the source tree
1634 case "$src" in
1635 '') case "$0" in
1636     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1637          case "$src" in
1638          /*)    ;;
1639          .)     ;;
1640          *)     src=`cd ../$src && pwd` ;;
1641          esac
1642          ;;
1643     *)   src='.';;
1644     esac;;
1645 esac
1646 case "$src" in
1647 '')     src=/
1648         rsrc=/
1649         ;;
1650 /*) rsrc="$src";;
1651 *) rsrc="../$src";;
1652 esac
1653 if test -f $rsrc/Configure && \
1654         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1655 then
1656    : found it, so we are ok.
1657 else
1658         rsrc=''
1659         for src in . .. ../.. ../../.. ../../../..; do
1660                 if test -f ../$src/Configure && \
1661                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1662                 then
1663                         rsrc=../$src
1664                         break
1665                 fi
1666         done
1667 fi
1668 case "$rsrc" in
1669 '')
1670         cat <<EOM >&4
1671
1672 Sorry, I can't seem to locate the source dir for $package.  Please start
1673 Configure with an explicit path -- i.e. /some/path/Configure.
1674
1675 EOM
1676         exit 1
1677         ;;
1678 ../.)   rsrc='..';;
1679 *)
1680         echo " "
1681         echo "Sources for $package found in \"$src\"." >&4
1682         ;;
1683 esac
1684
1685 : script used to extract .SH files with variable substitutions
1686 cat >extract <<'EOS'
1687 PERL_CONFIG_SH=true
1688 echo "Doing variable substitutions on .SH files..."
1689 if test -f MANIFEST; then
1690         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1691 else
1692         echo "(Looking for .SH files under the source directory.)"
1693         set x `(cd "$src"; find . -name "*.SH" -print)`
1694 fi
1695 shift
1696 case $# in
1697 0) set x `(cd "$src"; echo *.SH)`; shift;;
1698 esac
1699 if test ! -f "$src/$1"; then
1700         shift
1701 fi
1702 mkdir_p='
1703 name=$1;
1704 create="";
1705 while test $name; do
1706         if test ! -d "$name"; then
1707                 create="$name $create";
1708                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1709                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1710         else
1711                 name="";
1712         fi;
1713 done;
1714 for file in $create; do
1715         mkdir $file;
1716 done
1717 '
1718 for file in $*; do
1719         case "$src" in
1720         ".")
1721                 case "$file" in
1722                 */*)
1723                         dir=`expr X$file : 'X\(.*\)/'`
1724                         file=`expr X$file : 'X.*/\(.*\)'`
1725                         (cd "$dir" && . ./$file)
1726                         ;;
1727                 *)
1728                         . ./$file
1729                         ;;
1730                 esac
1731                 ;;
1732         *)
1733                 case "$file" in
1734                 */*)
1735                         dir=`expr X$file : 'X\(.*\)/'`
1736                         file=`expr X$file : 'X.*/\(.*\)'`
1737                         (set x $dir; shift; eval $mkdir_p)
1738                         sh <"$src/$dir/$file"
1739                         ;;
1740                 *)
1741                         sh <"$src/$file"
1742                         ;;
1743                 esac
1744                 ;;
1745         esac
1746 done
1747 if test -f "$src/config_h.SH"; then
1748         if test ! -f config.h; then
1749         : oops, they left it out of MANIFEST, probably, so do it anyway.
1750         . "$src/config_h.SH"
1751         fi
1752 fi
1753 EOS
1754
1755 : extract files and exit if asked to do so
1756 case "$extractsh" in
1757 true)
1758         case "$realsilent" in
1759         true) ;;
1760         *) exec 1>&4;;
1761         esac
1762         case "$config_sh" in
1763         '') config_sh='config.sh';;
1764         esac
1765         echo " "
1766         echo "Fetching answers from $config_sh..."
1767         cd ..
1768         . $config_sh
1769         test "$override" && . ./optdef.sh
1770         echo " "
1771         . UU/extract
1772         rm -rf UU
1773         echo "Extraction done."
1774         exit 0
1775         ;;
1776 esac
1777
1778 : Eunice requires " " instead of "", can you believe it
1779 echo " "
1780 : Here we go...
1781 echo "Beginning of configuration questions for $package."
1782
1783 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1784
1785 : first determine how to suppress newline on echo command
1786 echo " "
1787 echo "Checking echo to see how to suppress newlines..."
1788 (echo "hi there\c" ; echo " ") >.echotmp
1789 if $contains c .echotmp >/dev/null 2>&1 ; then
1790         echo "...using -n."
1791         n='-n'
1792         c=''
1793 else
1794         cat <<'EOM'
1795 ...using \c
1796 EOM
1797         n=''
1798         c='\c'
1799 fi
1800 echo $n "The star should be here-->$c"
1801 echo '*'
1802 rm -f .echotmp
1803
1804 : Now test for existence of everything in MANIFEST
1805 echo " "
1806 if test -f "$rsrc/MANIFEST"; then
1807         echo "First let's make sure your kit is complete.  Checking..." >&4
1808         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1809         rm -f missing
1810         tmppwd=`pwd`
1811         for filelist in x??; do
1812                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1813         done
1814         if test -s missing; then
1815                 cat missing >&4
1816                 cat >&4 <<'EOM'
1817
1818 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1819
1820 You have the option of continuing the configuration process, despite the
1821 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1822 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1823 and contact the author (perlbug@perl.org).
1824
1825 EOM
1826                 echo $n "Continue? [n] $c" >&4
1827                 read ans
1828                 case "$ans" in
1829                 y*)
1830                         echo "Continuing..." >&4
1831                         rm -f missing
1832                         ;;
1833                 *)
1834                         echo "ABORTING..." >&4
1835                         kill $$
1836                         ;;
1837                 esac
1838         else
1839                 echo "Looks good..."
1840         fi
1841 else
1842         echo "There is no MANIFEST file.  I hope your kit is complete !"
1843 fi
1844 rm -f missing x??
1845
1846 echo " "
1847 : Find the appropriate value for a newline for tr
1848 if test -n "$DJGPP"; then
1849        trnl='\012'
1850 fi
1851 if test X"$trnl" = X; then
1852         case "`echo foo|tr '\n' x 2>/dev/null`" in
1853         foox) trnl='\n' ;;
1854         esac
1855 fi
1856 if test X"$trnl" = X; then
1857         case "`echo foo|tr '\012' x 2>/dev/null`" in
1858         foox) trnl='\012' ;;
1859         esac
1860 fi
1861 if test X"$trnl" = X; then
1862        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1863        fooxy) trnl='\n\r' ;;
1864        esac
1865 fi
1866 if test X"$trnl" = X; then
1867         cat <<EOM >&2
1868
1869 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1870
1871 EOM
1872         exit 1
1873 fi
1874
1875 : compute the number of columns on the terminal for proper question formatting
1876 case "$COLUMNS" in
1877 '') COLUMNS='80';;
1878 esac
1879
1880 : set up the echo used in my read
1881 myecho="case \"\$xxxm\" in
1882 '') echo $n \"\$rp $c\" >&4;;
1883 *) case \"\$rp\" in
1884         '') echo $n \"[\$xxxm] $c\";;
1885         *)
1886                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1887                         echo \"\$rp\" >&4
1888                         echo $n \"[\$xxxm] $c\" >&4
1889                 else
1890                         echo $n \"\$rp [\$xxxm] $c\" >&4
1891                 fi
1892                 ;;
1893         esac;;
1894 esac"
1895
1896 : now set up to do reads with possible shell escape and default assignment
1897 cat <<EOSC >myread
1898 $startsh
1899 xxxm=\$dflt
1900 $myecho
1901 ans='!'
1902 case "\$fastread" in
1903 yes) case "\$dflt" in
1904         '') ;;
1905         *) ans='';
1906                 case "\$silent-\$rp" in
1907                 true-) ;;
1908                 *) echo " " >&4;;
1909                 esac;;
1910         esac;;
1911 *) case "\$silent" in
1912         true) case "\$rp" in
1913                 '') ans='';;
1914                 esac;;
1915         esac;;
1916 esac
1917 while expr "X\$ans" : "X!" >/dev/null; do
1918         read answ
1919         set x \$xxxm
1920         shift
1921         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1922         case  "\$answ" in
1923         "!")
1924                 sh 1>&4
1925                 echo " "
1926                 $myecho
1927                 ;;
1928         !*)
1929                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1930                 shift
1931                 sh 1>&4 -c "\$*"
1932                 echo " "
1933                 $myecho
1934                 ;;
1935         "\$ans")
1936                 case "\$ans" in
1937                 \\&*)
1938                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1939                         shift
1940                         case "\$1" in
1941                         -d)
1942                                 fastread=yes
1943                                 echo "(OK, I'll run with -d after this question.)" >&4
1944                                 ;;
1945                         -*)
1946                                 echo "*** Sorry, \$1 not supported yet." >&4
1947                                 ;;
1948                         esac
1949                         $myecho
1950                         ans=!
1951                         ;;
1952                 esac;;
1953         *)
1954                 case "\$aok" in
1955                 y)
1956                         echo "*** Substitution done -- please confirm."
1957                         xxxm="\$ans"
1958                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1959                         xxxm="\$ans"
1960                         ans=!
1961                         ;;
1962                 *)
1963                         echo "*** Error -- try again."
1964                         ans=!
1965                         ;;
1966                 esac
1967                 $myecho
1968                 ;;
1969         esac
1970         case "\$ans\$xxxm\$nostick" in
1971         '')
1972                 ans=!
1973                 $myecho
1974                 ;;
1975         esac
1976 done
1977 case "\$ans" in
1978 '') ans="\$xxxm";;
1979 esac
1980 EOSC
1981
1982 : create .config dir to save info across Configure sessions
1983 test -d ../.config || mkdir ../.config
1984 cat >../.config/README <<EOF
1985 This directory created by Configure to save information that should
1986 persist across sessions for $package.
1987
1988 You may safely delete it if you wish.
1989 EOF
1990
1991 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1992 case "$usedevel" in
1993 $define|true|[yY]*) ;;
1994 *) case "$xversion" in
1995    *[13579])
1996         cat >&4 <<EOH
1997 *** WHOA THERE!!! ***
1998
1999     This is an UNSTABLE DEVELOPMENT release.
2000     The version of this $package distribution is $xversion, that is, odd,
2001     (as opposed to even) and that signifies a development release.
2002     If you want a maintenance release, you want an even-numbered version.
2003
2004     Do ***NOT*** install this into production use.
2005     Data corruption and crashes are possible.
2006
2007     It is most seriously suggested that you do not continue any further
2008     unless you want to help in developing and debugging Perl.
2009
2010     If you *still* want to build perl, you can answer 'y' now,
2011     or pass -Dusedevel to Configure.
2012
2013 EOH
2014         rp='Do you really want to continue?'
2015         dflt='n'
2016         . ./myread
2017         case "$ans" in
2018         [yY]) echo >&4 "Okay, continuing."
2019               usedevel="$define" ;;
2020         *) echo >&4 "Okay, bye."
2021            exit 1
2022            ;;
2023         esac
2024         ;;
2025     esac
2026     ;;
2027 esac
2028 case "$usedevel" in
2029 $define|true|[yY]*)
2030         case "$versiononly" in
2031         '') versiononly="$define" ;;
2032         esac
2033         case "$installusrbinperl" in
2034         '') installusrbinperl="$undef" ;;
2035         esac
2036         ;;
2037 esac
2038
2039 : general instructions
2040 needman=true
2041 firsttime=true
2042 user=`(logname) 2>/dev/null`
2043 case "$user" in
2044 '') user=`whoami 2>&1`;;
2045 esac
2046 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2047         firsttime=false
2048         echo " "
2049         rp='Would you like to see the instructions?'
2050         dflt=n
2051         . ./myread
2052         case "$ans" in
2053         [yY]*) ;;
2054         *) needman=false;;
2055         esac
2056 fi
2057 if $needman; then
2058         cat <<EOH
2059
2060 This installation shell script will examine your system and ask you questions
2061 to determine how the perl5 package should be installed. If you get
2062 stuck on a question, you may use a ! shell escape to start a subshell or
2063 execute a command.  Many of the questions will have default answers in square
2064 brackets; typing carriage return will give you the default.
2065
2066 On some of the questions which ask for file or directory names you are allowed
2067 to use the ~name construct to specify the login directory belonging to "name",
2068 even if you don't have a shell which knows about that.  Questions where this is
2069 allowed will be marked "(~name ok)".
2070
2071 EOH
2072         rp=''
2073         dflt='Type carriage return to continue'
2074         . ./myread
2075         cat <<'EOH'
2076
2077 The prompter used in this script allows you to use shell variables and
2078 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2079 in the default answer, as if the default line was a set of arguments given to a
2080 script shell.  This means you may also use $* to repeat the whole default line,
2081 so you do not have to re-type everything to add something to the default.
2082
2083 Everytime there is a substitution, you will have to confirm.  If there is an
2084 error (e.g. an unmatched backtick), the default answer will remain unchanged
2085 and you will be prompted again.
2086
2087 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2088 the questions and use the computed defaults (or the previous answers if there
2089 was already a config.sh file). Type 'Configure -h' for a list of options.
2090 You may also start interactively and then answer '& -d' at any prompt to turn
2091 on the non-interactive behaviour for the remainder of the execution.
2092
2093 EOH
2094         . ./myread
2095         cat <<EOH
2096
2097 Much effort has been expended to ensure that this shell script will run on any
2098 Unix system.  If despite that it blows up on yours, your best bet is to edit
2099 Configure and run it again.  If you can't run Configure for some reason,
2100 you'll have to generate a config.sh file by hand.  Whatever problems you
2101 have, let me (perlbug@perl.org) know how I blew it.
2102
2103 This installation script affects things in two ways:
2104
2105 1) it may do direct variable substitutions on some of the files included
2106    in this kit.
2107 2) it builds a config.h file for inclusion in C programs.  You may edit
2108    any of these files as the need arises after running this script.
2109
2110 If you make a mistake on a question, there is no easy way to back up to it
2111 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2112 files.  Configure will offer to let you do this before it runs the SH files.
2113
2114 EOH
2115         dflt='Type carriage return to continue'
2116         . ./myread
2117         case "$firsttime" in
2118         true) echo $user >>../.config/instruct;;
2119         esac
2120 fi
2121
2122 : find out where common programs are
2123 echo " "
2124 echo "Locating common programs..." >&4
2125 cat <<EOSC >loc
2126 $startsh
2127 case \$# in
2128 0) exit 1;;
2129 esac
2130 thing=\$1
2131 shift
2132 dflt=\$1
2133 shift
2134 for dir in \$*; do
2135         case "\$thing" in
2136         .)
2137         if test -d \$dir/\$thing; then
2138                 echo \$dir
2139                 exit 0
2140         fi
2141         ;;
2142         *)
2143         for thisthing in \$dir/\$thing; do
2144                 : just loop through to pick last item
2145         done
2146         if test -f \$thisthing; then
2147                 echo \$thisthing
2148                 exit 0
2149         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2150                 echo \$thisthing
2151                 exit 0
2152         elif test -f \$dir/\$thing.exe; then
2153                 if test -n "$DJGPP"; then
2154                         echo \$dir/\$thing.exe
2155                 else
2156                         : on Eunice apparently
2157                         echo \$dir/\$thing
2158                 fi
2159                 exit 0
2160         fi
2161         ;;
2162         esac
2163 done
2164 echo \$dflt
2165 exit 1
2166 EOSC
2167 chmod +x loc
2168 $eunicefix loc
2169 loclist="
2170 awk
2171 cat
2172 chmod
2173 comm
2174 cp
2175 echo
2176 expr
2177 grep
2178 ls
2179 mkdir
2180 rm
2181 sed
2182 sort
2183 touch
2184 tr
2185 uniq
2186 "
2187 trylist="
2188 Mcc
2189 ar
2190 bison
2191 byacc
2192 cpp
2193 csh
2194 date
2195 egrep
2196 gmake
2197 gzip
2198 less
2199 ln
2200 make
2201 more
2202 nm
2203 nroff
2204 pg
2205 test
2206 uname
2207 zip
2208 "
2209 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2210 pth="$pth /lib /usr/lib"
2211 for file in $loclist; do
2212         eval xxx=\$$file
2213         case "$xxx" in
2214         /*|?:[\\/]*)
2215                 if test -f "$xxx"; then
2216                         : ok
2217                 else
2218                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2219                         xxx=`./loc $file $file $pth`
2220                 fi
2221                 ;;
2222         '') xxx=`./loc $file $file $pth`;;
2223         *) xxx=`./loc $xxx $xxx $pth`;;
2224         esac
2225         eval $file=$xxx$_exe
2226         eval _$file=$xxx
2227         case "$xxx" in
2228         /*)
2229                 echo $file is in $xxx.
2230                 ;;
2231         ?:[\\/]*)
2232                 echo $file is in $xxx.
2233                 ;;
2234         *)
2235                 echo "I don't know where '$file' is, and my life depends on it." >&4
2236                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2237                 exit 1
2238                 ;;
2239         esac
2240 done
2241 echo " "
2242 echo "Don't worry if any of the following aren't found..."
2243 say=offhand
2244 for file in $trylist; do
2245         eval xxx=\$$file
2246         case "$xxx" in
2247         /*|?:[\\/]*)
2248                 if test -f "$xxx"; then
2249                         : ok
2250                 else
2251                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2252                         xxx=`./loc $file $file $pth`
2253                 fi
2254                 ;;
2255         '') xxx=`./loc $file $file $pth`;;
2256         *) xxx=`./loc $xxx $xxx $pth`;;
2257         esac
2258         eval $file=$xxx$_exe
2259         eval _$file=$xxx
2260         case "$xxx" in
2261         /*)
2262                 echo $file is in $xxx.
2263                 ;;
2264         ?:[\\/]*)
2265                 echo $file is in $xxx.
2266                 ;;
2267         *)
2268                 echo "I don't see $file out there, $say."
2269                 say=either
2270                 ;;
2271         esac
2272 done
2273 case "$egrep" in
2274 egrep)
2275         echo "Substituting grep for egrep."
2276         egrep=$grep
2277         _egrep=$grep
2278         ;;
2279 esac
2280 case "$ln" in
2281 ln)
2282         echo "Substituting cp for ln."
2283         ln=$cp
2284         _ln=$cp
2285         ;;
2286 esac
2287 case "$make" in
2288 make)   
2289         case "$gmake" in
2290         gmake)
2291         echo "I can't find make or gmake, and my life depends on it." >&4
2292         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2293         exit 1
2294         ;;
2295         esac
2296         ;;
2297 esac    
2298 case "$gmake" in
2299 gmake)  ;;
2300 *)      # We can't have osname yet.
2301         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2302                 # Assume that gmake, if found, is definitely GNU make
2303                 # and prefer it over the system make.
2304                 echo "Substituting gmake for make."
2305                 make=$gmake
2306                 _make=$gmake
2307         fi
2308         ;;
2309 esac
2310 case "$test" in
2311 test)
2312         echo "Hopefully test is built into your sh."
2313         ;;
2314 *)
2315         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2316                 echo "Using the test built into your sh."
2317                 test=test
2318                 _test=test
2319         fi
2320         ;;
2321 esac
2322 case "$echo" in
2323 echo)
2324         echo "Hopefully echo is built into your sh."
2325         ;;
2326 '') ;;
2327 *)
2328         echo " "
2329 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2330         $echo $n "hi there$c" >foo1
2331         echo $n "hi there$c" >foo2
2332         if cmp foo1 foo2 >/dev/null 2>&1; then
2333                 echo "They are compatible.  In fact, they may be identical."
2334         else
2335                 case "$n" in
2336                 '-n') n='' c='\c';;
2337                 *) n='-n' c='';;
2338                 esac
2339                 cat <<FOO
2340 They are not compatible!  You are probably running ksh on a non-USG system.
2341 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2342 have echo built in and we may have to run some Bourne shell scripts.  That
2343 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2344
2345 FOO
2346                 $echo $n "The star should be here-->$c"
2347                 $echo "*"
2348         fi
2349         $rm -f foo1 foo2
2350         ;;
2351 esac
2352
2353 cat <<EOS >trygcc
2354 $startsh
2355 EOS
2356 cat <<'EOSC' >>trygcc
2357 case "$cc" in
2358 '') ;;
2359 *)  $rm -f try try.*
2360     $cat >try.c <<EOM
2361 int main(int argc, char *argv[]) {
2362   return 0;
2363 }
2364 EOM
2365     if $cc -o try $ccflags $ldflags try.c; then
2366        :
2367     else
2368         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2369         despair=yes
2370         trygcc=yes
2371         case "$cc" in
2372         *gcc*) trygcc=no ;;
2373         esac
2374         case "`$cc -v -c try.c 2>&1`" in
2375         *gcc*) trygcc=no ;;
2376         esac
2377         if $test X"$trygcc" = Xyes; then
2378             if gcc -o try -c try.c; then
2379                 echo " "
2380                 echo "You seem to have a working gcc, though." >&4
2381                 rp="Would you like to use it?"
2382                 dflt=y
2383                 if $test -f myread; then
2384                     . ./myread
2385                 else
2386                     if $test -f UU/myread; then
2387                         . ./UU/myread
2388                     else
2389                         echo "Cannot find myread, sorry.  Aborting." >&2
2390                         exit 1
2391                     fi
2392                 fi  
2393                 case "$ans" in
2394                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2395                        if $test -f usethreads.cbu; then
2396                            $cat >&4 <<EOM 
2397
2398 *** However, any setting of the C compiler flags (e.g. for thread support)
2399 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2400 *** (together with e.g. -Dusethreads).
2401
2402 EOM
2403                        fi;;
2404                 esac
2405             fi
2406         fi
2407     fi
2408     $rm -f try try.*
2409     ;;
2410 esac
2411 EOSC
2412
2413 cat <<EOS >checkcc
2414 $startsh
2415 EOS
2416 cat <<'EOSC' >>checkcc
2417 case "$cc" in        
2418 '') ;;
2419 *)  $rm -f try try.*              
2420     $cat >try.c <<EOM
2421 int main(int argc, char *argv[]) {
2422   return 0;
2423 }
2424 EOM
2425     if $cc -o try $ccflags $ldflags try.c; then
2426        :
2427     else
2428         if $test X"$despair" = Xyes; then
2429            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2430         fi
2431         $cat >&4 <<EOM         
2432 You need to find a working C compiler.
2433 Either (purchase and) install the C compiler supplied by your OS vendor,
2434 or for a free C compiler try http://gcc.gnu.org/
2435 I cannot continue any further, aborting.
2436 EOM
2437         exit 1
2438     fi
2439     $rm -f try try.*
2440     ;;
2441 esac
2442 EOSC
2443
2444 : determine whether symbolic links are supported
2445 echo " "
2446 $touch blurfl
2447 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2448         echo "Symbolic links are supported." >&4
2449         lns="$ln -s"
2450 else
2451         echo "Symbolic links are NOT supported." >&4
2452         lns="$ln"
2453 fi
2454 $rm -f blurfl sym
2455
2456 : determine whether symbolic links are supported
2457 echo " "
2458 case "$lns" in
2459 *"ln"*" -s")
2460         echo "Checking how to test for symbolic links..." >&4
2461         $lns blurfl sym
2462         if $test "X$issymlink" = X; then
2463                 case "$newsh" in
2464                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2465                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2466                 esac
2467                 if test $? = 0; then
2468                         issymlink="test -h"
2469                 else
2470                         echo "Your builtin 'test -h' may be broken." >&4
2471                         case "$test" in
2472                         /*)     ;;
2473                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2474                                 for p in $pth
2475                                 do
2476                                         if test -f "$p/$test"; then
2477                                                 test="$p/$test"
2478                                                 break
2479                                         fi
2480                                 done
2481                                 ;;
2482                         esac
2483                         case "$test" in
2484                         /*)
2485                                 echo "Trying external '$test -h'." >&4
2486                                 issymlink="$test -h"
2487                                 if $test ! -h sym >/dev/null 2>&1; then
2488                                         echo "External '$test -h' is broken, too." >&4
2489                                         issymlink=''
2490                                 fi
2491                                 ;;
2492                         *)      issymlink='' ;;
2493                         esac
2494                 fi              
2495         fi
2496         if $test "X$issymlink" = X; then
2497                 if $test -L sym 2>/dev/null; then
2498                         issymlink="$test -L"
2499                         echo "The builtin '$test -L' worked." >&4
2500                 fi
2501         fi
2502         if $test "X$issymlink" != X; then
2503                 echo "You can test for symbolic links with '$issymlink'." >&4
2504         else
2505                 echo "I do not know how you can test for symbolic links." >&4
2506         fi
2507         $rm -f blurfl sym
2508         ;;
2509 *)      echo "No symbolic links, so not testing for their testing..." >&4
2510         ;;
2511 esac
2512 echo " "
2513
2514
2515 case "$mksymlinks" in
2516 $define|true|[yY]*)
2517         case "$src" in
2518         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2519                 exit 1
2520                 ;;
2521         *)      case "$lns:$issymlink" in
2522                 *"ln"*" -s:"*"test -"?)
2523                         echo "Creating the symbolic links..." >&4
2524                         echo "(First creating the subdirectories...)" >&4
2525                         cd ..
2526                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2527                                 read directory
2528                                 test -z "$directory" && break
2529                                 mkdir -p $directory
2530                         done
2531                         # Sanity check 1.
2532                         if test ! -d t/base; then
2533                                 echo "Failed to create the subdirectories.  Aborting." >&4
2534                                 exit 1
2535                         fi
2536                         echo "(Then creating the symlinks...)" >&4
2537                         awk '{print $1}' $src/MANIFEST | while true; do
2538                                 read filename
2539                                 test -z "$filename" && break
2540                                 if test -f $filename; then
2541                                         if $issymlink $filename; then
2542                                                 rm -f $filename
2543                                         fi
2544                                 fi
2545                                 if test -f $filename; then
2546                                         echo "$filename already exists, not symlinking."
2547                                 else
2548                                         ln -s $src/$filename $filename
2549                                 fi
2550                         done
2551                         # Sanity check 2.
2552                         if test ! -f t/base/lex.t; then
2553                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2554                                 exit 1
2555                         fi
2556                         cd UU
2557                         ;;
2558                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2559                         ;;
2560                 esac
2561                 ;;
2562         esac
2563         ;;
2564 esac
2565
2566
2567 case "$usecrosscompile" in
2568 $define|true|[yY]*)
2569         $echo "Cross-compiling..."
2570         croak=''
2571         case "$cc" in
2572         *-*-gcc) # A cross-compiling gcc, probably.
2573             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2574             ar=$targetarch-ar
2575             # leave out ld, choosing it is more complex
2576             nm=$targetarch-nm
2577             ranlib=$targetarch-ranlib
2578             $echo 'extern int foo;' > try.c
2579             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2580             shift
2581             if $test $# -gt 0; then
2582                 incpth="$incpth $*"
2583                 incpth="`$echo $incpth|$sed 's/^ //'`"
2584                 echo "Guessing incpth '$incpth'." >&4
2585                 for i in $*; do
2586                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2587                     if $test -d $j; then
2588                         libpth="$libpth $j"
2589                     fi
2590                 done   
2591                 libpth="`$echo $libpth|$sed 's/^ //'`"
2592                 echo "Guessing libpth '$libpth'." >&4
2593             fi
2594             $rm -f try.c
2595             ;;
2596         esac
2597         case "$targetarch" in
2598         '') echo "Targetarch not defined." >&4; croak=y ;;
2599         *)  echo "Using targetarch $targetarch." >&4 ;;
2600         esac
2601         case "$incpth" in
2602         '') echo "Incpth not defined." >&4; croak=y ;;
2603         *)  echo "Using incpth '$incpth'." >&4 ;;
2604         esac
2605         case "$libpth" in
2606         '') echo "Libpth not defined." >&4; croak=y ;;
2607         *)  echo "Using libpth '$libpth'." >&4 ;;
2608         esac
2609         case "$usrinc" in
2610         '') for i in $incpth; do
2611                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2612                     usrinc=$i
2613                     echo "Guessing usrinc $usrinc." >&4
2614                     break
2615                 fi
2616             done
2617             case "$usrinc" in
2618             '') echo "Usrinc not defined." >&4; croak=y ;;
2619             esac
2620             ;;
2621         *)  echo "Using usrinc $usrinc." >&4 ;;
2622         esac
2623         case "$targethost" in
2624         '') echo "Targethost not defined." >&4; croak=y ;;
2625         *)  echo "Using targethost $targethost." >&4
2626         esac
2627         locincpth=' '
2628         loclibpth=' '
2629         case "$croak" in
2630         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2631         esac
2632         case "$src" in
2633         /*) run=$src/Cross/run
2634             targetmkdir=$src/Cross/mkdir
2635             to=$src/Cross/to
2636             from=$src/Cross/from
2637             ;;
2638         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2639             run=$pwd/Cross/run
2640             targetmkdir=$pwd/Cross/mkdir
2641             to=$pwd/Cross/to
2642             from=$pwd/Cross/from
2643             ;;
2644         esac
2645         case "$targetrun" in
2646         '') targetrun=ssh ;;
2647         esac
2648         case "$targetto" in
2649         '') targetto=scp ;;
2650         esac
2651         case "$targetfrom" in
2652         '') targetfrom=scp ;;
2653         esac
2654         run=$run-$targetrun
2655         to=$to-$targetto
2656         from=$from-$targetfrom
2657         case "$targetdir" in
2658         '')  targetdir=/tmp
2659              echo "Guessing targetdir $targetdir." >&4
2660              ;;
2661         esac
2662         case "$targetuser" in
2663         '')  targetuser=root
2664              echo "Guessing targetuser $targetuser." >&4
2665              ;;
2666         esac
2667         case "$targetfrom" in
2668         scp)    q=-q ;;
2669         *)      q='' ;;
2670         esac
2671         case "$targetrun" in
2672         ssh|rsh)
2673             cat >$run <<EOF
2674 #!/bin/sh
2675 case "\$1" in
2676 -cwd)
2677   shift
2678   cwd=\$1
2679   shift
2680   ;;
2681 esac
2682 case "\$cwd" in
2683 '') cwd=$targetdir ;;
2684 esac
2685 exe=\$1
2686 shift
2687 if $test ! -f \$exe.xok; then
2688   $to \$exe
2689   $touch \$exe.xok
2690 fi
2691 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2692 EOF
2693             ;;
2694         *)  echo "Unknown targetrun '$targetrun'" >&4
2695             exit 1
2696             ;;
2697         esac
2698         case "$targetmkdir" in
2699         */Cross/mkdir)
2700             cat >$targetmkdir <<EOF
2701 #!/bin/sh
2702 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2703 EOF
2704             $chmod a+rx $targetmkdir
2705             ;;
2706         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2707             exit 1
2708             ;;
2709         esac
2710         case "$targetto" in
2711         scp|rcp)
2712             cat >$to <<EOF
2713 #!/bin/sh
2714 for f in \$@
2715 do
2716   case "\$f" in
2717   /*)
2718     $targetmkdir \`dirname \$f\`
2719     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2720     ;;
2721   *)
2722     $targetmkdir $targetdir/\`dirname \$f\`
2723     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2724     ;;
2725   esac
2726 done
2727 exit 0
2728 EOF
2729             ;;
2730         cp) cat >$to <<EOF
2731 #!/bin/sh
2732 for f in \$@
2733 do
2734   case "\$f" in
2735   /*)
2736     $mkdir -p $targetdir/\`dirname \$f\`
2737     $cp \$f $targetdir/\$f || exit 1
2738     ;;
2739   *)
2740     $targetmkdir $targetdir/\`dirname \$f\`
2741     $cp \$f $targetdir/\$f || exit 1
2742     ;;
2743   esac
2744 done
2745 exit 0
2746 EOF
2747             ;;
2748         *)  echo "Unknown targetto '$targetto'" >&4
2749             exit 1
2750             ;;
2751         esac
2752         case "$targetfrom" in
2753         scp|rcp)
2754           cat >$from <<EOF
2755 #!/bin/sh
2756 for f in \$@
2757 do
2758   $rm -f \$f
2759   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2760 done
2761 exit 0
2762 EOF
2763             ;;
2764         cp) cat >$from <<EOF
2765 #!/bin/sh
2766 for f in \$@
2767 do
2768   $rm -f \$f
2769   cp $targetdir/\$f . || exit 1
2770 done
2771 exit 0
2772 EOF
2773             ;;
2774         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2775             exit 1
2776             ;;
2777         esac
2778         if $test ! -f $run; then
2779             echo "Target 'run' script '$run' not found." >&4
2780         else
2781             $chmod a+rx $run
2782         fi
2783         if $test ! -f $to; then
2784             echo "Target 'to' script '$to' not found." >&4
2785         else
2786             $chmod a+rx $to
2787         fi
2788         if $test ! -f $from; then
2789             echo "Target 'from' script '$from' not found." >&4
2790         else
2791             $chmod a+rx $from
2792         fi
2793         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2794             exit 1
2795         fi
2796         cat >&4 <<EOF
2797 Using '$run' for remote execution,
2798 and '$from' and '$to'
2799 for remote file transfer.
2800 EOF
2801         ;;
2802 *)      run=''
2803         to=:
2804         from=:
2805         usecrosscompile='undef'
2806         targetarch=''
2807         ;;
2808 esac
2809
2810 : see whether [:lower:] and [:upper:] are supported character classes
2811 echo " "
2812 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2813 ABYZ)
2814         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2815         up='[:upper:]'
2816         low='[:lower:]'
2817         ;;
2818 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2819         # (0xc9 and 0xd1), therefore that is a nice testing point.
2820         if test "X$up" = X -o "X$low" = X; then
2821             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2822             ij) up='[A-Z]'
2823                 low='[a-z]'
2824                 ;;
2825             esac
2826         fi
2827         if test "X$up" = X -o "X$low" = X; then
2828             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2829             ij) up='A-Z'
2830                 low='a-z'
2831                 ;;
2832             esac
2833         fi
2834         if test "X$up" = X -o "X$low" = X; then
2835             case "`echo IJ | od -x 2>/dev/null`" in
2836             *C9D1*|*c9d1*)
2837                 echo "Hey, this might be EBCDIC." >&4
2838                 if test "X$up" = X -o "X$low" = X; then
2839                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2840                     ij) up='[A-IJ-RS-Z]'
2841                         low='[a-ij-rs-z]'
2842                         ;;
2843                     esac
2844                 fi
2845                 if test "X$up" = X -o "X$low" = X; then
2846                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2847                     ij) up='A-IJ-RS-Z'
2848                         low='a-ij-rs-z'
2849                         ;;
2850                     esac
2851                 fi
2852                 ;;
2853             esac
2854         fi
2855 esac
2856 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2857 ij)
2858     echo "Using $up and $low to convert case." >&4
2859     ;;
2860 *)
2861     echo "I don't know how to translate letters from upper to lower case." >&4
2862     echo "Your tr is not acting any way I know of." >&4
2863     exit 1
2864     ;;
2865 esac
2866 : set up the translation script tr, must be called with ./tr of course
2867 cat >tr <<EOSC
2868 $startsh
2869 case "\$1\$2" in
2870 '[A-Z][a-z]') exec $tr '$up' '$low';;
2871 '[a-z][A-Z]') exec $tr '$low' '$up';;
2872 esac
2873 exec $tr "\$@"
2874 EOSC
2875 chmod +x tr
2876 $eunicefix tr
2877
2878 : Try to determine whether config.sh was made on this system
2879 case "$config_sh" in
2880 '')
2881 myuname=`$uname -a 2>/dev/null`
2882 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2883 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2884 # because the A-Z/a-z are not consecutive.
2885 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2886         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2887 newmyuname="$myuname"
2888 dflt=n
2889 case "$knowitall" in
2890 '')
2891         if test -f ../config.sh; then
2892                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2893                         eval "`grep myuname= ../config.sh`"
2894                 fi
2895                 if test "X$myuname" = "X$newmyuname"; then
2896                         dflt=y
2897                 fi
2898         fi
2899         ;;
2900 *) dflt=y;;
2901 esac
2902
2903 : Get old answers from old config file if Configure was run on the
2904 : same system, otherwise use the hints.
2905 hint=default
2906 cd ..
2907 if test -f config.sh; then
2908         echo " "
2909         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2910         . UU/myread
2911         case "$ans" in
2912         n*|N*) echo "OK, I'll ignore it."
2913                 mv config.sh config.sh.old
2914                 myuname="$newmyuname"
2915                 ;;
2916         *)  echo "Fetching default answers from your old config.sh file..." >&4
2917                 tmp_n="$n"
2918                 tmp_c="$c"
2919                 tmp_sh="$sh"
2920                 . ./config.sh
2921                 cp config.sh UU
2922                 n="$tmp_n"
2923                 c="$tmp_c"
2924                 : Older versions did not always set $sh.  Catch re-use of such
2925                 : an old config.sh.
2926                 case "$sh" in
2927                 '') sh="$tmp_sh" ;;
2928                 esac
2929                 hint=previous
2930                 ;;
2931         esac
2932 fi
2933 . ./UU/checkcc
2934 if test ! -f config.sh; then
2935         $cat <<EOM
2936
2937 First time through, eh?  I have some defaults handy for some systems
2938 that need some extra help getting the Configure answers right:
2939
2940 EOM
2941         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2942         dflt=''
2943         : Half the following guesses are probably wrong... If you have better
2944         : tests or hints, please send them to perlbug@perl.org
2945         : The metaconfig authors would also appreciate a copy...
2946         $test -f /irix && osname=irix
2947         $test -f /xenix && osname=sco_xenix
2948         $test -f /dynix && osname=dynix
2949         $test -f /dnix && osname=dnix
2950         $test -f /lynx.os && osname=lynxos
2951         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2952         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2953         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2954         $test -f /bin/mips && /bin/mips && osname=mips
2955         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2956                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2957         $test -d /usr/apollo/bin && osname=apollo
2958         $test -f /etc/saf/_sactab && osname=svr4
2959         $test -d /usr/include/minix && osname=minix
2960         $test -f /system/gnu_library/bin/ar.pm && osname=vos
2961         if $test -d /MachTen -o -d /MachTen_Folder; then
2962                 osname=machten
2963                 if $test -x /sbin/version; then
2964                         osvers=`/sbin/version | $awk '{print $2}' |
2965                         $sed -e 's/[A-Za-z]$//'`
2966                 elif $test -x /usr/etc/version; then
2967                         osvers=`/usr/etc/version | $awk '{print $2}' |
2968                         $sed -e 's/[A-Za-z]$//'`
2969                 else
2970                         osvers="$2.$3"
2971                 fi
2972         fi
2973
2974         $test -f /sys/posix.dll &&
2975                 $test -f /usr/bin/what &&
2976                 set X `/usr/bin/what /sys/posix.dll` &&
2977                 $test "$3" = UWIN &&
2978                 osname=uwin &&
2979                 osvers="$5"
2980
2981         if $test -f $uname; then
2982                 set X $myuname
2983                 shift
2984
2985                 case "$5" in
2986                 fps*) osname=fps ;;
2987                 mips*)
2988                         case "$4" in
2989                         umips) osname=umips ;;
2990                         *) osname=mips ;;
2991                         esac;;
2992                 [23]100) osname=mips ;;
2993                 next*) osname=next ;;
2994                 i386*)
2995                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2996                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2997                                 osname='sco'
2998                                 osvers=$tmp
2999                         elif $test -f /etc/kconfig; then
3000                                 osname=isc
3001                                 if test "$lns" = "$ln -s"; then
3002                                         osvers=4
3003                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3004                                         osvers=3
3005                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3006                                         osvers=2
3007                                 fi
3008                         fi
3009                         tmp=''
3010                         ;;
3011                 pc*)
3012                         if test -n "$DJGPP"; then
3013                                 osname=dos
3014                                 osvers=djgpp
3015                         fi
3016                         ;;
3017                 esac
3018
3019                 case "$1" in
3020                 aix) osname=aix
3021                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3022                         case "$tmp" in
3023                         'not found') osvers="$4"."$3" ;;
3024                         '<3240'|'<>3240') osvers=3.2.0 ;;
3025                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3026                         '=3250'|'>3250') osvers=3.2.5 ;;
3027                         *) osvers=$tmp;;
3028                         esac
3029                         ;;
3030                 bsd386) osname=bsd386
3031                         osvers=`$uname -r`
3032                         ;;
3033                 cygwin*) osname=cygwin
3034                         osvers="$3"
3035                         ;;
3036                 *dc.osx) osname=dcosx
3037                         osvers="$3"
3038                         ;;
3039                 dnix) osname=dnix
3040                         osvers="$3"
3041                         ;;
3042                 domainos) osname=apollo
3043                         osvers="$3"
3044                         ;;
3045                 dgux) osname=dgux 
3046                         osvers="$3"
3047                         ;;
3048                 dynixptx*) osname=dynixptx
3049                         osvers=`echo "$4"|sed 's/^v//'`
3050                         ;;
3051                 freebsd) osname=freebsd 
3052                         osvers="$3" ;;
3053                 genix) osname=genix ;;
3054                 hp*) osname=hpux 
3055                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3056                         ;;
3057                 irix*) osname=irix
3058                         case "$3" in
3059                         4*) osvers=4 ;;
3060                         5*) osvers=5 ;;
3061                         *)      osvers="$3" ;;
3062                         esac
3063                         ;;
3064                 linux) osname=linux
3065                         case "$3" in
3066                         *)      osvers="$3" ;;
3067                         esac
3068                         ;;
3069                 MiNT) osname=mint
3070                         ;;
3071                 netbsd*) osname=netbsd
3072                         osvers="$3"
3073                         ;;
3074                 news-os) osvers="$3"
3075                         case "$3" in
3076                         4*) osname=newsos4 ;;
3077                         *) osname=newsos ;;
3078                         esac
3079                         ;;
3080                 next*) osname=next ;;
3081                 nonstop-ux) osname=nonstopux ;;
3082                 openbsd) osname=openbsd
3083                         osvers="$3"
3084                         ;;
3085                 POSIX-BC | posix-bc ) osname=posix-bc
3086                         osvers="$3"
3087                         ;;
3088                 powerux | power_ux | powermax_os | powermaxos | \
3089                 powerunix | power_unix) osname=powerux
3090                         osvers="$3"
3091                         ;;
3092                 qnx) osname=qnx
3093                         osvers="$4"
3094                         ;;
3095                 solaris) osname=solaris
3096                         case "$3" in
3097                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3098                         *)      osvers="$3" ;;
3099                         esac
3100                         ;;
3101                 sunos) osname=sunos
3102                         case "$3" in
3103                         5*) osname=solaris
3104                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3105                         *)      osvers="$3" ;;
3106                         esac
3107                         ;;
3108                 titanos) osname=titanos
3109                         case "$3" in
3110                         1*) osvers=1 ;;
3111                         2*) osvers=2 ;;
3112                         3*) osvers=3 ;;
3113                         4*) osvers=4 ;;
3114                         *)      osvers="$3" ;;
3115                         esac
3116                         ;;
3117                 ultrix) osname=ultrix
3118                         osvers="$3"
3119                         ;;
3120                 osf1|mls+)      case "$5" in
3121                                 alpha)
3122                                         osname=dec_osf
3123                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3124                                         case "$osvers" in
3125                                         [1-9].[0-9]*) ;;
3126                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3127                                         esac
3128                                         ;;
3129                         hp*)    osname=hp_osf1  ;;
3130                         mips)   osname=mips_osf1 ;;
3131                         esac
3132                         ;;
3133                 unixware) osname=svr5
3134                         osvers="$4"
3135                         ;;
3136                 uts)    osname=uts
3137                         osvers="$3"
3138                         ;;
3139                 vos) osvers="$3"
3140                         ;;
3141                 $2) case "$osname" in
3142                         *isc*) ;;
3143                         *freebsd*) ;;
3144                         svr*)
3145                                 : svr4.x or possibly later
3146                                 case "svr$3" in 
3147                                 ${osname}*)
3148                                         osname=svr$3
3149                                         osvers=$4
3150                                         ;;
3151                                 esac
3152                                 case "$osname" in
3153                                 svr4.0)
3154                                         : Check for ESIX
3155                                         if test -f /stand/boot ; then
3156                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3157                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3158                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3159                                                         if test -n "$isesix"; then
3160                                                                 osname=esix4
3161                                                         fi
3162                                                 fi
3163                                         fi
3164                                         ;;
3165                                 esac
3166                                 ;;
3167                         *)      if test -f /etc/systemid; then
3168                                         osname=sco
3169                                         set `echo $3 | $sed 's/\./ /g'` $4
3170                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3171                                                 osvers=$1.$2.$3
3172                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3173                                                 osvers=$1.$2
3174                                         elif $test -f $src/hints/sco_$1.sh; then
3175                                                 osvers=$1
3176                                         fi
3177                                 else
3178                                         case "$osname" in
3179                                         '') : Still unknown.  Probably a generic Sys V.
3180                                                 osname="sysv"
3181                                                 osvers="$3"
3182                                                 ;;
3183                                         esac
3184                                 fi
3185                                 ;;
3186                         esac
3187                         ;;
3188                 *)      case "$osname" in
3189                         '') : Still unknown.  Probably a generic BSD.
3190                                 osname="$1"
3191                                 osvers="$3"
3192                                 ;;
3193                         esac
3194                         ;;
3195                 esac
3196         else
3197                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3198                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3199                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3200                                 osname=news_os
3201                         fi
3202                         $rm -f UU/kernel.what
3203                 elif test -d c:/.; then
3204                         set X $myuname
3205                         osname=os2
3206                         osvers="$5"
3207                 fi
3208         fi
3209         
3210         case "$targetarch" in
3211         '') ;;
3212         *)  hostarch=$osname
3213             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3214             osvers=''
3215             ;;
3216         esac
3217
3218         : Now look for a hint file osname_osvers, unless one has been
3219         : specified already.
3220         case "$hintfile" in
3221         ''|' ')
3222                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3223                 : Also try without trailing minor version numbers.
3224                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3225                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3226                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3227                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3228                 case "$file" in
3229                 '') dflt=none ;;
3230                 *)  case "$osvers" in
3231                         '') dflt=$file
3232                                 ;;
3233                         *)  if $test -f $src/hints/$file.sh ; then
3234                                         dflt=$file
3235                                 elif $test -f $src/hints/$xfile.sh ; then
3236                                         dflt=$xfile
3237                                 elif $test -f $src/hints/$xxfile.sh ; then
3238                                         dflt=$xxfile
3239                                 elif $test -f $src/hints/$xxxfile.sh ; then
3240                                         dflt=$xxxfile
3241                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3242                                         dflt=$xxxxfile
3243                                 elif $test -f "$src/hints/${osname}.sh" ; then
3244                                         dflt="${osname}"
3245                                 else
3246                                         dflt=none
3247                                 fi
3248                                 ;;
3249                         esac
3250                         ;;
3251                 esac
3252                 if $test -f Policy.sh ; then
3253                         case "$dflt" in
3254                         *Policy*) ;;
3255                         none) dflt="Policy" ;;
3256                         *) dflt="Policy $dflt" ;;
3257                         esac
3258                 fi
3259                 ;;
3260         *)
3261                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3262                 ;;
3263         esac
3264
3265         if $test -f Policy.sh ; then
3266                 $cat <<EOM
3267
3268 There's also a Policy hint file available, which should make the
3269 site-specific (policy) questions easier to answer.
3270 EOM
3271
3272         fi
3273
3274         $cat <<EOM
3275
3276 You may give one or more space-separated answers, or "none" if appropriate.
3277 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3278 is a good thing.  DO NOT give a wrong version or a wrong OS.
3279
3280 EOM
3281
3282         rp="Which of these apply, if any?"
3283         . UU/myread
3284         tans=$ans
3285         for file in $tans; do
3286                 if $test X$file = XPolicy -a -f Policy.sh; then
3287                         . Policy.sh
3288                         $cat Policy.sh >> UU/config.sh
3289                 elif $test -f $src/hints/$file.sh; then
3290                         . $src/hints/$file.sh
3291                         $cat $src/hints/$file.sh >> UU/config.sh
3292                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3293                         : nothing
3294                 else
3295                         : Give one chance to correct a possible typo.
3296                         echo "$file.sh does not exist"
3297                         dflt=$file
3298                         rp="hint to use instead?"
3299                         . UU/myread
3300                         for file in $ans; do
3301                                 if $test -f "$src/hints/$file.sh"; then
3302                                         . $src/hints/$file.sh
3303                                         $cat $src/hints/$file.sh >> UU/config.sh
3304                                 elif $test X$ans = X -o X$ans = Xnone ; then
3305                                         : nothing
3306                                 else
3307                                         echo "$file.sh does not exist -- ignored."
3308                                 fi
3309                         done
3310                 fi
3311         done
3312
3313         hint=recommended
3314         : Remember our hint file for later.
3315         if $test -f "$src/hints/$file.sh" ; then
3316                 hintfile="$file"
3317         else
3318                 hintfile=''
3319         fi
3320 fi
3321 cd UU
3322 ;;
3323 *)
3324         echo " "
3325         echo "Fetching default answers from $config_sh..." >&4
3326         tmp_n="$n"
3327         tmp_c="$c"
3328         cd ..
3329         cp $config_sh config.sh 2>/dev/null
3330         chmod +w config.sh
3331         . ./config.sh
3332         cd UU
3333         cp ../config.sh .
3334         n="$tmp_n"
3335         c="$tmp_c"
3336         hint=previous
3337         ;;
3338 esac
3339 test "$override" && . ./optdef.sh
3340
3341 : Restore computed paths
3342 for file in $loclist $trylist; do
3343         eval $file="\$_$file"
3344 done
3345
3346 cat << EOM
3347
3348 Configure uses the operating system name and version to set some defaults.
3349 The default value is probably right if the name rings a bell. Otherwise,
3350 since spelling matters for me, either accept the default or answer "none"
3351 to leave it blank.
3352
3353 EOM
3354 case "$osname" in
3355         ''|' ')
3356                 case "$hintfile" in
3357                 ''|' '|none) dflt=none ;;
3358                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3359                 esac
3360                 ;;
3361         *) dflt="$osname" ;;
3362 esac
3363 rp="Operating system name?"
3364 . ./myread
3365 case "$ans" in
3366 none)  osname='' ;;
3367 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3368 esac
3369 echo " "
3370 case "$osvers" in
3371         ''|' ')
3372                 case "$hintfile" in
3373                 ''|' '|none) dflt=none ;;
3374                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3375                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3376                         case "$dflt" in
3377                         ''|' ') dflt=none ;;
3378                         esac
3379                         ;;
3380                 esac
3381                 ;;
3382         *) dflt="$osvers" ;;
3383 esac
3384 rp="Operating system version?"
3385 . ./myread
3386 case "$ans" in
3387 none)  osvers='' ;;
3388 *) osvers="$ans" ;;
3389 esac
3390
3391
3392 . ./posthint.sh
3393
3394 : who configured the system
3395 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3396 cf_by=`(logname) 2>/dev/null`
3397 case "$cf_by" in
3398 "")
3399         cf_by=`(whoami) 2>/dev/null`
3400         case "$cf_by" in
3401         "") cf_by=unknown ;;
3402         esac ;;
3403 esac
3404
3405 : set up the script used to warn in case of inconsistency
3406 cat <<EOS >whoa
3407 $startsh
3408 EOS
3409 cat <<'EOSC' >>whoa
3410 dflt=y
3411 echo " "
3412 echo "*** WHOA THERE!!! ***" >&4
3413 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3414 rp="    Keep the $hint value?"
3415 . ./myread
3416 case "$ans" in
3417 y) td=$was; tu=$was;;
3418 esac
3419 EOSC
3420
3421 : function used to set $1 to $val
3422 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3423 case "$val$was" in
3424 $define$undef) . ./whoa; eval "$var=\$td";;
3425 $undef$define) . ./whoa; eval "$var=\$tu";;
3426 *) eval "$var=$val";;
3427 esac'
3428
3429 case "$usesocks" in
3430 $define|true|[yY]*)     dflt='y';;
3431 *) dflt='n';;
3432 esac
3433 cat <<EOM
3434
3435 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3436 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3437 to use the PerlIO abstraction layer, this will be implicitly selected.
3438
3439 If this doesn't make any sense to you, just accept the default '$dflt'.
3440 EOM
3441 rp='Build Perl for SOCKS?'
3442 . ./myread
3443 case "$ans" in
3444 y|Y)    val="$define" ;;     
3445 *)      val="$undef" ;;
3446 esac
3447 set usesocks
3448 eval $setvar
3449
3450 case "$usesocks" in
3451 $define|true|[yY]*) useperlio="$define";;
3452 esac
3453
3454 case "$useperlio" in
3455 $define|true|[yY]*|'')  dflt='y';;
3456 *) dflt='n';;
3457 esac
3458 cat <<EOM
3459
3460 Previous version of $package used the standard IO mechanisms as
3461 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3462 alternate IO mechanisms via the PerlIO abstraction layer, but the
3463 stdio mechanism is still available if needed.  The abstraction layer
3464 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3465 Using PerlIO with sfio may cause problems with some extension modules.
3466
3467 If this doesn't make any sense to you, just accept the default '$dflt'.
3468 EOM
3469 rp='Use the PerlIO abstraction layer?'
3470 . ./myread
3471 case "$ans" in
3472 y|Y) 
3473         val="$define"
3474         ;;
3475 *)      
3476         echo "Ok, doing things the stdio way."
3477         val="$undef"
3478         ;;
3479 esac
3480 set useperlio
3481 eval $setvar 
3482
3483 case "$usesocks" in
3484 $define|true|[yY]*)
3485         case "$useperlio" in
3486         $define|true|[yY]*) ;;
3487         *)      cat >&4 <<EOM
3488
3489 You are using the SOCKS proxy protocol library which means that you
3490 should also use the PerlIO layer.  You may be headed for trouble.
3491
3492 EOM
3493                 ;;
3494         esac
3495         ;;
3496 esac
3497
3498         
3499 case "$usethreads" in
3500 $define|true|[yY]*)     dflt='y';;
3501 *)     # Catch case where user specified ithreads or 5005threads but
3502        # forgot -Dusethreads (A.D. 4/2002)
3503        case "$useithreads$use5005threads" in
3504        *$define*)      
3505                 case "$useperlio" in
3506                 "$define")      dflt='y' ;;
3507                 *)              dflt='n' ;;
3508                 esac
3509                 ;;
3510        *)       dflt='n';;
3511        esac
3512        ;;
3513 esac
3514 cat <<EOM
3515
3516 Perl can be built to take advantage of threads on some systems.
3517 To do so, Configure can be run with -Dusethreads.
3518
3519 Note that Perl built with threading support runs slightly slower
3520 and uses more memory than plain Perl. The current implementation
3521 is believed to be stable, but it is fairly new, and so should be
3522 treated with caution.
3523
3524 If this doesn't make any sense to you, just accept the default '$dflt'.
3525 EOM
3526 rp='Build a threading Perl?'
3527 . ./myread
3528 case "$ans" in
3529 y|Y)    val="$define" ;;
3530 *)      val="$undef" ;;
3531 esac
3532 set usethreads
3533 eval $setvar
3534
3535 case "$usethreads" in
3536 $define)
3537         $cat <<EOM
3538
3539 Since release 5.6, Perl has had two different threading implementations,
3540 the newer interpreter-based version (ithreads) with one interpreter per
3541 thread, and the older 5.005 version (5005threads).
3542 The 5005threads version is effectively unmaintained and will probably be
3543 removed in Perl 5.10, so there should be no need to build a Perl using it
3544 unless needed for backwards compatibility with some existing 5.005threads
3545 code.
3546
3547 EOM
3548         : Default to ithreads unless overridden on command line or with
3549         : old config.sh
3550         dflt='y'
3551         case "$use5005threads" in
3552                 $define|true|[yY]*) dflt='n';;
3553         esac
3554         case "$useithreads" in
3555                 $undef|false|[nN]*) dflt='n';;
3556         esac
3557         rp='Use the newer interpreter-based ithreads?'
3558         . ./myread
3559         case "$ans" in
3560         y|Y)    val="$define" ;;
3561         *)      val="$undef" ;;
3562         esac
3563         set useithreads
3564         eval $setvar
3565         : Now set use5005threads to the opposite value.
3566         case "$useithreads" in
3567         $define) val="$undef" ;;
3568         *) val="$define" ;;
3569         esac
3570         set use5005threads
3571         eval $setvar
3572         ;;
3573 *)
3574         useithreads="$undef"
3575         use5005threads="$undef"
3576         ;;
3577 esac
3578
3579 case "$useithreads$use5005threads" in
3580 "$define$define")
3581         $cat >&4 <<EOM
3582
3583 You cannot have both the ithreads and the 5.005 threads enabled
3584 at the same time.  Disabling the 5.005 threads since they are
3585 much less stable than the ithreads.
3586
3587 EOM
3588         use5005threads="$undef"
3589         ;;
3590 esac
3591
3592 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3593         cat >&4 <<EOF
3594 ***
3595 *** To build with ithreads you must also use the PerlIO layer.
3596 *** Cannot continue, aborting.
3597 ***
3598 EOF
3599         exit 1
3600 fi
3601
3602 case "$d_oldpthreads" in
3603 '')     : Configure tests would be welcome here.  For now, assume undef.
3604         val="$undef" ;;
3605 *)      val="$d_oldpthreads" ;;
3606 esac
3607 set d_oldpthreads
3608 eval $setvar
3609
3610
3611 case "$usethreads" in
3612 "$define"|true|[yY]*)
3613 : Look for a hint-file generated 'call-back-unit'.  If the
3614 : user has specified that a threading perl is to be built,
3615 : we may need to set or change some other defaults.
3616         if $test -f usethreads.cbu; then
3617                 echo "Your platform has some specific hints for threaded builds, using them..."
3618                 . ./usethreads.cbu
3619         else
3620                 $cat <<EOM
3621 (Your platform doesn't have any specific hints for threaded builds.
3622  Assuming POSIX threads, then.)
3623 EOM
3624         fi
3625         ;;
3626 esac
3627
3628 cat <<EOM
3629
3630 Perl can be built so that multiple Perl interpreters can coexist
3631 within the same Perl executable.
3632 EOM
3633
3634 case "$useithreads" in
3635 $define)
3636         cat <<EOM
3637 This multiple interpreter support is required for interpreter-based threads.
3638 EOM
3639         val="$define"
3640         ;;
3641 *)      case "$usemultiplicity" in
3642         $define|true|[yY]*)     dflt='y';;
3643         *) dflt='n';;
3644         esac
3645         echo " "
3646         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3647         rp='Build Perl for multiplicity?'
3648         . ./myread
3649         case "$ans" in
3650         y|Y)    val="$define" ;;
3651         *)      val="$undef" ;;
3652         esac
3653         ;;
3654 esac
3655 set usemultiplicity
3656 eval $setvar
3657
3658
3659 case "$usemorebits" in
3660 "$define"|true|[yY]*)
3661         use64bitint="$define"
3662         uselongdouble="$define"
3663         usemorebits="$define"
3664         ;;
3665 *)      usemorebits="$undef"
3666         ;;
3667 esac
3668
3669 : make some quick guesses about what we are up against
3670 echo " "
3671 $echo $n "Hmm...  $c"
3672 echo exit 1 >bsd
3673 echo exit 1 >usg
3674 echo exit 1 >v7
3675 echo exit 1 >osf1
3676 echo exit 1 >eunice
3677 echo exit 1 >xenix
3678 echo exit 1 >venix
3679 echo exit 1 >os2
3680 d_bsd="$undef"
3681 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3682 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3683 then
3684         echo "Looks kind of like an OSF/1 system, but we'll see..."
3685         echo exit 0 >osf1
3686 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3687         xxx=`./loc addbib blurfl $pth`
3688         if $test -f $xxx; then
3689         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3690                 echo exit 0 >bsd
3691                 echo exit 0 >usg
3692         else
3693                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3694                         echo "Looks kind of like an extended USG system, but we'll see..."
3695                 else
3696                         echo "Looks kind of like a USG system, but we'll see..."
3697                 fi
3698                 echo exit 0 >usg
3699         fi
3700 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3701         echo "Looks kind of like a BSD system, but we'll see..."
3702         d_bsd="$define"
3703         echo exit 0 >bsd
3704 else
3705         echo "Looks kind of like a Version 7 system, but we'll see..."
3706         echo exit 0 >v7
3707 fi
3708 case "$eunicefix" in
3709 *unixtovms*)
3710         $cat <<'EOI'
3711 There is, however, a strange, musty smell in the air that reminds me of
3712 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3713 EOI
3714         echo exit 0 >eunice
3715         d_eunice="$define"
3716 : it so happens the Eunice I know will not run shell scripts in Unix format
3717         ;;
3718 *)
3719         echo " "
3720         echo "Congratulations.  You aren't running Eunice."
3721         d_eunice="$undef"
3722         ;;
3723 esac
3724 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3725 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3726 : semicolon as a patch separator
3727 case "$p_" in
3728 :) ;;
3729 *)
3730         $cat <<'EOI'
3731 I have the feeling something is not exactly right, however...don't tell me...
3732 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3733 (Or you may be running DOS with DJGPP.)
3734 EOI
3735         echo exit 0 >os2
3736         ;;
3737 esac
3738 if test -f /xenix; then
3739         echo "Actually, this looks more like a XENIX system..."
3740         echo exit 0 >xenix
3741         d_xenix="$define"
3742 else
3743         echo " "
3744         echo "It's not Xenix..."
3745         d_xenix="$undef"
3746 fi
3747 chmod +x xenix
3748 $eunicefix xenix
3749 if test -f /venix; then
3750         echo "Actually, this looks more like a VENIX system..."
3751         echo exit 0 >venix
3752 else
3753         echo " "
3754         if ./xenix; then
3755                 : null
3756         else
3757                 echo "Nor is it Venix..."
3758         fi
3759 fi
3760 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3761 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3762 $rm -f foo
3763
3764 case "$cc" in
3765 '') dflt=cc;;
3766 *) dflt="$cc";;
3767 esac
3768 rp="Use which C compiler?"
3769 . ./myread
3770 cc="$ans"
3771
3772 : See if they have not cc but they do have gcc
3773 . ./trygcc
3774 : Look for a hint-file generated 'call-back-unit'.  Now that the
3775 : user has specified the compiler, we may need to set or change some
3776 : other defaults.
3777 if $test -f cc.cbu; then
3778     . ./cc.cbu
3779 fi
3780 . ./checkcc
3781
3782 echo " "
3783 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3784 $cat >try.c <<EOM
3785 #include <stdio.h>
3786 int main() {
3787 #ifdef __GNUC__
3788 #ifdef __VERSION__
3789         printf("%s\n", __VERSION__);
3790 #else
3791         printf("%s\n", "1");
3792 #endif
3793 #endif
3794         exit(0);
3795 }
3796 EOM
3797 if $cc -o try $ccflags $ldflags try.c; then
3798         gccversion=`$run ./try`
3799         case "$gccversion" in
3800         '') echo "You are not using GNU cc." ;;
3801         *)  echo "You are using GNU cc $gccversion."
3802             ccname=gcc  
3803             ;;
3804         esac
3805 else
3806         echo " "
3807         echo "*** WHOA THERE!!! ***" >&4
3808         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3809         case "$knowitall" in
3810         '')
3811         echo "    You'd better start hunting for one and let me know about it." >&4
3812                 exit 1
3813                 ;;
3814         esac
3815 fi
3816 $rm -f try try.*
3817 case "$gccversion" in
3818 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3819 esac
3820 case "$gccversion" in
3821 '') gccosandvers='' ;;
3822 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3823    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3824    gccshortvers=''
3825    case "$gccosandvers" in
3826    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3827    $osname$osvers) ;; # looking good
3828    $osname*) cat <<EOM >&4
3829
3830 *** WHOA THERE!!! ***
3831
3832     Your gcc has not been compiled for the exact release of
3833     your operating system ($gccosandvers versus $osname$osvers).
3834
3835     In general it is a good idea to keep gcc synchronized with
3836     the operating system because otherwise serious problems
3837     may ensue when trying to compile software, like Perl.
3838
3839     I'm trying to be optimistic here, though, and will continue.
3840     If later during the configuration and build icky compilation
3841     problems appear (headerfile conflicts being the most common
3842     manifestation), I suggest reinstalling the gcc to match
3843     your operating system release.
3844
3845 EOM
3846       ;;
3847    *) gccosandvers='' ;; # failed to parse, better be silent
3848    esac
3849    ;;
3850 esac
3851 case "$ccname" in
3852 '') ccname="$cc" ;;
3853 esac
3854
3855 # gcc 3.1 complains about adding -Idirectories that it already knows about,
3856 # so we will take those off from locincpth.
3857 case "$gccversion" in
3858 3*)
3859     echo "main(){}">try.c
3860     for incdir in `$cc -v -c try.c 2>&1 | \
3861        sed '1,/^#include <\.\.\.>/d;/^End of search list/,$d;s/^ //'` ; do
3862        locincpth=`echo $locincpth | sed s!$incdir!!`
3863     done
3864     $rm -f try try.*
3865 esac
3866
3867 : decide how portable to be.  Allow command line overrides.
3868 case "$d_portable" in
3869 "$undef") ;;
3870 *)      d_portable="$define" ;;
3871 esac
3872
3873 : set up shell script to do ~ expansion
3874 cat >filexp <<EOSS
3875 $startsh
3876 : expand filename
3877 case "\$1" in
3878  ~/*|~)
3879         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3880         ;;
3881  ~*)
3882         if $test -f /bin/csh; then
3883                 /bin/csh -f -c "glob \$1"
3884                 failed=\$?
3885                 echo ""
3886                 exit \$failed
3887         else
3888                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3889                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3890                 if $test ! -d "\$dir"; then
3891                         me=\`basename \$0\`
3892                         echo "\$me: can't locate home directory for: \$name" >&2
3893                         exit 1
3894                 fi
3895                 case "\$1" in
3896                 */*)
3897                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3898                         ;;
3899                 *)
3900                         echo \$dir
3901                         ;;
3902                 esac
3903         fi
3904         ;;
3905 *)
3906         echo \$1
3907         ;;
3908 esac
3909 EOSS
3910 chmod +x filexp
3911 $eunicefix filexp
3912
3913 : now set up to get a file name
3914 cat <<EOS >getfile
3915 $startsh
3916 EOS
3917 cat <<'EOSC' >>getfile
3918 tilde=''
3919 fullpath=''
3920 already=''
3921 skip=''
3922 none_ok=''
3923 exp_file=''
3924 nopath_ok=''
3925 orig_rp="$rp"
3926 orig_dflt="$dflt"
3927 case "$gfpth" in
3928 '') gfpth='.' ;;
3929 esac
3930
3931 case "$fn" in
3932 *\(*)
3933         : getfile will accept an answer from the comma-separated list
3934         : enclosed in parentheses even if it does not meet other criteria.
3935         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3936         fn=`echo $fn | sed 's/(.*)//'`
3937         ;;
3938 esac
3939
3940 case "$fn" in
3941 *:*)
3942         loc_file=`expr $fn : '.*:\(.*\)'`
3943         fn=`expr $fn : '\(.*\):.*'`
3944         ;;
3945 esac
3946
3947 case "$fn" in
3948 *~*) tilde=true;;
3949 esac
3950 case "$fn" in
3951 */*) fullpath=true;;
3952 esac
3953 case "$fn" in
3954 *+*) skip=true;;
3955 esac
3956 case "$fn" in
3957 *n*) none_ok=true;;
3958 esac
3959 case "$fn" in
3960 *e*) exp_file=true;;
3961 esac
3962 case "$fn" in
3963 *p*) nopath_ok=true;;
3964 esac
3965
3966 case "$fn" in
3967 *f*) type='File';;
3968 *d*) type='Directory';;
3969 *l*) type='Locate';;
3970 esac
3971
3972 what="$type"
3973 case "$what" in
3974 Locate) what='File';;
3975 esac
3976
3977 case "$exp_file" in
3978 '')
3979         case "$d_portable" in
3980         "$define") ;;
3981         *) exp_file=true;;
3982         esac
3983         ;;
3984 esac
3985
3986 cd ..
3987 while test "$type"; do
3988         redo=''
3989         rp="$orig_rp"
3990         dflt="$orig_dflt"
3991         case "$tilde" in
3992         true) rp="$rp (~name ok)";;
3993         esac
3994         . UU/myread
3995         if test -f UU/getfile.ok && \
3996                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3997         then
3998                 value="$ans"
3999                 ansexp="$ans"
4000                 break
4001         fi
4002         case "$ans" in
4003         none)
4004                 value=''
4005                 ansexp=''
4006                 case "$none_ok" in
4007                 true) type='';;
4008                 esac
4009                 ;;
4010         *)
4011                 case "$tilde" in
4012                 '') value="$ans"
4013                         ansexp="$ans";;
4014                 *)
4015                         value=`UU/filexp $ans`
4016                         case $? in
4017                         0)
4018                                 if test "$ans" != "$value"; then
4019                                         echo "(That expands to $value on this system.)"
4020                                 fi
4021                                 ;;
4022                         *) value="$ans";;
4023                         esac
4024                         ansexp="$value"
4025                         case "$exp_file" in
4026                         '') value="$ans";;
4027                         esac
4028                         ;;
4029                 esac
4030                 case "$fullpath" in
4031                 true)
4032                         case "$ansexp" in
4033                         /*) value="$ansexp" ;;
4034                         [a-zA-Z]:/*) value="$ansexp" ;;
4035                         *)
4036                                 redo=true
4037                                 case "$already" in
4038                                 true)
4039                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4040                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4041                                         ;;
4042                                 *)
4043                                 echo "Please give a full path name, starting with slash." >&4
4044                                         case "$tilde" in
4045                                         true)
4046                                 echo "Note that using ~name is ok provided it expands well." >&4
4047                                                 already=true
4048                                                 ;;
4049                                         esac
4050                                 esac
4051                                 ;;
4052                         esac
4053                         ;;
4054                 esac
4055                 case "$redo" in
4056                 '')
4057                         case "$type" in
4058                         File)
4059                                 for fp in $gfpth; do
4060                                         if test "X$fp" = X.; then
4061                                             pf="$ansexp"
4062                                         else    
4063                                             pf="$fp/$ansexp"
4064                                         fi
4065                                         if test -f "$pf"; then
4066                                                 type=''
4067                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4068                                         then
4069                                                 echo "($value is not a plain file, but that's ok.)"
4070                                                 type=''
4071                                         fi
4072                                         if test X"$type" = X; then
4073                                             value="$pf"
4074                                             break
4075                                         fi
4076                                 done
4077                                 ;;
4078                         Directory)
4079                                 for fp in $gfpth; do
4080                                         if test "X$fp" = X.; then
4081                                             dir="$ans"
4082                                             direxp="$ansexp"
4083                                         else    
4084                                             dir="$fp/$ansexp"
4085                                             direxp="$fp/$ansexp"
4086                                         fi
4087                                         if test -d "$direxp"; then
4088                                                 type=''
4089                                                 value="$dir"
4090                                                 break
4091                                         fi
4092                                 done
4093                                 ;;
4094                         Locate)
4095                                 if test -d "$ansexp"; then
4096                                         echo "(Looking for $loc_file in directory $value.)"
4097                                         value="$value/$loc_file"
4098                                         ansexp="$ansexp/$loc_file"
4099                                 fi
4100                                 if test -f "$ansexp"; then
4101                                         type=''
4102                                 fi
4103                                 case "$nopath_ok" in
4104                                 true)   case "$value" in
4105                                         */*) ;;
4106                                         *)      echo "Assuming $value will be in people's path."
4107                                                 type=''
4108                                                 ;;
4109                                         esac
4110                                         ;;
4111                                 esac
4112                                 ;;
4113                         esac
4114
4115                         case "$skip" in
4116                         true) type='';
4117                         esac
4118
4119                         case "$type" in
4120                         '') ;;
4121                         *)
4122                                 if test "$fastread" = yes; then
4123                                         dflt=y
4124                                 else
4125                                         dflt=n
4126                                 fi
4127                                 rp="$what $value doesn't exist.  Use that name anyway?"
4128                                 . UU/myread
4129                                 dflt=''
4130                                 case "$ans" in
4131                                 y*) type='';;
4132                                 *) echo " ";;
4133                                 esac
4134                                 ;;
4135                         esac
4136                         ;;
4137                 esac
4138                 ;;
4139         esac
4140 done
4141 cd UU
4142 ans="$value"
4143 rp="$orig_rp"
4144 dflt="$orig_dflt"
4145 rm -f getfile.ok
4146 test "X$gfpthkeep" != Xy && gfpth=""
4147 EOSC
4148
4149 : What should the include directory be ?
4150 echo " "
4151 $echo $n "Hmm...  $c"
4152 dflt='/usr/include'
4153 incpath=''
4154 mips_type=''
4155 if $test -f /bin/mips && /bin/mips; then
4156         echo "Looks like a MIPS system..."
4157         $cat >usr.c <<'EOCP'
4158 #ifdef SYSTYPE_BSD43
4159 /bsd43
4160 #endif
4161 EOCP
4162         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4163                 dflt='/bsd43/usr/include'
4164                 incpath='/bsd43'
4165                 mips_type='BSD 4.3'
4166         else
4167                 mips_type='System V'
4168         fi
4169         $rm -f usr.c usr.out
4170         echo "and you're compiling with the $mips_type compiler and libraries."
4171         xxx_prompt=y
4172         echo "exit 0" >mips
4173 else
4174         echo "Doesn't look like a MIPS system."
4175         xxx_prompt=n
4176         echo "exit 1" >mips
4177 fi
4178 chmod +x mips
4179 $eunicefix mips
4180 case "$usrinc" in
4181 '') ;;
4182 *) dflt="$usrinc";;
4183 esac
4184 case "$xxx_prompt" in
4185 y)      fn=d/
4186         echo " "
4187         rp='Where are the include files you want to use?'
4188         . ./getfile
4189         usrinc="$ans"
4190         ;;
4191 *)      usrinc="$dflt"
4192         ;;
4193 esac
4194
4195 : see how we invoke the C preprocessor
4196 echo " "
4197 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4198 cat <<'EOT' >testcpp.c
4199 #define ABC abc
4200 #define XYZ xyz
4201 ABC.XYZ
4202 EOT
4203 cd ..
4204 if test ! -f cppstdin; then
4205         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4206                 # AIX cc -E doesn't show the absolute headerfile
4207                 # locations but we'll cheat by using the -M flag.
4208                 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
4209         else
4210                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4211         fi
4212 else
4213         echo "Keeping your $hint cppstdin wrapper."
4214 fi
4215 chmod 755 cppstdin
4216 wrapper=`pwd`/cppstdin
4217 ok='false'
4218 cd UU
4219
4220 if $test "X$cppstdin" != "X" && \
4221         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4222         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4223 then
4224         echo "You used to use $cppstdin $cppminus so we'll use that again."
4225         case "$cpprun" in
4226         '') echo "But let's see if we can live without a wrapper..." ;;
4227         *)
4228                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4229                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4230                 then
4231                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4232                         ok='true'
4233                 else
4234                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4235                 fi
4236                 ;;
4237         esac
4238 else
4239         case "$cppstdin" in
4240         '') ;;
4241         *)
4242                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4243                 ;;
4244         esac
4245 fi
4246
4247 if $ok; then
4248         : nothing
4249 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4250         $cc -E <testcpp.c >testcpp.out 2>&1; \
4251         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4252         echo "Yup, it does."
4253         x_cpp="$cc -E"
4254         x_minus='';
4255 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4256         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4257         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4258         echo "Yup, it does."
4259         x_cpp="$cc -E"
4260         x_minus='-';
4261 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4262         $cc -P <testcpp.c >testcpp.out 2>&1; \
4263         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4264         echo "Yipee, that works!"
4265         x_cpp="$cc -P"
4266         x_minus='';
4267 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4268         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4269         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4270         echo "At long last!"
4271         x_cpp="$cc -P"
4272         x_minus='-';
4273 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4274         $cpp <testcpp.c >testcpp.out 2>&1; \
4275         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4276         echo "It works!"
4277         x_cpp="$cpp"
4278         x_minus='';
4279 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4280         $cpp - <testcpp.c >testcpp.out 2>&1; \
4281         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4282         echo "Hooray, it works!  I was beginning to wonder."
4283         x_cpp="$cpp"
4284         x_minus='-';
4285 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4286         $wrapper <testcpp.c >testcpp.out 2>&1; \
4287         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4288         x_cpp="$wrapper"
4289         x_minus=''
4290         echo "Eureka!"
4291 else
4292         dflt=''
4293         rp="No dice.  I can't find a C preprocessor.  Name one:"
4294         . ./myread
4295         x_cpp="$ans"
4296         x_minus=''
4297         $x_cpp <testcpp.c >testcpp.out 2>&1
4298         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4299                 echo "OK, that will do." >&4
4300         else
4301 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4302                 exit 1
4303         fi
4304 fi
4305
4306 case "$ok" in
4307 false)
4308         cppstdin="$x_cpp"
4309         cppminus="$x_minus"
4310         cpprun="$x_cpp"
4311         cpplast="$x_minus"
4312         set X $x_cpp
4313         shift
4314         case "$1" in
4315         "$cpp")
4316                 echo "Perhaps can we force $cc -E using a wrapper..."
4317                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4318                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4319                 then
4320                         echo "Yup, we can."
4321                         cppstdin="$wrapper"
4322                         cppminus='';
4323                 else
4324                         echo "Nope, we'll have to live without it..."
4325                 fi
4326                 ;;
4327         esac
4328         case "$cpprun" in
4329         "$wrapper")
4330                 cpprun=''
4331                 cpplast=''
4332                 ;;
4333         esac
4334         ;;
4335 esac
4336
4337 case "$cppstdin" in
4338 "$wrapper"|'cppstdin') ;;
4339 *) $rm -f $wrapper;;
4340 esac
4341 $rm -f testcpp.c testcpp.out
4342
4343 : Set private lib path
4344 case "$plibpth" in
4345 '') if ./mips; then
4346                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4347         fi;;
4348 esac
4349 case "$libpth" in
4350 ' ') dlist='';;
4351 '') dlist="$loclibpth $plibpth $glibpth";;
4352 *) dlist="$libpth";;
4353 esac
4354
4355 : Now check and see which directories actually exist, avoiding duplicates
4356 libpth=''
4357 for xxx in $dlist
4358 do
4359     if $test -d $xxx; then
4360                 case " $libpth " in
4361                 *" $xxx "*) ;;
4362                 *) libpth="$libpth $xxx";;
4363                 esac
4364     fi
4365 done
4366 $cat <<'EOM'
4367
4368 Some systems have incompatible or broken versions of libraries.  Among
4369 the directories listed in the question below, please remove any you
4370 know not to be holding relevant libraries, and add any that are needed.
4371 Say "none" for none.
4372
4373 EOM
4374 case "$libpth" in
4375 '') dflt='none';;
4376 *)
4377         set X $libpth
4378         shift
4379         dflt=${1+"$@"}
4380         ;;
4381 esac
4382 rp="Directories to use for library searches?"
4383 . ./myread
4384 case "$ans" in
4385 none) libpth=' ';;
4386 *) libpth="$ans";;
4387 esac
4388
4389 : compute shared library extension
4390 case "$so" in
4391 '')
4392         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4393                 dflt='sl'
4394         else
4395                 dflt='so'
4396         fi
4397         ;;
4398 *) dflt="$so";;
4399 esac
4400 $cat <<EOM
4401
4402 On some systems, shared libraries may be available.  Answer 'none' if
4403 you want to suppress searching of shared libraries for the remainder
4404 of this configuration.
4405
4406 EOM
4407 rp='What is the file extension used for shared libraries?'
4408 . ./myread
4409 so="$ans"
4410
4411 : Define several unixisms.
4412 : Hints files or command line option can be used to override them.
4413 : The convoluted testing is in case hints files set either the old
4414 : or the new name.
4415 case "$_exe" in
4416 '')     case "$exe_ext" in
4417         '')     ;;
4418         *)      _exe="$exe_ext" ;;
4419         esac
4420         ;;
4421 esac
4422 case "$_a" in
4423 '')     case "$lib_ext" in
4424     '') _a='.a';;
4425         *)      _a="$lib_ext" ;;
4426         esac
4427         ;;
4428 esac
4429 case "$_o" in
4430 '') case "$obj_ext" in
4431         '')     _o='.o';;
4432         *)      _o="$obj_ext";;
4433         esac
4434         ;;
4435 esac
4436 case "$p_" in
4437 '') case "$path_sep" in
4438         '')     p_=':';;
4439         *)      p_="$path_sep";;
4440         esac
4441         ;;
4442 esac
4443 exe_ext=$_exe
4444 lib_ext=$_a
4445 obj_ext=$_o
4446 path_sep=$p_
4447
4448 : Which makefile gets called first.  This is used by make depend.
4449 case "$firstmakefile" in
4450 '') firstmakefile='makefile';;
4451 esac
4452
4453 : Looking for optional libraries
4454 echo " "
4455 echo "Checking for optional libraries..." >&4
4456 case "$libs" in
4457 ' '|'') dflt='';;
4458 *) dflt="$libs";;
4459 esac
4460 case "$libswanted" in
4461 '') libswanted='c_s';;
4462 esac
4463 case "$usesocks" in
4464 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4465 esac
4466 libsfound=''
4467 libsfiles=''
4468 libsdirs=''
4469 libspath=''
4470 for thisdir in $libpth $xlibpth; do
4471   test -d $thisdir && libspath="$libspath $thisdir"
4472 done
4473 for thislib in $libswanted; do
4474         for thisdir in $libspath; do
4475             xxx=''
4476             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4477                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4478                 $test -f "$xxx" && eval $libscheck
4479                 $test -f "$xxx" && libstyle=shared
4480             fi
4481             if test ! -f "$xxx"; then
4482                 xxx=$thisdir/lib$thislib.$so
4483                 $test -f "$xxx" && eval $libscheck
4484                 $test -f "$xxx" && libstyle=shared
4485             fi  
4486             if test ! -f "$xxx"; then
4487                 xxx=$thisdir/lib$thislib$_a
4488                 $test -f "$xxx" && eval $libscheck
4489                 $test -f "$xxx" && libstyle=static
4490             fi
4491             if test ! -f "$xxx"; then
4492                 xxx=$thisdir/$thislib$_a
4493                 $test -f "$xxx" && eval $libscheck
4494                 $test -f "$xxx" && libstyle=static
4495             fi
4496             if test ! -f "$xxx"; then
4497                 xxx=$thisdir/lib${thislib}_s$_a
4498                 $test -f "$xxx" && eval $libscheck
4499                 $test -f "$xxx" && libstyle=static
4500                 $test -f "$xxx" && thislib=${thislib}_s
4501             fi
4502             if test ! -f "$xxx"; then
4503                 xxx=$thisdir/Slib$thislib$_a
4504                 $test -f "$xxx" && eval $libscheck
4505                 $test -f "$xxx" && libstyle=static
4506             fi
4507             if $test -f "$xxx"; then
4508                 case "$libstyle" in
4509                 shared) echo "Found -l$thislib (shared)." ;;
4510                 static) echo "Found -l$thislib." ;;
4511                 *)      echo "Found -l$thislib ($libstyle)." ;;
4512                 esac
4513                 case " $dflt " in
4514                 *"-l$thislib "*);;
4515                 *) dflt="$dflt -l$thislib"
4516                    libsfound="$libsfound $xxx"
4517                    yyy=`basename $xxx`
4518                    libsfiles="$libsfiles $yyy"
4519                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4520                    case " $libsdirs " in
4521                    *" $yyy "*) ;;
4522                    *) libsdirs="$libsdirs $yyy" ;;
4523                    esac
4524                    ;;
4525                 esac
4526                 break
4527             fi  
4528         done
4529         if $test ! -f "$xxx"; then
4530             echo "No -l$thislib."
4531         fi
4532 done
4533 set X $dflt
4534 shift
4535 dflt="$*"
4536 case "$libs" in
4537 '') dflt="$dflt";;
4538 *) dflt="$libs";;
4539 esac
4540 case "$dflt" in
4541 ' '|'') dflt='none';;
4542 esac
4543
4544 $cat <<EOM
4545
4546 In order to compile $package on your machine, a number of libraries
4547 are usually needed.  Include any other special libraries here as well.
4548 Say "none" for none.  The default list is almost always right.
4549 EOM
4550
4551 echo " "
4552 rp="What libraries to use?"
4553 . ./myread
4554 case "$ans" in
4555 none) libs=' ';;
4556 *) libs="$ans";;
4557 esac
4558
4559 : determine optimization, if desired, or use for debug flag also
4560 case "$optimize" in
4561 ' '|$undef) dflt='none';;
4562 '') dflt='-O';;
4563 *) dflt="$optimize";;
4564 esac
4565 $cat <<EOH
4566
4567 By default, $package compiles with the -O flag to use the optimizer.
4568 Alternately, you might want to use the symbolic debugger, which uses
4569 the -g flag (on traditional Unix systems).  Either flag can be
4570 specified here.  To use neither flag, specify the word "none".
4571
4572 EOH
4573 rp="What optimizer/debugger flag should be used?"
4574 . ./myread
4575 optimize="$ans"
4576 case "$optimize" in
4577 'none') optimize=" ";;
4578 esac
4579
4580 dflt=''
4581 : We will not override a previous value, but we might want to
4582 : augment a hint file
4583 case "$hint" in
4584 default|recommended)
4585         case "$gccversion" in
4586         1*) dflt='-fpcc-struct-return' ;;
4587         esac
4588         case "$optimize" in
4589         *-g*) dflt="$dflt -DDEBUGGING";;
4590         esac
4591         case "$gccversion" in
4592         2*) if test -d /etc/conf/kconfig.d &&
4593                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4594                 then
4595                         dflt="$dflt -posix"
4596                 fi
4597                 ;;
4598         esac
4599         case "$gccversion" in
4600         1*) ;;
4601         2.[0-8]*) ;;
4602         ?*)     echo " "
4603                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4604                 echo 'int main(void) { return 0; }' > gcctest.c
4605                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4606                         echo "Yes, it does." 2>&1
4607                         case "$ccflags" in
4608                         *strict-aliasing*) 
4609                                 echo "Leaving current flags $ccflags alone." 2>&1
4610                                 ;;
4611                         *) dflt="$dflt -fno-strict-aliasing" ;;
4612                         esac
4613                 else
4614                         echo "Nope, it doesn't, but that's ok." 2>&1
4615                 fi
4616                 ;;
4617         esac
4618         ;;
4619 esac
4620
4621 case "$mips_type" in
4622 *BSD*|'') inclwanted="$locincpth $usrinc";;
4623 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4624 esac
4625 for thisincl in $inclwanted; do
4626         if $test -d $thisincl; then
4627                 if $test x$thisincl != x$usrinc; then
4628                         case "$dflt" in
4629                         *" -I$thisincl "*);;
4630                         *) dflt="$dflt -I$thisincl ";;
4631                         esac
4632                 fi
4633         fi
4634 done
4635
4636 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4637         xxx=true;
4638 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4639         xxx=true;
4640 else
4641         xxx=false;
4642 fi;
4643 if $xxx; then
4644         case "$dflt" in
4645         *$2*);;
4646         *) dflt="$dflt -D$2";;
4647         esac;
4648 fi'
4649
4650 set signal.h LANGUAGE_C; eval $inctest
4651
4652 case "$usesocks" in
4653 $define)
4654         ccflags="$ccflags -DSOCKS"
4655         ;;
4656 esac
4657
4658 case "$hint" in
4659 default|recommended) dflt="$ccflags $dflt" ;;
4660 *) dflt="$ccflags";;
4661 esac
4662
4663 case "$dflt" in
4664 ''|' ') dflt=none;;
4665 esac
4666
4667 $cat <<EOH
4668
4669 Your C compiler may want other flags.  For this question you should include
4670 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4671 but you should NOT include libraries or ld flags like -lwhatever.  If you
4672 want $package to honor its debug switch, you should include -DDEBUGGING here.
4673 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4674
4675 To use no flags, specify the word "none".
4676
4677 EOH
4678 set X $dflt
4679 shift
4680 dflt=${1+"$@"}
4681 rp="Any additional cc flags?"
4682 . ./myread
4683 case "$ans" in
4684 none) ccflags='';;
4685 *) ccflags="$ans";;
4686 esac
4687
4688 : the following weeds options from ccflags that are of no interest to cpp
4689 case "$cppflags" in
4690 '') cppflags="$ccflags" ;;
4691 *)  cppflags="$cppflags $ccflags" ;;
4692 esac
4693 case "$gccversion" in
4694 1*) cppflags="$cppflags -D__GNUC__"
4695 esac
4696 case "$mips_type" in
4697 '');;
4698 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4699 esac
4700 case "$cppflags" in
4701 '');;
4702 *)
4703         echo " "
4704         echo "Let me guess what the preprocessor flags are..." >&4
4705         set X $cppflags
4706         shift
4707         cppflags=''
4708         $cat >cpp.c <<'EOM'
4709 #define BLURFL foo
4710
4711 BLURFL xx LFRULB
4712 EOM
4713         previous=''
4714         for flag in $*
4715         do
4716                 case "$flag" in
4717                 -*) ftry="$flag";;
4718                 *) ftry="$previous $flag";;
4719                 esac
4720                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4721                         >cpp1.out 2>/dev/null && \
4722                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4723                         >cpp2.out 2>/dev/null && \
4724                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4725                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4726                 then
4727                         cppflags="$cppflags $ftry"
4728                         previous=''
4729                 else
4730                         previous="$flag"
4731                 fi
4732         done
4733         set X $cppflags
4734         shift
4735         cppflags=${1+"$@"}
4736         case "$cppflags" in
4737         *-*)  echo "They appear to be: $cppflags";;
4738         esac
4739         $rm -f cpp.c cpp?.out
4740         ;;
4741 esac
4742
4743 : flags used in final linking phase
4744 case "$ldflags" in
4745 '') if ./venix; then
4746                 dflt='-i -z'
4747         else
4748                 dflt=''
4749         fi
4750         case "$ccflags" in
4751         *-posix*) dflt="$dflt -posix" ;;
4752         esac
4753         ;;
4754 *) dflt="$ldflags";;
4755 esac
4756
4757 : Try to guess additional flags to pick up local libraries.
4758 for thislibdir in $libpth; do
4759         case " $loclibpth " in
4760         *" $thislibdir "*)
4761                 case "$dflt " in 
4762                 *"-L$thislibdir "*) ;;
4763                 *)  dflt="$dflt -L$thislibdir" ;;
4764                 esac
4765                 ;;
4766         esac
4767 done
4768
4769 case "$dflt" in
4770 '') dflt='none' ;;
4771 esac
4772
4773 $cat <<EOH
4774
4775 Your C linker may need flags.  For this question you should
4776 include -L/whatever and any other flags used by the C linker, but you
4777 should NOT include libraries like -lwhatever.
4778
4779 Make sure you include the appropriate -L/path flags if your C linker
4780 does not normally search all of the directories you specified above,
4781 namely
4782         $libpth
4783 To use no flags, specify the word "none".
4784
4785 EOH
4786
4787 rp="Any additional ld flags (NOT including libraries)?"
4788 . ./myread
4789 case "$ans" in
4790 none) ldflags='';;
4791 *) ldflags="$ans";;
4792 esac
4793 rmlist="$rmlist pdp11"
4794
4795 : coherency check
4796 echo " "
4797 echo "Checking your choice of C compiler and flags for coherency..." >&4
4798 $cat > try.c <<'EOF'
4799 #include <stdio.h>
4800 int main() { printf("Ok\n"); exit(0); }
4801 EOF
4802 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4803 shift
4804 $cat >try.msg <<'EOM'
4805 I've tried to compile and run the following simple program:
4806
4807 EOM
4808 $cat try.c >> try.msg
4809
4810 $cat >> try.msg <<EOM
4811
4812 I used the command:
4813
4814         $*
4815         $run ./try
4816
4817 and I got the following output:
4818
4819 EOM
4820 dflt=y
4821 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4822         if $sh -c "$run ./try" >>try.msg 2>&1; then
4823                 xxx=`$run ./try`
4824                 case "$xxx" in
4825                 "Ok") dflt=n ;;
4826                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4827                         case " $libs " in
4828                         *" -lsfio "*)
4829                                 cat >> try.msg <<'EOQS'
4830 If $libs contains -lsfio, and sfio is mis-configured, then it
4831 sometimes (apparently) runs and exits with a 0 status, but with no
4832 output!  It may have to do with sfio's use of _exit vs. exit.
4833
4834 EOQS
4835                                 rp="You have a big problem.  Shall I abort Configure"
4836                                 dflt=y
4837                                 ;;
4838                         esac
4839                         ;;
4840                 esac
4841         else
4842                 echo "The program compiled OK, but exited with status $?." >>try.msg
4843                 rp="You have a problem.  Shall I abort Configure"
4844                 dflt=y
4845         fi
4846 else
4847         echo "I can't compile the test program." >>try.msg
4848         rp="You have a BIG problem.  Shall I abort Configure"
4849         dflt=y
4850 fi
4851 case "$dflt" in
4852 y)
4853         $cat try.msg >&4
4854         case "$knowitall" in
4855         '')
4856                 echo "(The supplied flags or libraries might be incorrect.)"
4857                 ;;
4858         *) dflt=n;;
4859         esac
4860         echo " "
4861         . ./myread
4862         case "$ans" in
4863         n*|N*) ;;
4864         *)      echo "Ok.  Stopping Configure." >&4
4865                 exit 1
4866                 ;;
4867         esac
4868         ;;
4869 n) echo "OK, that should do.";;
4870 esac
4871 $rm -f try try.* core
4872
4873 : define a shorthand compile call
4874 compile='
4875 mc_file=$1;
4876 shift;
4877 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4878 : define a shorthand compile call for compilations that should be ok.
4879 compile_ok='
4880 mc_file=$1;
4881 shift;
4882 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4883
4884 : check for lengths of integral types
4885 echo " "
4886 case "$intsize" in
4887 '')
4888         echo "Checking to see how big your integers are..." >&4
4889         $cat >try.c <<'EOCP'
4890 #include <stdio.h>
4891 int main()
4892 {
4893         printf("intsize=%d;\n", (int)sizeof(int));
4894         printf("longsize=%d;\n", (int)sizeof(long));
4895         printf("shortsize=%d;\n", (int)sizeof(short));
4896         exit(0);
4897 }
4898 EOCP
4899         set try
4900         if eval $compile_ok && $run ./try > /dev/null; then
4901                 eval `$run ./try`
4902                 echo "Your integers are $intsize bytes long."
4903                 echo "Your long integers are $longsize bytes long."
4904                 echo "Your short integers are $shortsize bytes long."
4905         else
4906                 $cat >&4 <<EOM
4907 !
4908 Help! I can't compile and run the intsize test program: please enlighten me!
4909 (This is probably a misconfiguration in your system or libraries, and
4910 you really ought to fix it.  Still, I'll try anyway.)
4911 !
4912 EOM
4913                 dflt=4
4914                 rp="What is the size of an integer (in bytes)?"
4915                 . ./myread
4916                 intsize="$ans"
4917                 dflt=$intsize
4918                 rp="What is the size of a long integer (in bytes)?"
4919                 . ./myread
4920                 longsize="$ans"
4921                 dflt=2
4922                 rp="What is the size of a short integer (in bytes)?"
4923                 . ./myread
4924                 shortsize="$ans"
4925         fi
4926         ;;
4927 esac
4928 $rm -f try try.*
4929
4930 : check for long long
4931 echo " "
4932 echo "Checking to see if you have long long..." >&4
4933 echo 'int main() { long long x = 7; return 0; }' > try.c
4934 set try
4935 if eval $compile; then
4936         val="$define"
4937         echo "You have long long."
4938 else
4939         val="$undef"
4940         echo "You do not have long long."
4941 fi
4942 $rm try.*
4943 set d_longlong
4944 eval $setvar
4945
4946 : check for length of long long
4947 case "${d_longlong}${longlongsize}" in
4948 $define)
4949         echo " "
4950         echo "Checking to see how big your long longs are..." >&4
4951         $cat >try.c <<'EOCP'
4952 #include <stdio.h>
4953 int main()
4954 {
4955     printf("%d\n", (int)sizeof(long long));
4956     return(0);
4957 }
4958 EOCP
4959         set try
4960         if eval $compile_ok; then
4961                 longlongsize=`$run ./try`
4962                 echo "Your long longs are $longlongsize bytes long."
4963         else
4964                 dflt='8'
4965                 echo " "
4966                 echo "(I can't seem to compile the test program.  Guessing...)"
4967                 rp="What is the size of a long long (in bytes)?"
4968                 . ./myread
4969                 longlongsize="$ans"
4970         fi
4971         if $test "X$longsize" = "X$longlongsize"; then
4972                 echo "(That isn't any different from an ordinary long.)"
4973         fi      
4974         ;;
4975 esac
4976 $rm -f try.* try
4977
4978 : determine filename position in cpp output
4979 echo " "
4980 echo "Computing filename position in cpp output for #include directives..." >&4
4981 case "$osname" in
4982 vos) testaccess=-e ;;
4983 *)   testaccess=-r ;;
4984 esac
4985 echo '#include <stdio.h>' > foo.c
4986 $cat >fieldn <<EOF
4987 $startsh
4988 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4989 $grep '^[       ]*#.*stdio\.h' | \
4990 while read cline; do
4991         pos=1
4992         set \$cline
4993         while $test \$# -gt 0; do
4994                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
4995                         echo "\$pos"
4996                         exit 0
4997                 fi
4998                 shift
4999                 pos=\`expr \$pos + 1\`
5000         done
5001 done
5002 EOF
5003 chmod +x fieldn
5004 fieldn=`./fieldn`
5005 $rm -f foo.c fieldn
5006 case $fieldn in
5007 '') pos='???';;
5008 1) pos=first;;
5009 2) pos=second;;
5010 3) pos=third;;
5011 *) pos="${fieldn}th";;
5012 esac
5013 echo "Your cpp writes the filename in the $pos field of the line."
5014
5015 case "$osname" in
5016 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5017 *)   cppfilter='' ;;
5018 esac
5019 : locate header file
5020 $cat >findhdr <<EOF
5021 $startsh
5022 wanted=\$1
5023 name=''
5024 for usrincdir in $usrinc
5025 do
5026         if test -f \$usrincdir/\$wanted; then
5027                 echo "\$usrincdir/\$wanted"
5028                 exit 0
5029         fi
5030 done
5031 awkprg='{ print \$$fieldn }'
5032 echo "#include <\$wanted>" > foo\$\$.c
5033 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5034 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5035 while read cline; do
5036         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5037         case "\$name" in
5038         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5039         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5040         *) exit 2;;
5041         esac;
5042 done;
5043 #
5044 # status = 0: grep returned 0 lines, case statement not executed
5045 # status = 1: headerfile found
5046 # status = 2: while loop executed, no headerfile found
5047 #
5048 status=\$?
5049 $rm -f foo\$\$.c;
5050 if test \$status -eq 1; then
5051         exit 0;
5052 fi
5053 exit 1
5054 EOF
5055 chmod +x findhdr
5056
5057 : define an alternate in-header-list? function
5058 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5059 cont=true; xxf="echo \"<\$1> found.\" >&4";
5060 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5061 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5062 esac;
5063 case $# in 4) instead=instead;; *) instead="at last";; esac;
5064 while $test "$cont"; do
5065         xxx=`./findhdr $1`
5066         var=$2; eval "was=\$$2";
5067         if $test "$xxx" && $test -r "$xxx";
5068         then eval $xxf;
5069         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5070                 cont="";
5071         else eval $xxnf;
5072         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5073         set $yyy; shift; shift; yyy=$@;
5074         case $# in 0) cont="";;
5075         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5076                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5077         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5078                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5079         esac;
5080 done;
5081 while $test "$yyy";
5082 do set $yyy; var=$2; eval "was=\$$2";
5083         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5084         set $yyy; shift; shift; yyy=$@;
5085 done'
5086
5087 : see if inttypes.h is available
5088 : we want a real compile instead of Inhdr because some systems
5089 : have an inttypes.h which includes non-existent headers
5090 echo " "
5091 $cat >try.c <<EOCP
5092 #include <inttypes.h>
5093 int main() {
5094         static int32_t foo32 = 0x12345678;
5095 }
5096 EOCP
5097 set try
5098 if eval $compile; then
5099         echo "<inttypes.h> found." >&4
5100         val="$define"
5101 else
5102         echo "<inttypes.h> NOT found." >&4
5103         val="$undef"
5104 fi
5105 $rm -f try.c try
5106 set i_inttypes
5107 eval $setvar
5108
5109 : check for int64_t
5110 echo " "
5111 echo "Checking to see if you have int64_t..." >&4
5112 $cat >try.c <<EOCP
5113 #include <sys/types.h>
5114 #$i_inttypes I_INTTYPES
5115 #ifdef I_INTTYPES
5116 #include <inttypes.h>
5117 #endif
5118 int main() { int64_t x = 7; }
5119 EOCP
5120 set try
5121 if eval $compile; then
5122         val="$define"
5123         echo "You have int64_t."
5124 else
5125         val="$undef"
5126         echo "You do not have int64_t."
5127 fi
5128 $rm -f try try.*
5129 set d_int64_t
5130 eval $setvar
5131
5132
5133 echo " "
5134 echo "Checking which 64-bit integer type we could use..." >&4
5135
5136 case "$intsize" in
5137 8) val=int
5138    set quadtype
5139    eval $setvar
5140    val='"unsigned int"'
5141    set uquadtype
5142    eval $setvar
5143    quadkind=1
5144    ;;
5145 *) case "$longsize" in
5146    8) val=long
5147       set quadtype
5148       eval $setvar
5149       val='"unsigned long"'
5150       set uquadtype
5151       eval $setvar
5152       quadkind=2
5153       ;;
5154    *) case "$d_longlong:$longlongsize" in
5155       define:8)
5156         val='"long long"'
5157         set quadtype
5158         eval $setvar
5159         val='"unsigned long long"'
5160         set uquadtype
5161         eval $setvar
5162         quadkind=3
5163         ;;
5164       *) case "$d_int64_t" in
5165          define)
5166            val=int64_t
5167            set quadtype
5168            eval $setvar
5169            val=uint64_t
5170            set uquadtype
5171            eval $setvar
5172            quadkind=4
5173            ;;
5174          esac
5175          ;;
5176       esac
5177       ;;
5178    esac
5179    ;;
5180 esac
5181
5182 case "$quadtype" in
5183 '')     echo "Alas, no 64-bit integer types in sight." >&4
5184         d_quad="$undef"
5185         ;;
5186 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5187         d_quad="$define"
5188         ;;
5189 esac
5190
5191
5192 case "$uselonglong" in
5193 "$define"|true|[yY]*)
5194         cat <<EOM >&4
5195
5196 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5197 EOM
5198         use64bitint="$define"
5199         ;;
5200 esac                          
5201 case "$use64bits" in
5202 "$define"|true|[yY]*)
5203         cat <<EOM >&4
5204
5205 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5206 EOM
5207         use64bitint="$define"
5208         ;;
5209 esac                          
5210 case "$use64bitints" in
5211 "$define"|true|[yY]*)
5212         cat <<EOM >&4
5213
5214 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5215 EOM
5216         use64bitint="$define"
5217         ;;
5218 esac                          
5219 case "$use64bitsint" in
5220 "$define"|true|[yY]*)
5221         cat <<EOM >&4
5222
5223 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5224 EOM
5225         use64bitint="$define"
5226         ;;
5227 esac                          
5228 case "$uselonglongs" in
5229 "$define"|true|[yY]*)
5230         cat <<EOM >&4
5231
5232 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5233 EOM
5234         use64bitint="$define"
5235         ;;
5236 esac                          
5237 case "$use64bitsall" in
5238 "$define"|true|[yY]*)
5239         cat <<EOM >&4
5240
5241 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5242 EOM
5243         use64bitall="$define"
5244         ;;
5245 esac                          
5246
5247 case "$ccflags" in
5248 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5249 esac
5250 case "$use64bitall" in
5251 "$define"|true|[yY]*) use64bitint="$define" ;;
5252 esac
5253
5254 case "$longsize" in
5255 8) cat <<EOM
5256
5257 You have natively 64-bit long integers.
5258 EOM
5259    val="$define"
5260    ;;
5261 *) case "$use64bitint" in
5262    "$define"|true|[yY]*) dflt='y';;
5263    *) dflt='n';;
5264    esac
5265    case "$d_quad" in
5266    "$define") ;;
5267    *) dflt='n' ;;
5268    esac
5269    cat <<EOM
5270
5271 Perl can be built to take advantage of 64-bit integer types
5272 on some systems.  To do so, Configure can be run with -Duse64bitint.
5273 Choosing this option will most probably introduce binary incompatibilities.
5274
5275 If this doesn't make any sense to you, just accept the default '$dflt'.
5276 (The default has been chosen based on your configuration.)
5277 EOM
5278    rp='Try to use 64-bit integers, if available?'
5279    . ./myread
5280    case "$ans" in
5281    [yY]*) val="$define" ;;
5282    *)     val="$undef"  ;;
5283    esac
5284    ;;
5285 esac
5286 set use64bitint
5287 eval $setvar
5288
5289 case "$use64bitall" in
5290 "$define"|true|[yY]*) dflt='y' ;;
5291 *) case "$longsize" in
5292    8) dflt='y' ;;
5293    *) dflt='n' ;;
5294    esac
5295    ;;
5296 esac    
5297 cat <<EOM
5298
5299 You may also choose to try maximal 64-bitness.  It means using as much
5300 64-bitness as possible on the platform.  This in turn means even more
5301 binary incompatibilities.  On the other hand, your platform may not
5302 have any more 64-bitness available than what you already have chosen.
5303
5304 If this doesn't make any sense to you, just accept the default '$dflt'.
5305 (The default has been chosen based on your configuration.)
5306 EOM
5307 rp='Try to use maximal 64-bit support, if available?'
5308 . ./myread
5309 case "$ans" in
5310 [yY]*) val="$define" ;;
5311 *)     val="$undef"  ;;
5312 esac
5313 set use64bitall
5314 eval $setvar
5315 case "$use64bitall" in
5316 "$define")
5317         case "$use64bitint" in
5318         "$undef")
5319                 cat <<EOM
5320
5321 Since you have chosen a maximally 64-bit build, I'm also turning on
5322 the use of 64-bit integers.
5323 EOM
5324                 use64bitint="$define" ;;
5325         esac
5326         ;;
5327 esac
5328
5329 case "$use64bitint" in
5330 "$define"|true|[yY]*)
5331 : Look for a hint-file generated 'call-back-unit'.  If the
5332 : user has specified that a 64-bit perl is to be built,
5333 : we may need to set or change some other defaults.
5334         if $test -f use64bitint.cbu; then
5335                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5336                 . ./use64bitint.cbu
5337         fi
5338         case "$longsize" in
5339         4) case "$archname64" in
5340            '') archname64=64int ;;
5341            esac
5342            ;;
5343         esac
5344         ;;
5345 esac
5346
5347 case "$use64bitall" in
5348 "$define"|true|[yY]*)
5349 : Look for a hint-file generated 'call-back-unit'.  If the
5350 : user has specified that a maximally 64-bit perl is to be built,
5351 : we may need to set or change some other defaults.
5352         if $test -f use64bitall.cbu; then
5353                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5354                 . ./use64bitall.cbu
5355         fi
5356         case "$longsize" in
5357         4) case "$archname64" in
5358            ''|64int) archname64=64all ;;
5359            esac
5360            ;;
5361         esac
5362         ;;
5363 esac
5364
5365 echo " "
5366 echo "Checking for GNU C Library..." >&4
5367 cat >try.c <<'EOCP'
5368 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
5369    alone are insufficient to distinguish different versions, such as
5370    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
5371    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
5372 */
5373 #include <stdio.h>
5374 int main(void)
5375 {
5376 #ifdef __GLIBC__
5377 #   ifdef __GLIBC_MINOR__
5378 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
5379 #           include <gnu/libc-version.h>
5380             printf("%s\n",  gnu_get_libc_version());
5381 #       else
5382             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
5383 #       endif
5384 #   else
5385         printf("%d\n",  __GLIBC__);
5386 #   endif
5387     return 0;
5388 #else
5389     return 1;
5390 #endif
5391 }
5392 EOCP
5393 set try
5394 if eval $compile_ok && $run ./try > glibc.ver; then
5395         val="$define"
5396         gnulibc_version=`$cat glibc.ver`
5397         echo "You are using the GNU C Library version $gnulibc_version"
5398 else
5399         val="$undef"
5400         gnulibc_version=''
5401         echo "You are not using the GNU C Library"
5402 fi
5403 $rm -f try try.* glibc.ver
5404 set d_gnulibc
5405 eval $setvar
5406
5407 : see if nm is to be used to determine whether a symbol is defined or not
5408 case "$usenm" in
5409 '')
5410         dflt=''
5411         case "$d_gnulibc" in
5412         "$define")
5413                 echo " "
5414                 echo "nm probably won't work on the GNU C Library." >&4
5415                 dflt=n
5416                 ;;
5417         esac
5418         case "$dflt" in
5419         '') 
5420                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5421                         echo " "
5422                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5423                         echo "'nm' won't be sufficient on this sytem." >&4
5424                         dflt=n
5425                 fi
5426                 ;;
5427         esac
5428         case "$dflt" in
5429         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5430                 if $test $dflt -gt 20; then
5431                         dflt=y
5432                 else
5433                         dflt=n
5434                 fi
5435                 ;;
5436         esac
5437         ;;
5438 *)
5439         case "$usenm" in
5440         true|$define) dflt=y;;
5441         *) dflt=n;;
5442         esac
5443         ;;
5444 esac
5445 $cat <<EOM
5446
5447 I can use $nm to extract the symbols from your C libraries. This
5448 is a time consuming task which may generate huge output on the disk (up
5449 to 3 megabytes) but that should make the symbols extraction faster. The
5450 alternative is to skip the 'nm' extraction part and to compile a small
5451 test program instead to determine whether each symbol is present. If
5452 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5453 this may be the best solution.
5454
5455 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5456
5457 EOM
5458 rp="Shall I use $nm to extract C symbols from the libraries?"
5459 . ./myread
5460 case "$ans" in
5461 [Nn]*) usenm=false;;
5462 *) usenm=true;;
5463 esac
5464
5465 runnm=$usenm
5466 case "$reuseval" in
5467 true) runnm=false;;
5468 esac
5469
5470 : nm options which may be necessary
5471 case "$nm_opt" in
5472 '') if $test -f /mach_boot; then
5473                 nm_opt=''       # Mach
5474         elif $test -d /usr/ccs/lib; then
5475                 nm_opt='-p'     # Solaris (and SunOS?)
5476         elif $test -f /dgux; then
5477                 nm_opt='-p'     # DG-UX
5478         elif $test -f /lib64/rld; then
5479                 nm_opt='-p'     # 64-bit Irix
5480         else
5481                 nm_opt=''
5482         fi;;
5483 esac
5484
5485 : nm options which may be necessary for shared libraries but illegal
5486 : for archive libraries.  Thank you, Linux.
5487 case "$nm_so_opt" in
5488 '')     case "$myuname" in
5489         *linux*)
5490                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5491                         nm_so_opt='--dynamic'
5492                 fi
5493                 ;;
5494         esac
5495         ;;
5496 esac
5497
5498 case "$runnm" in
5499 true)
5500 : get list of predefined functions in a handy place
5501 echo " "
5502 case "$libc" in
5503 '') libc=unknown
5504         case "$libs" in
5505         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5506         esac
5507         ;;
5508 esac
5509 case "$libs" in
5510 '') ;;
5511 *)  for thislib in $libs; do
5512         case "$thislib" in
5513         -lc|-lc_s)
5514                 : Handle C library specially below.
5515                 ;;
5516         -l*)
5517                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5518                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5519                         :
5520                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5521                         :
5522                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5523                         :
5524                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5525                         :
5526                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5527                         :
5528                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5529                         :
5530                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5531                         :
5532                 else
5533                         try=''
5534                 fi
5535                 libnames="$libnames $try"
5536                 ;;
5537         *) libnames="$libnames $thislib" ;;
5538         esac
5539         done
5540         ;;
5541 esac
5542 xxx=normal
5543 case "$libc" in
5544 unknown)
5545         set /lib/libc.$so
5546         for xxx in $libpth; do
5547                 $test -r $1 || set $xxx/libc.$so
5548                 : The messy sed command sorts on library version numbers.
5549                 $test -r $1 || \
5550                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5551                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5552                                 h
5553                                 s/[0-9][0-9]*/0000&/g
5554                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5555                                 G
5556                                 s/\n/ /' | \
5557                          $sort | $sed -e 's/^.* //'`
5558                 eval set \$$#
5559         done
5560         $test -r $1 || set /usr/ccs/lib/libc.$so
5561         $test -r $1 || set /lib/libsys_s$_a
5562         ;;
5563 *)
5564         set blurfl
5565         ;;
5566 esac
5567 if $test -r "$1"; then
5568         echo "Your (shared) C library seems to be in $1."
5569         libc="$1"
5570 elif $test -r /lib/libc && $test -r /lib/clib; then
5571         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5572         xxx=apollo
5573         libc='/lib/clib /lib/libc'
5574         if $test -r /lib/syslib; then
5575                 echo "(Your math library is in /lib/syslib.)"
5576                 libc="$libc /lib/syslib"
5577         fi
5578 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5579         echo "Your C library seems to be in $libc, as you said before."
5580 elif $test -r $incpath/usr/lib/libc$_a; then
5581         libc=$incpath/usr/lib/libc$_a;
5582         echo "Your C library seems to be in $libc.  That's fine."
5583 elif $test -r /lib/libc$_a; then
5584         libc=/lib/libc$_a;
5585         echo "Your C library seems to be in $libc.  You're normal."
5586 else
5587         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5588                 :
5589         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5590                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5591         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5592                 :
5593         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5594                 :
5595         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5596                 :
5597         else
5598                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5599         fi
5600         if $test -r "$tans"; then
5601                 echo "Your C library seems to be in $tans, of all places."
5602                 libc=$tans
5603         else
5604                 libc='blurfl'
5605         fi
5606 fi
5607 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5608         dflt="$libc"
5609         cat <<EOM
5610
5611 If the guess above is wrong (which it might be if you're using a strange
5612 compiler, or your machine supports multiple models), you can override it here.
5613
5614 EOM
5615 else
5616         dflt=''
5617         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5618         cat >&4 <<EOM
5619 I can't seem to find your C library.  I've looked in the following places:
5620
5621 EOM
5622         $sed 's/^/      /' libpath
5623         cat <<EOM
5624
5625 None of these seems to contain your C library. I need to get its name...
5626
5627 EOM
5628 fi
5629 fn=f
5630 rp='Where is your C library?'
5631 . ./getfile
5632 libc="$ans"
5633
5634 echo " "
5635 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5636 set X `cat libnames`
5637 shift
5638 xxx=files
5639 case $# in 1) xxx=file; esac
5640 echo "Extracting names from the following $xxx for later perusal:" >&4
5641 echo " "
5642 $sed 's/^/      /' libnames >&4
5643 echo " "
5644 $echo $n "This may take a while...$c" >&4
5645
5646 for file in $*; do
5647         case $file in
5648         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5649         *) $nm $nm_opt $file 2>/dev/null;;
5650         esac
5651 done >libc.tmp
5652
5653 $echo $n ".$c"
5654 $grep fprintf libc.tmp > libc.ptf
5655 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5656 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
5657 xxx='[ADTSIW]'
5658 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5659         eval $xscan;\
5660         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5661                 eval $xrun
5662 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5663         eval $xscan;\
5664         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5665                 eval $xrun
5666 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5667         eval $xscan;\
5668         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5669                 eval $xrun
5670 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5671         eval $xscan;\
5672         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5673                 eval $xrun
5674 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5675         eval $xscan;\
5676         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5677                 eval $xrun
5678 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5679         eval $xscan;\
5680         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5681                 eval $xrun
5682 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5683                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5684         eval $xscan;\
5685         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5686                 eval $xrun
5687 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5688         eval $xscan;\
5689         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5690                 eval $xrun
5691 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5692         eval $xscan;\
5693         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5694                 eval $xrun
5695 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5696         eval $xscan;\
5697         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5698                 eval $xrun
5699 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5700         eval $xscan;\
5701         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5702                 eval $xrun
5703 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\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/.*\.text n\ \ \ \.//p'";\
5708         eval $xscan;\
5709         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5710                 eval $xrun
5711 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5712         eval $xscan;\
5713         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5714                 eval $xrun
5715 else
5716         $nm -p $* 2>/dev/null >libc.tmp
5717         $grep fprintf libc.tmp > libc.ptf
5718         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5719                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5720         then
5721                 nm_opt='-p'
5722                 eval $xrun
5723         else
5724                 echo " "
5725                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5726                 com=''
5727                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5728                         for thisname in $libnames $libc; do
5729                                 $ar t $thisname >>libc.tmp
5730                         done
5731                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5732                         echo "Ok." >&4
5733                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5734                         # Repeat libc to extract forwarders to DLL entries too
5735                         for thisname in $libnames $libc; do
5736                                 $ar tv $thisname >>libc.tmp
5737                                 # Revision 50 of EMX has bug in $ar.
5738                                 # it will not extract forwarders to DLL entries
5739                                 # Use emximp which will extract exactly them.
5740                                 emximp -o tmp.imp $thisname \
5741                                     2>/dev/null && \
5742                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5743                                     < tmp.imp >>libc.tmp
5744                                 $rm tmp.imp
5745                         done
5746                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5747                         echo "Ok." >&4
5748                 else
5749                         echo "$ar didn't seem to work right." >&4
5750                         echo "Maybe this is a Cray...trying bld instead..." >&4
5751                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5752                         then
5753                                 for thisname in $libnames; do
5754                                         bld t $libnames | \
5755                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5756                                         $ar t $thisname >>libc.tmp
5757                                 done
5758                                 echo "Ok." >&4
5759                         else
5760                                 echo "That didn't work either.  Giving up." >&4
5761                                 exit 1
5762                         fi
5763                 fi
5764         fi
5765 fi
5766 nm_extract="$com"
5767 if $test -f /lib/syscalls.exp; then
5768         echo " "
5769         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5770         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5771 fi
5772 ;;
5773 esac
5774 $rm -f libnames libpath
5775
5776 : is a C symbol defined?
5777 csym='tlook=$1;
5778 case "$3" in
5779 -v) tf=libc.tmp; tc=""; tdc="";;
5780 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5781 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5782 esac;
5783 tx=yes;
5784 case "$reuseval-$4" in
5785 true-) ;;
5786 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5787 esac;
5788 case "$tx" in
5789 yes)
5790         case "$runnm" in
5791         true)
5792                 if $contains $tlook $tf >/dev/null 2>&1;
5793                 then tval=true;
5794                 else tval=false;
5795                 fi;;
5796         *)
5797                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5798                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5799                 then tval=true;
5800                 else tval=false;
5801                 fi;
5802                 $rm -f t t.c;;
5803         esac;;
5804 *)
5805         case "$tval" in
5806         $define) tval=true;;
5807         *) tval=false;;
5808         esac;;
5809 esac;
5810 eval "$2=$tval"'
5811
5812 : define an is-in-libc? function
5813 inlibc='echo " "; td=$define; tu=$undef;
5814 sym=$1; var=$2; eval "was=\$$2";
5815 tx=yes;
5816 case "$reuseval$was" in
5817 true) ;;
5818 true*) tx=no;;
5819 esac;
5820 case "$tx" in
5821 yes)
5822         set $sym tres -f;
5823         eval $csym;
5824         case "$tres" in
5825         true)
5826                 echo "$sym() found." >&4;
5827                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5828         *)
5829                 echo "$sym() NOT found." >&4;
5830                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5831         esac;;
5832 *)
5833         case "$was" in
5834         $define) echo "$sym() found." >&4;;
5835         *) echo "$sym() NOT found." >&4;;
5836         esac;;
5837 esac'
5838
5839 : see if sqrtl exists
5840 set sqrtl d_sqrtl
5841 eval $inlibc
5842
5843 : check for length of double
5844 echo " "
5845 case "$doublesize" in
5846 '')
5847         echo "Checking to see how big your double precision numbers are..." >&4
5848         $cat >try.c <<'EOCP'
5849 #include <stdio.h>
5850 int main()
5851 {
5852     printf("%d\n", (int)sizeof(double));
5853     exit(0);
5854 }
5855 EOCP
5856         set try
5857         if eval $compile_ok; then
5858                 doublesize=`$run ./try`
5859                 echo "Your double is $doublesize bytes long."
5860         else
5861                 dflt='8'
5862                 echo "(I can't seem to compile the test program.  Guessing...)"
5863                 rp="What is the size of a double precision number (in bytes)?"
5864                 . ./myread
5865                 doublesize="$ans"
5866         fi
5867         ;;
5868 esac
5869 $rm -f try.c try
5870
5871 : check for long doubles
5872 echo " "
5873 echo "Checking to see if you have long double..." >&4
5874 echo 'int main() { long double x = 7.0; }' > try.c
5875 set try
5876 if eval $compile; then
5877         val="$define"
5878         echo "You have long double."
5879 else
5880         val="$undef"
5881         echo "You do not have long double."
5882 fi
5883 $rm try.*
5884 set d_longdbl
5885 eval $setvar
5886
5887 : check for length of long double
5888 case "${d_longdbl}${longdblsize}" in
5889 $define)
5890         echo " "
5891         echo "Checking to see how big your long doubles are..." >&4
5892         $cat >try.c <<'EOCP'
5893 #include <stdio.h>
5894 int main()
5895 {
5896         printf("%d\n", sizeof(long double));
5897 }
5898 EOCP
5899         set try
5900         set try
5901         if eval $compile; then
5902                 longdblsize=`$run ./try`
5903                 echo "Your long doubles are $longdblsize bytes long."
5904         else
5905                 dflt='8'
5906                 echo " "
5907                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5908                 rp="What is the size of a long double (in bytes)?"
5909                 . ./myread
5910                 longdblsize="$ans"
5911         fi
5912         if $test "X$doublesize" = "X$longdblsize"; then
5913                 echo "(That isn't any different from an ordinary double.)"
5914         fi      
5915         ;;
5916 esac
5917 $rm -f try.* try
5918
5919 echo " "
5920
5921 if $test X"$d_longdbl" = X"$define"; then
5922
5923 echo "Checking how to print long doubles..." >&4
5924
5925 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5926         $cat >try.c <<'EOCP'
5927 #include <sys/types.h>
5928 #include <stdio.h>
5929 int main() {
5930   double d = 123.456;
5931   printf("%.3f\n", d);
5932 }
5933 EOCP
5934         set try
5935         if eval $compile; then
5936                 yyy=`$run ./try`
5937                 case "$yyy" in
5938                 123.456)
5939                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5940                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5941                         echo "We will use %f."
5942                         ;;
5943                 esac
5944         fi
5945 fi
5946
5947 if $test X"$sPRIfldbl" = X; then
5948         $cat >try.c <<'EOCP'
5949 #include <sys/types.h>
5950 #include <stdio.h>
5951 int main() {
5952   long double d = 123.456;
5953   printf("%.3Lf\n", d);
5954 }
5955 EOCP
5956         set try
5957         if eval $compile; then
5958                 yyy=`$run ./try`
5959                 case "$yyy" in
5960                 123.456)
5961                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
5962                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
5963                         echo "We will use %Lf."
5964                         ;;
5965                 esac
5966         fi
5967 fi
5968
5969 if $test X"$sPRIfldbl" = X; then
5970         $cat >try.c <<'EOCP'
5971 #include <sys/types.h>
5972 #include <stdio.h>
5973 int main() {
5974   long double d = 123.456;
5975   printf("%.3llf\n", d);
5976 }
5977 EOCP
5978         set try
5979         if eval $compile; then
5980                 yyy=`$run ./try`
5981                 case "$yyy" in
5982                 123.456)
5983                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
5984                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
5985                         echo "We will use %llf."
5986                         ;;
5987                 esac
5988         fi
5989 fi
5990
5991 if $test X"$sPRIfldbl" = X; then
5992         $cat >try.c <<'EOCP'
5993 #include <sys/types.h>
5994 #include <stdio.h>
5995 int main() {
5996   long double d = 123.456;
5997   printf("%.3lf\n", d);
5998 }
5999 EOCP
6000         set try
6001         if eval $compile; then
6002                 yyy=`$run ./try`
6003                 case "$yyy" in
6004                 123.456)
6005                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
6006                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
6007                         echo "We will use %lf."
6008                         ;;
6009                 esac
6010         fi
6011 fi
6012
6013 if $test X"$sPRIfldbl" = X; then
6014         echo "Cannot figure out how to print long doubles." >&4
6015 else
6016         sSCNfldbl=$sPRIfldbl    # expect consistency
6017 fi
6018
6019 $rm -f try try.*
6020
6021 fi # d_longdbl
6022
6023 case "$sPRIfldbl" in
6024 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
6025         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
6026         d_SCNfldbl="$undef";
6027         ;;
6028 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
6029         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
6030         d_SCNfldbl="$define";
6031         ;;
6032 esac
6033
6034 : see if modfl exists
6035 set modfl d_modfl
6036 eval $inlibc
6037
6038 d_modfl_pow32_bug="$undef"
6039
6040 case "$d_longdbl$d_modfl" in
6041 $define$define)
6042         $cat <<EOM
6043 Checking to see whether your modfl() is okay for large values...
6044 EOM
6045 $cat >try.c <<EOCP
6046 #include <math.h> 
6047 #include <stdio.h>
6048 int main() {
6049     long double nv = 4294967303.15;
6050     long double v, w;
6051     v = modfl(nv, &w);         
6052 #ifdef __GLIBC__
6053     printf("glibc");
6054 #endif
6055     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6056     return 0;
6057 }
6058 EOCP
6059         case "$osname:$gccversion" in
6060         aix:)   saveccflags="$ccflags"
6061                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6062         esac
6063         set try
6064         if eval $compile; then
6065                 foo=`$run ./try`
6066                 case "$foo" in
6067                 *" 4294967303.150000 1.150000 4294967302.000000")
6068                         echo >&4 "Your modfl() is broken for large values."
6069                         d_modfl_pow32_bug="$define"
6070                         case "$foo" in
6071                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6072                         ;;
6073                         esac
6074                         ;;
6075                 *" 4294967303.150000 0.150000 4294967303.000000")
6076                         echo >&4 "Your modfl() seems okay for large values."
6077                         ;;
6078                 *)      echo >&4 "I don't understand your modfl() at all."
6079                         d_modfl="$undef"
6080                         ;;
6081                 esac
6082                 $rm -f try.* try core core.try.*
6083         else
6084                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6085                 d_modfl="$undef"
6086         fi
6087         case "$osname:$gccversion" in
6088         aix:)   ccflags="$saveccflags" ;; # restore
6089         esac
6090         ;;
6091 esac
6092
6093 case "$ccflags" in
6094 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6095 esac
6096
6097 case "$uselongdouble" in
6098 $define|true|[yY]*)     dflt='y';;
6099 *) dflt='n';;
6100 esac
6101 cat <<EOM
6102
6103 Perl can be built to take advantage of long doubles which
6104 (if available) may give more accuracy and range for floating point numbers.
6105
6106 If this doesn't make any sense to you, just accept the default '$dflt'.
6107 EOM
6108 rp='Try to use long doubles if available?'
6109 . ./myread
6110 case "$ans" in
6111 y|Y)    val="$define"   ;;
6112 *)      val="$undef"    ;;
6113 esac
6114 set uselongdouble
6115 eval $setvar
6116
6117 case "$uselongdouble" in
6118 true|[yY]*) uselongdouble="$define" ;;
6119 esac
6120
6121 case "$uselongdouble" in
6122 $define)
6123 : Look for a hint-file generated 'call-back-unit'.  If the
6124 : user has specified that long doubles should be used,
6125 : we may need to set or change some other defaults.
6126         if $test -f uselongdouble.cbu; then
6127                 echo "Your platform has some specific hints for long doubles, using them..."
6128                 . ./uselongdouble.cbu
6129         else
6130                 $cat <<EOM
6131 (Your platform doesn't have any specific hints for long doubles.)
6132 EOM
6133         fi
6134         ;;
6135 esac
6136
6137 message=X
6138 case "$uselongdouble:$d_sqrtl:$d_modfl" in
6139 $define:$define:$define)
6140         : You have both
6141         ;;
6142 $define:$define:$undef)
6143         message="I could not find modfl"
6144         ;;
6145 $define:$undef:$define)
6146         message="I could not find sqrtl"
6147         ;;
6148 $define:$undef:$undef)
6149         message="I found neither sqrtl nor modfl"
6150         ;;
6151 esac
6152
6153 if $test "$message" != X; then
6154         $cat <<EOM >&4
6155
6156 *** You requested the use of long doubles but you do not seem to have
6157 *** the mathematic functions for long doubles.
6158 *** ($message)
6159 *** I'm disabling the use of long doubles.
6160
6161 EOM
6162
6163         uselongdouble=$undef
6164 fi
6165
6166 : determine the architecture name
6167 echo " "
6168 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6169         tarch=`arch`"-$osname"
6170 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6171         if uname -m > tmparch 2>&1 ; then
6172                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6173                         -e 's/$/'"-$osname/" tmparch`
6174         else
6175                 tarch="$osname"
6176         fi
6177         $rm -f tmparch
6178 else
6179         tarch="$osname"
6180 fi
6181 case "$myarchname" in
6182 ''|"$tarch") ;;
6183 *)
6184         echo "(Your architecture name used to be $myarchname.)"
6185         archname=''
6186         ;;
6187 esac
6188 case "$targetarch" in
6189 '') ;;
6190 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6191 esac
6192 myarchname="$tarch"
6193 case "$archname" in
6194 '') dflt="$tarch";;
6195 *) dflt="$archname";;
6196 esac
6197 rp='What is your architecture name'
6198 . ./myread
6199 archname="$ans"
6200 case "$usethreads" in
6201 $define)
6202         echo "Threads selected." >&4
6203         case "$archname" in
6204         *-thread*) echo "...and architecture name already has -thread." >&4
6205                 ;;
6206         *)      archname="$archname-thread"
6207                 echo "...setting architecture name to $archname." >&4
6208                 ;;
6209         esac
6210         ;;
6211 esac
6212 case "$usemultiplicity" in
6213 $define)
6214         echo "Multiplicity selected." >&4
6215         case "$archname" in
6216         *-multi*) echo "...and architecture name already has -multi." >&4
6217                 ;;
6218         *)      archname="$archname-multi"
6219                 echo "...setting architecture name to $archname." >&4
6220                 ;;
6221         esac
6222         ;;
6223 esac
6224 case "$use64bitint$use64bitall" in
6225 *"$define"*)
6226         case "$archname64" in
6227         '')
6228                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6229                 ;;
6230         *)
6231                 case "$use64bitint" in
6232                 "$define") echo "64 bit integers selected." >&4 ;;
6233                 esac
6234                 case "$use64bitall" in
6235                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6236                 esac
6237                 case "$archname" in
6238                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6239                         ;;
6240                 *)      archname="$archname-$archname64"
6241                         echo "...setting architecture name to $archname." >&4
6242                         ;;
6243                 esac
6244                 ;;
6245         esac
6246 esac
6247 case "$uselongdouble" in
6248 $define)
6249         echo "Long doubles selected." >&4
6250         case "$longdblsize" in
6251         $doublesize)
6252                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6253                 ;;
6254         *)
6255                 case "$archname" in
6256                 *-ld*) echo "...and architecture name already has -ld." >&4
6257                         ;;
6258                 *)      archname="$archname-ld"
6259                         echo "...setting architecture name to $archname." >&4
6260                         ;;
6261                 esac
6262                 ;;
6263         esac
6264         ;;
6265 esac
6266 case "$useperlio" in
6267 $define)
6268         echo "Perlio selected." >&4
6269         ;;
6270 *)
6271         echo "Perlio not selected, using stdio." >&4
6272         case "$archname" in
6273         *-stdio*) echo "...and architecture name already has -stdio." >&4
6274                 ;;
6275         *)      archname="$archname-stdio"
6276                 echo "...setting architecture name to $archname." >&4
6277                 ;;
6278         esac
6279         ;;
6280 esac
6281
6282 : determine root of directory hierarchy where package will be installed.
6283 case "$prefix" in
6284 '')
6285         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6286         ;;
6287 *)
6288         dflt="$prefix"
6289         ;;
6290 esac
6291 $cat <<EOM
6292
6293 By default, $package will be installed in $dflt/bin, manual pages
6294 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6295 installation directories. Typically this is something like /usr/local.
6296 If you wish to have binaries under /usr/bin but other parts of the
6297 installation under /usr/local, that's ok: you will be prompted
6298 separately for each of the installation directories, the prefix being
6299 only used to set the defaults.
6300
6301 EOM
6302 fn=d~
6303 rp='Installation prefix to use?'
6304 . ./getfile
6305 oldprefix=''
6306 case "$prefix" in
6307 '') ;;
6308 *)
6309         case "$ans" in
6310         "$prefix") ;;
6311         *) oldprefix="$prefix";;
6312         esac
6313         ;;
6314 esac
6315 prefix="$ans"
6316 prefixexp="$ansexp"
6317
6318 case "$afsroot" in
6319 '')     afsroot=/afs ;;
6320 *)      afsroot=$afsroot ;;
6321 esac
6322
6323 : is AFS running?
6324 echo " "
6325 case "$afs" in
6326 $define|true)   afs=true ;;
6327 $undef|false)   afs=false ;;
6328 *)      if test -d $afsroot; then
6329                 afs=true
6330         else
6331                 afs=false
6332         fi
6333         ;;
6334 esac
6335 if $afs; then
6336         echo "AFS may be running... I'll be extra cautious then..." >&4
6337 else
6338         echo "AFS does not seem to be running..." >&4
6339 fi
6340
6341 : determine installation prefix for where package is to be installed.
6342 if $afs; then 
6343 $cat <<EOM
6344
6345 Since you are running AFS, I need to distinguish the directory in which
6346 files will reside from the directory in which they are installed (and from
6347 which they are presumably copied to the former directory by occult means).
6348
6349 EOM
6350         case "$installprefix" in
6351         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6352         *) dflt="$installprefix";;
6353         esac
6354 else
6355 $cat <<EOM
6356
6357 In some special cases, particularly when building $package for distribution,
6358 it is convenient to distinguish between the directory in which files should 
6359 be installed from the directory ($prefix) in which they 
6360 will eventually reside.  For most users, these two directories are the same.
6361
6362 EOM
6363         case "$installprefix" in
6364         '') dflt=$prefix ;;
6365         *) dflt=$installprefix;;
6366         esac
6367 fi
6368 fn=d~
6369 rp='What installation prefix should I use for installing files?'
6370 . ./getfile
6371 installprefix="$ans"
6372 installprefixexp="$ansexp"
6373
6374 : set the prefixit variable, to compute a suitable default value
6375 prefixit='case "$3" in
6376 ""|none)
6377         case "$oldprefix" in
6378         "") eval "$1=\"\$$2\"";;
6379         *)
6380                 case "$3" in
6381                 "") eval "$1=";;
6382                 none)
6383                         eval "tp=\"\$$2\"";
6384                         case "$tp" in
6385                         ""|" ") eval "$1=\"\$$2\"";;
6386                         *) eval "$1=";;
6387                         esac;;
6388                 esac;;
6389         esac;;
6390 *)
6391         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6392         case "$tp" in
6393         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6394         /*-$oldprefix/*|\~*-$oldprefix/*)
6395                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6396         *) eval "$1=\"\$$2\"";;
6397         esac;;
6398 esac'
6399
6400 : get the patchlevel
6401 echo " "
6402 echo "Getting the current patchlevel..." >&4
6403 if $test -r $rsrc/patchlevel.h;then
6404         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6405         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6406         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6407         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6408         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6409         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6410        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6411 else
6412         revision=0
6413         patchlevel=0
6414         subversion=0
6415         api_revision=0
6416         api_version=0
6417         api_subversion=0
6418         perl_patchlevel=0
6419         $echo "(You do not have patchlevel.h.  Eek.)"
6420 fi
6421 if $test -r $rsrc/.patch ; then  
6422         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6423                 perl_patchlevel=`cat $rsrc/.patch`
6424         fi
6425 fi
6426 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6427 version_patchlevel_string="version $patchlevel subversion $subversion"
6428 case "$perl_patchlevel" in
6429 0|'') ;;
6430 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6431 esac
6432
6433 $echo "(You have $package $version_patchlevel_string.)"
6434
6435 case "$osname" in
6436 dos|vms)
6437         : XXX Should be a Configure test for double-dots in filenames.
6438         version=`echo $revision $patchlevel $subversion | \
6439                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6440         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6441                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6442         ;;
6443 *)
6444         version=`echo $revision $patchlevel $subversion | \
6445                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6446         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6447                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6448         ;;
6449 esac
6450 : Special case the 5.005_xx maintenance series, which used 5.005
6451 : without any subversion label as a subdirectory in $sitelib
6452 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6453         api_versionstring='5.005'
6454 fi
6455
6456 : determine installation style
6457 : For now, try to deduce it from prefix unless it is already set.
6458 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6459 case "$installstyle" in
6460 '')     case "$prefix" in
6461                 *perl*) dflt='lib';;
6462                 *) dflt='lib/perl5' ;;
6463         esac
6464         ;;
6465 *)      dflt="$installstyle" ;;
6466 esac
6467 : Probably not worth prompting for this since we prompt for all
6468 : the directories individually, and the prompt would be too long and
6469 : confusing anyway.
6470 installstyle=$dflt
6471
6472 : determine where private library files go
6473 : Usual default is /usr/local/lib/perl5/$version.
6474 : Also allow things like /opt/perl/lib/$version, since 
6475 : /opt/perl/lib/perl5... would be redundant.
6476 : The default "style" setting is made in installstyle.U
6477 case "$installstyle" in
6478 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6479 *)       set dflt privlib lib/$version ;;
6480 esac
6481 eval $prefixit
6482 $cat <<EOM
6483
6484 There are some auxiliary files for $package that need to be put into a
6485 private library directory that is accessible by everyone.
6486
6487 EOM
6488 fn=d~+
6489 rp='Pathname where the private library files will reside?'
6490 . ./getfile
6491 privlib="$ans"
6492 privlibexp="$ansexp"
6493 : Change installation prefix, if necessary.
6494 if $test X"$prefix" != X"$installprefix"; then
6495         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6496 else
6497         installprivlib="$privlibexp"
6498 fi
6499
6500 : set the prefixup variable, to restore leading tilda escape
6501 prefixup='case "$prefixexp" in
6502 "$prefix") ;;
6503 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6504 esac'
6505
6506 : determine where public architecture dependent libraries go
6507 set archlib archlib
6508 eval $prefixit
6509 : privlib default is /usr/local/lib/$package/$version
6510 : archlib default is /usr/local/lib/$package/$version/$archname
6511 : privlib may have an optional trailing /share.
6512 tdflt=`echo $privlib | $sed 's,/share$,,'`
6513 tdflt=$tdflt/$archname
6514 case "$archlib" in
6515 '')     dflt=$tdflt
6516         ;;
6517 *)      dflt="$archlib"
6518     ;;
6519 esac
6520 $cat <<EOM
6521
6522 $spackage contains architecture-dependent library files.  If you are
6523 sharing libraries in a heterogeneous environment, you might store
6524 these files in a separate location.  Otherwise, you can just include
6525 them with the rest of the public library files.
6526
6527 EOM
6528 fn=d+~
6529 rp='Where do you want to put the public architecture-dependent libraries?'
6530 . ./getfile
6531 archlib="$ans"
6532 archlibexp="$ansexp"
6533 if $test X"$archlib" = X"$privlib"; then
6534         d_archlib="$undef"
6535 else
6536         d_archlib="$define"
6537 fi
6538 : Change installation prefix, if necessary.
6539 if $test X"$prefix" != X"$installprefix"; then
6540         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6541 else
6542         installarchlib="$archlibexp"
6543 fi
6544
6545 : see if setuid scripts can be secure
6546 $cat <<EOM
6547
6548 Some kernels have a bug that prevents setuid #! scripts from being
6549 secure.  Some sites have disabled setuid #! scripts because of this.
6550
6551 First let's decide if your kernel supports secure setuid #! scripts.
6552 (If setuid #! scripts would be secure but have been disabled anyway,
6553 don't say that they are secure if asked.)
6554
6555 EOM
6556
6557 val="$undef"
6558 if $test -d /dev/fd; then
6559         echo "#!$ls" >reflect
6560         chmod +x,u+s reflect
6561         ./reflect >flect 2>&1
6562         if $contains "/dev/fd" flect >/dev/null; then
6563                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6564                 val="$define"
6565         else
6566                 $cat <<EOM
6567 If you are not sure if they are secure, I can check but I'll need a
6568 username and password different from the one you are using right now.
6569 If you don't have such a username or don't want me to test, simply
6570 enter 'none'.
6571
6572 EOM
6573                 rp='Other username to test security of setuid scripts with?'
6574                 dflt='none'
6575                 . ./myread
6576                 case "$ans" in
6577                 n|none)
6578                         case "$d_suidsafe" in
6579                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6580                                 dflt=n;;
6581                         "$undef")
6582                                 echo "Well, the $hint value is *not* secure." >&4
6583                                 dflt=n;;
6584                         *)      echo "Well, the $hint value *is* secure." >&4
6585                                 dflt=y;;
6586                         esac
6587                         ;;
6588                 *)
6589                         $rm -f reflect flect
6590                         echo "#!$ls" >reflect
6591                         chmod +x,u+s reflect
6592                         echo >flect
6593                         chmod a+w flect
6594                         echo '"su" will (probably) prompt you for '"$ans's password."
6595                         su $ans -c './reflect >flect'
6596                         if $contains "/dev/fd" flect >/dev/null; then
6597                                 echo "Okay, it looks like setuid scripts are secure." >&4
6598                                 dflt=y
6599                         else
6600                                 echo "I don't think setuid scripts are secure." >&4
6601                                 dflt=n
6602                         fi
6603                         ;;
6604                 esac
6605                 rp='Does your kernel have *secure* setuid scripts?'
6606                 . ./myread
6607                 case "$ans" in
6608                 [yY]*)  val="$define";;
6609                 *)      val="$undef";;
6610                 esac
6611         fi
6612 else
6613         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6614         echo "(That's for file descriptors, not floppy disks.)"
6615         val="$undef"
6616 fi
6617 set d_suidsafe
6618 eval $setvar
6619
6620 $rm -f reflect flect
6621
6622 : now see if they want to do setuid emulation
6623 echo " "
6624 val="$undef"
6625 case "$d_suidsafe" in
6626 "$define")
6627         val="$undef"
6628         echo "No need to emulate SUID scripts since they are secure here." >&4
6629         ;;
6630 *)
6631         $cat <<EOM
6632 Some systems have disabled setuid scripts, especially systems where
6633 setuid scripts cannot be secure.  On systems where setuid scripts have
6634 been disabled, the setuid/setgid bits on scripts are currently
6635 useless.  It is possible for $package to detect those bits and emulate
6636 setuid/setgid in a secure fashion.  This emulation will only work if
6637 setuid scripts have been disabled in your kernel.
6638
6639 EOM
6640         case "$d_dosuid" in
6641         "$define") dflt=y ;;
6642         *) dflt=n ;;
6643         esac
6644         rp="Do you want to do setuid/setgid emulation?"
6645         . ./myread
6646         case "$ans" in
6647         [yY]*)  val="$define";;
6648         *)      val="$undef";;
6649         esac
6650         ;;
6651 esac
6652 set d_dosuid
6653 eval $setvar
6654
6655 : see if this is a malloc.h system
6656 set malloc.h i_malloc
6657 eval $inhdr
6658
6659 : see if stdlib is available
6660 set stdlib.h i_stdlib
6661 eval $inhdr
6662
6663 : check for void type
6664 echo " "
6665 echo "Checking to see how well your C compiler groks the void type..." >&4
6666 case "$voidflags" in
6667 '')
6668         $cat >try.c <<'EOCP'
6669 #if TRY & 1
6670 void sub() {
6671 #else
6672 sub() {
6673 #endif
6674         extern void moo();      /* function returning void */
6675         void (*goo)();          /* ptr to func returning void */
6676 #if TRY & 8
6677         void *hue;              /* generic ptr */
6678 #endif
6679 #if TRY & 2
6680         void (*foo[10])();
6681 #endif
6682
6683 #if TRY & 4
6684         if(goo == moo) {
6685                 exit(0);
6686         }
6687 #endif
6688         exit(0);
6689 }
6690 int main() { sub(); }
6691 EOCP
6692         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6693                 voidflags=$defvoidused
6694         echo "Good.  It appears to support void to the level $package wants.">&4
6695                 if $contains warning .out >/dev/null 2>&1; then
6696                         echo "However, you might get some warnings that look like this:"
6697                         $cat .out
6698                 fi
6699         else
6700 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6701                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6702                         echo "It supports 1..."
6703                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6704                                 echo "It also supports 2..."
6705                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6706                                         voidflags=7
6707                                         echo "And it supports 4 but not 8 definitely."
6708                                 else
6709                                         echo "It doesn't support 4..."
6710                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6711                                                 voidflags=11
6712                                                 echo "But it supports 8."
6713                                         else
6714                                                 voidflags=3
6715                                                 echo "Neither does it support 8."
6716                                         fi
6717                                 fi
6718                         else
6719                                 echo "It does not support 2..."
6720                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6721                                         voidflags=13
6722                                         echo "But it supports 4 and 8."
6723                                 else
6724                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6725                                                 voidflags=5
6726                                                 echo "And it supports 4 but has not heard about 8."
6727                                         else
6728                                                 echo "However it supports 8 but not 4."
6729                                         fi
6730                                 fi
6731                         fi
6732                 else
6733                         echo "There is no support at all for void."
6734                         voidflags=0
6735                 fi
6736         fi
6737 esac
6738 case "$voidflags" in
6739 "$defvoidused") ;;
6740 *)      $cat >&4 <<'EOM'
6741   Support flag bits are:
6742     1: basic void declarations.
6743     2: arrays of pointers to functions returning void.
6744     4: operations between pointers to and addresses of void functions.
6745     8: generic void pointers.
6746 EOM
6747         dflt="$voidflags";
6748         rp="Your void support flags add up to what?"
6749         . ./myread
6750         voidflags="$ans"
6751         ;;
6752 esac
6753 $rm -f try.* .out
6754
6755 : check for length of pointer
6756 echo " "
6757 case "$ptrsize" in
6758 '')
6759         echo "Checking to see how big your pointers are..." >&4
6760         if test "$voidflags" -gt 7; then
6761                 echo '#define VOID_PTR char *' > try.c
6762         else
6763                 echo '#define VOID_PTR void *' > try.c
6764         fi
6765         $cat >>try.c <<'EOCP'
6766 #include <stdio.h>
6767 int main()
6768 {
6769     printf("%d\n", (int)sizeof(VOID_PTR));
6770     exit(0);
6771 }
6772 EOCP
6773         set try
6774         if eval $compile_ok; then
6775                 ptrsize=`$run ./try`
6776                 echo "Your pointers are $ptrsize bytes long."
6777         else
6778                 dflt='4'
6779                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6780                 rp="What is the size of a pointer (in bytes)?"
6781                 . ./myread
6782                 ptrsize="$ans"
6783         fi
6784         ;;
6785 esac
6786 $rm -f try.c try
6787 case "$use64bitall" in
6788 "$define"|true|[yY]*)
6789         case "$ptrsize" in
6790         4)      cat <<EOM >&4
6791
6792 *** You have chosen a maximally 64-bit build, but your pointers
6793 *** are only 4 bytes wide, disabling maximal 64-bitness.
6794
6795 EOM
6796                 use64bitall="$undef"
6797                 case "$use64bitint" in
6798                 "$define"|true|[yY]*) ;;
6799                 *)      cat <<EOM >&4
6800
6801 *** Downgrading from maximal 64-bitness to using 64-bit integers.
6802
6803 EOM
6804                         use64bitint="$define"
6805                         ;;
6806                 esac
6807                 ;;
6808         esac
6809         ;;
6810 esac
6811
6812
6813 : determine which malloc to compile in
6814 echo " "
6815 case "$usemymalloc" in
6816 [yY]*|true|$define)     dflt='y' ;;
6817 [nN]*|false|$undef)     dflt='n' ;;
6818 *)      case "$ptrsize" in
6819         4) dflt='y' ;;
6820         *) dflt='n' ;;
6821         esac
6822         ;;
6823 esac
6824 rp="Do you wish to attempt to use the malloc that comes with $package?"
6825 . ./myread
6826 usemymalloc="$ans"
6827 case "$ans" in
6828 y*|true)
6829         usemymalloc='y'
6830         mallocsrc='malloc.c'
6831         mallocobj="malloc$_o"
6832         d_mymalloc="$define"
6833         case "$libs" in
6834         *-lmalloc*)
6835                 : Remove malloc from list of libraries to use
6836                 echo "Removing unneeded -lmalloc from library list" >&4
6837                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6838                 shift
6839                 libs="$*"
6840                 echo "libs = $libs" >&4
6841                 ;;
6842         esac
6843         ;;
6844 *)
6845         usemymalloc='n'
6846         mallocsrc=''
6847         mallocobj=''
6848         d_mymalloc="$undef"
6849         ;;
6850 esac
6851
6852 : compute the return types of malloc and free
6853 echo " "
6854 $cat >malloc.c <<END
6855 #$i_malloc I_MALLOC
6856 #$i_stdlib I_STDLIB
6857 #include <stdio.h>
6858 #include <sys/types.h>
6859 #ifdef I_MALLOC
6860 #include <malloc.h>
6861 #endif
6862 #ifdef I_STDLIB
6863 #include <stdlib.h>
6864 #endif
6865 #ifdef TRY_MALLOC
6866 void *malloc();
6867 #endif
6868 #ifdef TRY_FREE
6869 void free();
6870 #endif
6871 END
6872 case "$malloctype" in
6873 '')
6874         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6875                 malloctype='void *'
6876         else
6877                 malloctype='char *'
6878         fi
6879         ;;
6880 esac
6881 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6882
6883 case "$freetype" in
6884 '')
6885         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6886                 freetype='void'
6887         else
6888                 freetype='int'
6889         fi
6890         ;;
6891 esac
6892 echo "Your system uses $freetype free(), it would seem." >&4
6893 $rm -f malloc.[co]
6894 $cat <<EOM
6895
6896 After $package is installed, you may wish to install various
6897 add-on modules and utilities.  Typically, these add-ons will
6898 be installed under $prefix with the rest
6899 of this package.  However, you may wish to install such add-ons
6900 elsewhere under a different prefix.
6901
6902 If you do not wish to put everything under a single prefix, that's
6903 ok.  You will be prompted for the individual locations; this siteprefix
6904 is only used to suggest the defaults.
6905
6906 The default should be fine for most people.
6907
6908 EOM
6909 fn=d~+
6910 rp='Installation prefix to use for add-on modules and utilities?'
6911 : XXX Here might be another good place for an installstyle setting.
6912 case "$siteprefix" in
6913 '') dflt=$prefix ;;
6914 *)  dflt=$siteprefix ;;
6915 esac
6916 . ./getfile
6917 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6918 oldsiteprefix=''
6919 case "$siteprefix" in
6920 '') ;;
6921 *)      case "$ans" in
6922         "$prefix") ;;
6923         *) oldsiteprefix="$prefix";;
6924         esac
6925         ;;
6926 esac
6927 siteprefix="$ans"
6928 siteprefixexp="$ansexp"
6929
6930 : determine where site specific libraries go.
6931 : Usual default is /usr/local/lib/perl5/site_perl/$version
6932 : The default "style" setting is made in installstyle.U
6933 : XXX No longer works with Prefixit stuff.
6934 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6935 case "$sitelib" in
6936 '') case "$installstyle" in
6937         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6938         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6939         esac
6940         ;;
6941 *)      dflt="$sitelib"
6942         ;;
6943 esac
6944 $cat <<EOM
6945
6946 The installation process will create a directory for
6947 site-specific extensions and modules.  Most users find it convenient
6948 to place all site-specific files in this directory rather than in the
6949 main distribution directory.
6950
6951 EOM
6952 fn=d~+
6953 rp='Pathname for the site-specific library files?'
6954 . ./getfile
6955 sitelib="$ans"
6956 sitelibexp="$ansexp"
6957 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6958 : Change installation prefix, if necessary.
6959 if $test X"$prefix" != X"$installprefix"; then
6960         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6961 else
6962         installsitelib="$sitelibexp"
6963 fi
6964
6965 : determine where site specific architecture-dependent libraries go.
6966 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6967 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6968 : sitelib may have an optional trailing /share.
6969 case "$sitearch" in
6970 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6971         dflt="$dflt/$archname"
6972         ;;
6973 *)      dflt="$sitearch"
6974         ;;
6975 esac
6976 set sitearch sitearch none
6977 eval $prefixit
6978 $cat <<EOM
6979
6980 The installation process will also create a directory for
6981 architecture-dependent site-specific extensions and modules.
6982
6983 EOM
6984 fn=d~+
6985 rp='Pathname for the site-specific architecture-dependent library files?'
6986 . ./getfile
6987 sitearch="$ans"
6988 sitearchexp="$ansexp"
6989 : Change installation prefix, if necessary.
6990 if $test X"$prefix" != X"$installprefix"; then
6991         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6992 else
6993         installsitearch="$sitearchexp"
6994 fi
6995
6996 $cat <<EOM
6997
6998 The installation process will also create a directory for
6999 vendor-supplied add-ons.  Vendors who supply perl with their system
7000 may find it convenient to place all vendor-supplied files in this
7001 directory rather than in the main distribution directory.  This will
7002 ease upgrades between binary-compatible maintenance versions of perl.
7003
7004 Of course you may also use these directories in whatever way you see
7005 fit.  For example, you might use them to access modules shared over a
7006 company-wide network.
7007
7008 The default answer should be fine for most people.
7009 This causes further questions about vendor add-ons to be skipped
7010 and no vendor-specific directories will be configured for perl.
7011
7012 EOM
7013 rp='Do you want to configure vendor-specific add-on directories?'
7014 case "$usevendorprefix" in
7015 define|true|[yY]*) dflt=y ;;
7016 *)      : User may have set vendorprefix directly on Configure command line.
7017         case "$vendorprefix" in
7018         ''|' ') dflt=n ;;
7019         *)      dflt=y ;;
7020         esac
7021         ;;
7022 esac
7023 . ./myread
7024 case "$ans" in
7025 [yY]*)  fn=d~+
7026         rp='Installation prefix to use for vendor-supplied add-ons?'
7027         case "$vendorprefix" in
7028         '') dflt='' ;;
7029         *)  dflt=$vendorprefix ;;
7030         esac
7031         . ./getfile
7032         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7033         oldvendorprefix=''
7034         case "$vendorprefix" in
7035         '') ;;
7036         *)      case "$ans" in
7037                 "$prefix") ;;
7038                 *) oldvendorprefix="$prefix";;
7039                 esac
7040                 ;;
7041         esac
7042         usevendorprefix="$define"
7043         vendorprefix="$ans"
7044         vendorprefixexp="$ansexp"
7045         ;;
7046 *)      usevendorprefix="$undef"
7047         vendorprefix=''
7048         vendorprefixexp=''
7049         ;;
7050 esac
7051
7052 case "$vendorprefix" in
7053 '')     d_vendorlib="$undef"
7054         vendorlib=''
7055         vendorlibexp=''
7056         ;;
7057 *)      d_vendorlib="$define"
7058         : determine where vendor-supplied modules go.
7059         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
7060         case "$vendorlib" in
7061         '')
7062                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7063                 case "$installstyle" in
7064                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
7065                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
7066                 esac
7067                 ;;
7068         *)      dflt="$vendorlib"
7069                 ;;
7070         esac
7071         fn=d~+
7072         rp='Pathname for the vendor-supplied library files?'
7073         . ./getfile
7074         vendorlib="$ans"
7075         vendorlibexp="$ansexp"
7076         ;;
7077 esac
7078 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
7079 : Change installation prefix, if necessary.
7080 if $test X"$prefix" != X"$installprefix"; then
7081         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
7082 else
7083         installvendorlib="$vendorlibexp"
7084 fi
7085
7086 case "$vendorprefix" in
7087 '')     d_vendorarch="$undef"
7088         vendorarch=''
7089         vendorarchexp=''
7090         ;;
7091 *)      d_vendorarch="$define"
7092         : determine where vendor-supplied architecture-dependent libraries go.
7093         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
7094         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
7095         : vendorlib may have an optional trailing /share.
7096         case "$vendorarch" in
7097         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
7098                 dflt="$dflt/$archname"
7099                 ;;
7100         *)      dflt="$vendorarch" ;;
7101         esac
7102         fn=d~+
7103         rp='Pathname for vendor-supplied architecture-dependent files?'
7104         . ./getfile
7105         vendorarch="$ans"
7106         vendorarchexp="$ansexp"
7107         ;;
7108 esac
7109 : Change installation prefix, if necessary.
7110 if $test X"$prefix" != X"$installprefix"; then
7111         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
7112 else
7113         installvendorarch="$vendorarchexp"
7114 fi
7115
7116 : Final catch-all directories to search
7117 $cat <<EOM
7118
7119 Lastly, you can have perl look in other directories for extensions and
7120 modules in addition to those already specified.
7121 These directories will be searched after 
7122         $sitearch 
7123         $sitelib 
7124 EOM
7125 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7126 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7127 echo ' '
7128 case "$otherlibdirs" in
7129 ''|' ') dflt='none' ;;
7130 *)      dflt="$otherlibdirs" ;;
7131 esac
7132 $cat <<EOM
7133 Enter a colon-separated set of extra paths to include in perl's @INC
7134 search path, or enter 'none' for no extra paths.
7135
7136 EOM
7137
7138 rp='Colon-separated list of additional directories for perl to search?'
7139 . ./myread
7140 case "$ans" in
7141 ' '|''|none)    otherlibdirs=' ' ;;     
7142 *)      otherlibdirs="$ans" ;;
7143 esac
7144 case "$otherlibdirs" in
7145 ' ') val=$undef ;;
7146 *)      val=$define ;;
7147 esac
7148 set d_perl_otherlibdirs
7149 eval $setvar
7150
7151 : Cruising for prototypes
7152 echo " "
7153 echo "Checking out function prototypes..." >&4
7154 $cat >prototype.c <<'EOCP'
7155 int main(int argc, char *argv[]) {
7156         exit(0);}
7157 EOCP
7158 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7159         echo "Your C compiler appears to support function prototypes."
7160         val="$define"
7161 else
7162         echo "Your C compiler doesn't seem to understand function prototypes."
7163         val="$undef"
7164 fi
7165 set prototype
7166 eval $setvar
7167 $rm -f prototype*
7168
7169 case "$prototype" in
7170 "$define") ;;
7171 *)      ansi2knr='ansi2knr'
7172         echo " "
7173         cat <<EOM >&4
7174
7175 $me:  FATAL ERROR:
7176 This version of $package can only be compiled by a compiler that 
7177 understands function prototypes.  Unfortunately, your C compiler 
7178         $cc $ccflags
7179 doesn't seem to understand them.  Sorry about that.
7180
7181 If GNU cc is available for your system, perhaps you could try that instead.  
7182
7183 Eventually, we hope to support building Perl with pre-ANSI compilers.
7184 If you would like to help in that effort, please contact <perlbug@perl.org>.
7185
7186 Aborting Configure now.
7187 EOM
7188         exit 2
7189         ;;
7190 esac
7191
7192 : determine where public executables go
7193 echo " "
7194 set dflt bin bin
7195 eval $prefixit
7196 fn=d~
7197 rp='Pathname where the public executables will reside?'
7198 . ./getfile
7199 if $test "X$ansexp" != "X$binexp"; then
7200         installbin=''
7201 fi
7202 bin="$ans"
7203 binexp="$ansexp"
7204 : Change installation prefix, if necessary.
7205 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7206 if $test X"$prefix" != X"$installprefix"; then
7207         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7208 else
7209         installbin="$binexp"
7210 fi
7211
7212 echo " "
7213 case "$extras" in
7214 '') dflt='n';;
7215 *) dflt='y';;
7216 esac
7217 cat <<EOM
7218 Perl can be built with extra modules or bundles of modules which
7219 will be fetched from the CPAN and installed alongside Perl.
7220
7221 Notice that you will need access to the CPAN; either via the Internet,
7222 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7223 be asked later to configure the CPAN.pm module which will in turn do
7224 the installation of the rest of the extra modules or bundles.)
7225
7226 Notice also that if the modules require any external software such as
7227 libraries and headers (the libz library and the zlib.h header for the
7228 Compress::Zlib module, for example) you MUST have any such software
7229 already installed, this configuration process will NOT install such
7230 things for you.
7231
7232 If this doesn't make any sense to you, just accept the default '$dflt'.
7233 EOM
7234 rp='Install any extra modules (y or n)?'
7235 . ./myread
7236 case "$ans" in
7237 y|Y)
7238         cat <<EOM
7239
7240 Please list any extra modules or bundles to be installed from CPAN,
7241 with spaces between the names.  The names can be in any format the
7242 'install' command of CPAN.pm will understand.  (Answer 'none',
7243 without the quotes, to install no extra modules or bundles.)
7244 EOM
7245         rp='Extras?'
7246         dflt="$extras"
7247         . ./myread
7248         extras="$ans"
7249 esac
7250 case "$extras" in
7251 ''|'none')
7252         val=''
7253         $rm -f ../extras.lst
7254         ;;
7255 *)      echo "(Saving the list of extras for later...)"
7256         echo "$extras" > ../extras.lst
7257         val="'$extras'"
7258         ;;
7259 esac
7260 set extras
7261 eval $setvar
7262 echo " "
7263
7264 : Find perl5.005 or later.
7265 echo "Looking for a previously installed perl5.005 or later... "
7266 case "$perl5" in
7267 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7268                 : Check if this perl is recent and can load a simple module
7269                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7270                         perl5=$tdir/perl
7271                         break;
7272                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7273                         perl5=$tdir/perl5
7274                         break;
7275                 fi
7276         done
7277         ;;
7278 *)      perl5="$perl5"
7279         ;;
7280 esac
7281 case "$perl5" in
7282 '')     echo "None found.  That's ok.";;
7283 *)      echo "Using $perl5." ;;
7284 esac
7285
7286 : Determine list of previous versions to include in @INC
7287 $cat > getverlist <<EOPL
7288 #!$perl5 -w
7289 use File::Basename;
7290 \$api_versionstring = "$api_versionstring";
7291 \$version = "$version";
7292 \$stem = "$sitelib_stem";
7293 \$archname = "$archname";
7294 EOPL
7295         $cat >> getverlist <<'EOPL'
7296 # Can't have leading @ because metaconfig interprets it as a command!
7297 ;@inc_version_list=();
7298 # XXX Redo to do opendir/readdir? 
7299 if (-d $stem) {
7300     chdir($stem);
7301     ;@candidates = glob("5.*");
7302 }
7303 else {
7304     ;@candidates = ();
7305 }
7306
7307 # XXX ToDo:  These comparisons must be reworked when two-digit
7308 # subversions come along, so that 5.7.10 compares as greater than
7309 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7310 # widespread that we can use the built-in version vectors rather
7311 # than reinventing them here.  For 5.6.0, however, we must
7312 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7313 foreach $d (@candidates) {
7314     if ($d lt $version) {
7315         if ($d ge $api_versionstring) {
7316             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7317         }
7318         elsif ($d ge "5.005") {
7319             unshift(@inc_version_list, grep { -d } $d);
7320         }
7321     }
7322     else {
7323         # Skip newer version.  I.e. don't look in
7324         # 5.7.0 if we're installing 5.6.1.
7325     }
7326 }
7327
7328 if (@inc_version_list) {
7329     print join(' ', @inc_version_list);
7330 }
7331 else {
7332     # Blank space to preserve value for next Configure run.
7333     print " ";
7334 }
7335 EOPL
7336 chmod +x getverlist
7337 case "$inc_version_list" in
7338 '')     if test -x "$perl5$exe_ext"; then
7339                 dflt=`$perl5 getverlist`
7340         else
7341                 dflt='none'
7342         fi
7343         ;;
7344 $undef) dflt='none' ;;
7345 *)  eval dflt=\"$inc_version_list\" ;;
7346 esac
7347 case "$dflt" in
7348 ''|' ') dflt=none ;;
7349 esac
7350 case "$dflt" in
7351 5.005) dflt=none ;;
7352 esac
7353 $cat <<EOM
7354
7355 In order to ease the process of upgrading, this version of perl 
7356 can be configured to use modules built and installed with earlier 
7357 versions of perl that were installed under $prefix.  Specify here
7358 the list of earlier versions that this version of perl should check.
7359 If Configure detected no earlier versions of perl installed under
7360 $prefix, then the list will be empty.  Answer 'none' to tell perl
7361 to not search earlier versions.
7362
7363 The default should almost always be sensible, so if you're not sure,
7364 just accept the default.
7365 EOM
7366
7367 rp='List of earlier versions to include in @INC?'
7368 . ./myread
7369 case "$ans" in
7370 [Nn]one|''|' ') inc_version_list=' ' ;;
7371 *) inc_version_list="$ans" ;;
7372 esac
7373 case "$inc_version_list" in
7374 ''|' ') 
7375         inc_version_list_init='0';;
7376 *)      inc_version_list_init=`echo $inc_version_list |
7377                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7378         ;;
7379 esac
7380 $rm -f getverlist
7381
7382 : determine whether to install perl also as /usr/bin/perl
7383
7384 echo " "
7385 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7386         $cat <<EOM
7387 Many scripts expect perl to be installed as /usr/bin/perl.
7388 I can install the perl you are about to compile also as /usr/bin/perl
7389 (in addition to $installbin/perl).
7390 EOM
7391         case "$installusrbinperl" in
7392         "$undef"|[nN]*) dflt='n';;
7393         *)              dflt='y';;
7394         esac
7395         rp="Do you want to install perl as /usr/bin/perl?"
7396         . ./myread
7397         case "$ans" in
7398         [yY]*)  val="$define";;
7399         *)      val="$undef" ;;
7400         esac
7401 else
7402         val="$undef"
7403 fi
7404 set installusrbinperl
7405 eval $setvar
7406
7407 : see if dld is available
7408 set dld.h i_dld
7409 eval $inhdr
7410
7411 : see if dlopen exists
7412 xxx_runnm="$runnm"
7413 runnm=false
7414 set dlopen d_dlopen
7415 eval $inlibc
7416 runnm="$xxx_runnm"
7417
7418 : determine which dynamic loading, if any, to compile in
7419 echo " "
7420 dldir="ext/DynaLoader"
7421 case "$usedl" in
7422 $define|y|true)
7423         dflt='y'
7424         usedl="$define"
7425         ;;
7426 $undef|n|false)
7427         dflt='n'
7428         usedl="$undef"
7429         ;;
7430 *) 
7431         dflt='n'
7432         case "$d_dlopen" in
7433             $define) dflt='y' ;;
7434         esac
7435         case "$i_dld" in
7436             $define) dflt='y' ;;
7437         esac
7438         : Does a dl_xxx.xs file exist for this operating system
7439         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7440         ;;
7441 esac
7442 rp="Do you wish to use dynamic loading?"
7443 . ./myread
7444 usedl="$ans"
7445 case "$ans" in
7446 y*) usedl="$define"
7447         case "$dlsrc" in
7448         '')
7449                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7450                         dflt="$dldir/dl_${osname}.xs"
7451                 elif $test "$d_dlopen" = "$define" ; then
7452                         dflt="$dldir/dl_dlopen.xs"
7453                 elif $test "$i_dld" = "$define" ; then
7454                         dflt="$dldir/dl_dld.xs"
7455                 else
7456                         dflt=''
7457                 fi
7458                 ;;
7459         *)      dflt="$dldir/$dlsrc"
7460                 ;;
7461         esac
7462     echo "The following dynamic loading files are available:"
7463         : Can not go over to $dldir because getfile has path hard-coded in.
7464         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7465         rp="Source file to use for dynamic loading"
7466         fn="fne"
7467         gfpth="$src"
7468         . ./getfile
7469         usedl="$define"
7470         : emulate basename
7471         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7472
7473         $cat << EOM
7474
7475 Some systems may require passing special flags to $cc -c to
7476 compile modules that will be used to create a shared library.
7477 To use no flags, say "none".
7478
7479 EOM
7480     case "$cccdlflags" in
7481     '') case "$gccversion" in
7482                 '') case "$osname" in
7483                         hpux)   dflt='+z' ;;
7484                         next)   dflt='none' ;;
7485                         irix*)  dflt='-KPIC' ;;
7486                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7487                         sunos)  dflt='-pic' ;;
7488                         *)      dflt='none' ;;
7489                     esac
7490                         ;;
7491                 *)  case "$osname" in
7492                         darwin) dflt='none' ;;
7493                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7494                         *)      dflt='-fpic' ;;
7495                     esac ;;
7496             esac ;;
7497         ' ') dflt='none' ;;
7498     *)  dflt="$cccdlflags" ;;
7499     esac
7500     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7501     . ./myread
7502     case "$ans" in
7503     none) cccdlflags=' ' ;;
7504     *) cccdlflags="$ans" ;;
7505     esac
7506
7507     cat << EOM
7508
7509 Some systems use ld to create libraries that can be dynamically loaded,
7510 while other systems (such as those using ELF) use $cc.
7511
7512 EOM
7513         case "$ld" in
7514         '')     $cat >try.c <<'EOM'
7515 /* Test for whether ELF binaries are produced */
7516 #include <fcntl.h>
7517 #include <stdlib.h>
7518 int main() {
7519         char b[4];
7520         int i = open("a.out",O_RDONLY);
7521         if(i == -1) 
7522                 exit(1); /* fail */
7523         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7524                 exit(0); /* succeed (yes, it's ELF) */
7525         else
7526                 exit(1); /* fail */
7527 }
7528 EOM
7529                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7530                         cat <<EOM
7531 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7532 EOM
7533                         dflt="$cc"
7534                 else
7535                         echo "I'll use ld to build dynamic libraries."
7536                         dflt='ld'
7537                 fi
7538                 rm -f try.c a.out
7539                 ;;
7540         *)      dflt="$ld"
7541                 ;;
7542         esac
7543
7544     rp="What command should be used to create dynamic libraries?"
7545     . ./myread
7546         ld="$ans"
7547
7548     cat << EOM
7549
7550 Some systems may require passing special flags to $ld to create a
7551 library that can be dynamically loaded.  If your ld flags include
7552 -L/other/path options to locate libraries outside your loader's normal
7553 search path, you may need to specify those -L options here as well.  To
7554 use no flags, say "none".
7555
7556 EOM
7557     case "$lddlflags" in
7558     '') case "$osname" in
7559                         beos) dflt='-nostart' ;;
7560                         hpux) dflt='-b';
7561                               case "$gccversion" in
7562                               '') dflt="$dflt +vnocompatwarnings" ;;
7563                               esac
7564                               ;;        
7565                         linux|irix*)    dflt='-shared' ;;
7566                         next)  dflt='none' ;;
7567                         solaris) dflt='-G' ;;
7568                         sunos) dflt='-assert nodefinitions' ;;
7569                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7570                 *)     dflt='none' ;;
7571                         esac
7572                         ;;
7573     *) dflt="$lddlflags" ;;
7574     esac
7575
7576         : Try to guess additional flags to pick up local libraries.
7577         : Be careful not to append to a plain 'none'
7578         case "$dflt" in
7579         none) dflt='' ;;
7580         esac
7581         for thisflag in $ldflags; do
7582                 case "$thisflag" in
7583                 -L*|-R*|-Wl,-R*)
7584                         case " $dflt " in
7585                         *" $thisflag "*) ;;
7586                         *) dflt="$dflt $thisflag" ;;
7587                         esac
7588                         ;;
7589                 esac
7590         done
7591
7592         case "$dflt" in
7593         ''|' ') dflt='none' ;;
7594         esac
7595
7596     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7597     . ./myread
7598     case "$ans" in
7599     none) lddlflags=' ' ;;
7600     *) lddlflags="$ans" ;;
7601     esac
7602
7603         cat <<EOM
7604
7605 Some systems may require passing special flags to $cc to indicate that
7606 the resulting executable will use dynamic linking.  To use no flags,
7607 say "none".
7608
7609 EOM
7610     case "$ccdlflags" in
7611     '') case "$osname" in
7612                 hpux)   dflt='-Wl,-E' ;;
7613                 linux)  dflt='-rdynamic' ;;
7614                 next)   dflt='none' ;;
7615                 sunos)  dflt='none' ;;
7616                 *)      dflt='none' ;;
7617             esac ;;
7618     ' ')  dflt='none' ;;
7619     *)  dflt="$ccdlflags" ;;
7620     esac
7621     rp="Any special flags to pass to $cc to use dynamic linking?"
7622     . ./myread
7623     case "$ans" in
7624     none) ccdlflags=' ' ;;
7625     *) ccdlflags="$ans" ;;
7626     esac
7627     ;;
7628 *)  usedl="$undef"
7629         ld='ld'
7630     dlsrc='dl_none.xs'
7631     lddlflags=''
7632     ccdlflags=''
7633     ;;
7634 esac
7635
7636 also=''
7637 case "$usedl" in
7638 $undef)
7639         # No dynamic loading being used, so don't bother even to prompt.
7640         useshrplib='false'
7641         ;;
7642 *)      case "$useshrplib" in
7643         '')     case "$osname" in
7644                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7645                         dflt=y
7646                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7647                         ;;
7648                 next*)
7649                         case "$osvers" in
7650                         4*)     dflt=y
7651                                 also='Building a shared libperl is needed for MAB support.'
7652                                 ;;
7653                         *)      dflt=n
7654                                 ;;
7655                         esac
7656                         ;;
7657                 *)      dflt=n
7658                         ;;
7659                 esac
7660                 ;;
7661         $define|true|[Yy]*)
7662                 dflt=y
7663                 ;;
7664         *)      dflt=n
7665                 ;;
7666         esac
7667         $cat << EOM
7668
7669 The perl executable is normally obtained by linking perlmain.c with
7670 libperl${_a}, any static extensions (usually just DynaLoader), and
7671 any other libraries needed on this system (such as -lm, etc.).  Since
7672 your system supports dynamic loading, it is probably possible to build
7673 a shared libperl.$so.  If you will have more than one executable linked
7674 to libperl.$so, this will significantly reduce the size of each
7675 executable, but it may have a noticeable affect on performance.  The
7676 default is probably sensible for your system.
7677 $also
7678
7679 EOM
7680         rp="Build a shared libperl.$so (y/n)"
7681         . ./myread
7682         case "$ans" in
7683         true|$define|[Yy]*)
7684                 useshrplib='true'  ;;
7685         *)      useshrplib='false' ;;
7686         esac
7687         ;;
7688 esac
7689
7690 case "$useshrplib" in
7691 true)
7692         case "$libperl" in
7693         '')
7694                 # Figure out a good name for libperl.so.  Since it gets stored in
7695                 # a version-specific architecture-dependent library, the version
7696                 # number isn't really that important, except for making cc/ld happy.
7697                 #
7698                 # A name such as libperl.so.3.1
7699                 majmin="libperl.$so.$patchlevel.$subversion"
7700                 # A name such as libperl.so.301
7701                 majonly=`echo $patchlevel $subversion |
7702                         $awk '{printf "%d%02d", $1, $2}'`
7703                 majonly=libperl.$so.$majonly
7704                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7705                 # rely on figuring it out from the naming of libc.
7706                 case "${osname}${osvers}" in
7707                 next4*)
7708                         dflt=libperl.5.$so
7709                         # XXX How handle the --version stuff for MAB?
7710                         ;;
7711                 linux*)  # ld won't link with a bare -lperl otherwise.
7712                         dflt=libperl.$so
7713                         ;;
7714                 cygwin*) # ld links against an importlib
7715                         dflt=libperl$lib_ext
7716                         ;;
7717                 *)      # Try to guess based on whether libc has major.minor.
7718                         case "$libc" in
7719                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7720                         *libc.$so.[0-9]*) dflt=$majonly ;;
7721                         *)      dflt=libperl.$so ;;
7722                         esac
7723                         ;;
7724                 esac
7725                 ;;
7726         *)      dflt=$libperl
7727                 ;;
7728         esac
7729         cat << EOM
7730
7731 I need to select a good name for the shared libperl.  If your system uses
7732 library names with major and minor numbers, then you might want something
7733 like $majmin.  Alternatively, if your system uses a single version
7734 number for shared libraries, then you might want to use $majonly.
7735 Or, your system might be quite happy with a simple libperl.$so.
7736
7737 Since the shared libperl will get installed into a version-specific
7738 architecture-dependent directory, the version number of the shared perl
7739 library probably isn't important, so the default should be o.k.
7740
7741 EOM
7742         rp='What name do you want to give to the shared libperl?'
7743         . ./myread
7744         libperl=$ans
7745         echo "Ok, I'll use $libperl"
7746         ;;
7747 *)
7748         libperl="libperl${_a}"
7749         ;;
7750 esac
7751
7752 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7753 case "$shrpdir" in
7754 '') ;;
7755 *)      $cat >&4 <<EOM
7756 WARNING:  Use of the shrpdir variable for the installation location of
7757 the shared $libperl is not supported.  It was never documented and
7758 will not work in this version.  Let me (perlbug@perl.org)
7759 know of any problems this may cause.
7760
7761 EOM
7762         case "$shrpdir" in
7763         "$archlibexp/CORE")
7764                 $cat >&4 <<EOM
7765 But your current setting of $shrpdir is
7766 the default anyway, so it's harmless.
7767 EOM
7768                 ;;
7769         *)
7770                 $cat >&4 <<EOM
7771 Further, your current attempted setting of $shrpdir
7772 conflicts with the value of $archlibexp/CORE
7773 that installperl will use.
7774 EOM
7775                 ;;
7776         esac
7777         ;;
7778 esac
7779
7780 # How will the perl executable find the installed shared $libperl?
7781 # Add $xxx to ccdlflags.
7782 # If we can't figure out a command-line option, use $shrpenv to
7783 # set env LD_RUN_PATH.  The main perl makefile uses this.
7784 shrpdir=$archlibexp/CORE
7785 xxx=''
7786 tmp_shrpenv=''
7787 if "$useshrplib"; then
7788     case "$osname" in 
7789         aix)
7790                 # We'll set it in Makefile.SH...
7791                 ;;
7792         solaris)
7793                 xxx="-R $shrpdir"
7794                 ;;
7795         freebsd|netbsd)
7796                 xxx="-Wl,-R$shrpdir"
7797                 ;;
7798         bsdos|linux|irix*|dec_osf)
7799                 xxx="-Wl,-rpath,$shrpdir"
7800                 ;;
7801         next)
7802                 # next doesn't like the default...
7803                 ;;
7804         beos)
7805                 # beos doesn't like the default, either.
7806                 ;;
7807         hpux*)
7808                 # hpux doesn't like the default, either.
7809                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7810                 ;;
7811         *)
7812                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7813                 ;;
7814         esac
7815         case "$xxx" in
7816         '') ;;
7817         *)      
7818                 # Only add $xxx if it isn't already in ccdlflags.
7819                 case " $ccdlflags " in
7820                 *" $xxx "*)     ;;
7821                 *)      ccdlflags="$ccdlflags $xxx"
7822                         cat <<EOM >&4
7823
7824 Adding $xxx to the flags
7825 passed to $ld so that the perl executable will find the 
7826 installed shared $libperl.
7827
7828 EOM
7829                         ;;
7830                 esac
7831                 ;;
7832         esac
7833 fi
7834 # Fix ccdlflags in AIX for building external extensions.
7835 # (For building Perl itself bare -bE:perl.exp is needed,
7836 #  Makefile.SH takes care of this.)
7837 case "$osname" in
7838 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7839 esac
7840 # Respect a hint or command-line value.
7841 case "$shrpenv" in
7842 '') shrpenv="$tmp_shrpenv" ;;
7843 esac
7844 case "$ldlibpthname" in
7845 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7846 none)   ldlibpthname='' ;;
7847 esac
7848
7849 : determine where manual pages are on this system
7850 echo " "
7851 case "$sysman" in
7852 '') 
7853         syspath='/usr/share/man/man1 /usr/man/man1'
7854         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7855         syspath="$syspath /usr/man/u_man/man1"
7856         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7857         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7858         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7859         sysman=`./loc . /usr/man/man1 $syspath`
7860         ;;
7861 esac
7862 if $test -d "$sysman"; then
7863         echo "System manual is in $sysman." >&4
7864 else
7865         echo "Could not find manual pages in source form." >&4
7866 fi
7867
7868 : determine where manual pages go
7869 set man1dir man1dir none
7870 eval $prefixit
7871 $cat <<EOM
7872
7873 $spackage has manual pages available in source form.
7874 EOM
7875 case "$nroff" in
7876 nroff)
7877         echo "However, you don't have nroff, so they're probably useless to you."
7878         case "$man1dir" in
7879         '') man1dir="none";;
7880         esac;;
7881 esac
7882 echo "If you don't want the manual sources installed, answer 'none'."
7883 case "$man1dir" in
7884 ' ') dflt=none
7885         ;;
7886 '')
7887         lookpath="$prefixexp/share/man/man1"
7888         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7889         lookpath="$lookpath $prefixexp/man/p_man/man1"
7890         lookpath="$lookpath $prefixexp/man/u_man/man1"
7891         lookpath="$lookpath $prefixexp/man/man.1"
7892         case "$sysman" in
7893         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7894         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7895         esac
7896         set dflt
7897         eval $prefixup
7898         ;;
7899 *)  dflt="$man1dir"
7900         ;;
7901 esac
7902 echo " "
7903 fn=dn+~
7904 rp="Where do the main $spackage manual pages (source) go?"
7905 . ./getfile
7906 if $test "X$man1direxp" != "X$ansexp"; then
7907         installman1dir=''
7908 fi
7909 man1dir="$ans"
7910 man1direxp="$ansexp"
7911 case "$man1dir" in
7912 '')     man1dir=' '
7913         installman1dir='';;
7914 esac
7915
7916 : Change installation prefix, if necessary.
7917 if $test X"$prefix" != X"$installprefix"; then
7918         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7919 else
7920         installman1dir="$man1direxp"
7921 fi
7922
7923 : What suffix to use on installed man pages
7924
7925 case "$man1dir" in
7926 ' ')
7927         man1ext='0'
7928         ;;
7929 *)
7930         rp="What suffix should be used for the main $spackage man pages?"
7931         case "$man1ext" in
7932         '')     case "$man1dir" in
7933                 *1)  dflt=1 ;;
7934                 *1p) dflt=1p ;;
7935                 *1pm) dflt=1pm ;;
7936                 *l) dflt=l;;
7937                 *n) dflt=n;;
7938                 *o) dflt=o;;
7939                 *p) dflt=p;;
7940                 *C) dflt=C;;
7941                 *L) dflt=L;;
7942                 *L1) dflt=L1;;
7943                 *) dflt=1;;
7944                 esac
7945                 ;;
7946         *)      dflt="$man1ext";;
7947         esac
7948         . ./myread
7949         man1ext="$ans"
7950         ;;
7951 esac
7952
7953 : see if we can have long filenames
7954 echo " "
7955 first=123456789abcdef
7956 $rm -f $first
7957 if (echo hi >$first) 2>/dev/null; then
7958         if $test -f 123456789abcde; then
7959                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7960                 val="$undef"
7961         else
7962                 echo 'You can have filenames longer than 14 characters.'>&4
7963                 val="$define"
7964         fi
7965 else
7966         $cat <<'EOM'
7967 You can't have filenames longer than 14 chars.
7968 You can't even think about them!
7969 EOM
7970         val="$undef"
7971 fi 
7972 set d_flexfnam
7973 eval $setvar
7974 $rm -rf 123456789abcde*
7975
7976 : determine where library module manual pages go
7977 set man3dir man3dir none
7978 eval $prefixit
7979 $cat <<EOM
7980
7981 $spackage has manual pages for many of the library modules.
7982 EOM
7983
7984 case "$nroff" in
7985 nroff)
7986         $cat <<'EOM'
7987 However, you don't have nroff, so they're probably useless to you.
7988 EOM
7989         case "$man3dir" in
7990         '') man3dir="none";;
7991         esac;;
7992 esac
7993
7994 case "$d_flexfnam" in
7995 undef)
7996         $cat <<'EOM'
7997 However, your system can't handle the long file names like File::Basename.3. 
7998 EOM
7999         case "$man3dir" in
8000         '') man3dir="none";;
8001         esac;;
8002 esac
8003
8004 echo "If you don't want the manual sources installed, answer 'none'."
8005 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8006 case "$man3dir" in
8007 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8008         if $test -d "$privlib/man/man3"; then
8009                 cat <<EOM >&4
8010
8011 WARNING:  Previous versions of perl installed man3 pages into
8012 $privlib/man/man3.  This version will suggest a 
8013 new default of $dflt.  
8014 EOM
8015                 tdflt=$dflt
8016                 dflt='n'
8017                 rp='Do you wish to preserve the old behavior?(y/n)'
8018                 . ./myread
8019                 case "$ans" in
8020                 y*) dflt="$privlib/man/man3" ;;
8021                 *)  dflt=$tdflt ;;
8022                 esac
8023     fi
8024         ;;
8025 *)      dflt="$man3dir" ;;
8026 esac
8027 case "$dflt" in
8028 ' ') dflt=none ;;
8029 esac
8030 echo " "
8031 fn=dn+~
8032 rp="Where do the $package library man pages (source) go?"
8033 . ./getfile
8034 man3dir="$ans"
8035 man3direxp="$ansexp"
8036 case "$man3dir" in
8037 '')     man3dir=' '
8038         installman3dir='';;
8039 esac
8040
8041 : Change installation prefix, if necessary.
8042 if $test X"$prefix" != X"$installprefix"; then
8043         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8044 else
8045         installman3dir="$man3direxp"
8046 fi
8047
8048 : What suffix to use on installed man pages
8049 case "$man3dir" in
8050 ' ')
8051         man3ext='0'
8052         ;;
8053 *)
8054         rp="What suffix should be used for the $package library man pages?"
8055         case "$man3ext" in
8056         '')     case "$man3dir" in
8057                 *3)  dflt=3 ;;
8058                 *3p) dflt=3p ;;
8059                 *3pm) dflt=3pm ;;
8060                 *l) dflt=l;;
8061                 *n) dflt=n;;
8062                 *o) dflt=o;;
8063                 *p) dflt=p;;
8064                 *C) dflt=C;;
8065                 *L) dflt=L;;
8066                 *L3) dflt=L3;;
8067                 *) dflt=3;;
8068                 esac
8069                 ;;
8070         *)      dflt="$man3ext";;
8071         esac
8072         . ./myread
8073         man3ext="$ans"
8074         ;;
8075 esac
8076
8077 : see if we have to deal with yellow pages, now NIS.
8078 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8079         if $test -f /usr/etc/nibindd; then
8080                 echo " "
8081                 echo "I'm fairly confident you're on a NeXT."
8082                 echo " "
8083                 rp='Do you get the hosts file via NetInfo?'
8084                 dflt=y
8085                 case "$hostcat" in
8086                 nidump*) ;;
8087                 '') ;;
8088                 *) dflt=n;;
8089                 esac
8090                 . ./myread
8091                 case "$ans" in
8092                 y*) hostcat='nidump hosts .';;
8093                 *)      case "$hostcat" in
8094                         nidump*) hostcat='';;
8095                         esac
8096                         ;;
8097                 esac
8098         fi
8099         case "$hostcat" in
8100         nidump*) ;;
8101         *)
8102                 case "$hostcat" in
8103                 *ypcat*) dflt=y;;
8104                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8105                                 dflt=y
8106                         else
8107                                 dflt=n
8108                         fi;;
8109                 *) dflt=n;;
8110                 esac
8111                 echo " "
8112                 rp='Are you getting the hosts file via yellow pages?'
8113                 . ./myread
8114                 case "$ans" in
8115                 y*) hostcat='ypcat hosts';;
8116                 *) hostcat='cat /etc/hosts';;
8117                 esac
8118                 ;;
8119         esac
8120 fi
8121 case "$hostcat" in
8122 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8123 esac
8124 case "$groupcat" in
8125 '') test -f /etc/group && groupcat='cat /etc/group';;
8126 esac
8127 case "$passcat" in
8128 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8129 esac
8130
8131 : now get the host name
8132 echo " "
8133 echo "Figuring out host name..." >&4
8134 case "$myhostname" in
8135 '') cont=true
8136         echo 'Maybe "hostname" will work...'
8137         if tans=`sh -c hostname 2>&1` ; then
8138                 myhostname=$tans
8139                 phostname=hostname
8140                 cont=''
8141         fi
8142         ;;
8143 *) cont='';;
8144 esac
8145 if $test "$cont"; then
8146         if ./xenix; then
8147                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8148                 if tans=`cat /etc/systemid 2>&1` ; then
8149                         myhostname=$tans
8150                         phostname='cat /etc/systemid'
8151                         echo "Whadyaknow.  Xenix always was a bit strange..."
8152                         cont=''
8153                 fi
8154         elif $test -r /etc/systemid; then
8155                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8156         fi
8157 fi
8158 if $test "$cont"; then
8159         echo 'No, maybe "uuname -l" will work...'
8160         if tans=`sh -c 'uuname -l' 2>&1` ; then
8161                 myhostname=$tans
8162                 phostname='uuname -l'
8163         else
8164                 echo 'Strange.  Maybe "uname -n" will work...'
8165                 if tans=`sh -c 'uname -n' 2>&1` ; then
8166                         myhostname=$tans
8167                         phostname='uname -n'
8168                 else
8169                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8170                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8171                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8172                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8173                         else
8174                                 case "$myhostname" in
8175                                 '') echo "Does this machine have an identity crisis or something?"
8176                                         phostname='';;
8177                                 *)
8178                                         echo "Well, you said $myhostname before..."
8179                                         phostname='echo $myhostname';;
8180                                 esac
8181                         fi
8182                 fi
8183         fi
8184 fi
8185 case "$myhostname" in
8186 '') myhostname=noname ;;
8187 esac
8188 : you do not want to know about this
8189 set $myhostname
8190 myhostname=$1
8191
8192 : verify guess
8193 if $test "$myhostname" ; then
8194         dflt=y
8195         rp='Your host name appears to be "'$myhostname'".'" Right?"
8196         . ./myread
8197         case "$ans" in
8198         y*) ;;
8199         *) myhostname='';;
8200         esac
8201 fi
8202
8203 : bad guess or no guess
8204 while $test "X$myhostname" = X ; do
8205         dflt=''
8206         rp="Please type the (one word) name of your host:"
8207         . ./myread
8208         myhostname="$ans"
8209 done
8210
8211 : translate upper to lower if necessary
8212 case "$myhostname" in
8213 *[A-Z]*)
8214         echo "(Normalizing case in your host name)"
8215         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8216         ;;
8217 esac
8218
8219 case "$myhostname" in
8220 *.*)
8221         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8222         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8223         echo "(Trimming domain name from host name--host name is now $myhostname)"
8224         ;;
8225 *) case "$mydomain" in
8226         '')
8227                 {
8228                         test "X$hostcat" = "Xypcat hosts" &&
8229                         ypmatch "$myhostname" hosts 2>/dev/null |\
8230                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8231                         $test -s hosts
8232                 } || {
8233                         test "X$hostcat" != "X" &&
8234                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8235                                         /[       ]$myhostname[  . ]/p" > hosts
8236                 }
8237                 tmp_re="[       . ]"
8238                 if $test -f hosts; then
8239                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8240                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8241                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8242                                 hosts | $sort | $uniq | \
8243                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8244                         case `$echo X$dflt` in
8245                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8246                                 dflt=.
8247                                 ;;
8248                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8249                                 ;;
8250                         esac
8251                 else
8252                         echo "(I cannot locate a hosts database anywhere)"
8253                         dflt=.
8254                 fi
8255                 case "$dflt" in
8256                 .)
8257                         tans=`./loc resolv.conf X /etc /usr/etc`
8258                         if $test -f "$tans"; then
8259                                 echo "(Attempting domain name extraction from $tans)"
8260                                 dflt=.`$sed -n -e 's/   / /g' \
8261                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8262                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8263                                 case "$dflt" in
8264                                 .) dflt=.`$sed -n -e 's/        / /g' \
8265                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8266                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8267                                         ;;
8268                                 esac
8269                         fi
8270                         ;;
8271                 esac
8272                 case "$dflt" in
8273                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8274                         dflt=.`sh -c domainname 2>/dev/null`
8275                         case "$dflt" in
8276                         '') dflt='.';;
8277                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8278                         esac
8279                         ;;
8280                 esac
8281                 case "$dflt$osname" in
8282                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8283                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8284                         ;;
8285                 esac
8286                 case "$dflt" in
8287                 .) echo "(Lost all hope -- silly guess then)"
8288                         dflt='.nonet'
8289                         ;;
8290                 esac
8291                 $rm -f hosts
8292                 ;;
8293         *) dflt="$mydomain";;
8294         esac;;
8295 esac
8296 echo " "
8297 rp="What is your domain name?"
8298 . ./myread
8299 tans="$ans"
8300 case "$ans" in
8301 '') ;;
8302 .*) ;;
8303 *) tans=".$tans";;
8304 esac
8305 mydomain="$tans"
8306
8307 : translate upper to lower if necessary
8308 case "$mydomain" in
8309 *[A-Z]*)
8310         echo "(Normalizing case in your domain name)"
8311         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8312         ;;
8313 esac
8314
8315 : a little sanity check here
8316 case "$phostname" in
8317 '') ;;
8318 *)
8319         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8320         $myhostname$mydomain|$myhostname) ;;
8321         *)
8322                 case "$phostname" in
8323                 sed*)
8324                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8325                         ;;
8326                 *)
8327                         echo "(That doesn't agree with your $phostname command, by the way.)"
8328                         ;;
8329                 esac
8330         ;;
8331         esac
8332         ;;
8333 esac
8334
8335 $cat <<EOM
8336
8337 I need to get your e-mail address in Internet format if possible, i.e.
8338 something like user@host.domain. Please answer accurately since I have
8339 no easy means to double check it. The default value provided below
8340 is most probably close to reality but may not be valid from outside
8341 your organization...
8342
8343 EOM
8344 cont=x
8345 while test "$cont"; do
8346         case "$cf_email" in
8347         '') dflt="$cf_by@$myhostname$mydomain";;
8348         *) dflt="$cf_email";;
8349         esac
8350         rp='What is your e-mail address?'
8351         . ./myread
8352         cf_email="$ans"
8353         case "$cf_email" in
8354         *@*.*) cont='' ;;
8355         *)
8356                 rp='Address does not look like an Internet one.  Use it anyway?'
8357                 case "$fastread" in
8358                 yes) dflt=y ;;
8359                 *) dflt=n ;;
8360                 esac
8361                 . ./myread
8362                 case "$ans" in
8363                 y*) cont='' ;;
8364                 *) echo " " ;;
8365                 esac
8366                 ;;
8367         esac
8368 done
8369
8370 $cat <<EOM
8371
8372 If you or somebody else will be maintaining perl at your site, please
8373 fill in the correct e-mail address here so that they may be contacted
8374 if necessary. Currently, the "perlbug" program included with perl
8375 will send mail to this address in addition to perlbug@perl.org. You may
8376 enter "none" for no administrator.
8377
8378 EOM
8379 case "$perladmin" in
8380 '') dflt="$cf_email";;
8381 *) dflt="$perladmin";;
8382 esac
8383 rp='Perl administrator e-mail address'
8384 . ./myread
8385 perladmin="$ans"
8386
8387 : determine whether to only install version-specific parts.
8388 echo " "
8389 $cat <<EOM
8390 Do you want to install only the version-specific parts of the perl
8391 distribution?  Usually you do *not* want to do this.
8392 EOM
8393 case "$versiononly" in
8394 "$define"|[Yy]*|true) dflt='y' ;;
8395 *) dflt='n';
8396 esac
8397 rp="Do you want to install only the version-specific parts of perl?"
8398 . ./myread
8399 case "$ans" in
8400 [yY]*)  val="$define";;
8401 *)      val="$undef" ;;
8402 esac
8403 set versiononly
8404 eval $setvar
8405
8406 case "$versiononly" in
8407 "$define") inc_version_list=''
8408            inc_version_list_init=0
8409            ;;
8410 esac
8411
8412 : figure out how to guarantee perl startup
8413 case "$startperl" in
8414 '')
8415         case "$sharpbang" in
8416         *!)
8417                 $cat <<EOH
8418
8419 I can use the #! construct to start perl on your system. This will
8420 make startup of perl scripts faster, but may cause problems if you
8421 want to share those scripts and perl is not in a standard place
8422 ($binexp/perl) on all your platforms. The alternative is to force
8423 a shell by starting the script with a single ':' character.
8424
8425 EOH
8426                 case "$versiononly" in
8427                 "$define")      dflt="$binexp/perl$version";;  
8428                 *)              dflt="$binexp/perl";;
8429                 esac
8430                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8431                 . ./myread
8432                 case "$ans" in
8433                 none)   startperl=": # use perl";;
8434                 *)      startperl="#!$ans"
8435                         if $test 30 -lt `echo "$ans" | wc -c`; then
8436                                 $cat >&4 <<EOM
8437
8438 WARNING:  Some systems limit the #! command to 32 characters.
8439 If you experience difficulty running Perl scripts with #!, try
8440 installing Perl in a directory with a shorter pathname.
8441
8442 EOM
8443                         fi ;;
8444                 esac
8445                 ;;
8446         *) startperl=": # use perl"
8447                 ;;
8448         esac
8449         ;;
8450 esac
8451 echo "I'll use $startperl to start perl scripts."
8452
8453 : figure best path for perl in scripts
8454 case "$perlpath" in
8455 '')
8456         case "$versiononly" in
8457         "$define")      perlpath="$binexp/perl$version";;
8458         *)              perlpath="$binexp/perl";;
8459         esac
8460         case "$startperl" in
8461         *!*) ;;
8462         *)
8463                 $cat <<EOH
8464
8465 I will use the "eval 'exec'" idiom to start Perl on your system.
8466 I can use the full path of your Perl binary for this purpose, but
8467 doing so may cause problems if you want to share those scripts and
8468 Perl is not always in a standard place ($binexp/perl).
8469
8470 EOH
8471                 dflt="$binexp/perl"
8472                 rp="What path shall I use in \"eval 'exec'\"?"
8473                 . ./myread
8474                 perlpath="$ans"
8475                 ;;
8476         esac
8477         ;;
8478 esac
8479 case "$startperl" in
8480 *!*)    ;;
8481 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8482 esac
8483
8484 : determine where public executable scripts go
8485 set scriptdir scriptdir
8486 eval $prefixit
8487 case "$scriptdir" in
8488 '')
8489         dflt="$bin"
8490         : guess some guesses
8491         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8492         $test -d /usr/share/bin     && dflt=/usr/share/bin
8493         $test -d /usr/local/script  && dflt=/usr/local/script
8494         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8495         $test -d $prefixexp/script  && dflt=$prefixexp/script
8496         set dflt
8497         eval $prefixup
8498         ;;
8499 *)  dflt="$scriptdir"
8500         ;;
8501 esac
8502 $cat <<EOM
8503  
8504 Some installations have a separate directory just for executable scripts so
8505 that they can mount it across multiple architectures but keep the scripts in
8506 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8507 Or you might just lump your scripts in with all your other executables.
8508  
8509 EOM
8510 fn=d~
8511 rp='Where do you keep publicly executable scripts?'
8512 . ./getfile
8513 if $test "X$ansexp" != "X$scriptdirexp"; then
8514         installscript=''
8515 fi
8516 scriptdir="$ans"
8517 scriptdirexp="$ansexp"
8518 : Change installation prefix, if necessary.
8519 if $test X"$prefix" != X"$installprefix"; then
8520         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8521 else
8522         installscript="$scriptdirexp"
8523 fi
8524
8525 : determine where add-on public executables go
8526 case "$sitebin" in
8527 '')     dflt=$siteprefix/bin ;;
8528 *)      dflt=$sitebin ;;
8529 esac
8530 fn=d~
8531 rp='Pathname where the add-on public executables should be installed?'
8532 . ./getfile
8533 sitebin="$ans"
8534 sitebinexp="$ansexp"
8535 : Change installation prefix, if necessary.
8536 if $test X"$prefix" != X"$installprefix"; then
8537         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8538 else
8539         installsitebin="$sitebinexp"
8540 fi
8541
8542 : define an is-a-typedef? function
8543 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8544 case "$inclist" in
8545 "") inclist="sys/types.h";;
8546 esac;
8547 eval "varval=\$$var";
8548 case "$varval" in
8549 "")
8550         $rm -f temp.c;
8551         for inc in $inclist; do
8552                 echo "#include <$inc>" >>temp.c;
8553         done;
8554         echo "#ifdef $type" >> temp.c;
8555         echo "printf(\"We have $type\");" >> temp.c;
8556         echo "#endif" >> temp.c;
8557         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8558         if $contains $type temp.E >/dev/null 2>&1; then
8559                 eval "$var=\$type";
8560         else
8561                 eval "$var=\$def";
8562         fi;
8563         $rm -f temp.?;;
8564 *) eval "$var=\$varval";;
8565 esac'
8566
8567 : define an is-a-typedef? function that prompts if the type is not available.
8568 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8569 case "$inclist" in
8570 "") inclist="sys/types.h";;
8571 esac;
8572 eval "varval=\$$var";
8573 case "$varval" in
8574 "")
8575         $rm -f temp.c;
8576         for inc in $inclist; do
8577                 echo "#include <$inc>" >>temp.c;
8578         done;
8579         echo "#ifdef $type" >> temp.c;
8580         echo "printf(\"We have $type\");" >> temp.c;
8581         echo "#endif" >> temp.c;
8582         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8583         echo " " ;
8584         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8585         if $contains $type temp.E >/dev/null 2>&1; then
8586                 echo "$type found." >&4;
8587                 eval "$var=\$type";
8588         else
8589                 echo "$type NOT found." >&4;
8590                 dflt="$def";
8591                 . ./myread ;
8592                 eval "$var=\$ans";
8593         fi;
8594         $rm -f temp.?;;
8595 *) eval "$var=\$varval";;
8596 esac'
8597
8598 : see what type lseek is declared as in the kernel
8599 rp="What is the type used for lseek's offset on this system?"
8600 set off_t lseektype long stdio.h sys/types.h
8601 eval $typedef_ask
8602
8603 echo " "
8604 echo "Checking to see how big your file offsets are..." >&4
8605 $cat >try.c <<EOCP
8606 #include <sys/types.h>
8607 #include <stdio.h>
8608 int main()
8609 {
8610     printf("%d\n", (int)sizeof($lseektype));
8611     return(0); 
8612 }
8613 EOCP
8614 set try
8615 if eval $compile_ok; then
8616         lseeksize=`$run ./try`
8617         echo "Your file offsets are $lseeksize bytes long."
8618 else
8619         dflt=$longsize
8620         echo " "
8621         echo "(I can't seem to compile the test program.  Guessing...)"
8622         rp="What is the size of your file offsets (in bytes)?"
8623         . ./myread
8624         lseeksize="$ans"
8625 fi
8626 $rm -f try.c try
8627
8628 : see what type file positions are declared as in the library
8629 rp="What is the type for file position used by fsetpos()?"
8630 set fpos_t fpostype long stdio.h sys/types.h
8631 eval $typedef_ask
8632
8633 echo " "
8634 case "$fpostype" in
8635 *_t) zzz="$fpostype"    ;;
8636 *)   zzz="fpos_t"       ;;
8637 esac
8638 echo "Checking the size of $zzz..." >&4 
8639 cat > try.c <<EOCP
8640 #include <sys/types.h>
8641 #include <stdio.h>
8642 int main() {
8643     printf("%d\n", (int)sizeof($fpostype));
8644     exit(0);
8645 }
8646 EOCP
8647 set try
8648 if eval $compile_ok; then
8649         yyy=`$run ./try`
8650         case "$yyy" in
8651         '')     fpossize=4
8652                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8653                 ;;
8654         *)      fpossize=$yyy
8655                 echo "Your $zzz is $fpossize bytes long."
8656                 ;;
8657         esac
8658 else
8659         dflt="$longsize"
8660         echo " " >&4
8661         echo "(I can't compile the test program.  Guessing...)" >&4
8662         rp="What is the size of your file positions (in bytes)?"
8663         . ./myread
8664         fpossize="$ans"
8665 fi
8666
8667
8668
8669 # Backward compatibility (uselfs is deprecated).
8670 case "$uselfs" in
8671 "$define"|true|[yY]*)
8672         cat <<EOM >&4
8673
8674 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8675 EOM
8676         uselargefiles="$define"
8677         ;;
8678 esac                          
8679
8680 case "$lseeksize:$fpossize" in
8681 8:8) cat <<EOM
8682
8683 You can have files larger than 2 gigabytes.
8684 EOM
8685    val="$define" ;;
8686 *)    case "$uselargefiles" in
8687    "$undef"|false|[nN]*) dflt='n' ;;
8688    *)   dflt='y' ;;
8689    esac
8690    cat <<EOM
8691
8692 Perl can be built to understand large files (files larger than 2 gigabytes)
8693 on some systems.  To do so, Configure can be run with -Duselargefiles.
8694
8695 If this doesn't make any sense to you, just accept the default '$dflt'.
8696 EOM
8697    rp='Try to understand large files, if available?'
8698    . ./myread
8699    case "$ans" in
8700    y|Y)         val="$define" ;;
8701    *)           val="$undef"  ;;
8702    esac
8703    ;;
8704 esac
8705 set uselargefiles
8706 eval $setvar
8707 case "$uselargefiles" in
8708 "$define")
8709 : Look for a hint-file generated 'call-back-unit'.  If the
8710 : user has specified that a large files perl is to be built,
8711 : we may need to set or change some other defaults.
8712         if $test -f uselargefiles.cbu; then
8713                 echo "Your platform has some specific hints for large file builds, using them..."
8714                 . ./uselargefiles.cbu
8715                 echo " "
8716                 echo "Rechecking to see how big your file offsets are..." >&4
8717                 $cat >try.c <<EOCP
8718 #include <sys/types.h>
8719 #include <stdio.h>
8720 int main()
8721 {
8722     printf("%d\n", (int)sizeof($lseektype));
8723     return(0); 
8724 }
8725 EOCP
8726                 set try
8727                 if eval $compile_ok; then
8728                         lseeksize=`$run ./try`
8729                         $echo "Your file offsets are now $lseeksize bytes long."
8730                 else
8731                         dflt="$lseeksize"
8732                         echo " "
8733                         echo "(I can't seem to compile the test program.  Guessing...)"
8734                         rp="What is the size of your file offsets (in bytes)?"
8735                         . ./myread
8736                         lseeksize="$ans"
8737                 fi
8738                 case "$fpostype" in
8739                 *_t) zzz="$fpostype"    ;;
8740                 *)   zzz="fpos_t"       ;;
8741                 esac
8742                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8743                 $cat > try.c <<EOCP
8744 #include <sys/types.h>
8745 #include <stdio.h>
8746 int main() {
8747     printf("%d\n", (int)sizeof($fpostype));
8748     exit(0);
8749 }
8750 EOCP
8751                 set try
8752                 if eval $compile_ok; then
8753                         yyy=`$run ./try`
8754                         dflt="$lseeksize"
8755                         case "$yyy" in
8756                         '')     echo " "
8757                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8758                                 ;;
8759                         *)      fpossize=$yyy
8760                                 echo " $fpossize bytes." >&4
8761                                 ;;
8762                         esac
8763                 else
8764                         dflt="$fpossize"
8765                         echo " "
8766                         echo "(I can't compile the test program.  Guessing...)" >&4
8767                         rp="What is the size of your file positions (in bytes)?"
8768                         . ./myread
8769                         fpossize="$ans"
8770                 fi
8771                 $rm -f try.c try
8772         fi
8773         ;;
8774 esac
8775
8776 case "$vendorprefix" in
8777 '')     d_vendorbin="$undef"
8778         vendorbin=''
8779         vendorbinexp=''
8780         ;;
8781 *)      d_vendorbin="$define"
8782         : determine where vendor-supplied executables go.
8783         case "$vendorbin" in
8784         '') dflt=$vendorprefix/bin ;;
8785         *)      dflt="$vendorbin" ;;
8786         esac
8787         fn=d~+
8788         rp='Pathname for the vendor-supplied executables directory?'
8789         . ./getfile
8790         vendorbin="$ans"
8791         vendorbinexp="$ansexp"
8792         ;;
8793 esac
8794 : Change installation prefix, if necessary.
8795 if $test X"$prefix" != X"$installprefix"; then
8796         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8797 else
8798         installvendorbin="$vendorbinexp"
8799 fi
8800
8801 : see if qgcvt exists
8802 set qgcvt d_qgcvt
8803 eval $inlibc
8804
8805 : Check how to convert floats to strings.
8806
8807 if test "X$d_Gconvert" = X; then
8808
8809 echo " "
8810 echo "Checking for an efficient way to convert floats to strings."
8811 echo " " > try.c
8812 case "$uselongdouble" in
8813 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8814 esac
8815 case "$d_longdbl" in
8816 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8817 esac
8818 case "$d_PRIgldbl" in
8819 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8820 esac
8821 $cat >>try.c <<EOP
8822 #ifdef TRY_gconvert
8823 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8824 char *myname = "gconvert";
8825 #endif
8826 #ifdef TRY_gcvt
8827 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8828 char *myname = "gcvt";
8829 #endif
8830 #ifdef TRY_qgcvt
8831 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8832 char *myname = "qgcvt";
8833 #define DOUBLETYPE long double
8834 #endif
8835 #ifdef TRY_sprintf
8836 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8837 #ifdef HAS_PRIgldbl
8838 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8839 #else
8840 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8841 #endif
8842 #else
8843 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8844 #endif
8845 char *myname = "sprintf";
8846 #endif
8847
8848 #ifndef DOUBLETYPE
8849 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8850 #define DOUBLETYPE long double
8851 #else
8852 #define DOUBLETYPE double
8853 #endif
8854 #endif
8855
8856 #include <stdio.h>
8857
8858 #define I_STDLIB $i_stdlib
8859 #ifdef I_STDLIB
8860 #include <stdlib.h>
8861 #endif
8862
8863 int
8864 checkit(expect, got)
8865 char *expect;
8866 char *got;
8867 {
8868     if (strcmp(expect, got)) {
8869                 printf("%s oddity:  Expected %s, got %s\n",
8870                         myname, expect, got);
8871                 exit(1);
8872         }
8873 }
8874
8875 int main()
8876
8877         char buf[64]; 
8878         buf[63] = '\0';
8879
8880         /* This must be 1st test on (which?) platform */
8881         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8882         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8883         checkit("0.1", buf);
8884
8885         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
8886         checkit("0.01", buf);
8887
8888         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
8889         checkit("0.001", buf);
8890
8891         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
8892         checkit("0.0001", buf);
8893
8894         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8895         if (strlen(buf) > 5)
8896             checkit("9e-005", buf); /* for Microsoft ?? */
8897         else
8898             checkit("9e-05", buf);
8899
8900         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8901         checkit("1", buf);
8902
8903         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8904         checkit("1.1", buf);
8905
8906         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8907         checkit("1.01", buf);
8908
8909         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8910         checkit("1.001", buf);
8911
8912         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8913         checkit("1.0001", buf);
8914
8915         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8916         checkit("1.00001", buf);
8917
8918         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8919         checkit("1.000001", buf);
8920
8921         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8922         checkit("0", buf);
8923
8924         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8925         checkit("-1", buf);
8926
8927         /* Some Linux gcvt's give 1.e+5 here. */
8928         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8929         checkit("100000", buf);
8930         
8931         /* Some Linux gcvt's give -1.e+5 here. */
8932         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8933         checkit("-100000", buf);
8934
8935         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8936         checkit("123.456", buf);
8937
8938         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8939         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
8940         /* 34 should be enough to scare even long double
8941          * places into using the e notation. */
8942         if (strlen(buf) > 5)
8943             checkit("1e+034", buf); /* for Microsoft */
8944         else
8945             checkit("1e+34", buf);
8946
8947         /* For Perl, if you add additional tests here, also add them to
8948          * t/base/num.t for benefit of platforms not using Configure or
8949          * overriding d_Gconvert */
8950
8951         exit(0);
8952 }
8953 EOP
8954 : first add preferred functions to our list
8955 xxx_list=""
8956 for xxx_convert in $gconvert_preference; do
8957     case $xxx_convert in
8958     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
8959     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
8960     esac 
8961 done
8962 : then add any others
8963 for xxx_convert in gconvert gcvt sprintf; do
8964     case "$xxx_list" in
8965     *$xxx_convert*) ;;
8966     *) xxx_list="$xxx_list $xxx_convert" ;;
8967     esac 
8968 done
8969
8970 case "$d_longdbl$uselongdouble" in
8971 "$define$define")
8972     : again, add prefered functions to our list first
8973     xxx_ld_list=""
8974     for xxx_convert in $gconvert_ld_preference; do
8975         case $xxx_convert in
8976         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8977         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
8978         esac
8979     done
8980     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
8981     for xxx_convert in qgcvt sprintf $xxx_list; do
8982         case "$xxx_ld_list" in
8983         $xxx_convert*|*" $xxx_convert"*) ;;
8984         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8985         esac
8986     done
8987     : if sprintf cannot do long doubles, move it to the end
8988     if test "$d_PRIgldbl" != "$define"; then
8989         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
8990     fi
8991     : if no qgcvt, remove it
8992     if test "$d_qgcvt" != "$define"; then
8993         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
8994     fi
8995     : use the ld_list
8996     xxx_list="$xxx_ld_list"
8997     ;;
8998 esac
8999
9000 for xxx_convert in $xxx_list; do
9001         echo "Trying $xxx_convert..."
9002         $rm -f try try$_o
9003         set try -DTRY_$xxx_convert
9004         if eval $compile; then
9005                 echo "$xxx_convert() found." >&4
9006                 if $run ./try; then
9007                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9008                         break;
9009                 else
9010                         echo "...But $xxx_convert didn't work as I expected."
9011                         xxx_convert=''
9012                 fi
9013         else
9014                 echo "$xxx_convert NOT found." >&4
9015         fi
9016 done
9017
9018 if test X$xxx_convert = X; then
9019     echo "*** WHOA THERE!!! ***" >&4
9020     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9021     xxx_convert=sprintf
9022 fi
9023
9024 case "$xxx_convert" in
9025 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9026 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9027 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9028 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9029    "$define$define$define")
9030       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9031    "$define$define$undef")
9032       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9033    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9034    esac
9035    ;;  
9036 esac
9037
9038 fi
9039
9040 : see if _fwalk exists
9041 set fwalk d__fwalk
9042 eval $inlibc
9043
9044 : Initialize h_fcntl
9045 h_fcntl=false
9046
9047 : Initialize h_sysfile
9048 h_sysfile=false
9049
9050 : access call always available on UNIX
9051 set access d_access
9052 eval $inlibc
9053
9054 : locate the flags for 'access()'
9055 case "$d_access" in
9056 "$define")
9057         echo " "
9058         $cat >access.c <<'EOCP'
9059 #include <sys/types.h>
9060 #ifdef I_FCNTL
9061 #include <fcntl.h>
9062 #endif
9063 #ifdef I_SYS_FILE
9064 #include <sys/file.h>
9065 #endif
9066 #ifdef I_UNISTD
9067 #include <unistd.h>
9068 #endif
9069 int main() {
9070         exit(R_OK);
9071 }
9072 EOCP
9073         : check sys/file.h first, no particular reason here
9074         if $test `./findhdr sys/file.h` && \
9075                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9076                 h_sysfile=true;
9077                 echo "<sys/file.h> defines the *_OK access constants." >&4
9078         elif $test `./findhdr fcntl.h` && \
9079                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9080                 h_fcntl=true;
9081                 echo "<fcntl.h> defines the *_OK access constants." >&4
9082         elif $test `./findhdr unistd.h` && \
9083                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9084                 echo "<unistd.h> defines the *_OK access constants." >&4
9085         else
9086                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9087         fi
9088         ;;
9089 esac
9090 $rm -f access*
9091
9092 : see if accessx exists
9093 set accessx d_accessx
9094 eval $inlibc
9095
9096 : see if alarm exists
9097 set alarm d_alarm
9098 eval $inlibc
9099
9100 : see if POSIX threads are available
9101 set pthread.h i_pthread
9102 eval $inhdr
9103
9104 : define a fucntion to check prototypes
9105 $cat > protochk <<EOSH
9106 $startsh
9107 cc="$cc"
9108 optimize="$optimize"
9109 ccflags="$ccflags"
9110 prototype="$prototype"
9111 define="$define"
9112 rm=$rm
9113 usethreads=$usethreads
9114 i_pthread=$i_pthread
9115 pthread_h_first=$pthread_h_first
9116 EOSH
9117
9118 $cat >> protochk <<'EOSH'
9119
9120 $rm -f try.c
9121 foo="$1"
9122 shift
9123 while test $# -ge 2; do
9124         case "$1" in
9125                 $define) echo "#include <$2>" >> try.c ;;
9126                 literal) echo "$2" >> try.c ;;
9127         esac
9128     # Extra magic for the benefit of systems that need pthread.h
9129     # to be included early to correctly detect threadsafe functions.
9130     # Such functions must guarantee themselves, though, that the usethreads
9131     # and i_pthread have been defined, before calling protochk.
9132     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9133         echo "#include <pthread.h>" >> try.c
9134         pthread_h_done=yes
9135     fi
9136     shift 2
9137 done
9138 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9139 cat >> try.c <<'EOCP'
9140 #ifdef CAN_PROTOTYPE
9141 #define _(args) args
9142 #else
9143 #define _(args) ()
9144 #endif
9145 EOCP
9146 echo "$foo" >> try.c
9147 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9148 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9149 status=$?
9150 $rm -f try.[co]
9151 exit $status
9152 EOSH
9153 chmod +x protochk
9154 $eunicefix protochk
9155
9156 hasproto='varname=$1; func=$2; shift; shift;
9157 while $test $# -ge 2; do
9158         case "$1" in
9159         $define) echo "#include <$2>";;
9160         esac ;
9161     shift 2;
9162 done > try.c;
9163 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9164 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9165         echo "$func() prototype found.";
9166         val="$define";
9167 else
9168         echo "$func() prototype NOT found.";
9169         val="$undef";
9170 fi;
9171 set $varname;
9172 eval $setvar;
9173 $rm -f try.c tryout.c'
9174
9175 : see if sys/types.h has to be included
9176 set sys/types.h i_systypes
9177 eval $inhdr
9178
9179 : see if sys/select.h has to be included
9180 set sys/select.h i_sysselct
9181 eval $inhdr
9182
9183 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9184 while $test $# -ge 2; do
9185         case "$1" in
9186         $define) echo "#include <$2>";;
9187         esac ;
9188     shift 2;
9189 done > try.c;
9190 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9191 set try;
9192 if eval $compile; then
9193         val="$define";
9194 else
9195         val="$undef";
9196 fi;
9197 set $varname;
9198 eval $setvar;
9199 $rm -f try.c try.o'
9200
9201 : see if we should include time.h, sys/time.h, or both
9202 echo " "
9203 if test "X$timeincl" = X; then
9204         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9205         $echo $n "I'm now running the test program...$c"
9206         $cat >try.c <<'EOCP'
9207 #include <sys/types.h>
9208 #ifdef I_TIME
9209 #include <time.h>
9210 #endif
9211 #ifdef I_SYSTIME
9212 #ifdef SYSTIMEKERNEL
9213 #define KERNEL
9214 #endif
9215 #include <sys/time.h>
9216 #endif
9217 #ifdef I_SYSSELECT
9218 #include <sys/select.h>
9219 #endif
9220 int main()
9221 {
9222         struct tm foo;
9223 #ifdef S_TIMEVAL
9224         struct timeval bar;
9225 #endif
9226 #ifdef S_TIMEZONE
9227         struct timezone tzp;
9228 #endif
9229         if (foo.tm_sec == foo.tm_sec)
9230                 exit(0);
9231 #ifdef S_TIMEVAL
9232         if (bar.tv_sec == bar.tv_sec)
9233                 exit(0);
9234 #endif
9235         exit(1);
9236 }
9237 EOCP
9238         flags=''
9239         for s_timezone in '-DS_TIMEZONE' ''; do
9240         sysselect=''
9241         for s_timeval in '-DS_TIMEVAL' ''; do
9242         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9243         for i_time in '' '-DI_TIME'; do
9244         for i_systime in '-DI_SYSTIME' ''; do
9245                 case "$flags" in
9246                 '') $echo $n ".$c"
9247                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9248                         if eval $compile; then
9249                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9250                                 shift
9251                                 flags="$*"
9252                                 echo " "
9253                                 $echo $n "Succeeded with $flags$c"
9254                         fi
9255                         ;;
9256                 esac
9257         done
9258         done
9259         done
9260         done
9261         done
9262         timeincl=''
9263         echo " "
9264         case "$flags" in
9265         *SYSTIMEKERNEL*) i_systimek="$define"
9266                 timeincl=`./findhdr sys/time.h`
9267                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9268         *) i_systimek="$undef";;
9269         esac
9270         case "$flags" in
9271         *I_TIME*) i_time="$define"
9272                 timeincl=`./findhdr time.h`" $timeincl"
9273                 echo "We'll include <time.h>." >&4;;
9274         *) i_time="$undef";;
9275         esac
9276         case "$flags" in
9277         *I_SYSTIME*) i_systime="$define"
9278                 timeincl=`./findhdr sys/time.h`" $timeincl"
9279                 echo "We'll include <sys/time.h>." >&4;;
9280         *) i_systime="$undef";;
9281         esac
9282         $rm -f try.c try
9283 fi
9284 : see if struct tm knows about tm_zone
9285 case "$i_systime$i_time" in
9286 *$define*) 
9287         echo " "
9288         echo "Checking to see if your struct tm has tm_zone field..." >&4
9289         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9290         eval $hasfield
9291         ;;
9292 *)      val="$undef"
9293         set d_tm_tm_zone
9294         eval $setvar
9295         ;;
9296 esac
9297 case "$d_tm_tm_zone" in
9298 "$define")      echo "Yes, it does."   ;;
9299 *)              echo "No, it doesn't." ;;
9300 esac
9301 : see if struct tm knows about tm_gmtoff
9302 case "$i_systime$i_time" in
9303 *$define*) 
9304         echo " "
9305         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9306         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9307         eval $hasfield
9308         ;;
9309 *)      val="$undef"
9310         set d_tm_tm_gmtoff
9311         eval $setvar
9312         ;;
9313 esac
9314 case "$d_tm_tm_gmtoff" in
9315 "$define")      echo "Yes, it does."   ;;
9316 *)              echo "No, it doesn't." ;;
9317 esac
9318
9319 : see if asctime_r exists
9320 set asctime_r d_asctime_r
9321 eval $inlibc
9322 case "$d_asctime_r" in
9323 "$define")
9324         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9325         case "$d_asctime_r_proto:$usethreads" in
9326         ":define")      d_asctime_r_proto=define
9327                 set d_asctime_r_proto asctime_r $hdrs
9328                 eval $hasproto ;;
9329         *)      ;;
9330         esac
9331         case "$d_asctime_r_proto" in
9332         define)
9333         case "$asctime_r_proto" in
9334         ''|0) try='char* asctime_r(const struct tm*, char*);'
9335         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9336         esac
9337         case "$asctime_r_proto" in
9338         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9339         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9340         esac
9341         case "$asctime_r_proto" in
9342         ''|0) try='int asctime_r(const struct tm*, char*);'
9343         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9344         esac
9345         case "$asctime_r_proto" in
9346         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9347         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9348         esac
9349         case "$asctime_r_proto" in
9350         ''|0)   d_asctime_r=undef
9351                 asctime_r_proto=0
9352                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9353         * )     case "$asctime_r_proto" in
9354                 REENTRANT_PROTO*) ;;
9355                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9356                 esac
9357                 echo "Prototype: $try" ;;
9358         esac
9359         ;;
9360         *)      case "$usethreads" in
9361                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9362                 esac
9363                 d_asctime_r=undef
9364                 asctime_r_proto=0
9365                 ;;
9366         esac
9367         ;;
9368 *)      asctime_r_proto=0
9369         ;;
9370 esac
9371
9372 : see if atolf exists
9373 set atolf d_atolf
9374 eval $inlibc
9375
9376 : see if atoll exists
9377 set atoll d_atoll
9378 eval $inlibc
9379
9380 : Look for GNU-cc style attribute checking
9381 echo " "
9382 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9383 $cat >attrib.c <<'EOCP'
9384 #include <stdio.h>
9385 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9386 EOCP
9387 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9388         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9389                 echo "Your C compiler doesn't fully support __attribute__."
9390                 val="$undef"
9391         else
9392                 echo "Your C compiler supports __attribute__."
9393                 val="$define"
9394         fi
9395 else
9396         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9397         val="$undef"
9398 fi
9399 set d_attribut
9400 eval $setvar
9401 $rm -f attrib*
9402
9403 : see if bcmp exists
9404 set bcmp d_bcmp
9405 eval $inlibc
9406
9407 : see if bcopy exists
9408 set bcopy d_bcopy
9409 eval $inlibc
9410
9411 : see if this is a unistd.h system
9412 set unistd.h i_unistd
9413 eval $inhdr
9414
9415 : see if getpgrp exists
9416 set getpgrp d_getpgrp
9417 eval $inlibc
9418
9419 case "$d_getpgrp" in
9420 "$define")
9421         echo " "
9422         echo "Checking to see which flavor of getpgrp is in use..."
9423         $cat >try.c <<EOP
9424 #$i_unistd I_UNISTD
9425 #include <sys/types.h>
9426 #ifdef I_UNISTD
9427 #  include <unistd.h>
9428 #endif
9429 int main()
9430 {
9431         if (getuid() == 0) {
9432                 printf("(I see you are running Configure as super-user...)\n");
9433                 setuid(1);
9434         }
9435 #ifdef TRY_BSD_PGRP
9436         if (getpgrp(1) == 0)
9437                 exit(0);
9438 #else
9439         if (getpgrp() > 0)
9440                 exit(0);
9441 #endif
9442         exit(1);
9443 }
9444 EOP
9445         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9446                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9447                 val="$define"
9448         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9449                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9450                 val="$undef"
9451         else
9452                 echo "I can't seem to compile and run the test program."
9453                 if ./usg; then
9454                         xxx="a USG one, i.e. you use getpgrp()."
9455                 else
9456                         # SVR4 systems can appear rather BSD-ish.
9457                         case "$i_unistd" in
9458                         $undef)
9459                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9460                                 val="$define"
9461                                 ;;
9462                         $define)
9463                                 xxx="probably a USG one, i.e. you use getpgrp()."
9464                                 val="$undef"
9465                                 ;;
9466                         esac
9467                 fi
9468                 echo "Assuming your getpgrp is $xxx" >&4
9469         fi
9470         ;;
9471 *) val="$undef";;
9472 esac
9473 set d_bsdgetpgrp
9474 eval $setvar
9475 $rm -f try try.*
9476
9477 : see if setpgrp exists
9478 set setpgrp d_setpgrp
9479 eval $inlibc
9480
9481 case "$d_setpgrp" in
9482 "$define")
9483         echo " "
9484         echo "Checking to see which flavor of setpgrp is in use..."
9485         $cat >try.c <<EOP
9486 #$i_unistd I_UNISTD
9487 #include <sys/types.h>
9488 #ifdef I_UNISTD
9489 #  include <unistd.h>
9490 #endif
9491 int main()
9492 {
9493         if (getuid() == 0) {
9494                 printf("(I see you are running Configure as super-user...)\n");
9495                 setuid(1);
9496         }
9497 #ifdef TRY_BSD_PGRP
9498         if (-1 == setpgrp(1, 1))
9499                 exit(0);
9500 #else
9501         if (setpgrp() != -1)
9502                 exit(0);
9503 #endif
9504         exit(1);
9505 }
9506 EOP
9507         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9508                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9509                 val="$define"
9510         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9511                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9512                 val="$undef"
9513         else
9514                 echo "(I can't seem to compile and run the test program.)"
9515                 if ./usg; then
9516                         xxx="a USG one, i.e. you use setpgrp()."
9517                 else
9518                         # SVR4 systems can appear rather BSD-ish.
9519                         case "$i_unistd" in
9520                         $undef)
9521                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9522                                 val="$define"
9523                                 ;;
9524                         $define)
9525                                 xxx="probably a USG one, i.e. you use setpgrp()."
9526                                 val="$undef"
9527                                 ;;
9528                         esac
9529                 fi
9530                 echo "Assuming your setpgrp is $xxx" >&4
9531         fi
9532         ;;
9533 *) val="$undef";;
9534 esac
9535 set d_bsdsetpgrp
9536 eval $setvar
9537 $rm -f try try.*
9538 : see if bzero exists
9539 set bzero d_bzero
9540 eval $inlibc
9541
9542 : see if signal is declared as pointer to function returning int or void
9543 echo " "
9544 xxx=`./findhdr signal.h`
9545 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9546 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9547         echo "You have int (*signal())() instead of void." >&4
9548         val="$undef"
9549 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9550         echo "You have void (*signal())()." >&4
9551         val="$define"
9552 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9553         echo "You have int (*signal())() instead of void." >&4
9554         val="$undef"
9555 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9556         echo "You have void (*signal())()." >&4
9557         val="$define"
9558 else
9559         case "$d_voidsig" in
9560         '')
9561         echo "I can't determine whether signal handler returns void or int..." >&4
9562                 dflt=void
9563                 rp="What type does your signal handler return?"
9564                 . ./myread
9565                 case "$ans" in
9566                 v*) val="$define";;
9567                 *) val="$undef";;
9568                 esac;;
9569         "$define")
9570                 echo "As you already told me, signal handler returns void." >&4
9571                 val="$define"
9572                 ;;
9573         *)      echo "As you already told me, signal handler returns int." >&4
9574                 val="$undef"
9575                 ;;
9576         esac
9577 fi
9578 set d_voidsig
9579 eval $setvar
9580 case "$d_voidsig" in
9581 "$define") signal_t="void";;
9582 *) signal_t="int";;
9583 esac
9584 $rm -f $$.tmp
9585
9586 : check for ability to cast large floats to 32-bit ints.
9587 echo " "
9588 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9589 if $test "$intsize" -ge 4; then
9590         xxx=int
9591 else
9592         xxx=long
9593 fi
9594 $cat >try.c <<EOCP
9595 #include <stdio.h>
9596 #include <sys/types.h>
9597 #include <signal.h>
9598 $signal_t blech(s) int s; { exit(3); }
9599 int main()
9600 {
9601         $xxx i32;
9602         double f, g;
9603         int result = 0;
9604         char str[16];
9605         signal(SIGFPE, blech);
9606
9607         /* Don't let compiler optimize the test away.  Store the number 
9608            in a writable string for gcc to pass to sscanf under HP/UX.
9609         */
9610         sprintf(str, "2147483647");
9611         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9612         g = 10 * f;
9613         i32  = ($xxx) g;
9614
9615         /* x86 processors will probably give 0x8000 0000, which is a
9616        sign change.  We don't want that.  We want to mimic SPARC
9617            behavior here, which is to preserve the sign and give
9618            back 0x7fff ffff.
9619         */
9620         if (i32 != ($xxx) f)
9621                 result |= 1;
9622         exit(result);
9623 }
9624 EOCP
9625 set try
9626 if eval $compile_ok; then
9627         $run ./try
9628         yyy=$?
9629 else
9630         echo "(I can't seem to compile the test program--assuming it can't)"
9631         yyy=1
9632 fi
9633 case "$yyy" in
9634 0)      val="$define"
9635         echo "Yup, it can."
9636         ;;
9637 *)      val="$undef"
9638         echo "Nope, it can't."
9639         ;;
9640 esac
9641 set d_casti32
9642 eval $setvar
9643 $rm -f try try.*
9644
9645 : check for ability to cast negative floats to unsigned
9646 echo " "
9647 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9648 $cat >try.c <<EOCP
9649 #include <stdio.h>
9650 #include <sys/types.h>
9651 #include <signal.h>
9652 $signal_t blech(s) int s; { exit(7); }
9653 $signal_t blech_in_list(s) int s; { exit(4); }
9654 unsigned long dummy_long(p) unsigned long p; { return p; }
9655 unsigned int dummy_int(p) unsigned int p; { return p; }
9656 unsigned short dummy_short(p) unsigned short p; { return p; }
9657 int main()
9658 {
9659         double f;
9660         unsigned long along;
9661         unsigned int aint;
9662         unsigned short ashort;
9663         int result = 0;
9664         char str[16];
9665         
9666         /* Frustrate gcc-2.7.2's optimizer which failed this test with
9667            a direct f = -123. assignment.  gcc-2.8.0 reportedly
9668            optimized the whole file away
9669         */
9670         /* Store the number in a writable string for gcc to pass to 
9671            sscanf under HP/UX.
9672         */
9673         sprintf(str, "-123");
9674         sscanf(str, "%lf", &f);  /* f = -123.; */
9675
9676         signal(SIGFPE, blech);
9677         along = (unsigned long)f;
9678         aint = (unsigned int)f;
9679         ashort = (unsigned short)f;
9680         if (along != (unsigned long)-123)
9681                 result |= 1;
9682         if (aint != (unsigned int)-123)
9683                 result |= 1;
9684         if (ashort != (unsigned short)-123)
9685                 result |= 1;
9686         sprintf(str, "1073741824.");
9687         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9688         f = f + f;
9689         along = 0;
9690         along = (unsigned long)f;
9691         if (along != 0x80000000)
9692                 result |= 2;
9693         f -= 1.;
9694         along = 0;
9695         along = (unsigned long)f;
9696         if (along != 0x7fffffff)
9697                 result |= 1;
9698         f += 2.;
9699         along = 0;
9700         along = (unsigned long)f;
9701         if (along != 0x80000001)
9702                 result |= 2;
9703         if (result)
9704                 exit(result);
9705         signal(SIGFPE, blech_in_list);
9706         sprintf(str, "123.");
9707         sscanf(str, "%lf", &f);  /* f = 123.; */
9708         along = dummy_long((unsigned long)f);
9709         aint = dummy_int((unsigned int)f);
9710         ashort = dummy_short((unsigned short)f);
9711         if (along != (unsigned long)123)
9712                 result |= 4;
9713         if (aint != (unsigned int)123)
9714                 result |= 4;
9715         if (ashort != (unsigned short)123)
9716                 result |= 4;
9717         exit(result);
9718
9719 }
9720 EOCP
9721 set try
9722 if eval $compile_ok; then
9723         $run ./try
9724         castflags=$?
9725 else
9726         echo "(I can't seem to compile the test program--assuming it can't)"
9727         castflags=7
9728 fi
9729 case "$castflags" in
9730 0)      val="$define"
9731         echo "Yup, it can."
9732         ;;
9733 *)      val="$undef"
9734         echo "Nope, it can't."
9735         ;;
9736 esac
9737 set d_castneg
9738 eval $setvar
9739 $rm -f try.*
9740
9741 : see if vprintf exists
9742 echo " "
9743 if set vprintf val -f d_vprintf; eval $csym; $val; then
9744         echo 'vprintf() found.' >&4
9745         val="$define"
9746         $cat >try.c <<'EOF'
9747 #include <varargs.h>
9748
9749 int main() { xxx("foo"); }
9750
9751 xxx(va_alist)
9752 va_dcl
9753 {
9754         va_list args;
9755         char buf[10];
9756
9757         va_start(args);
9758         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9759 }
9760 EOF
9761         set try
9762         if eval $compile && $run ./try; then
9763                 echo "Your vsprintf() returns (int)." >&4
9764                 val2="$undef"
9765         else
9766                 echo "Your vsprintf() returns (char*)." >&4
9767                 val2="$define"
9768         fi
9769 else
9770         echo 'vprintf() NOT found.' >&4
9771                 val="$undef"
9772                 val2="$undef"
9773 fi
9774 $rm -f try try.*
9775 set d_vprintf
9776 eval $setvar
9777 val=$val2
9778 set d_charvspr
9779 eval $setvar
9780
9781 : see if chown exists
9782 set chown d_chown
9783 eval $inlibc
9784
9785 : see if chroot exists
9786 set chroot d_chroot
9787 eval $inlibc
9788
9789 : see if chsize exists
9790 set chsize d_chsize
9791 eval $inlibc
9792
9793 : see if class exists
9794 set class d_class
9795 eval $inlibc
9796
9797 hasstruct='varname=$1; struct=$2; shift; shift;
9798 while $test $# -ge 2; do
9799         case "$1" in
9800         $define) echo "#include <$2>";;
9801         esac ;
9802     shift 2;
9803 done > try.c;
9804 echo "int main () { struct $struct foo; }" >> try.c;
9805 set try;
9806 if eval $compile; then
9807         val="$define";
9808 else
9809         val="$undef";
9810 fi;
9811 set $varname;
9812 eval $setvar;
9813 $rm -f try.c try.o'
9814
9815 socketlib=''
9816 sockethdr=''
9817 : see whether socket exists
9818 echo " "
9819 $echo $n "Hmm... $c" >&4
9820 if set socket val -f d_socket; eval $csym; $val; then
9821         echo "Looks like you have Berkeley networking support." >&4
9822         d_socket="$define"
9823         if set setsockopt val -f; eval $csym; $val; then
9824                 d_oldsock="$undef"
9825         else
9826                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9827                 d_oldsock="$define"
9828         fi
9829 else
9830         if $contains socklib libc.list >/dev/null 2>&1; then
9831                 echo "Looks like you have Berkeley networking support." >&4
9832                 d_socket="$define"
9833                 : we will have to assume that it supports the 4.2 BSD interface
9834                 d_oldsock="$undef"
9835         else
9836                 echo "You don't have Berkeley networking in libc$_a..." >&4
9837                 if test "X$d_socket" = "X$define"; then
9838                    echo "...but you seem to believe that you have sockets." >&4
9839                 else
9840                         for net in net socket
9841                         do
9842                                 if test -f /usr/lib/lib$net$_a; then
9843                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9844                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9845                                         if $contains socket libc.list >/dev/null 2>&1; then
9846                                                 d_socket="$define"
9847                                                 socketlib="-l$net"
9848                                                 case "$net" in
9849                                                 net)
9850                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9851                                                         sockethdr="-I/usr/netinclude"
9852                                                         ;;
9853                                                 esac
9854                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
9855                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9856                                                         d_oldsock="$undef"
9857                                                 else
9858                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9859                                                         d_oldsock="$define"
9860                                                 fi
9861                                                 break
9862                                         fi
9863                                 fi
9864                         done
9865                         if test "X$d_socket" != "X$define"; then
9866                            echo "or anywhere else I see." >&4
9867                            d_socket="$undef"
9868                            d_oldsock="$undef"
9869                         fi
9870                 fi
9871         fi
9872 fi
9873
9874 : see if socketpair exists
9875 set socketpair d_sockpair
9876 eval $inlibc
9877
9878
9879 echo " "
9880 echo "Checking the availability of certain socket constants..." >&4
9881 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9882         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9883         $cat >try.c <<EOF
9884 #include <sys/types.h>
9885 #include <sys/socket.h>
9886 int main() {
9887     int i = $ENUM;
9888 }
9889 EOF
9890         val="$undef"
9891         set try; if eval $compile; then
9892                 val="$define"
9893         fi
9894         set d_${enum}; eval $setvar
9895         $rm -f try.c try
9896 done
9897
9898 : see if this is a sys/uio.h system
9899 set sys/uio.h i_sysuio
9900 eval $inhdr
9901
9902
9903 echo " "
9904 echo "Checking to see if your system supports struct cmsghdr..." >&4
9905 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9906 eval $hasstruct
9907 case "$d_cmsghdr_s" in
9908 "$define")      echo "Yes, it does."   ;;
9909 *)              echo "No, it doesn't." ;;
9910 esac
9911
9912
9913 : check for const keyword
9914 echo " "
9915 echo 'Checking to see if your C compiler knows about "const"...' >&4
9916 $cat >const.c <<'EOCP'
9917 typedef struct spug { int drokk; } spug;
9918 int main()
9919 {
9920         const char *foo;
9921         const spug y;
9922 }
9923 EOCP
9924 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9925         val="$define"
9926         echo "Yup, it does."
9927 else
9928         val="$undef"
9929         echo "Nope, it doesn't."
9930 fi
9931 set d_const
9932 eval $setvar
9933
9934 : see if crypt exists
9935 echo " "
9936 set crypt d_crypt
9937 eval $inlibc
9938 case "$d_crypt" in
9939 $define) cryptlib='' ;;
9940 *)      if set crypt val -f d_crypt; eval $csym; $val; then
9941                 echo 'crypt() found.' >&4
9942                 val="$define"
9943                 cryptlib=''
9944         else
9945                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9946                 if $test -z "$cryptlib"; then
9947                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9948                 else
9949                         cryptlib=-lcrypt
9950                 fi
9951                 if $test -z "$cryptlib"; then
9952                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9953                 else
9954                         cryptlib=-lcrypt
9955                 fi
9956                 if $test -z "$cryptlib"; then
9957                         cryptlib=`./loc libcrypt$_a "" $libpth`
9958                 else
9959                         cryptlib=-lcrypt
9960                 fi
9961                 if $test -z "$cryptlib"; then
9962                         echo 'crypt() NOT found.' >&4
9963                         val="$undef"
9964                 else
9965                         val="$define"
9966                 fi
9967         fi
9968         set d_crypt
9969         eval $setvar
9970         ;;
9971 esac
9972
9973 : see if this is a crypt.h system
9974 set crypt.h i_crypt
9975 eval $inhdr
9976
9977 : see if crypt_r exists
9978 set crypt_r d_crypt_r
9979 eval $inlibc
9980 case "$d_crypt_r" in
9981 "$define")
9982         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
9983         case "$d_crypt_r_proto:$usethreads" in
9984         ":define")      d_crypt_r_proto=define
9985                 set d_crypt_r_proto crypt_r $hdrs
9986                 eval $hasproto ;;
9987         *)      ;;
9988         esac
9989         case "$d_crypt_r_proto" in
9990         define)
9991         case "$crypt_r_proto" in
9992         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
9993         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
9994         esac
9995         case "$crypt_r_proto" in
9996         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
9997         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
9998         esac
9999         case "$crypt_r_proto" in
10000         ''|0)   d_crypt_r=undef
10001                 crypt_r_proto=0
10002                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10003         * )     case "$crypt_r_proto" in
10004                 REENTRANT_PROTO*) ;;
10005                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10006                 esac
10007                 echo "Prototype: $try" ;;
10008         esac
10009         ;;
10010         *)      case "$usethreads" in
10011                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10012                 esac
10013                 d_crypt_r=undef
10014                 crypt_r_proto=0
10015                 ;;
10016         esac
10017         ;;
10018 *)      crypt_r_proto=0
10019         ;;
10020 esac
10021
10022 : get csh whereabouts
10023 case "$csh" in
10024 'csh') val="$undef" ;;
10025 *) val="$define" ;;
10026 esac
10027 set d_csh
10028 eval $setvar
10029 : Respect a hint or command line value for full_csh.
10030 case "$full_csh" in
10031 '') full_csh=$csh ;;
10032 esac
10033
10034 : see if ctermid_r exists
10035 set ctermid_r d_ctermid_r
10036 eval $inlibc
10037 case "$d_ctermid_r" in
10038 "$define")
10039         hdrs="$i_systypes sys/types.h define stdio.h "
10040         case "$d_ctermid_r_proto:$usethreads" in
10041         ":define")      d_ctermid_r_proto=define
10042                 set d_ctermid_r_proto ctermid_r $hdrs
10043                 eval $hasproto ;;
10044         *)      ;;
10045         esac
10046         case "$d_ctermid_r_proto" in
10047         define)
10048         case "$ctermid_r_proto" in
10049         ''|0) try='char* ctermid_r(char*);'
10050         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10051         esac
10052         case "$ctermid_r_proto" in
10053         ''|0)   d_ctermid_r=undef
10054                 ctermid_r_proto=0
10055                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10056         * )     case "$ctermid_r_proto" in
10057                 REENTRANT_PROTO*) ;;
10058                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10059                 esac
10060                 echo "Prototype: $try" ;;
10061         esac
10062         ;;
10063         *)      case "$usethreads" in
10064                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10065                 esac
10066                 d_ctermid_r=undef
10067                 ctermid_r_proto=0
10068                 ;;
10069         esac
10070         ;;
10071 *)      ctermid_r_proto=0
10072         ;;
10073 esac
10074
10075 : see if ctime_r exists
10076 set ctime_r d_ctime_r
10077 eval $inlibc
10078 case "$d_ctime_r" in
10079 "$define")
10080         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10081         case "$d_ctime_r_proto:$usethreads" in
10082         ":define")      d_ctime_r_proto=define
10083                 set d_ctime_r_proto ctime_r $hdrs
10084                 eval $hasproto ;;
10085         *)      ;;
10086         esac
10087         case "$d_ctime_r_proto" in
10088         define)
10089         case "$ctime_r_proto" in
10090         ''|0) try='char* ctime_r(const time_t*, char*);'
10091         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10092         esac
10093         case "$ctime_r_proto" in
10094         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10095         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10096         esac
10097         case "$ctime_r_proto" in
10098         ''|0) try='int ctime_r(const time_t*, char*);'
10099         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10100         esac
10101         case "$ctime_r_proto" in
10102         ''|0) try='int ctime_r(const time_t*, char*, int);'
10103         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10104         esac
10105         case "$ctime_r_proto" in
10106         ''|0)   d_ctime_r=undef
10107                 ctime_r_proto=0
10108                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10109         * )     case "$ctime_r_proto" in
10110                 REENTRANT_PROTO*) ;;
10111                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10112                 esac
10113                 echo "Prototype: $try" ;;
10114         esac
10115         ;;
10116         *)      case "$usethreads" in
10117                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10118                 esac
10119                 d_ctime_r=undef
10120                 ctime_r_proto=0
10121                 ;;
10122         esac
10123         ;;
10124 *)      ctime_r_proto=0
10125         ;;
10126 esac
10127
10128 : see if cuserid exists
10129 set cuserid d_cuserid
10130 eval $inlibc
10131
10132 : see if this is a limits.h system
10133 set limits.h i_limits
10134 eval $inhdr
10135
10136 : see if this is a float.h system
10137 set float.h i_float
10138 eval $inhdr
10139
10140 : See if number of significant digits in a double precision number is known
10141 echo " "
10142 $cat >dbl_dig.c <<EOM
10143 #$i_limits I_LIMITS
10144 #$i_float I_FLOAT
10145 #ifdef I_LIMITS
10146 #include <limits.h>
10147 #endif
10148 #ifdef I_FLOAT
10149 #include <float.h>
10150 #endif
10151 #ifdef DBL_DIG
10152 printf("Contains DBL_DIG");
10153 #endif
10154 EOM
10155 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10156 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10157         echo "DBL_DIG found." >&4
10158         val="$define"
10159 else
10160         echo "DBL_DIG NOT found." >&4
10161         val="$undef"
10162 fi
10163 $rm -f dbl_dig.?
10164 set d_dbl_dig
10165 eval $setvar
10166
10167 : see if dbm.h is available
10168 : see if dbmclose exists
10169 set dbmclose d_dbmclose
10170 eval $inlibc
10171
10172 case "$d_dbmclose" in
10173 $define)
10174         set dbm.h i_dbm
10175         eval $inhdr
10176         case "$i_dbm" in
10177         $define)
10178                 val="$undef"
10179                 set i_rpcsvcdbm
10180                 eval $setvar
10181                 ;;
10182         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10183                 eval $inhdr
10184                 ;;
10185         esac
10186         ;;
10187 *)      echo "We won't be including <dbm.h>"
10188         val="$undef"
10189         set i_dbm
10190         eval $setvar
10191         val="$undef"
10192         set i_rpcsvcdbm
10193         eval $setvar
10194         ;;
10195 esac
10196
10197 : see if prototype for dbminit is available
10198 echo " "
10199 set d_dbminitproto dbminit $i_dbm dbm.h
10200 eval $hasproto
10201
10202 : see if difftime exists
10203 set difftime d_difftime
10204 eval $inlibc
10205
10206 : see if this is a dirent system
10207 echo " "
10208 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10209         val="$define"
10210         echo "<dirent.h> found." >&4
10211 else
10212         val="$undef"
10213         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10214                 echo "<sys/dir.h> found." >&4
10215                 echo " "
10216         else
10217                 xinc=`./findhdr sys/ndir.h`
10218         fi
10219         echo "<dirent.h> NOT found." >&4
10220 fi
10221 set i_dirent
10222 eval $setvar
10223
10224 : Look for type of directory structure.
10225 echo " "
10226 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10227
10228 case "$direntrytype" in
10229 ''|' ')
10230         case "$i_dirent" in
10231         $define) guess1='struct dirent' ;;
10232         *) guess1='struct direct'  ;;
10233         esac
10234         ;;
10235 *)      guess1="$direntrytype"
10236         ;;
10237 esac
10238
10239 case "$guess1" in
10240 'struct dirent') guess2='struct direct' ;;
10241 *) guess2='struct dirent' ;;
10242 esac
10243                 
10244 if $contains "$guess1" try.c >/dev/null 2>&1; then
10245         direntrytype="$guess1"
10246         echo "Your directory entries are $direntrytype." >&4
10247 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10248         direntrytype="$guess2"
10249         echo "Your directory entries seem to be $direntrytype." >&4
10250 else
10251         echo "I don't recognize your system's directory entries." >&4
10252         rp="What type is used for directory entries on this system?"
10253         dflt="$guess1"
10254         . ./myread
10255         direntrytype="$ans"
10256 fi
10257 $rm -f try.c
10258
10259
10260 : see if the directory entry stores field length
10261 echo " "
10262 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10263 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10264         echo "Good, your directory entry keeps length information in d_namlen." >&4
10265         val="$define"
10266 else
10267         echo "Your directory entry does not know about the d_namlen field." >&4
10268         val="$undef"
10269 fi
10270 set d_dirnamlen
10271 eval $setvar
10272 $rm -f try.c
10273
10274 : see if this is an sysdir system
10275 set sys/dir.h i_sysdir
10276 eval $inhdr
10277
10278 : see if this is an sysndir system
10279 set sys/ndir.h i_sysndir
10280 eval $inhdr
10281
10282 : Look for dirfd
10283 echo " "
10284 $cat >dirfd.c <<EOM
10285 #include <stdio.h>
10286 #$i_dirent I_DIRENT             /**/
10287 #$i_sysdir I_SYS_DIR            /**/
10288 #$i_sysndir I_SYS_NDIR          /**/
10289 #$i_systypes I_SYS_TYPES        /**/
10290 #if defined(I_SYS_TYPES)
10291 #include <sys/types.h>
10292 #endif
10293 #if defined(I_DIRENT)
10294 #include <dirent.h>
10295 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10296 #include <sys/dir.h>
10297 #endif
10298 #else
10299 #ifdef I_SYS_NDIR
10300 #include <sys/ndir.h>
10301 #else
10302 #ifdef I_SYS_DIR
10303 #ifdef hp9000s500
10304 #include <ndir.h>       /* may be wrong in the future */
10305 #else
10306 #include <sys/dir.h>
10307 #endif
10308 #endif
10309 #endif
10310 #endif 
10311 int main() {
10312         DIR *dirp = opendir(".");
10313         if (dirfd(dirp) >= 0)
10314                 exit(0);
10315         else
10316                 exit(1);
10317 }
10318 EOM
10319 set dirfd
10320 if eval $compile; then
10321         val="$define"
10322 fi
10323 case "$val" in
10324 $define)        echo "dirfd() found." >&4       ;;
10325 *)              echo "dirfd() NOT found." >&4   ;;
10326 esac
10327 set d_dirfd
10328 eval $setvar
10329 $rm -f dirfd*
10330
10331 : see if dlerror exists
10332 xxx_runnm="$runnm"
10333 runnm=false
10334 set dlerror d_dlerror
10335 eval $inlibc
10336 runnm="$xxx_runnm"
10337
10338 : see if dlfcn is available
10339 set dlfcn.h i_dlfcn
10340 eval $inhdr
10341
10342 case "$usedl" in
10343 $define|y|true)
10344         $cat << EOM
10345
10346 On a few systems, the dynamically loaded modules that perl generates and uses
10347 will need a different extension than shared libs. The default will probably
10348 be appropriate.
10349
10350 EOM
10351         case "$dlext" in
10352         '')     dflt="$so" ;;
10353         *)      dflt="$dlext" ;;
10354         esac
10355         rp='What is the extension of dynamically loaded modules'
10356         . ./myread
10357         dlext="$ans"
10358         ;;
10359 *)
10360         dlext="none"
10361         ;;
10362 esac
10363
10364 : Check if dlsym need a leading underscore
10365 echo " "
10366 val="$undef"
10367
10368 case "$dlsrc" in
10369 dl_dlopen.xs)
10370         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10371         $cat >dyna.c <<'EOM'
10372 fred () { }
10373 EOM
10374
10375 $cat >fred.c<<EOM
10376
10377 #include <stdio.h>
10378 #$i_dlfcn I_DLFCN
10379 #ifdef I_DLFCN
10380 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10381 #else
10382 #include <sys/types.h>
10383 #include <nlist.h>
10384 #include <link.h>
10385 #endif
10386
10387 extern int fred() ;
10388
10389 int main()
10390 {
10391     void * handle ;
10392     void * symbol ;
10393 #ifndef RTLD_LAZY
10394     int mode = 1 ;
10395 #else
10396     int mode = RTLD_LAZY ;
10397 #endif
10398     handle = dlopen("./dyna.$dlext", mode) ;
10399     if (handle == NULL) {
10400         printf ("1\n") ;
10401         fflush (stdout) ;
10402         exit(0);
10403     }
10404     symbol = dlsym(handle, "fred") ;
10405     if (symbol == NULL) {
10406         /* try putting a leading underscore */
10407         symbol = dlsym(handle, "_fred") ;
10408         if (symbol == NULL) {
10409             printf ("2\n") ;
10410             fflush (stdout) ;
10411             exit(0);
10412         }
10413         printf ("3\n") ;
10414     }
10415     else
10416         printf ("4\n") ;
10417     fflush (stdout) ;
10418     exit(0);
10419 }
10420 EOM
10421         : Call the object file tmp-dyna.o in case dlext=o.
10422         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10423                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10424                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10425                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10426                 xxx=`$run ./fred`
10427                 case $xxx in
10428                 1)      echo "Test program failed using dlopen." >&4
10429                         echo "Perhaps you should not use dynamic loading." >&4;;
10430                 2)      echo "Test program failed using dlsym." >&4
10431                         echo "Perhaps you should not use dynamic loading." >&4;;
10432                 3)      echo "dlsym needs a leading underscore" >&4
10433                         val="$define" ;;
10434                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10435                 esac
10436         else
10437                 echo "I can't compile and run the test program." >&4
10438                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10439         fi
10440         ;;
10441 esac
10442                 
10443 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10444
10445 set d_dlsymun
10446 eval $setvar
10447
10448 : see if drand48_r exists
10449 set drand48_r d_drand48_r
10450 eval $inlibc
10451 case "$d_drand48_r" in
10452 "$define")
10453         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10454         case "$d_drand48_r_proto:$usethreads" in
10455         ":define")      d_drand48_r_proto=define
10456                 set d_drand48_r_proto drand48_r $hdrs
10457                 eval $hasproto ;;
10458         *)      ;;
10459         esac
10460         case "$d_drand48_r_proto" in
10461         define)
10462         case "$drand48_r_proto" in
10463         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10464         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10465         esac
10466         case "$drand48_r_proto" in
10467         ''|0)   d_drand48_r=undef
10468                 drand48_r_proto=0
10469                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10470         * )     case "$drand48_r_proto" in
10471                 REENTRANT_PROTO*) ;;
10472                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10473                 esac
10474                 echo "Prototype: $try" ;;
10475         esac
10476         ;;
10477         *)      case "$usethreads" in
10478                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10479                 esac
10480                 d_drand48_r=undef
10481                 drand48_r_proto=0
10482                 ;;
10483         esac
10484         ;;
10485 *)      drand48_r_proto=0
10486         ;;
10487 esac
10488
10489 : see if prototype for drand48 is available
10490 echo " "
10491 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10492 eval $hasproto
10493
10494 : see if dup2 exists
10495 set dup2 d_dup2
10496 eval $inlibc
10497
10498 : see if eaccess exists
10499 set eaccess d_eaccess
10500 eval $inlibc
10501
10502 : see if endgrent exists
10503 set endgrent d_endgrent
10504 eval $inlibc
10505
10506 : see if this is an grp system
10507 set grp.h i_grp
10508 eval $inhdr
10509
10510 case "$i_grp" in
10511 $define)
10512         xxx=`./findhdr grp.h`
10513         $cppstdin $cppflags $cppminus < $xxx >$$.h
10514
10515         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10516                 val="$define"
10517         else
10518                 val="$undef"
10519         fi
10520         set d_grpasswd
10521         eval $setvar
10522
10523         $rm -f $$.h
10524         ;;
10525 *)
10526         val="$undef";
10527         set d_grpasswd; eval $setvar
10528         ;;
10529 esac
10530
10531 : see if endgrent_r exists
10532 set endgrent_r d_endgrent_r
10533 eval $inlibc
10534 case "$d_endgrent_r" in
10535 "$define")
10536         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10537         case "$d_endgrent_r_proto:$usethreads" in
10538         ":define")      d_endgrent_r_proto=define
10539                 set d_endgrent_r_proto endgrent_r $hdrs
10540                 eval $hasproto ;;
10541         *)      ;;
10542         esac
10543         case "$d_endgrent_r_proto" in
10544         define)
10545         case "$endgrent_r_proto" in
10546         ''|0) try='int endgrent_r(FILE**);'
10547         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10548         esac
10549         case "$endgrent_r_proto" in
10550         ''|0) try='void endgrent_r(FILE**);'
10551         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10552         esac
10553         case "$endgrent_r_proto" in
10554         ''|0)   d_endgrent_r=undef
10555                 endgrent_r_proto=0
10556                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10557         * )     case "$endgrent_r_proto" in
10558                 REENTRANT_PROTO*) ;;
10559                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10560                 esac
10561                 echo "Prototype: $try" ;;
10562         esac
10563         ;;
10564         *)      case "$usethreads" in
10565                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
10566                 esac
10567                 d_endgrent_r=undef
10568                 endgrent_r_proto=0
10569                 ;;
10570         esac
10571         ;;
10572 *)      endgrent_r_proto=0
10573         ;;
10574 esac
10575
10576 : see if endhostent exists
10577 set endhostent d_endhent
10578 eval $inlibc
10579
10580 : see if this is a netdb.h system
10581 set netdb.h i_netdb
10582 eval $inhdr
10583
10584 : see if endhostent_r exists
10585 set endhostent_r d_endhostent_r
10586 eval $inlibc
10587 case "$d_endhostent_r" in
10588 "$define")
10589         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10590         case "$d_endhostent_r_proto:$usethreads" in
10591         ":define")      d_endhostent_r_proto=define
10592                 set d_endhostent_r_proto endhostent_r $hdrs
10593                 eval $hasproto ;;
10594         *)      ;;
10595         esac
10596         case "$d_endhostent_r_proto" in
10597         define)
10598         case "$endhostent_r_proto" in
10599         ''|0) try='int endhostent_r(struct hostent_data*);'
10600         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
10601         esac
10602         case "$endhostent_r_proto" in
10603         ''|0) try='void endhostent_r(struct hostent_data*);'
10604         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
10605         esac
10606         case "$endhostent_r_proto" in
10607         ''|0)   d_endhostent_r=undef
10608                 endhostent_r_proto=0
10609                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
10610         * )     case "$endhostent_r_proto" in
10611                 REENTRANT_PROTO*) ;;
10612                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
10613                 esac
10614                 echo "Prototype: $try" ;;
10615         esac
10616         ;;
10617         *)      case "$usethreads" in
10618                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
10619                 esac
10620                 d_endhostent_r=undef
10621                 endhostent_r_proto=0
10622                 ;;
10623         esac
10624         ;;
10625 *)      endhostent_r_proto=0
10626         ;;
10627 esac
10628
10629 : see if endnetent exists
10630 set endnetent d_endnent
10631 eval $inlibc
10632
10633 : see if endnetent_r exists
10634 set endnetent_r d_endnetent_r
10635 eval $inlibc
10636 case "$d_endnetent_r" in
10637 "$define")
10638         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10639         case "$d_endnetent_r_proto:$usethreads" in
10640         ":define")      d_endnetent_r_proto=define
10641                 set d_endnetent_r_proto endnetent_r $hdrs
10642                 eval $hasproto ;;
10643         *)      ;;
10644         esac
10645         case "$d_endnetent_r_proto" in
10646         define)
10647         case "$endnetent_r_proto" in
10648         ''|0) try='int endnetent_r(struct netent_data*);'
10649         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
10650         esac
10651         case "$endnetent_r_proto" in
10652         ''|0) try='void endnetent_r(struct netent_data*);'
10653         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
10654         esac
10655         case "$endnetent_r_proto" in
10656         ''|0)   d_endnetent_r=undef
10657                 endnetent_r_proto=0
10658                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
10659         * )     case "$endnetent_r_proto" in
10660                 REENTRANT_PROTO*) ;;
10661                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
10662                 esac
10663                 echo "Prototype: $try" ;;
10664         esac
10665         ;;
10666         *)      case "$usethreads" in
10667                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
10668                 esac
10669                 d_endnetent_r=undef
10670                 endnetent_r_proto=0
10671                 ;;
10672         esac
10673         ;;
10674 *)      endnetent_r_proto=0
10675         ;;
10676 esac
10677
10678 : see if endprotoent exists
10679 set endprotoent d_endpent
10680 eval $inlibc
10681
10682 : see if endprotoent_r exists
10683 set endprotoent_r d_endprotoent_r
10684 eval $inlibc
10685 case "$d_endprotoent_r" in
10686 "$define")
10687         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10688         case "$d_endprotoent_r_proto:$usethreads" in
10689         ":define")      d_endprotoent_r_proto=define
10690                 set d_endprotoent_r_proto endprotoent_r $hdrs
10691                 eval $hasproto ;;
10692         *)      ;;
10693         esac
10694         case "$d_endprotoent_r_proto" in
10695         define)
10696         case "$endprotoent_r_proto" in
10697         ''|0) try='int endprotoent_r(struct protoent_data*);'
10698         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
10699         esac
10700         case "$endprotoent_r_proto" in
10701         ''|0) try='void endprotoent_r(struct protoent_data*);'
10702         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
10703         esac
10704         case "$endprotoent_r_proto" in
10705         ''|0)   d_endprotoent_r=undef
10706                 endprotoent_r_proto=0
10707                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
10708         * )     case "$endprotoent_r_proto" in
10709                 REENTRANT_PROTO*) ;;
10710                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
10711                 esac
10712                 echo "Prototype: $try" ;;
10713         esac
10714         ;;
10715         *)      case "$usethreads" in
10716                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
10717                 esac
10718                 d_endprotoent_r=undef
10719                 endprotoent_r_proto=0
10720                 ;;
10721         esac
10722         ;;
10723 *)      endprotoent_r_proto=0
10724         ;;
10725 esac
10726
10727 : see if endpwent exists
10728 set endpwent d_endpwent
10729 eval $inlibc
10730
10731 : see if this is a pwd.h system
10732 set pwd.h i_pwd
10733 eval $inhdr
10734
10735 case "$i_pwd" in
10736 $define)
10737         xxx=`./findhdr pwd.h`
10738         $cppstdin $cppflags $cppminus < $xxx >$$.h
10739
10740         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10741                 val="$define"
10742         else
10743                 val="$undef"
10744         fi
10745         set d_pwquota
10746         eval $setvar
10747
10748         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10749                 val="$define"
10750         else
10751                 val="$undef"
10752         fi
10753         set d_pwage
10754         eval $setvar
10755
10756         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10757                 val="$define"
10758         else
10759                 val="$undef"
10760         fi
10761         set d_pwchange
10762         eval $setvar
10763
10764         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10765                 val="$define"
10766         else
10767                 val="$undef"
10768         fi
10769         set d_pwclass
10770         eval $setvar
10771
10772         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10773                 val="$define"
10774         else
10775                 val="$undef"
10776         fi
10777         set d_pwexpire
10778         eval $setvar
10779
10780         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10781                 val="$define"
10782         else
10783                 val="$undef"
10784         fi
10785         set d_pwcomment
10786         eval $setvar
10787
10788         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10789                 val="$define"
10790         else
10791                 val="$undef"
10792         fi
10793         set d_pwgecos
10794         eval $setvar
10795
10796         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10797                 val="$define"
10798         else
10799                 val="$undef"
10800         fi
10801         set d_pwpasswd
10802         eval $setvar
10803
10804         $rm -f $$.h
10805         ;;
10806 *)
10807         val="$undef"; 
10808         set d_pwquota; eval $setvar
10809         set d_pwage; eval $setvar
10810         set d_pwchange; eval $setvar
10811         set d_pwclass; eval $setvar
10812         set d_pwexpire; eval $setvar
10813         set d_pwcomment; eval $setvar
10814         set d_pwgecos; eval $setvar
10815         set d_pwpasswd; eval $setvar
10816         ;;
10817 esac
10818
10819 : see if endpwent_r exists
10820 set endpwent_r d_endpwent_r
10821 eval $inlibc
10822 case "$d_endpwent_r" in
10823 "$define")
10824         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
10825         case "$d_endpwent_r_proto:$usethreads" in
10826         ":define")      d_endpwent_r_proto=define
10827                 set d_endpwent_r_proto endpwent_r $hdrs
10828                 eval $hasproto ;;
10829         *)      ;;
10830         esac
10831         case "$d_endpwent_r_proto" in
10832         define)
10833         case "$endpwent_r_proto" in
10834         ''|0) try='int endpwent_r(FILE**);'
10835         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
10836         esac
10837         case "$endpwent_r_proto" in
10838         ''|0) try='void endpwent_r(FILE**);'
10839         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
10840         esac
10841         case "$endpwent_r_proto" in
10842         ''|0)   d_endpwent_r=undef
10843                 endpwent_r_proto=0
10844                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
10845         * )     case "$endpwent_r_proto" in
10846                 REENTRANT_PROTO*) ;;
10847                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
10848                 esac
10849                 echo "Prototype: $try" ;;
10850         esac
10851         ;;
10852         *)      case "$usethreads" in
10853                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
10854                 esac
10855                 d_endpwent_r=undef
10856                 endpwent_r_proto=0
10857                 ;;
10858         esac
10859         ;;
10860 *)      endpwent_r_proto=0
10861         ;;
10862 esac
10863
10864 : see if endservent exists
10865 set endservent d_endsent
10866 eval $inlibc
10867
10868 : see if endservent_r exists
10869 set endservent_r d_endservent_r
10870 eval $inlibc
10871 case "$d_endservent_r" in
10872 "$define")
10873         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10874         case "$d_endservent_r_proto:$usethreads" in
10875         ":define")      d_endservent_r_proto=define
10876                 set d_endservent_r_proto endservent_r $hdrs
10877                 eval $hasproto ;;
10878         *)      ;;
10879         esac
10880         case "$d_endservent_r_proto" in
10881         define)
10882         case "$endservent_r_proto" in
10883         ''|0) try='int endservent_r(struct servent_data*);'
10884         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
10885         esac
10886         case "$endservent_r_proto" in
10887         ''|0) try='void endservent_r(struct servent_data*);'
10888         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
10889         esac
10890         case "$endservent_r_proto" in
10891         ''|0)   d_endservent_r=undef
10892                 endservent_r_proto=0
10893                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
10894         * )     case "$endservent_r_proto" in
10895                 REENTRANT_PROTO*) ;;
10896                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
10897                 esac
10898                 echo "Prototype: $try" ;;
10899         esac
10900         ;;
10901         *)      case "$usethreads" in
10902                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
10903                 esac
10904                 d_endservent_r=undef
10905                 endservent_r_proto=0
10906                 ;;
10907         esac
10908         ;;
10909 *)      endservent_r_proto=0
10910         ;;
10911 esac
10912
10913 : Locate the flags for 'open()'
10914 echo " "
10915 $cat >try.c <<'EOCP'
10916 #include <sys/types.h>
10917 #ifdef I_FCNTL
10918 #include <fcntl.h>
10919 #endif
10920 #ifdef I_SYS_FILE
10921 #include <sys/file.h>
10922 #endif
10923 int main() {
10924         if(O_RDONLY);
10925 #ifdef O_TRUNC
10926         exit(0);
10927 #else
10928         exit(1);
10929 #endif
10930 }
10931 EOCP
10932 : check sys/file.h first to get FREAD on Sun
10933 if $test `./findhdr sys/file.h` && \
10934                 set try -DI_SYS_FILE && eval $compile; then
10935         h_sysfile=true;
10936         echo "<sys/file.h> defines the O_* constants..." >&4
10937         if $run ./try; then
10938                 echo "and you have the 3 argument form of open()." >&4
10939                 val="$define"
10940         else
10941                 echo "but not the 3 argument form of open().  Oh, well." >&4
10942                 val="$undef"
10943         fi
10944 elif $test `./findhdr fcntl.h` && \
10945                 set try -DI_FCNTL && eval $compile; then
10946         h_fcntl=true;
10947         echo "<fcntl.h> defines the O_* constants..." >&4
10948         if $run ./try; then
10949                 echo "and you have the 3 argument form of open()." >&4
10950                 val="$define"
10951         else
10952                 echo "but not the 3 argument form of open().  Oh, well." >&4
10953                 val="$undef"
10954         fi
10955 else
10956         val="$undef"
10957         echo "I can't find the O_* constant definitions!  You got problems." >&4
10958 fi
10959 set d_open3
10960 eval $setvar
10961 $rm -f try try.*
10962
10963 : see which of string.h or strings.h is needed
10964 echo " "
10965 strings=`./findhdr string.h`
10966 if $test "$strings" && $test -r "$strings"; then
10967         echo "Using <string.h> instead of <strings.h>." >&4
10968         val="$define"
10969 else
10970         val="$undef"
10971         strings=`./findhdr strings.h`
10972         if $test "$strings" && $test -r "$strings"; then
10973                 echo "Using <strings.h> instead of <string.h>." >&4
10974         else
10975                 echo "No string header found -- You'll surely have problems." >&4
10976         fi
10977 fi
10978 set i_string
10979 eval $setvar
10980 case "$i_string" in
10981 "$undef") strings=`./findhdr strings.h`;;
10982 *)        strings=`./findhdr string.h`;;
10983 esac
10984
10985 : see if this is a sys/file.h system
10986 val=''
10987 set sys/file.h val
10988 eval $inhdr
10989
10990 : do we need to include sys/file.h ?
10991 case "$val" in
10992 "$define")
10993         echo " "
10994         if $h_sysfile; then
10995                 val="$define"
10996                 echo "We'll be including <sys/file.h>." >&4
10997         else
10998                 val="$undef"
10999                 echo "We won't be including <sys/file.h>." >&4
11000         fi
11001         ;;
11002 *)
11003         h_sysfile=false
11004         ;;
11005 esac
11006 set i_sysfile
11007 eval $setvar
11008
11009 : see if fcntl.h is there
11010 val=''
11011 set fcntl.h val
11012 eval $inhdr
11013
11014 : see if we can include fcntl.h
11015 case "$val" in
11016 "$define")
11017         echo " "
11018         if $h_fcntl; then
11019                 val="$define"
11020                 echo "We'll be including <fcntl.h>." >&4
11021         else
11022                 val="$undef"
11023                 if $h_sysfile; then
11024         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11025                 else
11026                         echo "We won't be including <fcntl.h>." >&4
11027                 fi
11028         fi
11029         ;;
11030 *)
11031         h_fcntl=false
11032         val="$undef"
11033         ;;
11034 esac
11035 set i_fcntl
11036 eval $setvar
11037
11038 : check for non-blocking I/O stuff
11039 case "$h_sysfile" in
11040 true) echo "#include <sys/file.h>" > head.c;;
11041 *)
11042        case "$h_fcntl" in
11043        true) echo "#include <fcntl.h>" > head.c;;
11044        *) echo "#include <sys/fcntl.h>" > head.c;;
11045        esac
11046        ;;
11047 esac
11048 echo " "
11049 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11050 case "$o_nonblock" in
11051 '')
11052         $cat head.c > try.c
11053         $cat >>try.c <<EOCP
11054 #include <stdio.h>
11055 #include <stdlib.h>
11056 #$i_fcntl I_FCNTL
11057 #ifdef I_FCNTL
11058 #include <fcntl.h>
11059 #endif
11060 int main() {
11061 #ifdef O_NONBLOCK
11062         printf("O_NONBLOCK\n");
11063         exit(0);
11064 #endif
11065 #ifdef O_NDELAY
11066         printf("O_NDELAY\n");
11067         exit(0);
11068 #endif
11069 #ifdef FNDELAY
11070         printf("FNDELAY\n");
11071         exit(0);
11072 #endif
11073         exit(0);
11074 }
11075 EOCP
11076         set try
11077         if eval $compile_ok; then
11078                 o_nonblock=`$run ./try`
11079                 case "$o_nonblock" in
11080                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11081                 *) echo "Seems like we can use $o_nonblock.";;
11082                 esac
11083         else
11084                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11085         fi
11086         ;;
11087 *) echo "Using $hint value $o_nonblock.";;
11088 esac
11089 $rm -f try try.* .out core
11090
11091 echo " "
11092 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11093 case "$eagain" in
11094 '')
11095         $cat head.c > try.c
11096         $cat >>try.c <<EOCP
11097 #include <errno.h>
11098 #include <sys/types.h>
11099 #include <signal.h>
11100 #include <stdio.h> 
11101 #include <stdlib.h> 
11102 #$i_fcntl I_FCNTL
11103 #ifdef I_FCNTL
11104 #include <fcntl.h>
11105 #endif
11106 #define MY_O_NONBLOCK $o_nonblock
11107 #ifndef errno  /* XXX need better Configure test */
11108 extern int errno;
11109 #endif
11110 #$i_unistd I_UNISTD
11111 #ifdef I_UNISTD
11112 #include <unistd.h>
11113 #endif
11114 #$i_string I_STRING
11115 #ifdef I_STRING
11116 #include <string.h>
11117 #else
11118 #include <strings.h>
11119 #endif
11120 $signal_t blech(x) int x; { exit(3); }
11121 EOCP
11122         $cat >> try.c <<'EOCP'
11123 int main()
11124 {
11125         int pd[2];
11126         int pu[2];
11127         char buf[1];
11128         char string[100];
11129
11130         pipe(pd);       /* Down: child -> parent */
11131         pipe(pu);       /* Up: parent -> child */
11132         if (0 != fork()) {
11133                 int ret;
11134                 close(pd[1]);   /* Parent reads from pd[0] */
11135                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11136 #ifdef F_SETFL
11137                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11138                         exit(1);
11139 #else
11140                 exit(4);
11141 #endif
11142                 signal(SIGALRM, blech);
11143                 alarm(5);
11144                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11145                         exit(2);
11146                 sprintf(string, "%d\n", ret);
11147                 write(2, string, strlen(string));
11148                 alarm(0);
11149 #ifdef EAGAIN
11150                 if (errno == EAGAIN) {
11151                         printf("EAGAIN\n");
11152                         goto ok;
11153                 }
11154 #endif
11155 #ifdef EWOULDBLOCK
11156                 if (errno == EWOULDBLOCK)
11157                         printf("EWOULDBLOCK\n");
11158 #endif
11159         ok:
11160                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11161                 sleep(2);                               /* Give it time to close our pipe */
11162                 alarm(5);
11163                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11164                 alarm(0);
11165                 sprintf(string, "%d\n", ret);
11166                 write(4, string, strlen(string));
11167                 exit(0);
11168         }
11169
11170         close(pd[0]);                   /* We write to pd[1] */
11171         close(pu[1]);                   /* We read from pu[0] */
11172         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11173         close(pd[1]);                   /* Pipe pd is now fully closed! */
11174         exit(0);                                /* Bye bye, thank you for playing! */
11175 }
11176 EOCP
11177         set try
11178         if eval $compile_ok; then
11179                 echo "$startsh" >mtry
11180                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11181                 chmod +x mtry
11182                 ./mtry >/dev/null 2>&1
11183                 case $? in
11184                 0) eagain=`$cat try.out`;;
11185                 1) echo "Could not perform non-blocking setting!";;
11186                 2) echo "I did a successful read() for something that was not there!";;
11187                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11188                 4) echo "Could not find F_SETFL!";;
11189                 *) echo "Something terribly wrong happened during testing.";;
11190                 esac
11191                 rd_nodata=`$cat try.ret`
11192                 echo "A read() system call with no data present returns $rd_nodata."
11193                 case "$rd_nodata" in
11194                 0|-1) ;;
11195                 *)
11196                         echo "(That's peculiar, fixing that to be -1.)"
11197                         rd_nodata=-1
11198                         ;;
11199                 esac
11200                 case "$eagain" in
11201                 '')
11202                         echo "Forcing errno EAGAIN on read() with no data available."
11203                         eagain=EAGAIN
11204                         ;;
11205                 *)
11206                         echo "Your read() sets errno to $eagain when no data is available."
11207                         ;;
11208                 esac
11209                 status=`$cat try.err`
11210                 case "$status" in
11211                 0) echo "And it correctly returns 0 to signal EOF.";;
11212                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11213                 *) echo "However, your read() returns '$status' on EOF??";;
11214                 esac
11215                 val="$define"
11216                 if test "$status" = "$rd_nodata"; then
11217                         echo "WARNING: you can't distinguish between EOF and no data!"
11218                         val="$undef"
11219                 fi
11220         else
11221                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11222                 eagain=EAGAIN
11223         fi
11224         set d_eofnblk
11225         eval $setvar
11226         ;;
11227 *)
11228         echo "Using $hint value $eagain."
11229         echo "Your read() returns $rd_nodata when no data is present."
11230         case "$d_eofnblk" in
11231         "$define") echo "And you can see EOF because read() returns 0.";;
11232         "$undef") echo "But you can't see EOF status from read() returned value.";;
11233         *)
11234                 echo "(Assuming you can't see EOF status from read anyway.)"
11235                 d_eofnblk=$undef
11236                 ;;
11237         esac
11238         ;;
11239 esac
11240 $rm -f try try.* .out core head.c mtry
11241
11242 : see if fchdir exists
11243 set fchdir d_fchdir
11244 eval $inlibc
11245
11246 : see if fchmod exists
11247 set fchmod d_fchmod
11248 eval $inlibc
11249
11250 : see if fchown exists
11251 set fchown d_fchown
11252 eval $inlibc
11253
11254 : see if this is an fcntl system
11255 set fcntl d_fcntl
11256 eval $inlibc
11257
11258 echo " "
11259 : See if fcntl-based locking works.
11260 $cat >try.c <<EOCP
11261 #include <stdlib.h>
11262 #include <unistd.h>
11263 #include <fcntl.h>
11264 #include <signal.h>
11265 $signal_t blech(x) int x; { exit(3); }
11266 int main() {
11267 #if defined(F_SETLK) && defined(F_SETLKW)
11268      struct flock flock;
11269      int retval, fd;
11270      fd = open("try.c", O_RDONLY);
11271      flock.l_type = F_RDLCK;
11272      flock.l_whence = SEEK_SET;
11273      flock.l_start = flock.l_len = 0;
11274      signal(SIGALRM, blech);
11275      alarm(10);
11276      retval = fcntl(fd, F_SETLK, &flock);
11277      close(fd);
11278      (retval < 0 ? exit(2) : exit(0));
11279 #else
11280      exit(2);
11281 #endif
11282 }
11283 EOCP
11284 echo "Checking if fcntl-based file locking works... "
11285 case "$d_fcntl" in
11286 "$define")
11287         set try
11288         if eval $compile_ok; then
11289                 if $run ./try; then
11290                         echo "Yes, it seems to work."
11291                         val="$define"
11292                 else
11293                         echo "Nope, it didn't work."
11294                         val="$undef"
11295                         case "$?" in
11296                         3) $cat >&4 <<EOM
11297 ***
11298 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11299 *** This is (almost) impossible.
11300 *** If your NFS lock daemons are not feeling well, something like
11301 *** this may happen, please investigate.  Cannot continue, aborting.
11302 ***
11303 EOM
11304                                 exit 1
11305                                 ;;
11306                         esac
11307                 fi
11308         else
11309                 echo "I'm unable to compile the test program, so I'll assume not."
11310                 val="$undef"
11311         fi
11312         ;;
11313 *) val="$undef";
11314         echo "Nope, since you don't even have fcntl()."
11315         ;;
11316 esac
11317 set d_fcntl_can_lock
11318 eval $setvar
11319 $rm -f try*
11320
11321
11322 : check for fd_set items
11323 $cat <<EOM
11324
11325 Checking to see how well your C compiler handles fd_set and friends ...
11326 EOM
11327 $cat >try.c <<EOCP
11328 #$i_systime I_SYS_TIME
11329 #$i_sysselct I_SYS_SELECT
11330 #$d_socket HAS_SOCKET
11331 #include <sys/types.h>
11332 #ifdef HAS_SOCKET
11333 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11334 #endif
11335 #ifdef I_SYS_TIME
11336 #include <sys/time.h>
11337 #endif
11338 #ifdef I_SYS_SELECT
11339 #include <sys/select.h>
11340 #endif
11341 int main() {
11342         fd_set fds;
11343
11344 #ifdef TRYBITS
11345         if(fds.fds_bits);
11346 #endif
11347
11348 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11349         exit(0);
11350 #else
11351         exit(1);
11352 #endif
11353 }
11354 EOCP
11355 set try -DTRYBITS
11356 if eval $compile; then
11357         d_fds_bits="$define"
11358         d_fd_set="$define"
11359         echo "Well, your system knows about the normal fd_set typedef..." >&4
11360         if $run ./try; then
11361                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11362                 d_fd_macros="$define"
11363         else
11364                 $cat >&4 <<'EOM'
11365 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
11366 EOM
11367                 d_fd_macros="$undef"
11368         fi
11369 else
11370         $cat <<'EOM'
11371 Hmm, your compiler has some difficulty with fd_set.  Checking further...
11372 EOM
11373         set try
11374         if eval $compile; then
11375                 d_fds_bits="$undef"
11376                 d_fd_set="$define"
11377                 echo "Well, your system has some sort of fd_set available..." >&4
11378                 if $run ./try; then
11379                         echo "and you have the normal fd_set macros." >&4
11380                         d_fd_macros="$define"
11381                 else
11382                         $cat <<'EOM'
11383 but not the normal fd_set macros!  Gross!  More work for me...
11384 EOM
11385                         d_fd_macros="$undef"
11386                 fi
11387         else
11388         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
11389                 d_fd_set="$undef"
11390                 d_fds_bits="$undef"
11391                 d_fd_macros="$undef"
11392         fi
11393 fi
11394 $rm -f try try.*
11395
11396 : see if fgetpos exists
11397 set fgetpos d_fgetpos
11398 eval $inlibc
11399
11400 : see if finite exists
11401 set finite d_finite
11402 eval $inlibc
11403
11404 : see if finitel exists
11405 set finitel d_finitel
11406 eval $inlibc
11407
11408 : see if flock exists
11409 set flock d_flock
11410 eval $inlibc
11411
11412 : see if prototype for flock is available
11413 echo " "
11414 set d_flockproto flock $i_sysfile sys/file.h
11415 eval $hasproto
11416
11417 : see if fork exists
11418 set fork d_fork
11419 eval $inlibc
11420
11421 : see if fp_class exists
11422 set fp_class d_fp_class
11423 eval $inlibc
11424
11425 : see if pathconf exists
11426 set pathconf d_pathconf
11427 eval $inlibc
11428
11429 : see if fpathconf exists
11430 set fpathconf d_fpathconf
11431 eval $inlibc
11432
11433 : see if fpclass exists
11434 set fpclass d_fpclass
11435 eval $inlibc
11436
11437 : see if fpclassify exists
11438 set fpclassify d_fpclassify
11439 eval $inlibc
11440
11441 : see if fpclassl exists
11442 set fpclassl d_fpclassl
11443 eval $inlibc
11444
11445
11446 : check for fpos64_t
11447 echo " "
11448 echo "Checking to see if you have fpos64_t..." >&4
11449 $cat >try.c <<EOCP
11450 #include <stdio.h>
11451 int main() { fpos64_t x = 7; }
11452 EOCP
11453 set try
11454 if eval $compile; then
11455         val="$define"
11456         echo "You have fpos64_t."
11457 else
11458         val="$undef"
11459         echo "You do not have fpos64_t."
11460         case "$fpossize" in
11461         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11462         esac
11463 fi
11464 $rm -f try.* try
11465 set d_fpos64_t
11466 eval $setvar
11467
11468 : see if frexpl exists
11469 set frexpl d_frexpl
11470 eval $inlibc
11471
11472 : see if this is a sys/param system
11473 set sys/param.h i_sysparam
11474 eval $inhdr
11475
11476 : see if this is a sys/mount.h system
11477 set sys/mount.h i_sysmount
11478 eval $inhdr
11479
11480
11481 echo " "
11482 echo "Checking to see if your system supports struct fs_data..." >&4
11483 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11484 eval $hasstruct
11485 case "$d_fs_data_s" in
11486 "$define")      echo "Yes, it does."   ;;
11487 *)              echo "No, it doesn't." ;;
11488 esac
11489
11490 : see if fseeko exists
11491 set fseeko d_fseeko
11492 eval $inlibc
11493 case "$longsize" in
11494 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11495 esac
11496
11497 : see if fsetpos exists
11498 set fsetpos d_fsetpos
11499 eval $inlibc
11500
11501
11502 : see if fstatfs exists
11503 set fstatfs d_fstatfs
11504 eval $inlibc
11505
11506
11507 : see if statvfs exists
11508 set statvfs d_statvfs
11509 eval $inlibc
11510
11511 : see if fstatvfs exists
11512 set fstatvfs d_fstatvfs
11513 eval $inlibc
11514
11515
11516 : see if fsync exists
11517 set fsync d_fsync
11518 eval $inlibc
11519
11520 : see if ftello exists
11521 set ftello d_ftello
11522 eval $inlibc
11523 case "$longsize" in
11524 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11525 esac
11526
11527 : see if getcwd exists
11528 set getcwd d_getcwd
11529 eval $inlibc
11530
11531 : see if getespwnam exists
11532 set getespwnam d_getespwnam
11533 eval $inlibc
11534
11535
11536 : see if getfsstat exists
11537 set getfsstat d_getfsstat
11538 eval $inlibc
11539
11540 : see if getgrent exists
11541 set getgrent d_getgrent
11542 eval $inlibc
11543
11544 : see if getgrent_r exists
11545 set getgrent_r d_getgrent_r
11546 eval $inlibc
11547 case "$d_getgrent_r" in
11548 "$define")
11549         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11550         case "$d_getgrent_r_proto:$usethreads" in
11551         ":define")      d_getgrent_r_proto=define
11552                 set d_getgrent_r_proto getgrent_r $hdrs
11553                 eval $hasproto ;;
11554         *)      ;;
11555         esac
11556         case "$d_getgrent_r_proto" in
11557         define)
11558         case "$getgrent_r_proto" in
11559         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
11560         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
11561         esac
11562         case "$getgrent_r_proto" in
11563         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
11564         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
11565         esac
11566         case "$getgrent_r_proto" in
11567         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
11568         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
11569         esac
11570         case "$getgrent_r_proto" in
11571         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
11572         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
11573         esac
11574         case "$getgrent_r_proto" in
11575         ''|0) try='int getgrent_r(struct group*, char*, int);'
11576         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
11577         esac
11578         case "$getgrent_r_proto" in
11579         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
11580         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
11581         esac
11582         case "$getgrent_r_proto" in
11583         ''|0)   d_getgrent_r=undef
11584                 getgrent_r_proto=0
11585                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
11586         * )     case "$getgrent_r_proto" in
11587                 REENTRANT_PROTO*) ;;
11588                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
11589                 esac
11590                 echo "Prototype: $try" ;;
11591         esac
11592         ;;
11593         *)      case "$usethreads" in
11594                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
11595                 esac
11596                 d_getgrent_r=undef
11597                 getgrent_r_proto=0
11598                 ;;
11599         esac
11600         ;;
11601 *)      getgrent_r_proto=0
11602         ;;
11603 esac
11604
11605 : see if getgrgid_r exists
11606 set getgrgid_r d_getgrgid_r
11607 eval $inlibc
11608 case "$d_getgrgid_r" in
11609 "$define")
11610         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11611         case "$d_getgrgid_r_proto:$usethreads" in
11612         ":define")      d_getgrgid_r_proto=define
11613                 set d_getgrgid_r_proto getgrgid_r $hdrs
11614                 eval $hasproto ;;
11615         *)      ;;
11616         esac
11617         case "$d_getgrgid_r_proto" in
11618         define)
11619         case "$getgrgid_r_proto" in
11620         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
11621         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
11622         esac
11623         case "$getgrgid_r_proto" in
11624         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
11625         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
11626         esac
11627         case "$getgrgid_r_proto" in
11628         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
11629         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
11630         esac
11631         case "$getgrgid_r_proto" in
11632         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
11633         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
11634         esac
11635         case "$getgrgid_r_proto" in
11636         ''|0)   d_getgrgid_r=undef
11637                 getgrgid_r_proto=0
11638                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
11639         * )     case "$getgrgid_r_proto" in
11640                 REENTRANT_PROTO*) ;;
11641                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
11642                 esac
11643                 echo "Prototype: $try" ;;
11644         esac
11645         ;;
11646         *)      case "$usethreads" in
11647                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
11648                 esac
11649                 d_getgrgid_r=undef
11650                 getgrgid_r_proto=0
11651                 ;;
11652         esac
11653         ;;
11654 *)      getgrgid_r_proto=0
11655         ;;
11656 esac
11657
11658 : see if getgrnam_r exists
11659 set getgrnam_r d_getgrnam_r
11660 eval $inlibc
11661 case "$d_getgrnam_r" in
11662 "$define")
11663         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11664         case "$d_getgrnam_r_proto:$usethreads" in
11665         ":define")      d_getgrnam_r_proto=define
11666                 set d_getgrnam_r_proto getgrnam_r $hdrs
11667                 eval $hasproto ;;
11668         *)      ;;
11669         esac
11670         case "$d_getgrnam_r_proto" in
11671         define)
11672         case "$getgrnam_r_proto" in
11673         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
11674         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
11675         esac
11676         case "$getgrnam_r_proto" in
11677         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
11678         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
11679         esac
11680         case "$getgrnam_r_proto" in
11681         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
11682         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
11683         esac
11684         case "$getgrnam_r_proto" in
11685         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
11686         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
11687         esac
11688         case "$getgrnam_r_proto" in
11689         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
11690         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
11691         esac
11692         case "$getgrnam_r_proto" in
11693         ''|0)   d_getgrnam_r=undef
11694                 getgrnam_r_proto=0
11695                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
11696         * )     case "$getgrnam_r_proto" in
11697                 REENTRANT_PROTO*) ;;
11698                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
11699                 esac
11700                 echo "Prototype: $try" ;;
11701         esac
11702         ;;
11703         *)      case "$usethreads" in
11704                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
11705                 esac
11706                 d_getgrnam_r=undef
11707                 getgrnam_r_proto=0
11708                 ;;
11709         esac
11710         ;;
11711 *)      getgrnam_r_proto=0
11712         ;;
11713 esac
11714
11715 : see if gethostbyaddr exists
11716 set gethostbyaddr d_gethbyaddr
11717 eval $inlibc
11718
11719 : see if gethostbyname exists
11720 set gethostbyname d_gethbyname
11721 eval $inlibc
11722
11723 : see if gethostent exists
11724 set gethostent d_gethent
11725 eval $inlibc
11726
11727 : see how we will look up host name
11728 echo " "
11729 call=''
11730 if set gethostname val -f d_gethname; eval $csym; $val; then
11731         echo 'gethostname() found.' >&4
11732         d_gethname="$define"
11733         call=gethostname
11734 fi
11735 if set uname val -f d_uname; eval $csym; $val; then
11736         if ./xenix; then
11737                 $cat <<'EOM'
11738 uname() was found, but you're running xenix, and older versions of xenix
11739 have a broken uname(). If you don't really know whether your xenix is old
11740 enough to have a broken system call, use the default answer.
11741
11742 EOM
11743                 dflt=y
11744                 case "$d_uname" in
11745                 "$define") dflt=n;;
11746                 esac
11747                 rp='Is your uname() broken?'
11748                 . ./myread
11749                 case "$ans" in
11750                 n*) d_uname="$define"; call=uname;;
11751                 esac
11752         else
11753                 echo 'uname() found.' >&4
11754                 d_uname="$define"
11755                 case "$call" in
11756                 '') call=uname ;;
11757                 esac
11758         fi
11759 fi
11760 case "$d_gethname" in
11761 '') d_gethname="$undef";;
11762 esac
11763 case "$d_uname" in
11764 '') d_uname="$undef";;
11765 esac
11766 case "$d_uname$d_gethname" in
11767 *define*)
11768         dflt=n
11769         cat <<EOM
11770  
11771 Every now and then someone has a $call() that lies about the hostname
11772 but can't be fixed for political or economic reasons.  If you wish, I can
11773 pretend $call() isn't there and maybe compute hostname at run-time
11774 thanks to the '$phostname' command.
11775
11776 EOM
11777         rp="Shall I ignore $call() from now on?"
11778         . ./myread
11779         case "$ans" in
11780         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
11781         esac;;
11782 esac
11783 case "$phostname" in
11784 '') aphostname='';;
11785 *) case "$aphostname" in
11786         /*) ;;
11787         *) set X $phostname
11788                 shift
11789                 file=$1
11790                 shift
11791                 file=`./loc $file $file $pth`
11792                 aphostname=`echo $file $*`
11793                 ;;
11794         esac
11795         ;;
11796 esac
11797 case "$d_uname$d_gethname" in
11798 *define*) ;;
11799 *)
11800         case "$phostname" in
11801         '')
11802                 echo "There will be no way for $package to get your hostname." >&4;;
11803         *)
11804         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
11805                 ;;
11806         esac;;
11807 esac
11808 case "$d_phostname" in
11809 '') d_phostname="$undef";;
11810 esac
11811
11812 : see if gethostbyaddr_r exists
11813 set gethostbyaddr_r d_gethostbyaddr_r
11814 eval $inlibc
11815 case "$d_gethostbyaddr_r" in
11816 "$define")
11817         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11818         case "$d_gethostbyaddr_r_proto:$usethreads" in
11819         ":define")      d_gethostbyaddr_r_proto=define
11820                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
11821                 eval $hasproto ;;
11822         *)      ;;
11823         esac
11824         case "$d_gethostbyaddr_r_proto" in
11825         define)
11826         case "$gethostbyaddr_r_proto" in
11827         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
11828         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
11829         esac
11830         case "$gethostbyaddr_r_proto" in
11831         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
11832         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
11833         esac
11834         case "$gethostbyaddr_r_proto" in
11835         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
11836         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
11837         esac
11838         case "$gethostbyaddr_r_proto" in
11839         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
11840         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
11841         esac
11842         case "$gethostbyaddr_r_proto" in
11843         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
11844         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
11845         esac
11846         case "$gethostbyaddr_r_proto" in
11847         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
11848         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
11849         esac
11850         case "$gethostbyaddr_r_proto" in
11851         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
11852         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
11853         esac
11854         case "$gethostbyaddr_r_proto" in
11855         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
11856         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
11857         esac
11858         case "$gethostbyaddr_r_proto" in
11859         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
11860         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
11861         esac
11862         case "$gethostbyaddr_r_proto" in
11863         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
11864         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
11865         esac
11866         case "$gethostbyaddr_r_proto" in
11867         ''|0)   d_gethostbyaddr_r=undef
11868                 gethostbyaddr_r_proto=0
11869                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
11870         * )     case "$gethostbyaddr_r_proto" in
11871                 REENTRANT_PROTO*) ;;
11872                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
11873                 esac
11874                 echo "Prototype: $try" ;;
11875         esac
11876         ;;
11877         *)      case "$usethreads" in
11878                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
11879                 esac
11880                 d_gethostbyaddr_r=undef
11881                 gethostbyaddr_r_proto=0
11882                 ;;
11883         esac
11884         ;;
11885 *)      gethostbyaddr_r_proto=0
11886         ;;
11887 esac
11888
11889 : see if gethostbyname_r exists
11890 set gethostbyname_r d_gethostbyname_r
11891 eval $inlibc
11892 case "$d_gethostbyname_r" in
11893 "$define")
11894         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11895         case "$d_gethostbyname_r_proto:$usethreads" in
11896         ":define")      d_gethostbyname_r_proto=define
11897                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
11898                 eval $hasproto ;;
11899         *)      ;;
11900         esac
11901         case "$d_gethostbyname_r_proto" in
11902         define)
11903         case "$gethostbyname_r_proto" in
11904         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
11905         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
11906         esac
11907         case "$gethostbyname_r_proto" in
11908         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
11909         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
11910         esac
11911         case "$gethostbyname_r_proto" in
11912         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
11913         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
11914         esac
11915         case "$gethostbyname_r_proto" in
11916         ''|0)   d_gethostbyname_r=undef
11917                 gethostbyname_r_proto=0
11918                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
11919         * )     case "$gethostbyname_r_proto" in
11920                 REENTRANT_PROTO*) ;;
11921                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
11922                 esac
11923                 echo "Prototype: $try" ;;
11924         esac
11925         ;;
11926         *)      case "$usethreads" in
11927                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
11928                 esac
11929                 d_gethostbyname_r=undef
11930                 gethostbyname_r_proto=0
11931                 ;;
11932         esac
11933         ;;
11934 *)      gethostbyname_r_proto=0
11935         ;;
11936 esac
11937
11938 : see if gethostent_r exists
11939 set gethostent_r d_gethostent_r
11940 eval $inlibc
11941 case "$d_gethostent_r" in
11942 "$define")
11943         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11944         case "$d_gethostent_r_proto:$usethreads" in
11945         ":define")      d_gethostent_r_proto=define
11946                 set d_gethostent_r_proto gethostent_r $hdrs
11947                 eval $hasproto ;;
11948         *)      ;;
11949         esac
11950         case "$d_gethostent_r_proto" in
11951         define)
11952         case "$gethostent_r_proto" in
11953         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
11954         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
11955         esac
11956         case "$gethostent_r_proto" in
11957         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
11958         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
11959         esac
11960         case "$gethostent_r_proto" in
11961         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
11962         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
11963         esac
11964         case "$gethostent_r_proto" in
11965         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
11966         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
11967         esac
11968         case "$gethostent_r_proto" in
11969         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
11970         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
11971         esac
11972         case "$gethostent_r_proto" in
11973         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
11974         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
11975         esac
11976         case "$gethostent_r_proto" in
11977         ''|0)   d_gethostent_r=undef
11978                 gethostent_r_proto=0
11979                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
11980         * )     case "$gethostent_r_proto" in
11981                 REENTRANT_PROTO*) ;;
11982                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
11983                 esac
11984                 echo "Prototype: $try" ;;
11985         esac
11986         ;;
11987         *)      case "$usethreads" in
11988                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
11989                 esac
11990                 d_gethostent_r=undef
11991                 gethostent_r_proto=0
11992                 ;;
11993         esac
11994         ;;
11995 *)      gethostent_r_proto=0
11996         ;;
11997 esac
11998
11999 : see if prototypes for various gethostxxx netdb.h functions are available
12000 echo " "
12001 set d_gethostprotos gethostent $i_netdb netdb.h
12002 eval $hasproto
12003
12004 : see if getitimer exists
12005 set getitimer d_getitimer
12006 eval $inlibc
12007
12008 : see if getlogin exists
12009 set getlogin d_getlogin
12010 eval $inlibc
12011
12012 : see if getlogin_r exists
12013 set getlogin_r d_getlogin_r
12014 eval $inlibc
12015 case "$d_getlogin_r" in
12016 "$define")
12017         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12018         case "$d_getlogin_r_proto:$usethreads" in
12019         ":define")      d_getlogin_r_proto=define
12020                 set d_getlogin_r_proto getlogin_r $hdrs
12021                 eval $hasproto ;;
12022         *)      ;;
12023         esac
12024         case "$d_getlogin_r_proto" in
12025         define)
12026         case "$getlogin_r_proto" in
12027         ''|0) try='int getlogin_r(char*, size_t);'
12028         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12029         esac
12030         case "$getlogin_r_proto" in
12031         ''|0) try='int getlogin_r(char*, int);'
12032         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12033         esac
12034         case "$getlogin_r_proto" in
12035         ''|0) try='char* getlogin_r(char*, size_t);'
12036         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12037         esac
12038         case "$getlogin_r_proto" in
12039         ''|0) try='char* getlogin_r(char*, int);'
12040         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12041         esac
12042         case "$getlogin_r_proto" in
12043         ''|0)   d_getlogin_r=undef
12044                 getlogin_r_proto=0
12045                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12046         * )     case "$getlogin_r_proto" in
12047                 REENTRANT_PROTO*) ;;
12048                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12049                 esac
12050                 echo "Prototype: $try" ;;
12051         esac
12052         ;;
12053         *)      case "$usethreads" in
12054                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12055                 esac
12056                 d_getlogin_r=undef
12057                 getlogin_r_proto=0
12058                 ;;
12059         esac
12060         ;;
12061 *)      getlogin_r_proto=0
12062         ;;
12063 esac
12064
12065 : see if getmnt exists
12066 set getmnt d_getmnt
12067 eval $inlibc
12068
12069 : see if getmntent exists
12070 set getmntent d_getmntent
12071 eval $inlibc
12072
12073 : see if getnetbyaddr exists
12074 set getnetbyaddr d_getnbyaddr
12075 eval $inlibc
12076
12077 : see if getnetbyname exists
12078 set getnetbyname d_getnbyname
12079 eval $inlibc
12080
12081 : see if getnetent exists
12082 set getnetent d_getnent
12083 eval $inlibc
12084
12085 : see if getnetbyaddr_r exists
12086 set getnetbyaddr_r d_getnetbyaddr_r
12087 eval $inlibc
12088 case "$d_getnetbyaddr_r" in
12089 "$define")
12090         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12091         case "$d_getnetbyaddr_r_proto:$usethreads" in
12092         ":define")      d_getnetbyaddr_r_proto=define
12093                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12094                 eval $hasproto ;;
12095         *)      ;;
12096         esac
12097         case "$d_getnetbyaddr_r_proto" in
12098         define)
12099         case "$getnetbyaddr_r_proto" in
12100         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12101         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12102         esac
12103         case "$getnetbyaddr_r_proto" in
12104         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12105         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12106         esac
12107         case "$getnetbyaddr_r_proto" in
12108         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12109         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12110         esac
12111         case "$getnetbyaddr_r_proto" in
12112         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12113         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12114         esac
12115         case "$getnetbyaddr_r_proto" in
12116         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12117         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12118         esac
12119         case "$getnetbyaddr_r_proto" in
12120         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12121         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12122         esac
12123         case "$getnetbyaddr_r_proto" in
12124         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12125         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12126         esac
12127         case "$getnetbyaddr_r_proto" in
12128         ''|0)   d_getnetbyaddr_r=undef
12129                 getnetbyaddr_r_proto=0
12130                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12131         * )     case "$getnetbyaddr_r_proto" in
12132                 REENTRANT_PROTO*) ;;
12133                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12134                 esac
12135                 echo "Prototype: $try" ;;
12136         esac
12137         ;;
12138         *)      case "$usethreads" in
12139                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12140                 esac
12141                 d_getnetbyaddr_r=undef
12142                 getnetbyaddr_r_proto=0
12143                 ;;
12144         esac
12145         ;;
12146 *)      getnetbyaddr_r_proto=0
12147         ;;
12148 esac
12149
12150 : see if getnetbyname_r exists
12151 set getnetbyname_r d_getnetbyname_r
12152 eval $inlibc
12153 case "$d_getnetbyname_r" in
12154 "$define")
12155         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12156         case "$d_getnetbyname_r_proto:$usethreads" in
12157         ":define")      d_getnetbyname_r_proto=define
12158                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12159                 eval $hasproto ;;
12160         *)      ;;
12161         esac
12162         case "$d_getnetbyname_r_proto" in
12163         define)
12164         case "$getnetbyname_r_proto" in
12165         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12166         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12167         esac
12168         case "$getnetbyname_r_proto" in
12169         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12170         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12171         esac
12172         case "$getnetbyname_r_proto" in
12173         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12174         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12175         esac
12176         case "$getnetbyname_r_proto" in
12177         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12178         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12179         esac
12180         case "$getnetbyname_r_proto" in
12181         ''|0)   d_getnetbyname_r=undef
12182                 getnetbyname_r_proto=0
12183                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12184         * )     case "$getnetbyname_r_proto" in
12185                 REENTRANT_PROTO*) ;;
12186                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12187                 esac
12188                 echo "Prototype: $try" ;;
12189         esac
12190         ;;
12191         *)      case "$usethreads" in
12192                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12193                 esac
12194                 d_getnetbyname_r=undef
12195                 getnetbyname_r_proto=0
12196                 ;;
12197         esac
12198         ;;
12199 *)      getnetbyname_r_proto=0
12200         ;;
12201 esac
12202
12203 : see if getnetent_r exists
12204 set getnetent_r d_getnetent_r
12205 eval $inlibc
12206 case "$d_getnetent_r" in
12207 "$define")
12208         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12209         case "$d_getnetent_r_proto:$usethreads" in
12210         ":define")      d_getnetent_r_proto=define
12211                 set d_getnetent_r_proto getnetent_r $hdrs
12212                 eval $hasproto ;;
12213         *)      ;;
12214         esac
12215         case "$d_getnetent_r_proto" in
12216         define)
12217         case "$getnetent_r_proto" in
12218         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12219         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12220         esac
12221         case "$getnetent_r_proto" in
12222         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12223         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12224         esac
12225         case "$getnetent_r_proto" in
12226         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12227         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12228         esac
12229         case "$getnetent_r_proto" in
12230         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12231         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12232         esac
12233         case "$getnetent_r_proto" in
12234         ''|0) try='int getnetent_r(struct netent*, char*, int);'
12235         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12236         esac
12237         case "$getnetent_r_proto" in
12238         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12239         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12240         esac
12241         case "$getnetent_r_proto" in
12242         ''|0)   d_getnetent_r=undef
12243                 getnetent_r_proto=0
12244                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
12245         * )     case "$getnetent_r_proto" in
12246                 REENTRANT_PROTO*) ;;
12247                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12248                 esac
12249                 echo "Prototype: $try" ;;
12250         esac
12251         ;;
12252         *)      case "$usethreads" in
12253                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12254                 esac
12255                 d_getnetent_r=undef
12256                 getnetent_r_proto=0
12257                 ;;
12258         esac
12259         ;;
12260 *)      getnetent_r_proto=0
12261         ;;
12262 esac
12263
12264 : see if prototypes for various getnetxxx netdb.h functions are available
12265 echo " "
12266 set d_getnetprotos getnetent $i_netdb netdb.h
12267 eval $hasproto
12268
12269 : see if getpagesize exists
12270 set getpagesize d_getpagsz
12271 eval $inlibc
12272
12273
12274 : see if getprotobyname exists
12275 set getprotobyname d_getpbyname
12276 eval $inlibc
12277
12278 : see if getprotobynumber exists
12279 set getprotobynumber d_getpbynumber
12280 eval $inlibc
12281
12282 : see if getprotoent exists
12283 set getprotoent d_getpent
12284 eval $inlibc
12285
12286 : see if getpgid exists
12287 set getpgid d_getpgid
12288 eval $inlibc
12289
12290 : see if getpgrp2 exists
12291 set getpgrp2 d_getpgrp2
12292 eval $inlibc
12293
12294 : see if getppid exists
12295 set getppid d_getppid
12296 eval $inlibc
12297
12298 : see if getpriority exists
12299 set getpriority d_getprior
12300 eval $inlibc
12301
12302 : see if getprotobyname_r exists
12303 set getprotobyname_r d_getprotobyname_r
12304 eval $inlibc
12305 case "$d_getprotobyname_r" in
12306 "$define")
12307         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12308         case "$d_getprotobyname_r_proto:$usethreads" in
12309         ":define")      d_getprotobyname_r_proto=define
12310                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12311                 eval $hasproto ;;
12312         *)      ;;
12313         esac
12314         case "$d_getprotobyname_r_proto" in
12315         define)
12316         case "$getprotobyname_r_proto" in
12317         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12318         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12319         esac
12320         case "$getprotobyname_r_proto" in
12321         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12322         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12323         esac
12324         case "$getprotobyname_r_proto" in
12325         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12326         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12327         esac
12328         case "$getprotobyname_r_proto" in
12329         ''|0)   d_getprotobyname_r=undef
12330                 getprotobyname_r_proto=0
12331                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
12332         * )     case "$getprotobyname_r_proto" in
12333                 REENTRANT_PROTO*) ;;
12334                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12335                 esac
12336                 echo "Prototype: $try" ;;
12337         esac
12338         ;;
12339         *)      case "$usethreads" in
12340                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12341                 esac
12342                 d_getprotobyname_r=undef
12343                 getprotobyname_r_proto=0
12344                 ;;
12345         esac
12346         ;;
12347 *)      getprotobyname_r_proto=0
12348         ;;
12349 esac
12350
12351 : see if getprotobynumber_r exists
12352 set getprotobynumber_r d_getprotobynumber_r
12353 eval $inlibc
12354 case "$d_getprotobynumber_r" in
12355 "$define")
12356         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12357         case "$d_getprotobynumber_r_proto:$usethreads" in
12358         ":define")      d_getprotobynumber_r_proto=define
12359                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12360                 eval $hasproto ;;
12361         *)      ;;
12362         esac
12363         case "$d_getprotobynumber_r_proto" in
12364         define)
12365         case "$getprotobynumber_r_proto" in
12366         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12367         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12368         esac
12369         case "$getprotobynumber_r_proto" in
12370         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12371         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12372         esac
12373         case "$getprotobynumber_r_proto" in
12374         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12375         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12376         esac
12377         case "$getprotobynumber_r_proto" in
12378         ''|0)   d_getprotobynumber_r=undef
12379                 getprotobynumber_r_proto=0
12380                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
12381         * )     case "$getprotobynumber_r_proto" in
12382                 REENTRANT_PROTO*) ;;
12383                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12384                 esac
12385                 echo "Prototype: $try" ;;
12386         esac
12387         ;;
12388         *)      case "$usethreads" in
12389                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12390                 esac
12391                 d_getprotobynumber_r=undef
12392                 getprotobynumber_r_proto=0
12393                 ;;
12394         esac
12395         ;;
12396 *)      getprotobynumber_r_proto=0
12397         ;;
12398 esac
12399
12400 : see if getprotoent_r exists
12401 set getprotoent_r d_getprotoent_r
12402 eval $inlibc
12403 case "$d_getprotoent_r" in
12404 "$define")
12405         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12406         case "$d_getprotoent_r_proto:$usethreads" in
12407         ":define")      d_getprotoent_r_proto=define
12408                 set d_getprotoent_r_proto getprotoent_r $hdrs
12409                 eval $hasproto ;;
12410         *)      ;;
12411         esac
12412         case "$d_getprotoent_r_proto" in
12413         define)
12414         case "$getprotoent_r_proto" in
12415         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12416         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12417         esac
12418         case "$getprotoent_r_proto" in
12419         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12420         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12421         esac
12422         case "$getprotoent_r_proto" in
12423         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12424         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12425         esac
12426         case "$getprotoent_r_proto" in
12427         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12428         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12429         esac
12430         case "$getprotoent_r_proto" in
12431         ''|0)   d_getprotoent_r=undef
12432                 getprotoent_r_proto=0
12433                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
12434         * )     case "$getprotoent_r_proto" in
12435                 REENTRANT_PROTO*) ;;
12436                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12437                 esac
12438                 echo "Prototype: $try" ;;
12439         esac
12440         ;;
12441         *)      case "$usethreads" in
12442                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12443                 esac
12444                 d_getprotoent_r=undef
12445                 getprotoent_r_proto=0
12446                 ;;
12447         esac
12448         ;;
12449 *)      getprotoent_r_proto=0
12450         ;;
12451 esac
12452
12453 : see if prototypes for various getprotoxxx netdb.h functions are available
12454 echo " "
12455 set d_getprotoprotos getprotoent $i_netdb netdb.h
12456 eval $hasproto
12457
12458 : see if getprpwnam exists
12459 set getprpwnam d_getprpwnam
12460 eval $inlibc
12461
12462 : see if getpwent exists
12463 set getpwent d_getpwent
12464 eval $inlibc
12465
12466 : see if getpwent_r exists
12467 set getpwent_r d_getpwent_r
12468 eval $inlibc
12469 case "$d_getpwent_r" in
12470 "$define")
12471         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12472         case "$d_getpwent_r_proto:$usethreads" in
12473         ":define")      d_getpwent_r_proto=define
12474                 set d_getpwent_r_proto getpwent_r $hdrs
12475                 eval $hasproto ;;
12476         *)      ;;
12477         esac
12478         case "$d_getpwent_r_proto" in
12479         define)
12480         case "$getpwent_r_proto" in
12481         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12482         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12483         esac
12484         case "$getpwent_r_proto" in
12485         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12486         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12487         esac
12488         case "$getpwent_r_proto" in
12489         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12490         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12491         esac
12492         case "$getpwent_r_proto" in
12493         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12494         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12495         esac
12496         case "$getpwent_r_proto" in
12497         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12498         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12499         esac
12500         case "$getpwent_r_proto" in
12501         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12502         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12503         esac
12504         case "$getpwent_r_proto" in
12505         ''|0)   d_getpwent_r=undef
12506                 getpwent_r_proto=0
12507                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
12508         * )     case "$getpwent_r_proto" in
12509                 REENTRANT_PROTO*) ;;
12510                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12511                 esac
12512                 echo "Prototype: $try" ;;
12513         esac
12514         ;;
12515         *)      case "$usethreads" in
12516                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
12517                 esac
12518                 d_getpwent_r=undef
12519                 getpwent_r_proto=0
12520                 ;;
12521         esac
12522         ;;
12523 *)      getpwent_r_proto=0
12524         ;;
12525 esac
12526
12527 : see if getpwnam_r exists
12528 set getpwnam_r d_getpwnam_r
12529 eval $inlibc
12530 case "$d_getpwnam_r" in
12531 "$define")
12532         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12533         case "$d_getpwnam_r_proto:$usethreads" in
12534         ":define")      d_getpwnam_r_proto=define
12535                 set d_getpwnam_r_proto getpwnam_r $hdrs
12536                 eval $hasproto ;;
12537         *)      ;;
12538         esac
12539         case "$d_getpwnam_r_proto" in
12540         define)
12541         case "$getpwnam_r_proto" in
12542         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12543         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12544         esac
12545         case "$getpwnam_r_proto" in
12546         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
12547         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
12548         esac
12549         case "$getpwnam_r_proto" in
12550         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
12551         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
12552         esac
12553         case "$getpwnam_r_proto" in
12554         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
12555         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
12556         esac
12557         case "$getpwnam_r_proto" in
12558         ''|0)   d_getpwnam_r=undef
12559                 getpwnam_r_proto=0
12560                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
12561         * )     case "$getpwnam_r_proto" in
12562                 REENTRANT_PROTO*) ;;
12563                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
12564                 esac
12565                 echo "Prototype: $try" ;;
12566         esac
12567         ;;
12568         *)      case "$usethreads" in
12569                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
12570                 esac
12571                 d_getpwnam_r=undef
12572                 getpwnam_r_proto=0
12573                 ;;
12574         esac
12575         ;;
12576 *)      getpwnam_r_proto=0
12577         ;;
12578 esac
12579
12580 : see if getpwuid_r exists
12581 set getpwuid_r d_getpwuid_r
12582 eval $inlibc
12583 case "$d_getpwuid_r" in
12584 "$define")
12585         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12586         case "$d_getpwuid_r_proto:$usethreads" in
12587         ":define")      d_getpwuid_r_proto=define
12588                 set d_getpwuid_r_proto getpwuid_r $hdrs
12589                 eval $hasproto ;;
12590         *)      ;;
12591         esac
12592         case "$d_getpwuid_r_proto" in
12593         define)
12594         case "$getpwuid_r_proto" in
12595         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
12596         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
12597         esac
12598         case "$getpwuid_r_proto" in
12599         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
12600         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
12601         esac
12602         case "$getpwuid_r_proto" in
12603         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
12604         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
12605         esac
12606         case "$getpwuid_r_proto" in
12607         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
12608         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
12609         esac
12610         case "$getpwuid_r_proto" in
12611         ''|0)   d_getpwuid_r=undef
12612                 getpwuid_r_proto=0
12613                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
12614         * )     case "$getpwuid_r_proto" in
12615                 REENTRANT_PROTO*) ;;
12616                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
12617                 esac
12618                 echo "Prototype: $try" ;;
12619         esac
12620         ;;
12621         *)      case "$usethreads" in
12622                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
12623                 esac
12624                 d_getpwuid_r=undef
12625                 getpwuid_r_proto=0
12626                 ;;
12627         esac
12628         ;;
12629 *)      getpwuid_r_proto=0
12630         ;;
12631 esac
12632
12633
12634 : see if getservbyname exists
12635 set getservbyname d_getsbyname
12636 eval $inlibc
12637
12638 : see if getservbyport exists
12639 set getservbyport d_getsbyport
12640 eval $inlibc
12641
12642 : see if getservent exists
12643 set getservent d_getsent
12644 eval $inlibc
12645
12646 : see if getservbyname_r exists
12647 set getservbyname_r d_getservbyname_r
12648 eval $inlibc
12649 case "$d_getservbyname_r" in
12650 "$define")
12651         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12652         case "$d_getservbyname_r_proto:$usethreads" in
12653         ":define")      d_getservbyname_r_proto=define
12654                 set d_getservbyname_r_proto getservbyname_r $hdrs
12655                 eval $hasproto ;;
12656         *)      ;;
12657         esac
12658         case "$d_getservbyname_r_proto" in
12659         define)
12660         case "$getservbyname_r_proto" in
12661         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
12662         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
12663         esac
12664         case "$getservbyname_r_proto" in
12665         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
12666         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
12667         esac
12668         case "$getservbyname_r_proto" in
12669         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
12670         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
12671         esac
12672         case "$getservbyname_r_proto" in
12673         ''|0)   d_getservbyname_r=undef
12674                 getservbyname_r_proto=0
12675                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
12676         * )     case "$getservbyname_r_proto" in
12677                 REENTRANT_PROTO*) ;;
12678                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
12679                 esac
12680                 echo "Prototype: $try" ;;
12681         esac
12682         ;;
12683         *)      case "$usethreads" in
12684                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
12685                 esac
12686                 d_getservbyname_r=undef
12687                 getservbyname_r_proto=0
12688                 ;;
12689         esac
12690         ;;
12691 *)      getservbyname_r_proto=0
12692         ;;
12693 esac
12694
12695 : see if getservbyport_r exists
12696 set getservbyport_r d_getservbyport_r
12697 eval $inlibc
12698 case "$d_getservbyport_r" in
12699 "$define")
12700         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12701         case "$d_getservbyport_r_proto:$usethreads" in
12702         ":define")      d_getservbyport_r_proto=define
12703                 set d_getservbyport_r_proto getservbyport_r $hdrs
12704                 eval $hasproto ;;
12705         *)      ;;
12706         esac
12707         case "$d_getservbyport_r_proto" in
12708         define)
12709         case "$getservbyport_r_proto" in
12710         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
12711         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
12712         esac
12713         case "$getservbyport_r_proto" in
12714         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
12715         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
12716         esac
12717         case "$getservbyport_r_proto" in
12718         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
12719         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
12720         esac
12721         case "$getservbyport_r_proto" in
12722         ''|0)   d_getservbyport_r=undef
12723                 getservbyport_r_proto=0
12724                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
12725         * )     case "$getservbyport_r_proto" in
12726                 REENTRANT_PROTO*) ;;
12727                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
12728                 esac
12729                 echo "Prototype: $try" ;;
12730         esac
12731         ;;
12732         *)      case "$usethreads" in
12733                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
12734                 esac
12735                 d_getservbyport_r=undef
12736                 getservbyport_r_proto=0
12737                 ;;
12738         esac
12739         ;;
12740 *)      getservbyport_r_proto=0
12741         ;;
12742 esac
12743
12744 : see if getservent_r exists
12745 set getservent_r d_getservent_r
12746 eval $inlibc
12747 case "$d_getservent_r" in
12748 "$define")
12749         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12750         case "$d_getservent_r_proto:$usethreads" in
12751         ":define")      d_getservent_r_proto=define
12752                 set d_getservent_r_proto getservent_r $hdrs
12753                 eval $hasproto ;;
12754         *)      ;;
12755         esac
12756         case "$d_getservent_r_proto" in
12757         define)
12758         case "$getservent_r_proto" in
12759         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
12760         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
12761         esac
12762         case "$getservent_r_proto" in
12763         ''|0) try='int getservent_r(struct servent*, char*, int);'
12764         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
12765         esac
12766         case "$getservent_r_proto" in
12767         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
12768         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
12769         esac
12770         case "$getservent_r_proto" in
12771         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
12772         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
12773         esac
12774         case "$getservent_r_proto" in
12775         ''|0)   d_getservent_r=undef
12776                 getservent_r_proto=0
12777                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
12778         * )     case "$getservent_r_proto" in
12779                 REENTRANT_PROTO*) ;;
12780                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
12781                 esac
12782                 echo "Prototype: $try" ;;
12783         esac
12784         ;;
12785         *)      case "$usethreads" in
12786                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
12787                 esac
12788                 d_getservent_r=undef
12789                 getservent_r_proto=0
12790                 ;;
12791         esac
12792         ;;
12793 *)      getservent_r_proto=0
12794         ;;
12795 esac
12796
12797 : see if prototypes for various getservxxx netdb.h functions are available
12798 echo " "
12799 set d_getservprotos getservent $i_netdb netdb.h
12800 eval $hasproto
12801
12802 : see if getspnam exists
12803 set getspnam d_getspnam
12804 eval $inlibc
12805
12806 : see if this is a shadow.h system
12807 set shadow.h i_shadow
12808 eval $inhdr
12809
12810 : see if getspnam_r exists
12811 set getspnam_r d_getspnam_r
12812 eval $inlibc
12813 case "$d_getspnam_r" in
12814 "$define")
12815         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
12816         case "$d_getspnam_r_proto:$usethreads" in
12817         ":define")      d_getspnam_r_proto=define
12818                 set d_getspnam_r_proto getspnam_r $hdrs
12819                 eval $hasproto ;;
12820         *)      ;;
12821         esac
12822         case "$d_getspnam_r_proto" in
12823         define)
12824         case "$getspnam_r_proto" in
12825         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
12826         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
12827         esac
12828         case "$getspnam_r_proto" in
12829         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
12830         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
12831         esac
12832         case "$getspnam_r_proto" in
12833         ''|0)   d_getspnam_r=undef
12834                 getspnam_r_proto=0
12835                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
12836         * )     case "$getspnam_r_proto" in
12837                 REENTRANT_PROTO*) ;;
12838                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
12839                 esac
12840                 echo "Prototype: $try" ;;
12841         esac
12842         ;;
12843         *)      case "$usethreads" in
12844                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
12845                 esac
12846                 d_getspnam_r=undef
12847                 getspnam_r_proto=0
12848                 ;;
12849         esac
12850         ;;
12851 *)      getspnam_r_proto=0
12852         ;;
12853 esac
12854
12855 : see if gettimeofday or ftime exists
12856 set gettimeofday d_gettimeod
12857 eval $inlibc
12858 case "$d_gettimeod" in
12859 "$undef")
12860         set ftime d_ftime 
12861         eval $inlibc
12862         ;;
12863 *)
12864         val="$undef"; set d_ftime; eval $setvar
12865         ;;
12866 esac
12867 case "$d_gettimeod$d_ftime" in
12868 "$undef$undef")
12869         echo " "
12870         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
12871         ;;
12872 esac
12873
12874 : see if gmtime_r exists
12875 set gmtime_r d_gmtime_r
12876 eval $inlibc
12877 case "$d_gmtime_r" in
12878 "$define")
12879         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
12880         case "$d_gmtime_r_proto:$usethreads" in
12881         ":define")      d_gmtime_r_proto=define
12882                 set d_gmtime_r_proto gmtime_r $hdrs
12883                 eval $hasproto ;;
12884         *)      ;;
12885         esac
12886         case "$d_gmtime_r_proto" in
12887         define)
12888         case "$gmtime_r_proto" in
12889         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
12890         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
12891         esac
12892         case "$gmtime_r_proto" in
12893         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
12894         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
12895         esac
12896         case "$gmtime_r_proto" in
12897         ''|0)   d_gmtime_r=undef
12898                 gmtime_r_proto=0
12899                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
12900         * )     case "$gmtime_r_proto" in
12901                 REENTRANT_PROTO*) ;;
12902                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
12903                 esac
12904                 echo "Prototype: $try" ;;
12905         esac
12906         ;;
12907         *)      case "$usethreads" in
12908                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
12909                 esac
12910                 d_gmtime_r=undef
12911                 gmtime_r_proto=0
12912                 ;;
12913         esac
12914         ;;
12915 *)      gmtime_r_proto=0
12916         ;;
12917 esac
12918
12919 : see if hasmntopt exists
12920 set hasmntopt d_hasmntopt
12921 eval $inlibc
12922
12923 : see if this is a netinet/in.h or sys/in.h system
12924 set netinet/in.h i_niin sys/in.h i_sysin
12925 eval $inhdr
12926
12927 : see if arpa/inet.h has to be included
12928 set arpa/inet.h i_arpainet
12929 eval $inhdr
12930
12931 : see if htonl --and friends-- exists
12932 val=''
12933 set htonl val
12934 eval $inlibc
12935
12936 : Maybe they are macros.
12937 case "$val" in
12938 $undef)
12939         $cat >htonl.c <<EOM
12940 #include <stdio.h>
12941 #include <sys/types.h>
12942 #$i_niin I_NETINET_IN
12943 #$i_sysin I_SYS_IN
12944 #$i_arpainet I_ARPA_INET
12945 #ifdef I_NETINET_IN
12946 #include <netinet/in.h>
12947 #endif
12948 #ifdef I_SYS_IN
12949 #include <sys/in.h>
12950 #endif
12951 #ifdef I_ARPA_INET
12952 #include <arpa/inet.h>
12953 #endif
12954 #ifdef htonl
12955 printf("Defined as a macro.");
12956 #endif
12957 EOM
12958         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
12959         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
12960                 val="$define"
12961                 echo "But it seems to be defined as a macro." >&4
12962         fi
12963         $rm -f htonl.?
12964         ;;
12965 esac
12966 set d_htonl
12967 eval $setvar
12968
12969 : index or strchr
12970 echo " "
12971 if set index val -f; eval $csym; $val; then
12972         if set strchr val -f d_strchr; eval $csym; $val; then
12973                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
12974                         val="$define"
12975                         vali="$undef"
12976                         echo "strchr() found." >&4
12977                 else
12978                         val="$undef"
12979                         vali="$define"
12980                         echo "index() found." >&4
12981                 fi
12982         else
12983                 val="$undef"
12984                 vali="$define"
12985                 echo "index() found." >&4
12986         fi
12987 else
12988         if set strchr val -f d_strchr; eval $csym; $val; then
12989                 val="$define"
12990                 vali="$undef"
12991                 echo "strchr() found." >&4
12992         else
12993                 echo "No index() or strchr() found!" >&4
12994                 val="$undef"
12995                 vali="$undef"
12996         fi
12997 fi
12998 set d_strchr; eval $setvar
12999 val="$vali"
13000 set d_index; eval $setvar
13001
13002 : check whether inet_aton exists
13003 set inet_aton d_inetaton
13004 eval $inlibc
13005
13006 : Look for isascii
13007 echo " "
13008 $cat >isascii.c <<'EOCP'
13009 #include <stdio.h>
13010 #include <ctype.h>
13011 int main() {
13012         int c = 'A';
13013         if (isascii(c))
13014                 exit(0);
13015         else
13016                 exit(1);
13017 }
13018 EOCP
13019 set isascii
13020 if eval $compile; then
13021         echo "isascii() found." >&4
13022         val="$define"
13023 else
13024         echo "isascii() NOT found." >&4
13025         val="$undef"
13026 fi
13027 set d_isascii
13028 eval $setvar
13029 $rm -f isascii*
13030
13031 : see if isfinite exists
13032 set isfinite d_isfinite
13033 eval $inlibc
13034
13035 : see if isinf exists
13036 set isinf d_isinf
13037 eval $inlibc
13038
13039 : see if isnan exists
13040 set isnan d_isnan
13041 eval $inlibc
13042
13043 : see if isnanl exists
13044 set isnanl d_isnanl
13045 eval $inlibc
13046
13047 : see if killpg exists
13048 set killpg d_killpg
13049 eval $inlibc
13050
13051 : see if lchown exists
13052 echo " "
13053 $cat > try.c <<'EOCP'
13054 /* System header to define __stub macros and hopefully few prototypes,
13055     which can conflict with char lchown(); below.  */
13056 #include <assert.h>
13057 /* Override any gcc2 internal prototype to avoid an error.  */
13058 /* We use char because int might match the return type of a gcc2
13059    builtin and then its argument prototype would still apply.  */
13060 char lchown();
13061 int main() {
13062     /*  The GNU C library defines this for functions which it implements
13063         to always fail with ENOSYS.  Some functions are actually named
13064         something starting with __ and the normal name is an alias.  */
13065 #if defined (__stub_lchown) || defined (__stub___lchown)
13066 choke me
13067 #else
13068 lchown();
13069 #endif
13070 ; return 0; }
13071 EOCP
13072 set try
13073 if eval $compile; then
13074     $echo "lchown() found." >&4
13075     val="$define"
13076 else
13077     $echo "lchown() NOT found." >&4
13078     val="$undef"
13079 fi
13080 set d_lchown
13081 eval $setvar
13082
13083 : See if number of significant digits in a double precision number is known
13084 echo " "
13085 $cat >ldbl_dig.c <<EOM
13086 #$i_limits I_LIMITS
13087 #$i_float I_FLOAT
13088 #ifdef I_LIMITS
13089 #include <limits.h>
13090 #endif
13091 #ifdef I_FLOAT
13092 #include <float.h>
13093 #endif
13094 #ifdef LDBL_DIG
13095 printf("Contains LDBL_DIG");
13096 #endif
13097 EOM
13098 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13099 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13100         echo "LDBL_DIG found." >&4
13101         val="$define"
13102 else
13103         echo "LDBL_DIG NOT found." >&4
13104         val="$undef"
13105 fi
13106 $rm -f ldbl_dig.?
13107 set d_ldbl_dig
13108 eval $setvar
13109
13110 : see if link exists
13111 set link d_link
13112 eval $inlibc
13113
13114 : see if localtime_r exists
13115 set localtime_r d_localtime_r
13116 eval $inlibc
13117 case "$d_localtime_r" in
13118 "$define")
13119         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13120         case "$d_localtime_r_proto:$usethreads" in
13121         ":define")      d_localtime_r_proto=define
13122                 set d_localtime_r_proto localtime_r $hdrs
13123                 eval $hasproto ;;
13124         *)      ;;
13125         esac
13126         case "$d_localtime_r_proto" in
13127         define)
13128         case "$localtime_r_proto" in
13129         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13130         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13131         esac
13132         case "$localtime_r_proto" in
13133         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13134         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13135         esac
13136         case "$localtime_r_proto" in
13137         ''|0)   d_localtime_r=undef
13138                 localtime_r_proto=0
13139                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13140         * )     case "$localtime_r_proto" in
13141                 REENTRANT_PROTO*) ;;
13142                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13143                 esac
13144                 echo "Prototype: $try" ;;
13145         esac
13146         ;;
13147         *)      case "$usethreads" in
13148                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13149                 esac
13150                 d_localtime_r=undef
13151                 localtime_r_proto=0
13152                 ;;
13153         esac
13154         ;;
13155 *)      localtime_r_proto=0
13156         ;;
13157 esac
13158
13159 : see if localeconv exists
13160 set localeconv d_locconv
13161 eval $inlibc
13162
13163 : see if lockf exists
13164 set lockf d_lockf
13165 eval $inlibc
13166
13167 : see if prototype for lseek is available
13168 echo " "
13169 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13170 eval $hasproto
13171
13172 : see if lstat exists
13173 set lstat d_lstat
13174 eval $inlibc
13175
13176 : see if madvise exists
13177 set madvise d_madvise
13178 eval $inlibc
13179
13180 : see if mblen exists
13181 set mblen d_mblen
13182 eval $inlibc
13183
13184 : see if mbstowcs exists
13185 set mbstowcs d_mbstowcs
13186 eval $inlibc
13187
13188 : see if mbtowc exists
13189 set mbtowc d_mbtowc
13190 eval $inlibc
13191
13192 : see if memchr exists
13193 set memchr d_memchr
13194 eval $inlibc
13195
13196 : see if memcmp exists
13197 set memcmp d_memcmp
13198 eval $inlibc
13199
13200 : see if memcpy exists
13201 set memcpy d_memcpy
13202 eval $inlibc
13203
13204 : see if memmove exists
13205 set memmove d_memmove
13206 eval $inlibc
13207
13208 : see if memset exists
13209 set memset d_memset
13210 eval $inlibc
13211
13212 : see if mkdir exists
13213 set mkdir d_mkdir
13214 eval $inlibc
13215
13216 : see if mkdtemp exists
13217 set mkdtemp d_mkdtemp
13218 eval $inlibc
13219
13220 : see if mkfifo exists
13221 set mkfifo d_mkfifo
13222 eval $inlibc
13223
13224 : see if mkstemp exists
13225 set mkstemp d_mkstemp
13226 eval $inlibc
13227
13228 : see if mkstemps exists
13229 set mkstemps d_mkstemps
13230 eval $inlibc
13231
13232 : see if mktime exists
13233 set mktime d_mktime
13234 eval $inlibc
13235
13236 : see if this is a sys/mman.h system
13237 set sys/mman.h i_sysmman
13238 eval $inhdr
13239
13240 : see if mmap exists
13241 set mmap d_mmap
13242 eval $inlibc
13243 : see what shmat returns
13244 : default to something harmless
13245 mmaptype='void *'
13246 case "$i_sysmman$d_mmap" in
13247 "$define$define")
13248         $cat >mmap.c <<'END'
13249 #include <sys/mman.h>
13250 void *mmap();
13251 END
13252         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13253                 mmaptype='void *'
13254         else
13255                 mmaptype='caddr_t'
13256         fi
13257         echo "and it returns ($mmaptype)." >&4
13258         ;;
13259 esac
13260
13261
13262
13263 : see if mprotect exists
13264 set mprotect d_mprotect
13265 eval $inlibc
13266
13267 : see if msgctl exists
13268 set msgctl d_msgctl
13269 eval $inlibc
13270
13271 : see if msgget exists
13272 set msgget d_msgget
13273 eval $inlibc
13274
13275 : see if msgsnd exists
13276 set msgsnd d_msgsnd
13277 eval $inlibc
13278
13279 : see if msgrcv exists
13280 set msgrcv d_msgrcv
13281 eval $inlibc
13282
13283 : see how much of the 'msg*(2)' library is present.
13284 h_msg=true
13285 echo " "
13286 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13287 *"$undef"*) h_msg=false;;
13288 esac
13289 case "$osname" in
13290 freebsd)
13291     case "`ipcs 2>&1`" in
13292     "SVID messages"*"not configured"*)
13293         echo "Your $osname does not have the msg*(2) configured." >&4
13294         h_msg=false
13295         val="$undef"
13296         set msgctl d_msgctl
13297         eval $setvar
13298         set msgget d_msgget
13299         eval $setvar
13300         set msgsnd d_msgsnd
13301         eval $setvar
13302         set msgrcv d_msgrcv
13303         eval $setvar
13304         ;;
13305     esac
13306     ;;
13307 esac
13308 : we could also check for sys/ipc.h ...
13309 if $h_msg && $test `./findhdr sys/msg.h`; then
13310         echo "You have the full msg*(2) library." >&4
13311         val="$define"
13312 else
13313         echo "You don't have the full msg*(2) library." >&4
13314         val="$undef"
13315 fi
13316 set d_msg
13317 eval $setvar
13318
13319
13320 echo " "
13321 echo "Checking to see if your system supports struct msghdr..." >&4
13322 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13323 eval $hasstruct
13324 case "$d_msghdr_s" in
13325 "$define")      echo "Yes, it does."   ;;
13326 *)              echo "No, it doesn't." ;;
13327 esac
13328
13329
13330 : see if msync exists
13331 set msync d_msync
13332 eval $inlibc
13333
13334 : see if munmap exists
13335 set munmap d_munmap
13336 eval $inlibc
13337
13338 : see if nice exists
13339 set nice d_nice
13340 eval $inlibc
13341
13342 : see if this is a langinfo.h system
13343 set langinfo.h i_langinfo
13344 eval $inhdr
13345
13346 : see if nl_langinfo exists
13347 set nl_langinfo d_nl_langinfo
13348 eval $inlibc
13349
13350 : check for length of character
13351 echo " "
13352 case "$charsize" in
13353 '')
13354         echo "Checking to see how big your characters are (hey, you never know)..." >&4
13355         $cat >try.c <<'EOCP'
13356 #include <stdio.h>
13357 int main()
13358 {
13359     printf("%d\n", (int)sizeof(char));
13360     exit(0);
13361 }
13362 EOCP
13363         set try
13364         if eval $compile_ok; then
13365                 dflt=`$run ./try`
13366         else
13367                 dflt='1'
13368                 echo "(I can't seem to compile the test program.  Guessing...)"
13369         fi
13370         ;;
13371 *)
13372         dflt="$charsize"
13373         ;;
13374 esac
13375 rp="What is the size of a character (in bytes)?"
13376 . ./myread
13377 charsize="$ans"
13378 $rm -f try.c try
13379
13380 : check for volatile keyword
13381 echo " "
13382 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13383 $cat >try.c <<'EOCP'
13384 int main()
13385 {
13386         typedef struct _goo_struct goo_struct;
13387         goo_struct * volatile goo = ((goo_struct *)0);
13388         struct _goo_struct {
13389                 long long_int;
13390                 int reg_int;
13391                 char char_var;
13392         };
13393         typedef unsigned short foo_t;
13394         char *volatile foo;
13395         volatile int bar;
13396         volatile foo_t blech;
13397         foo = foo;
13398 }
13399 EOCP
13400 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13401         val="$define"
13402         echo "Yup, it does."
13403 else
13404         val="$undef"
13405         echo "Nope, it doesn't."
13406 fi
13407 set d_volatile
13408 eval $setvar
13409 $rm -f try.*
13410
13411
13412 echo " "
13413 $echo "Choosing the C types to be used for Perl's internal types..." >&4
13414
13415 case "$use64bitint:$d_quad:$quadtype" in
13416 define:define:?*)
13417         ivtype="$quadtype"
13418         uvtype="$uquadtype"
13419         ivsize=8
13420         uvsize=8
13421         ;;
13422 *)      ivtype="long"
13423         uvtype="unsigned long"
13424         ivsize=$longsize
13425         uvsize=$longsize
13426         ;;
13427 esac
13428
13429 case "$uselongdouble:$d_longdbl" in
13430 define:define)
13431         nvtype="long double"
13432         nvsize=$longdblsize
13433         ;;
13434 *)      nvtype=double
13435         nvsize=$doublesize
13436         ;;
13437 esac
13438
13439 $echo "(IV will be "$ivtype", $ivsize bytes)"
13440 $echo "(UV will be "$uvtype", $uvsize bytes)"
13441 $echo "(NV will be "$nvtype", $nvsize bytes)"
13442
13443 $cat >try.c <<EOCP
13444 #$i_inttypes I_INTTYPES
13445 #ifdef I_INTTYPES
13446 #include <inttypes.h>
13447 #endif
13448 #include <stdio.h>
13449 int main() {
13450 #ifdef INT8
13451    int8_t i =  INT8_MAX;
13452   uint8_t u = UINT8_MAX;
13453   printf("int8_t\n");
13454 #endif
13455 #ifdef INT16
13456    int16_t i =  INT16_MAX;
13457   uint16_t i = UINT16_MAX;
13458   printf("int16_t\n");
13459 #endif
13460 #ifdef INT32
13461    int32_t i =  INT32_MAX;
13462   uint32_t u = UINT32_MAX;
13463   printf("int32_t\n");
13464 #endif
13465 }
13466 EOCP
13467
13468 case "$i8type" in
13469 '')     case "$charsize" in
13470         1)      i8type=char
13471                 u8type="unsigned char"
13472                 i8size=$charsize
13473                 u8size=$charsize
13474                 ;;
13475         esac
13476         ;;
13477 esac
13478 case "$i8type" in
13479 '')     set try -DINT8
13480         if eval $compile; then
13481                 case "`$run ./try`" in
13482                 int8_t) i8type=int8_t
13483                         u8type=uint8_t
13484                         i8size=1
13485                         u8size=1
13486                         ;;
13487                 esac
13488         fi
13489         ;;
13490 esac
13491 case "$i8type" in
13492 '')     if $test $charsize -ge 1; then
13493                 i8type=char
13494                 u8type="unsigned char"
13495                 i8size=$charsize
13496                 u8size=$charsize
13497         fi
13498         ;;
13499 esac
13500
13501 case "$i16type" in
13502 '')     case "$shortsize" in
13503         2)      i16type=short
13504                 u16type="unsigned short"
13505                 i16size=$shortsize
13506                 u16size=$shortsize
13507                 ;;
13508         esac
13509         ;;
13510 esac
13511 case "$i16type" in
13512 '')     set try -DINT16
13513         if eval $compile; then
13514                 case "`$run ./try`" in
13515                 int16_t)
13516                         i16type=int16_t
13517                         u16type=uint16_t
13518                         i16size=2
13519                         u16size=2
13520                         ;;
13521                 esac
13522         fi
13523         ;;
13524 esac
13525 case "$i16type" in
13526 '')     if $test $shortsize -ge 2; then
13527                 i16type=short
13528                 u16type="unsigned short"
13529                 i16size=$shortsize
13530                 u16size=$shortsize
13531         fi
13532         ;;
13533 esac
13534
13535 case "$i32type" in
13536 '')     case "$longsize" in
13537         4)      i32type=long
13538                 u32type="unsigned long"
13539                 i32size=$longsize
13540                 u32size=$longsize
13541                 ;;
13542         *)      case "$intsize" in
13543                 4)      i32type=int
13544                         u32type="unsigned int"
13545                         i32size=$intsize
13546                         u32size=$intsize
13547                         ;;
13548                 esac
13549                 ;;
13550         esac
13551         ;;
13552 esac
13553 case "$i32type" in
13554 '')     set try -DINT32
13555         if eval $compile; then
13556                 case "`$run ./try`" in
13557                 int32_t)
13558                         i32type=int32_t
13559                         u32type=uint32_t
13560                         i32size=4
13561                         u32size=4
13562                         ;;
13563                 esac
13564         fi
13565         ;;
13566 esac
13567 case "$i32type" in
13568 '')     if $test $intsize -ge 4; then
13569                 i32type=int
13570                 u32type="unsigned int"
13571                 i32size=$intsize
13572                 u32size=$intsize
13573         fi
13574         ;;
13575 esac
13576
13577 case "$i64type" in
13578 '')     case "$d_quad:$quadtype" in
13579         define:?*)
13580                 i64type="$quadtype"
13581                 u64type="$uquadtype"
13582                 i64size=8
13583                 u64size=8
13584                 ;;
13585         esac
13586         ;;
13587 esac
13588
13589 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
13590 : volatile so that the compiler has to store it out to memory.
13591 if test X"$d_volatile" = X"$define"; then
13592         volatile=volatile
13593 fi
13594 $cat <<EOP >try.c
13595 #include <stdio.h>
13596 #include <sys/types.h>
13597 #include <signal.h>
13598 #ifdef SIGFPE
13599 $volatile int bletched = 0;
13600 $signal_t blech(s) int s; { bletched = 1; }
13601 #endif
13602 int main() {
13603     $uvtype u = 0;
13604     $nvtype d;
13605     int     n = 8 * $uvsize;
13606     int     i;
13607 #ifdef SIGFPE
13608     signal(SIGFPE, blech);
13609 #endif
13610
13611     for (i = 0; i < n; i++) {
13612       u = u << 1 | ($uvtype)1;
13613       d = ($nvtype)u;
13614       if (($uvtype)d != u)
13615         break;
13616       if (d <= 0)
13617         break;
13618       d = ($nvtype)(u - 1);
13619       if (($uvtype)d != (u - 1))
13620         break;
13621 #ifdef SIGFPE
13622       if (bletched) {
13623         break;
13624 #endif
13625       } 
13626     }
13627     printf("%d\n", ((i == n) ? -n : i));
13628     exit(0);
13629 }
13630 EOP
13631 set try
13632
13633 d_nv_preserves_uv="$undef"
13634 if eval $compile; then
13635         nv_preserves_uv_bits="`$run ./try`"
13636 fi
13637 case "$nv_preserves_uv_bits" in
13638 \-[1-9]*)       
13639         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
13640         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
13641         d_nv_preserves_uv="$define"
13642         ;;
13643 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
13644         d_nv_preserves_uv="$undef" ;;
13645 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
13646         nv_preserves_uv_bits="$undef" ;;
13647 esac
13648
13649 $rm -f try.* try
13650
13651
13652 : check for off64_t
13653 echo " "
13654 echo "Checking to see if you have off64_t..." >&4
13655 $cat >try.c <<EOCP
13656 #include <sys/types.h>
13657 #include <unistd.h>
13658 int main() { off64_t x = 7; }
13659 EOCP
13660 set try
13661 if eval $compile; then
13662         val="$define"
13663         echo "You have off64_t."
13664 else
13665         val="$undef"
13666         echo "You do not have off64_t."
13667         case "$lseeksize" in
13668         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
13669         esac
13670 fi
13671 $rm -f try.* try
13672 set d_off64_t
13673 eval $setvar
13674
13675 : how to create joinable pthreads
13676 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13677         echo " "
13678         echo "Checking what constant to use for creating joinable pthreads..." >&4 
13679         $cat >try.c <<'EOCP'
13680 #include <pthread.h>
13681 int main() {
13682     int detachstate = JOINABLE;
13683 }
13684 EOCP
13685         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
13686         if eval $compile; then
13687                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
13688                 val="$undef" # Yes, undef.
13689                 set d_old_pthread_create_joinable
13690                 eval $setvar
13691                 val=""
13692                 set old_pthread_create_joinable
13693                 eval $setvar
13694         else
13695                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
13696                 if eval $compile; then
13697                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13698                         val="$define"
13699                         set d_old_pthread_create_joinable
13700                         eval $setvar
13701                         val=PTHREAD_CREATE_UNDETACHED
13702                         set old_pthread_create_joinable
13703                         eval $setvar
13704                 else            
13705                         set try -DJOINABLE=__UNDETACHED
13706                         if eval $compile; then
13707                                 echo "You seem to use __UNDETACHED." >&4
13708                                 val="$define"
13709                                 set d_old_pthread_create_joinable
13710                                 eval $setvar
13711                                 val=__UNDETACHED
13712                                 set old_pthread_create_joinable
13713                                 eval $setvar
13714                         else
13715                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
13716                                 val="$define"
13717                                 set d_old_pthread_create_joinable
13718                                 eval $setvar
13719                                 val=0
13720                                 set old_pthread_create_joinable
13721                                 eval $setvar
13722                         fi
13723                 fi
13724         fi
13725         $rm -f try try.*
13726 else
13727     d_old_pthread_create_joinable="$undef"
13728     old_pthread_create_joinable=""
13729 fi
13730
13731 : see if pause exists
13732 set pause d_pause
13733 eval $inlibc
13734
13735 : see if pipe exists
13736 set pipe d_pipe
13737 eval $inlibc
13738
13739 : see if poll exists
13740 set poll d_poll
13741 eval $inlibc
13742
13743 : see if readlink exists
13744 set readlink d_readlink
13745 eval $inlibc
13746
13747 echo " "
13748 procselfexe=''
13749 val="$undef"
13750 case "$d_readlink" in
13751 "$define")
13752         if $issymlink /proc/self/exe ; then
13753                 $ls -l /proc/self/exe > reflect
13754                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13755                         echo "You have Linux-like /proc/self/exe."
13756                         procselfexe='"/proc/self/exe"'
13757                         val="$define"
13758                 fi
13759         fi
13760         if $issymlink /proc/curproc/file ; then
13761                 $ls -l /proc/curproc/file > reflect
13762                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13763                         echo "You have BSD-like /proc/curproc/file."
13764                         procselfexe='"/proc/curproc/file"'
13765                         val="$define"
13766                 fi
13767         fi
13768         ;;
13769 esac
13770 $rm -f reflect
13771 set d_procselfexe
13772 eval $setvar
13773
13774 : see whether the pthread_atfork exists
13775 $cat >try.c <<EOP
13776 #include <pthread.h>
13777 #include <stdio.h>
13778 int main() {
13779 #ifdef  PTHREAD_ATFORK
13780         pthread_atfork(NULL,NULL,NULL);
13781 #endif
13782 }
13783 EOP
13784
13785 : see if pthread_atfork exists
13786 set try -DPTHREAD_ATFORK
13787 if eval $compile; then
13788     val="$define"
13789 else
13790     val="$undef"
13791 fi
13792 case "$usethreads" in
13793 $define)
13794         case "$val" in
13795         $define) echo 'pthread_atfork found.' >&4        ;;
13796         *)       echo 'pthread_atfork NOT found.' >&4    ;;
13797         esac
13798 esac
13799 set d_pthread_atfork
13800 eval $setvar
13801
13802
13803 : see whether the various POSIXish _yields exist
13804 $cat >try.c <<EOP
13805 #include <pthread.h>
13806 #include <stdio.h>
13807 int main() {
13808 #ifdef SCHED_YIELD
13809         sched_yield();
13810 #else
13811 #ifdef PTHREAD_YIELD
13812         pthread_yield();
13813 #else
13814 #ifdef PTHREAD_YIELD_NULL
13815         pthread_yield(NULL);
13816 #endif
13817 #endif
13818 #endif
13819 }
13820 EOP
13821 : see if sched_yield exists
13822 set try -DSCHED_YIELD
13823 if eval $compile; then
13824     val="$define"
13825     sched_yield='sched_yield()'
13826 else
13827     val="$undef"
13828 fi
13829 case "$usethreads" in
13830 $define)
13831         case "$val" in
13832         $define) echo 'sched_yield() found.' >&4        ;;
13833         *)       echo 'sched_yield() NOT found.' >&4    ;;
13834         esac
13835 esac
13836 set d_sched_yield
13837 eval $setvar
13838
13839 : see if pthread_yield exists
13840 set try -DPTHREAD_YIELD
13841 if eval $compile; then
13842     val="$define"
13843     case "$sched_yield" in
13844     '') sched_yield='pthread_yield()' ;;
13845     esac
13846 else
13847     set try -DPTHREAD_YIELD_NULL
13848     if eval $compile; then
13849         val="$define"
13850         case "$sched_yield" in
13851         '') sched_yield='pthread_yield(NULL)' ;;
13852         esac
13853     else
13854         val="$undef"
13855     fi
13856 fi
13857 case "$usethreads" in
13858 $define)
13859         case "$val" in
13860         $define) echo 'pthread_yield() found.' >&4      ;;
13861         *)       echo 'pthread_yield() NOT found.' >&4  ;;
13862         esac
13863         ;;
13864 esac
13865 set d_pthread_yield
13866 eval $setvar
13867
13868 case "$sched_yield" in
13869 '') sched_yield=undef ;;
13870 esac
13871
13872 $rm -f try try.*
13873
13874 : see if random_r exists
13875 set random_r d_random_r
13876 eval $inlibc
13877 case "$d_random_r" in
13878 "$define")
13879         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
13880         case "$d_random_r_proto:$usethreads" in
13881         ":define")      d_random_r_proto=define
13882                 set d_random_r_proto random_r $hdrs
13883                 eval $hasproto ;;
13884         *)      ;;
13885         esac
13886         case "$d_random_r_proto" in
13887         define)
13888         case "$random_r_proto" in
13889         ''|0) try='int random_r(int*, struct random_data*);'
13890         ./protochk "extern $try" $hdrs && random_r_proto=I_TS ;;
13891         esac
13892         case "$random_r_proto" in
13893         ''|0)   d_random_r=undef
13894                 random_r_proto=0
13895                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
13896         * )     case "$random_r_proto" in
13897                 REENTRANT_PROTO*) ;;
13898                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
13899                 esac
13900                 echo "Prototype: $try" ;;
13901         esac
13902         ;;
13903         *)      case "$usethreads" in
13904                 define) echo "random_r has no prototype, not using it." >&4 ;;
13905                 esac
13906                 d_random_r=undef
13907                 random_r_proto=0
13908                 ;;
13909         esac
13910         ;;
13911 *)      random_r_proto=0
13912         ;;
13913 esac
13914
13915 : see if readdir and friends exist
13916 set readdir d_readdir
13917 eval $inlibc
13918 set seekdir d_seekdir
13919 eval $inlibc
13920 set telldir d_telldir
13921 eval $inlibc
13922 set rewinddir d_rewinddir
13923 eval $inlibc
13924
13925 : see if readdir64_r exists
13926 set readdir64_r d_readdir64_r
13927 eval $inlibc
13928 case "$d_readdir64_r" in
13929 "$define")
13930         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
13931         case "$d_readdir64_r_proto:$usethreads" in
13932         ":define")      d_readdir64_r_proto=define
13933                 set d_readdir64_r_proto readdir64_r $hdrs
13934                 eval $hasproto ;;
13935         *)      ;;
13936         esac
13937         case "$d_readdir64_r_proto" in
13938         define)
13939         case "$readdir64_r_proto" in
13940         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
13941         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
13942         esac
13943         case "$readdir64_r_proto" in
13944         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
13945         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
13946         esac
13947         case "$readdir64_r_proto" in
13948         ''|0)   d_readdir64_r=undef
13949                 readdir64_r_proto=0
13950                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
13951         * )     case "$readdir64_r_proto" in
13952                 REENTRANT_PROTO*) ;;
13953                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
13954                 esac
13955                 echo "Prototype: $try" ;;
13956         esac
13957         ;;
13958         *)      case "$usethreads" in
13959                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
13960                 esac
13961                 d_readdir64_r=undef
13962                 readdir64_r_proto=0
13963                 ;;
13964         esac
13965         ;;
13966 *)      readdir64_r_proto=0
13967         ;;
13968 esac
13969
13970 : see if readdir_r exists
13971 set readdir_r d_readdir_r
13972 eval $inlibc
13973 case "$d_readdir_r" in
13974 "$define")
13975         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
13976         case "$d_readdir_r_proto:$usethreads" in
13977         ":define")      d_readdir_r_proto=define
13978                 set d_readdir_r_proto readdir_r $hdrs
13979                 eval $hasproto ;;
13980         *)      ;;
13981         esac
13982         case "$d_readdir_r_proto" in
13983         define)
13984         case "$readdir_r_proto" in
13985         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
13986         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
13987         esac
13988         case "$readdir_r_proto" in
13989         ''|0) try='int readdir_r(DIR*, struct dirent*);'
13990         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
13991         esac
13992         case "$readdir_r_proto" in
13993         ''|0)   d_readdir_r=undef
13994                 readdir_r_proto=0
13995                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
13996         * )     case "$readdir_r_proto" in
13997                 REENTRANT_PROTO*) ;;
13998                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
13999                 esac
14000                 echo "Prototype: $try" ;;
14001         esac
14002         ;;
14003         *)      case "$usethreads" in
14004                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14005                 esac
14006                 d_readdir_r=undef
14007                 readdir_r_proto=0
14008                 ;;
14009         esac
14010         ;;
14011 *)      readdir_r_proto=0
14012         ;;
14013 esac
14014
14015 : see if readv exists
14016 set readv d_readv
14017 eval $inlibc
14018
14019 : see if recvmsg exists
14020 set recvmsg d_recvmsg
14021 eval $inlibc
14022
14023 : see if rename exists
14024 set rename d_rename
14025 eval $inlibc
14026
14027 : see if rmdir exists
14028 set rmdir d_rmdir
14029 eval $inlibc
14030
14031 : see if memory.h is available.
14032 val=''
14033 set memory.h val
14034 eval $inhdr
14035
14036 : See if it conflicts with string.h
14037 case "$val" in
14038 $define)
14039         case "$strings" in
14040         '') ;;
14041         *)
14042                 $cppstdin $cppflags $cppminus < $strings > mem.h
14043                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14044                         echo " "
14045                         echo "We won't be including <memory.h>."
14046                         val="$undef"
14047                 fi
14048                 $rm -f mem.h
14049                 ;;
14050         esac
14051 esac
14052 set i_memory
14053 eval $setvar
14054
14055 : can bcopy handle overlapping blocks?
14056 echo " "
14057 val="$undef"
14058 case "$d_memmove" in
14059 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14060 *)      case "$d_bcopy" in
14061         "$define")
14062                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14063                 $cat >try.c <<EOCP
14064 #$i_memory I_MEMORY
14065 #$i_stdlib I_STDLIB
14066 #$i_string I_STRING
14067 #$i_unistd I_UNISTD
14068 EOCP
14069         $cat >>try.c <<'EOCP'
14070 #include <stdio.h>
14071 #ifdef I_MEMORY
14072 #  include <memory.h>
14073 #endif
14074 #ifdef I_STDLIB
14075 #  include <stdlib.h>
14076 #endif
14077 #ifdef I_STRING
14078 #  include <string.h>
14079 #else
14080 #  include <strings.h>
14081 #endif
14082 #ifdef I_UNISTD
14083 #  include <unistd.h>  /* Needed for NetBSD */
14084 #endif
14085 int main()
14086 {
14087 char buf[128], abc[128];
14088 char *b;
14089 int len;
14090 int off;
14091 int align;
14092
14093 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14094    try to store the string in read-only memory. */
14095 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14096
14097 for (align = 7; align >= 0; align--) {
14098         for (len = 36; len; len--) {
14099                 b = buf+align;
14100                 bcopy(abc, b, len);
14101                 for (off = 1; off <= len; off++) {
14102                         bcopy(b, b+off, len);
14103                         bcopy(b+off, b, len);
14104                         if (bcmp(b, abc, len))
14105                                 exit(1);
14106                 }
14107         }
14108 }
14109 exit(0);
14110 }
14111 EOCP
14112                 set try
14113                 if eval $compile_ok; then
14114                         if ./try 2>/dev/null; then
14115                                 echo "Yes, it can."
14116                                 val="$define"
14117                         else
14118                                 echo "It can't, sorry."
14119                         fi
14120                 else
14121                         echo "(I can't compile the test program, so we'll assume not...)"
14122                 fi
14123                 ;;
14124         esac
14125         $rm -f try.* try core
14126         ;;
14127 esac
14128 set d_safebcpy
14129 eval $setvar
14130
14131 : can memcpy handle overlapping blocks?
14132 echo " "
14133 val="$undef"
14134 case "$d_memmove" in
14135 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14136 *)      case "$d_memcpy" in
14137         "$define")
14138                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14139                 $cat >try.c <<EOCP
14140 #$i_memory I_MEMORY
14141 #$i_stdlib I_STDLIB
14142 #$i_string I_STRING
14143 #$i_unistd I_UNISTD
14144 EOCP
14145         $cat >>try.c <<'EOCP'
14146 #include <stdio.h>
14147 #ifdef I_MEMORY
14148 #  include <memory.h>
14149 #endif
14150 #ifdef I_STDLIB
14151 #  include <stdlib.h>
14152 #endif
14153 #ifdef I_STRING
14154 #  include <string.h>
14155 #else
14156 #  include <strings.h>
14157 #endif
14158 #ifdef I_UNISTD
14159 #  include <unistd.h>  /* Needed for NetBSD */
14160 #endif
14161 int main()
14162 {
14163 char buf[128], abc[128];
14164 char *b;
14165 int len;
14166 int off;
14167 int align;
14168
14169 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14170    try to store the string in read-only memory. */
14171 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14172
14173 for (align = 7; align >= 0; align--) {
14174         for (len = 36; len; len--) {
14175                 b = buf+align;
14176                 memcpy(b, abc, len);
14177                 for (off = 1; off <= len; off++) {
14178                         memcpy(b+off, b, len);
14179                         memcpy(b, b+off, len);
14180                         if (memcmp(b, abc, len))
14181                                 exit(1);
14182                 }
14183         }
14184 }
14185 exit(0);
14186 }
14187 EOCP
14188                 set try
14189                 if eval $compile_ok; then
14190                         if ./try 2>/dev/null; then
14191                                 echo "Yes, it can."
14192                                 val="$define"
14193                         else
14194                                 echo "It can't, sorry."
14195                         fi
14196                 else
14197                         echo "(I can't compile the test program, so we'll assume not...)"
14198                 fi
14199                 ;;
14200         esac
14201         $rm -f try.* try core
14202         ;;
14203 esac
14204 set d_safemcpy
14205 eval $setvar
14206
14207 : can memcmp be trusted to compare relative magnitude?
14208 val="$undef"
14209 case "$d_memcmp" in
14210 "$define")
14211         echo " "
14212         echo "Checking if your memcmp() can compare relative magnitude..." >&4
14213         $cat >try.c <<EOCP
14214 #$i_memory I_MEMORY
14215 #$i_stdlib I_STDLIB
14216 #$i_string I_STRING
14217 #$i_unistd I_UNISTD
14218 EOCP
14219         $cat >>try.c <<'EOCP'
14220 #include <stdio.h>
14221 #ifdef I_MEMORY
14222 #  include <memory.h>
14223 #endif
14224 #ifdef I_STDLIB
14225 #  include <stdlib.h>
14226 #endif
14227 #ifdef I_STRING
14228 #  include <string.h>
14229 #else
14230 #  include <strings.h>
14231 #endif
14232 #ifdef I_UNISTD
14233 #  include <unistd.h>  /* Needed for NetBSD */
14234 #endif
14235 int main()
14236 {
14237 char a = -1;
14238 char b = 0;
14239 if ((a < b) && memcmp(&a, &b, 1) < 0)
14240         exit(1);
14241 exit(0);
14242 }
14243 EOCP
14244         set try
14245         if eval $compile_ok; then
14246                 if $run ./try 2>/dev/null; then
14247                         echo "Yes, it can."
14248                         val="$define"
14249                 else
14250                         echo "No, it can't (it uses signed chars)."
14251                 fi
14252         else
14253                 echo "(I can't compile the test program, so we'll assume not...)"
14254         fi
14255         ;;
14256 esac
14257 $rm -f try.* try core
14258 set d_sanemcmp
14259 eval $setvar
14260
14261 : see if prototype for sbrk is available
14262 echo " "
14263 set d_sbrkproto sbrk $i_unistd unistd.h
14264 eval $hasproto
14265
14266 : see if select exists
14267 set select d_select
14268 eval $inlibc
14269
14270 : see if semctl exists
14271 set semctl d_semctl
14272 eval $inlibc
14273
14274 : see if semget exists
14275 set semget d_semget
14276 eval $inlibc
14277
14278 : see if semop exists
14279 set semop d_semop
14280 eval $inlibc
14281
14282 : see how much of the 'sem*(2)' library is present.
14283 h_sem=true
14284 echo " "
14285 case "$d_semctl$d_semget$d_semop" in
14286 *"$undef"*) h_sem=false;;
14287 esac
14288 case "$osname" in
14289 freebsd)
14290     case "`ipcs 2>&1`" in
14291     "SVID messages"*"not configured"*)
14292         echo "Your $osname does not have the sem*(2) configured." >&4
14293         h_sem=false
14294         val="$undef"
14295         set semctl d_semctl
14296         eval $setvar
14297         set semget d_semget
14298         eval $setvar
14299         set semop d_semop
14300         eval $setvar
14301         ;;
14302     esac
14303     ;;
14304 esac
14305 : we could also check for sys/ipc.h ...
14306 if $h_sem && $test `./findhdr sys/sem.h`; then
14307         echo "You have the full sem*(2) library." >&4
14308         val="$define"
14309 else
14310         echo "You don't have the full sem*(2) library." >&4
14311         val="$undef"
14312 fi
14313 set d_sem
14314 eval $setvar
14315
14316 : see whether sys/sem.h defines union semun
14317 echo " "
14318 $cat > try.c <<'END'
14319 #include <sys/types.h>
14320 #include <sys/ipc.h>
14321 #include <sys/sem.h>
14322 int main () { union semun semun; semun.buf = 0; }
14323 END
14324 set try
14325 if eval $compile; then
14326     echo "You have union semun in <sys/sem.h>." >&4
14327     val="$define"
14328 else
14329     echo "You do not have union semun in <sys/sem.h>." >&4
14330     val="$undef"
14331 fi
14332 $rm -f try try.c try.h
14333 set d_union_semun
14334 eval $setvar
14335
14336 : see how to do semctl IPC_STAT
14337 case "$d_sem" in
14338 $define)
14339     : see whether semctl IPC_STAT can use union semun
14340     echo " "
14341     $cat > try.h <<END
14342 #ifndef S_IRUSR
14343 #   ifdef S_IREAD
14344 #       define S_IRUSR S_IREAD
14345 #       define S_IWUSR S_IWRITE
14346 #       define S_IXUSR S_IEXEC
14347 #   else
14348 #       define S_IRUSR 0400
14349 #       define S_IWUSR 0200
14350 #       define S_IXUSR 0100
14351 #   endif
14352 #   define S_IRGRP (S_IRUSR>>3)
14353 #   define S_IWGRP (S_IWUSR>>3)
14354 #   define S_IXGRP (S_IXUSR>>3)
14355 #   define S_IROTH (S_IRUSR>>6)
14356 #   define S_IWOTH (S_IWUSR>>6)
14357 #   define S_IXOTH (S_IXUSR>>6)
14358 #endif
14359 #ifndef S_IRWXU
14360 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14361 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14362 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14363 #endif
14364 END
14365
14366     $cat > try.c <<END
14367 #include <sys/types.h>
14368 #include <sys/ipc.h>
14369 #include <sys/sem.h>
14370 #include <sys/stat.h>
14371 #include <stdio.h>
14372 #include <errno.h>
14373 #include "try.h"
14374 #ifndef errno
14375 extern int errno;
14376 #endif
14377 #$d_union_semun HAS_UNION_SEMUN
14378 int main() {
14379     union semun
14380 #ifndef HAS_UNION_SEMUN
14381     {
14382         int val;
14383         struct semid_ds *buf;
14384         unsigned short *array;
14385     }
14386 #endif
14387     arg;
14388     int sem, st;
14389
14390 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14391     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14392     if (sem > -1) {
14393         struct semid_ds argbuf;
14394         arg.buf = &argbuf;
14395 #       ifdef IPC_STAT
14396         st = semctl(sem, 0, IPC_STAT, arg);
14397         if (st == 0)
14398             printf("semun\n");
14399         else
14400 #       endif /* IPC_STAT */
14401             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14402 #       ifdef IPC_RMID
14403         if (semctl(sem, 0, IPC_RMID, arg) != 0)
14404 #       endif /* IPC_RMID */
14405             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14406     } else
14407 #endif /* IPC_PRIVATE && ... */
14408         printf("semget failed: errno = %d\n", errno);
14409   return 0;
14410 }
14411 END
14412     val="$undef"
14413     set try
14414     if eval $compile; then
14415         xxx=`$run ./try`
14416         case "$xxx" in
14417         semun) val="$define" ;;
14418         esac
14419     fi
14420     $rm -f try try.c
14421     set d_semctl_semun
14422     eval $setvar
14423     case "$d_semctl_semun" in
14424     $define)
14425         echo "You can use union semun for semctl IPC_STAT." >&4
14426         also='also'
14427         ;;
14428     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
14429         also=''
14430         ;;
14431     esac
14432
14433     : see whether semctl IPC_STAT can use struct semid_ds pointer
14434     $cat > try.c <<'END'
14435 #include <sys/types.h>
14436 #include <sys/ipc.h>
14437 #include <sys/sem.h>
14438 #include <sys/stat.h>
14439 #include "try.h"
14440 #include <stdio.h>
14441 #include <errno.h>
14442 #ifndef errno
14443 extern int errno;
14444 #endif
14445 int main() {
14446     struct semid_ds arg;
14447     int sem, st;
14448
14449 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
14450     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14451     if (sem > -1) {
14452 #       ifdef IPC_STAT
14453         st = semctl(sem, 0, IPC_STAT, &arg);
14454         if (st == 0)
14455             printf("semid_ds\n");
14456         else
14457 #       endif /* IPC_STAT */
14458             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14459 #       ifdef IPC_RMID
14460         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
14461 #       endif /* IPC_RMID */
14462             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14463     } else
14464 #endif /* IPC_PRIVATE && ... */
14465         printf("semget failed: errno = %d\n", errno);
14466
14467     return 0;
14468 }
14469 END
14470     val="$undef"
14471     set try
14472     if eval $compile; then
14473         xxx=`$run ./try`
14474         case "$xxx" in
14475         semid_ds) val="$define" ;;
14476         esac
14477     fi
14478     $rm -f try try.c
14479     set d_semctl_semid_ds
14480     eval $setvar
14481     case "$d_semctl_semid_ds" in
14482     $define)
14483         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
14484         ;;
14485     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
14486         ;;
14487     esac
14488     $rm -f try.h
14489     ;;
14490 *)  val="$undef"
14491
14492     # We do not have the full sem*(2) library, so assume we can not
14493     # use either.
14494
14495     set d_semctl_semun
14496     eval $setvar
14497
14498     set d_semctl_semid_ds
14499     eval $setvar
14500     ;;
14501 esac
14502
14503 : see if sendmsg exists
14504 set sendmsg d_sendmsg
14505 eval $inlibc
14506
14507 : see if setegid exists
14508 set setegid d_setegid
14509 eval $inlibc
14510
14511 : see if seteuid exists
14512 set seteuid d_seteuid
14513 eval $inlibc
14514
14515 : see if setgrent exists
14516 set setgrent d_setgrent
14517 eval $inlibc
14518
14519 : see if setgrent_r exists
14520 set setgrent_r d_setgrent_r
14521 eval $inlibc
14522 case "$d_setgrent_r" in
14523 "$define")
14524         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
14525         case "$d_setgrent_r_proto:$usethreads" in
14526         ":define")      d_setgrent_r_proto=define
14527                 set d_setgrent_r_proto setgrent_r $hdrs
14528                 eval $hasproto ;;
14529         *)      ;;
14530         esac
14531         case "$d_setgrent_r_proto" in
14532         define)
14533         case "$setgrent_r_proto" in
14534         ''|0) try='int setgrent_r(FILE**);'
14535         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
14536         esac
14537         case "$setgrent_r_proto" in
14538         ''|0) try='void setgrent_r(FILE**);'
14539         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
14540         esac
14541         case "$setgrent_r_proto" in
14542         ''|0)   d_setgrent_r=undef
14543                 setgrent_r_proto=0
14544                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
14545         * )     case "$setgrent_r_proto" in
14546                 REENTRANT_PROTO*) ;;
14547                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
14548                 esac
14549                 echo "Prototype: $try" ;;
14550         esac
14551         ;;
14552         *)      case "$usethreads" in
14553                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
14554                 esac
14555                 d_setgrent_r=undef
14556                 setgrent_r_proto=0
14557                 ;;
14558         esac
14559         ;;
14560 *)      setgrent_r_proto=0
14561         ;;
14562 esac
14563
14564 : see if sethostent exists
14565 set sethostent d_sethent
14566 eval $inlibc
14567
14568 : see if sethostent_r exists
14569 set sethostent_r d_sethostent_r
14570 eval $inlibc
14571 case "$d_sethostent_r" in
14572 "$define")
14573         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14574         case "$d_sethostent_r_proto:$usethreads" in
14575         ":define")      d_sethostent_r_proto=define
14576                 set d_sethostent_r_proto sethostent_r $hdrs
14577                 eval $hasproto ;;
14578         *)      ;;
14579         esac
14580         case "$d_sethostent_r_proto" in
14581         define)
14582         case "$sethostent_r_proto" in
14583         ''|0) try='int sethostent_r(int, struct hostent_data*);'
14584         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
14585         esac
14586         case "$sethostent_r_proto" in
14587         ''|0) try='void sethostent_r(int, struct hostent_data*);'
14588         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
14589         esac
14590         case "$sethostent_r_proto" in
14591         ''|0)   d_sethostent_r=undef
14592                 sethostent_r_proto=0
14593                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
14594         * )     case "$sethostent_r_proto" in
14595                 REENTRANT_PROTO*) ;;
14596                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
14597                 esac
14598                 echo "Prototype: $try" ;;
14599         esac
14600         ;;
14601         *)      case "$usethreads" in
14602                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
14603                 esac
14604                 d_sethostent_r=undef
14605                 sethostent_r_proto=0
14606                 ;;
14607         esac
14608         ;;
14609 *)      sethostent_r_proto=0
14610         ;;
14611 esac
14612
14613 : see if setitimer exists
14614 set setitimer d_setitimer
14615 eval $inlibc
14616
14617 : see if setlinebuf exists
14618 set setlinebuf d_setlinebuf
14619 eval $inlibc
14620
14621 : see if setlocale exists
14622 set setlocale d_setlocale
14623 eval $inlibc
14624
14625 : see if locale.h is available
14626 set locale.h i_locale
14627 eval $inhdr
14628
14629 : see if setlocale_r exists
14630 set setlocale_r d_setlocale_r
14631 eval $inlibc
14632 case "$d_setlocale_r" in
14633 "$define")
14634         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
14635         case "$d_setlocale_r_proto:$usethreads" in
14636         ":define")      d_setlocale_r_proto=define
14637                 set d_setlocale_r_proto setlocale_r $hdrs
14638                 eval $hasproto ;;
14639         *)      ;;
14640         esac
14641         case "$d_setlocale_r_proto" in
14642         define)
14643         case "$setlocale_r_proto" in
14644         ''|0) try='int setlocale_r(int, const char*, char*, int);'
14645         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
14646         esac
14647         case "$setlocale_r_proto" in
14648         ''|0)   d_setlocale_r=undef
14649                 setlocale_r_proto=0
14650                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
14651         * )     case "$setlocale_r_proto" in
14652                 REENTRANT_PROTO*) ;;
14653                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
14654                 esac
14655                 echo "Prototype: $try" ;;
14656         esac
14657         ;;
14658         *)      case "$usethreads" in
14659                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
14660                 esac
14661                 d_setlocale_r=undef
14662                 setlocale_r_proto=0
14663                 ;;
14664         esac
14665         ;;
14666 *)      setlocale_r_proto=0
14667         ;;
14668 esac
14669
14670 : see if setnetent exists
14671 set setnetent d_setnent
14672 eval $inlibc
14673
14674 : see if setnetent_r exists
14675 set setnetent_r d_setnetent_r
14676 eval $inlibc
14677 case "$d_setnetent_r" in
14678 "$define")
14679         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14680         case "$d_setnetent_r_proto:$usethreads" in
14681         ":define")      d_setnetent_r_proto=define
14682                 set d_setnetent_r_proto setnetent_r $hdrs
14683                 eval $hasproto ;;
14684         *)      ;;
14685         esac
14686         case "$d_setnetent_r_proto" in
14687         define)
14688         case "$setnetent_r_proto" in
14689         ''|0) try='int setnetent_r(int, struct netent_data*);'
14690         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
14691         esac
14692         case "$setnetent_r_proto" in
14693         ''|0) try='void setnetent_r(int, struct netent_data*);'
14694         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
14695         esac
14696         case "$setnetent_r_proto" in
14697         ''|0)   d_setnetent_r=undef
14698                 setnetent_r_proto=0
14699                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
14700         * )     case "$setnetent_r_proto" in
14701                 REENTRANT_PROTO*) ;;
14702                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
14703                 esac
14704                 echo "Prototype: $try" ;;
14705         esac
14706         ;;
14707         *)      case "$usethreads" in
14708                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
14709                 esac
14710                 d_setnetent_r=undef
14711                 setnetent_r_proto=0
14712                 ;;
14713         esac
14714         ;;
14715 *)      setnetent_r_proto=0
14716         ;;
14717 esac
14718
14719 : see if setprotoent exists
14720 set setprotoent d_setpent
14721 eval $inlibc
14722
14723 : see if setpgid exists
14724 set setpgid d_setpgid
14725 eval $inlibc
14726
14727 : see if setpgrp2 exists
14728 set setpgrp2 d_setpgrp2
14729 eval $inlibc
14730
14731 : see if setpriority exists
14732 set setpriority d_setprior
14733 eval $inlibc
14734
14735 : see if setproctitle exists
14736 set setproctitle d_setproctitle
14737 eval $inlibc
14738
14739 : see if setprotoent_r exists
14740 set setprotoent_r d_setprotoent_r
14741 eval $inlibc
14742 case "$d_setprotoent_r" in
14743 "$define")
14744         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14745         case "$d_setprotoent_r_proto:$usethreads" in
14746         ":define")      d_setprotoent_r_proto=define
14747                 set d_setprotoent_r_proto setprotoent_r $hdrs
14748                 eval $hasproto ;;
14749         *)      ;;
14750         esac
14751         case "$d_setprotoent_r_proto" in
14752         define)
14753         case "$setprotoent_r_proto" in
14754         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
14755         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
14756         esac
14757         case "$setprotoent_r_proto" in
14758         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
14759         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
14760         esac
14761         case "$setprotoent_r_proto" in
14762         ''|0)   d_setprotoent_r=undef
14763                 setprotoent_r_proto=0
14764                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
14765         * )     case "$setprotoent_r_proto" in
14766                 REENTRANT_PROTO*) ;;
14767                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
14768                 esac
14769                 echo "Prototype: $try" ;;
14770         esac
14771         ;;
14772         *)      case "$usethreads" in
14773                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
14774                 esac
14775                 d_setprotoent_r=undef
14776                 setprotoent_r_proto=0
14777                 ;;
14778         esac
14779         ;;
14780 *)      setprotoent_r_proto=0
14781         ;;
14782 esac
14783
14784 : see if setpwent exists
14785 set setpwent d_setpwent
14786 eval $inlibc
14787
14788 : see if setpwent_r exists
14789 set setpwent_r d_setpwent_r
14790 eval $inlibc
14791 case "$d_setpwent_r" in
14792 "$define")
14793         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14794         case "$d_setpwent_r_proto:$usethreads" in
14795         ":define")      d_setpwent_r_proto=define
14796                 set d_setpwent_r_proto setpwent_r $hdrs
14797                 eval $hasproto ;;
14798         *)      ;;
14799         esac
14800         case "$d_setpwent_r_proto" in
14801         define)
14802         case "$setpwent_r_proto" in
14803         ''|0) try='int setpwent_r(FILE**);'
14804         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
14805         esac
14806         case "$setpwent_r_proto" in
14807         ''|0) try='void setpwent_r(FILE**);'
14808         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
14809         esac
14810         case "$setpwent_r_proto" in
14811         ''|0)   d_setpwent_r=undef
14812                 setpwent_r_proto=0
14813                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
14814         * )     case "$setpwent_r_proto" in
14815                 REENTRANT_PROTO*) ;;
14816                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
14817                 esac
14818                 echo "Prototype: $try" ;;
14819         esac
14820         ;;
14821         *)      case "$usethreads" in
14822                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
14823                 esac
14824                 d_setpwent_r=undef
14825                 setpwent_r_proto=0
14826                 ;;
14827         esac
14828         ;;
14829 *)      setpwent_r_proto=0
14830         ;;
14831 esac
14832
14833 : see if setregid exists
14834 set setregid d_setregid
14835 eval $inlibc
14836 set setresgid d_setresgid
14837 eval $inlibc
14838
14839 : see if setreuid exists
14840 set setreuid d_setreuid
14841 eval $inlibc
14842 set setresuid d_setresuid
14843 eval $inlibc
14844
14845 : see if setrgid exists
14846 set setrgid d_setrgid
14847 eval $inlibc
14848
14849 : see if setruid exists
14850 set setruid d_setruid
14851 eval $inlibc
14852
14853 : see if setservent exists
14854 set setservent d_setsent
14855 eval $inlibc
14856
14857 : see if setservent_r exists
14858 set setservent_r d_setservent_r
14859 eval $inlibc
14860 case "$d_setservent_r" in
14861 "$define")
14862         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14863         case "$d_setservent_r_proto:$usethreads" in
14864         ":define")      d_setservent_r_proto=define
14865                 set d_setservent_r_proto setservent_r $hdrs
14866                 eval $hasproto ;;
14867         *)      ;;
14868         esac
14869         case "$d_setservent_r_proto" in
14870         define)
14871         case "$setservent_r_proto" in
14872         ''|0) try='int setservent_r(int, struct servent_data*);'
14873         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
14874         esac
14875         case "$setservent_r_proto" in
14876         ''|0) try='void setservent_r(int, struct servent_data*);'
14877         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
14878         esac
14879         case "$setservent_r_proto" in
14880         ''|0)   d_setservent_r=undef
14881                 setservent_r_proto=0
14882                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
14883         * )     case "$setservent_r_proto" in
14884                 REENTRANT_PROTO*) ;;
14885                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
14886                 esac
14887                 echo "Prototype: $try" ;;
14888         esac
14889         ;;
14890         *)      case "$usethreads" in
14891                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
14892                 esac
14893                 d_setservent_r=undef
14894                 setservent_r_proto=0
14895                 ;;
14896         esac
14897         ;;
14898 *)      setservent_r_proto=0
14899         ;;
14900 esac
14901
14902 : see if setsid exists
14903 set setsid d_setsid
14904 eval $inlibc
14905
14906 : see if setvbuf exists
14907 set setvbuf d_setvbuf
14908 eval $inlibc
14909
14910 : see if sfio.h is available
14911 set sfio.h i_sfio
14912 eval $inhdr
14913
14914
14915 : see if sfio library is available
14916 case "$i_sfio" in
14917 $define)
14918         val=''
14919         set sfreserve val
14920         eval $inlibc
14921         ;;
14922 *)
14923         val="$undef"
14924         ;;
14925 esac
14926 : Ok, but do we want to use it.
14927 case "$val" in
14928 $define)
14929         case "$usesfio" in
14930         true|$define|[yY]*) dflt='y';;
14931         *) dflt='n';;
14932         esac
14933         echo "$package can use the sfio library, but it is experimental."
14934         case "$useperlio" in
14935         "$undef")
14936             echo "For sfio also the PerlIO abstraction layer is needed."
14937             echo "Earlier you said you wouldn't want that."
14938             ;;
14939         esac
14940         rp="You seem to have sfio available, do you want to try using it?"
14941         . ./myread
14942         case "$ans" in
14943         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
14944                 useperlio="$define"
14945                 val="$define"
14946                 ;;
14947         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
14948                 val="$undef"
14949                 ;;
14950         esac
14951         ;;
14952 *)      case "$usesfio" in
14953         true|$define|[yY]*)
14954                 echo "Sorry, cannot find sfio on this machine." >&4
14955                 echo "Ignoring your setting of usesfio=$usesfio." >&4
14956                 val="$undef"
14957                 ;;
14958         esac
14959         ;;
14960 esac
14961 set d_sfio
14962 eval $setvar
14963 case "$d_sfio" in
14964 $define) usesfio='true';;
14965 *) usesfio='false';;
14966 esac
14967 case "$d_sfio" in
14968 $define) ;;
14969 *)      : Remove sfio from list of libraries to use
14970         case "$libs" in
14971         *-lsfio*)
14972                 echo "Removing unneeded -lsfio from library list" >&4
14973                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
14974                 shift
14975                 libs="$*"
14976                 echo "libs = $libs" >&4
14977                 ;;
14978         esac
14979 ;;
14980 esac
14981
14982
14983 : see if shmctl exists
14984 set shmctl d_shmctl
14985 eval $inlibc
14986
14987 : see if shmget exists
14988 set shmget d_shmget
14989 eval $inlibc
14990
14991 : see if shmat exists
14992 set shmat d_shmat
14993 eval $inlibc
14994 : see what shmat returns
14995 case "$d_shmat" in
14996 "$define")
14997         $cat >shmat.c <<'END'
14998 #include <sys/shm.h>
14999 void *shmat();
15000 END
15001         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15002                 shmattype='void *'
15003         else
15004                 shmattype='char *'
15005         fi
15006         echo "and it returns ($shmattype)." >&4
15007         : see if a prototype for shmat is available
15008         xxx=`./findhdr sys/shm.h`
15009         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15010         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15011                 val="$define"
15012         else
15013                 val="$undef"
15014         fi
15015         $rm -f shmat.[co]
15016         ;;
15017 *)
15018         val="$undef"
15019         ;;
15020 esac
15021 set d_shmatprototype
15022 eval $setvar
15023
15024 : see if shmdt exists
15025 set shmdt d_shmdt
15026 eval $inlibc
15027
15028 : see how much of the 'shm*(2)' library is present.
15029 h_shm=true
15030 echo " "
15031 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15032 *"$undef"*) h_shm=false;;
15033 esac
15034 case "$osname" in
15035 freebsd)
15036     case "`ipcs 2>&1`" in
15037     "SVID shared memory"*"not configured"*)
15038         echo "Your $osname does not have the shm*(2) configured." >&4
15039         h_shm=false
15040         val="$undef"
15041         set shmctl d_shmctl
15042         evat $setvar
15043         set shmget d_shmget
15044         evat $setvar
15045         set shmat d_shmat
15046         evat $setvar
15047         set shmdt d_shmdt
15048         evat $setvar
15049         ;;
15050     esac
15051     ;;
15052 esac
15053 : we could also check for sys/ipc.h ...
15054 if $h_shm && $test `./findhdr sys/shm.h`; then
15055         echo "You have the full shm*(2) library." >&4
15056         val="$define"
15057 else
15058         echo "You don't have the full shm*(2) library." >&4
15059         val="$undef"
15060 fi
15061 set d_shm
15062 eval $setvar
15063
15064 echo " "
15065 : see if we have sigaction
15066 if set sigaction val -f d_sigaction; eval $csym; $val; then
15067         echo 'sigaction() found.' >&4
15068         $cat > try.c <<'EOP'
15069 #include <stdio.h>
15070 #include <sys/types.h>
15071 #include <signal.h>
15072 int main()
15073 {
15074     struct sigaction act, oact;
15075     act.sa_flags = 0;
15076     oact.sa_handler = 0;
15077     /* so that act and oact are used */
15078     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
15079 }
15080 EOP
15081         set try
15082         if eval $compile_ok; then
15083                 val="$define"
15084         else
15085                 echo "But you don't seem to have a useable struct sigaction." >&4
15086                 val="$undef"
15087         fi
15088 else
15089         echo 'sigaction NOT found.' >&4
15090         val="$undef"
15091 fi
15092 set d_sigaction; eval $setvar
15093 $rm -f try try$_o try.c
15094
15095 : see if sigprocmask exists
15096 set sigprocmask d_sigprocmask
15097 eval $inlibc
15098
15099 : see if sigsetjmp exists
15100 echo " "
15101 case "$d_sigsetjmp" in
15102 '')
15103         $cat >try.c <<'EOP'
15104 #include <setjmp.h>
15105 sigjmp_buf env;
15106 int set = 1;
15107 int main()
15108 {
15109         if (sigsetjmp(env,1))
15110                 exit(set);
15111         set = 0;
15112         siglongjmp(env, 1);
15113         exit(1);
15114 }
15115 EOP
15116         set try
15117         if eval $compile; then
15118                 if $run ./try >/dev/null 2>&1; then
15119                         echo "POSIX sigsetjmp found." >&4
15120                         val="$define"
15121                 else
15122                         $cat >&4 <<EOM
15123 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15124 I'll ignore them.
15125 EOM
15126                         val="$undef"
15127                 fi
15128         else
15129                 echo "sigsetjmp not found." >&4
15130                 val="$undef"
15131         fi
15132         ;;
15133 *) val="$d_sigsetjmp"
15134         case "$d_sigsetjmp" in
15135         $define) echo "POSIX sigsetjmp found." >&4;;
15136         $undef) echo "sigsetjmp not found." >&4;;
15137         esac
15138         ;;
15139 esac
15140 set d_sigsetjmp
15141 eval $setvar
15142 $rm -f try.c try
15143
15144 : see if sockatmark exists
15145 set sockatmark d_sockatmark
15146 eval $inlibc
15147
15148 : see if prototype for sockatmark is available
15149 echo " "
15150 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15151 eval $hasproto
15152
15153 : see if socks5_init exists
15154 set socks5_init d_socks5_init
15155 eval $inlibc
15156
15157 : see if srand48_r exists
15158 set srand48_r d_srand48_r
15159 eval $inlibc
15160 case "$d_srand48_r" in
15161 "$define")
15162         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15163         case "$d_srand48_r_proto:$usethreads" in
15164         ":define")      d_srand48_r_proto=define
15165                 set d_srand48_r_proto srand48_r $hdrs
15166                 eval $hasproto ;;
15167         *)      ;;
15168         esac
15169         case "$d_srand48_r_proto" in
15170         define)
15171         case "$srand48_r_proto" in
15172         ''|0) try='int srand48_r(long, struct drand48_data*);'
15173         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15174         esac
15175         case "$srand48_r_proto" in
15176         ''|0)   d_srand48_r=undef
15177                 srand48_r_proto=0
15178                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
15179         * )     case "$srand48_r_proto" in
15180                 REENTRANT_PROTO*) ;;
15181                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15182                 esac
15183                 echo "Prototype: $try" ;;
15184         esac
15185         ;;
15186         *)      case "$usethreads" in
15187                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15188                 esac
15189                 d_srand48_r=undef
15190                 srand48_r_proto=0
15191                 ;;
15192         esac
15193         ;;
15194 *)      srand48_r_proto=0
15195         ;;
15196 esac
15197
15198 : see if srandom_r exists
15199 set srandom_r d_srandom_r
15200 eval $inlibc
15201 case "$d_srandom_r" in
15202 "$define")
15203         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15204         case "$d_srandom_r_proto:$usethreads" in
15205         ":define")      d_srandom_r_proto=define
15206                 set d_srandom_r_proto srandom_r $hdrs
15207                 eval $hasproto ;;
15208         *)      ;;
15209         esac
15210         case "$d_srandom_r_proto" in
15211         define)
15212         case "$srandom_r_proto" in
15213         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15214         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15215         esac
15216         case "$srandom_r_proto" in
15217         ''|0)   d_srandom_r=undef
15218                 srandom_r_proto=0
15219                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
15220         * )     case "$srandom_r_proto" in
15221                 REENTRANT_PROTO*) ;;
15222                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15223                 esac
15224                 echo "Prototype: $try" ;;
15225         esac
15226         ;;
15227         *)      case "$usethreads" in
15228                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15229                 esac
15230                 d_srandom_r=undef
15231                 srandom_r_proto=0
15232                 ;;
15233         esac
15234         ;;
15235 *)      srandom_r_proto=0
15236         ;;
15237 esac
15238
15239 : see if prototype for setresgid is available
15240 echo " "
15241 set d_sresgproto setresgid $i_unistd unistd.h
15242 eval $hasproto
15243
15244 : see if prototype for setresuid is available
15245 echo " "
15246 set d_sresuproto setresuid $i_unistd unistd.h
15247 eval $hasproto
15248
15249 : see if sys/stat.h is available
15250 set sys/stat.h i_sysstat
15251 eval $inhdr
15252
15253
15254 : see if stat knows about block sizes
15255 echo " "
15256 echo "Checking to see if your struct stat has st_blocks field..." >&4
15257 set d_statblks stat st_blocks $i_sysstat sys/stat.h
15258 eval $hasfield
15259
15260
15261 : see if this is a sys/vfs.h system
15262 set sys/vfs.h i_sysvfs
15263 eval $inhdr
15264
15265
15266 : see if this is a sys/statfs.h system
15267 set sys/statfs.h i_sysstatfs
15268 eval $inhdr
15269
15270
15271 echo " "
15272 echo "Checking to see if your system supports struct statfs..." >&4
15273 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
15274 eval $hasstruct
15275 case "$d_statfs_s" in
15276 "$define")      echo "Yes, it does."   ;;
15277 *)              echo "No, it doesn't." ;;
15278 esac
15279
15280
15281
15282 : see if struct statfs knows about f_flags
15283 case "$d_statfs_s" in
15284 define) 
15285         echo " "
15286         echo "Checking to see if your struct statfs has f_flags field..." >&4
15287         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
15288         eval $hasfield
15289         ;;
15290 *)      val="$undef"
15291         set d_statfs_f_flags
15292         eval $setvar
15293         ;;
15294 esac
15295 case "$d_statfs_f_flags" in
15296 "$define")      echo "Yes, it does."   ;;
15297 *)              echo "No, it doesn't." ;;
15298 esac
15299
15300 : see if _ptr and _cnt from stdio act std
15301 echo " "
15302
15303 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15304         echo "(Looks like you have stdio.h from BSD.)"
15305         case "$stdio_ptr" in
15306         '') stdio_ptr='((fp)->_p)'
15307                 ptr_lval=$define
15308                 ;;
15309         *)      ptr_lval=$d_stdio_ptr_lval;;
15310         esac
15311         case "$stdio_cnt" in
15312         '') stdio_cnt='((fp)->_r)'
15313                 cnt_lval=$define
15314                 ;;
15315         *)      cnt_lval=$d_stdio_cnt_lval;;
15316         esac
15317         case "$stdio_base" in
15318         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15319         esac
15320         case "$stdio_bufsiz" in
15321         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15322         esac
15323 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
15324         echo "(Looks like you have stdio.h from Linux.)"
15325         case "$stdio_ptr" in
15326         '') stdio_ptr='((fp)->_IO_read_ptr)'
15327                 ptr_lval=$define
15328                 ;;
15329         *)      ptr_lval=$d_stdio_ptr_lval;;
15330         esac
15331         case "$stdio_cnt" in
15332         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15333                 cnt_lval=$undef
15334                 ;;
15335         *)      cnt_lval=$d_stdio_cnt_lval;;
15336         esac
15337         case "$stdio_base" in
15338         '') stdio_base='((fp)->_IO_read_base)';;
15339         esac
15340         case "$stdio_bufsiz" in
15341         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15342         esac
15343 else
15344         case "$stdio_ptr" in
15345         '') stdio_ptr='((fp)->_ptr)'
15346                 ptr_lval=$define
15347                 ;;
15348         *)      ptr_lval=$d_stdio_ptr_lval;;
15349         esac
15350         case "$stdio_cnt" in
15351         '') stdio_cnt='((fp)->_cnt)'
15352                 cnt_lval=$define
15353                 ;;
15354         *)      cnt_lval=$d_stdio_cnt_lval;;
15355         esac
15356         case "$stdio_base" in
15357         '') stdio_base='((fp)->_base)';;
15358         esac
15359         case "$stdio_bufsiz" in
15360         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15361         esac
15362 fi
15363
15364 : test whether _ptr and _cnt really work
15365 echo "Checking how std your stdio is..." >&4
15366 $cat >try.c <<EOP
15367 #include <stdio.h>
15368 #define FILE_ptr(fp)    $stdio_ptr
15369 #define FILE_cnt(fp)    $stdio_cnt
15370 int main() {
15371         FILE *fp = fopen("try.c", "r");
15372         char c = getc(fp);
15373         if (
15374                 18 <= FILE_cnt(fp) &&
15375                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15376         )
15377                 exit(0);
15378         exit(1);
15379 }
15380 EOP
15381 val="$undef"
15382 set try
15383 if eval $compile && $to try.c; then
15384         if $run ./try; then
15385                 echo "Your stdio acts pretty std."
15386                 val="$define"
15387         else
15388                 echo "Your stdio isn't very std."
15389         fi
15390 else
15391         echo "Your stdio doesn't appear very std."
15392 fi
15393 $rm -f try.c try
15394
15395 # glibc 2.2.90 and above apparently change stdio streams so Perl's
15396 # direct buffer manipulation no longer works.  The Configure tests
15397 # should be changed to correctly detect this, but until then,
15398 # the following check should at least let perl compile and run.
15399 # (This quick fix should be updated before 5.8.1.)
15400 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
15401 # A. Dougherty, June 3, 2002.
15402 case "$d_gnulibc" in
15403 $define)
15404         case "$gnulibc_version" in
15405         2.[01]*)  ;;
15406         2.2) ;;
15407         2.2.[0-9]) ;;
15408         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
15409                 val="$undef"
15410                 ;;
15411         esac
15412         ;;
15413 esac
15414 set d_stdstdio
15415 eval $setvar
15416
15417 : Can _ptr be used as an lvalue?
15418 case "$d_stdstdio$ptr_lval" in
15419 $define$define) val=$define ;;
15420 *) val=$undef ;;
15421 esac
15422 set d_stdio_ptr_lval
15423 eval $setvar
15424
15425 : Can _cnt be used as an lvalue?
15426 case "$d_stdstdio$cnt_lval" in
15427 $define$define) val=$define ;;
15428 *) val=$undef ;;
15429 esac
15430 set d_stdio_cnt_lval
15431 eval $setvar
15432
15433
15434 : test whether setting _ptr sets _cnt as a side effect
15435 d_stdio_ptr_lval_sets_cnt="$undef"
15436 d_stdio_ptr_lval_nochange_cnt="$undef"
15437 case "$d_stdio_ptr_lval$d_stdstdio" in
15438 $define$define)
15439         echo "Checking to see what happens if we set the stdio ptr..." >&4
15440 $cat >try.c <<EOP
15441 #include <stdio.h>
15442 /* Can we scream? */
15443 /* Eat dust sed :-) */
15444 /* In the buffer space, no one can hear you scream. */
15445 #define FILE_ptr(fp)    $stdio_ptr
15446 #define FILE_cnt(fp)    $stdio_cnt
15447 #include <sys/types.h>
15448 int main() {
15449         FILE *fp = fopen("try.c", "r");
15450         int c;
15451         char *ptr;
15452         size_t cnt;
15453         if (!fp) {
15454             puts("Fail even to read");
15455             exit(1);
15456         }
15457         c = getc(fp); /* Read away the first # */
15458         if (c == EOF) {
15459             puts("Fail even to read");
15460             exit(1);
15461         }
15462         if (!(
15463                 18 <= FILE_cnt(fp) &&
15464                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15465         )) {
15466                 puts("Fail even to read");
15467                 exit (1);
15468         }
15469         ptr = (char*) FILE_ptr(fp);
15470         cnt = (size_t)FILE_cnt(fp);
15471
15472         FILE_ptr(fp) += 42;
15473
15474         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
15475                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
15476                 exit (1);
15477         }
15478         if (FILE_cnt(fp) <= 20) {
15479                 printf ("Fail (<20 chars to test)");
15480                 exit (1);
15481         }
15482         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
15483                 puts("Fail compare");
15484                 exit (1);
15485         }
15486         if (cnt == FILE_cnt(fp)) {
15487                 puts("Pass_unchanged");
15488                 exit (0);
15489         }       
15490         if (FILE_cnt(fp) == (cnt - 42)) {
15491                 puts("Pass_changed");
15492                 exit (0);
15493         }
15494         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
15495         return 1;
15496
15497 }
15498 EOP
15499         set try
15500         if eval $compile && $to try.c; then
15501                 case `$run ./try` in
15502                 Pass_changed)
15503                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
15504                         d_stdio_ptr_lval_sets_cnt="$define" ;;
15505                 Pass_unchanged)
15506                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
15507                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
15508                 Fail*)
15509                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
15510                 *)
15511                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
15512         esac
15513         else
15514                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
15515         fi
15516         $rm -f try.c try
15517         ;;
15518 esac
15519
15520 : see if _base is also standard
15521 val="$undef"
15522 case "$d_stdstdio" in
15523 $define)
15524         $cat >try.c <<EOP
15525 #include <stdio.h>
15526 #define FILE_base(fp)   $stdio_base
15527 #define FILE_bufsiz(fp) $stdio_bufsiz
15528 int main() {
15529         FILE *fp = fopen("try.c", "r");
15530         char c = getc(fp);
15531         if (
15532                 19 <= FILE_bufsiz(fp) &&
15533                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
15534         )
15535                 exit(0);
15536         exit(1);
15537 }
15538 EOP
15539         set try
15540         if eval $compile && $to try.c; then
15541                 if $run ./try; then
15542                         echo "And its _base field acts std."
15543                         val="$define"
15544                 else
15545                         echo "But its _base field isn't std."
15546                 fi
15547         else
15548                 echo "However, it seems to be lacking the _base field."
15549         fi
15550         $rm -f try.c try
15551         ;;
15552 esac
15553 set d_stdiobase
15554 eval $setvar
15555
15556 $cat >&4 <<EOM
15557 Checking how to access stdio streams by file descriptor number...
15558 EOM
15559 case "$stdio_stream_array" in
15560 '')     $cat >try.c <<EOCP
15561 #include <stdio.h>
15562 int main() {
15563   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
15564     printf("yes\n");
15565 }
15566 EOCP
15567         for s in _iob __iob __sF
15568         do
15569                 set try -DSTDIO_STREAM_ARRAY=$s
15570                 if eval $compile; then
15571                         case "`$run ./try`" in
15572                         yes)    stdio_stream_array=$s; break ;;
15573                         esac
15574                 fi
15575         done
15576         $rm -f try.* try$exe_ext
15577 esac
15578 case "$stdio_stream_array" in
15579 '')     $cat >&4 <<EOM
15580 I can't figure out how to access stdio streams by file descriptor number.
15581 EOM
15582         d_stdio_stream_array="$undef"
15583         ;;
15584 *)      $cat >&4 <<EOM
15585 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
15586 EOM
15587         d_stdio_stream_array="$define"
15588         ;;
15589 esac
15590
15591 : see if strcoll exists
15592 set strcoll d_strcoll
15593 eval $inlibc
15594
15595 : check for structure copying
15596 echo " "
15597 echo "Checking to see if your C compiler can copy structs..." >&4
15598 $cat >try.c <<'EOCP'
15599 int main()
15600 {
15601         struct blurfl {
15602                 int dyick;
15603         } foo, bar;
15604
15605         foo = bar;
15606 }
15607 EOCP
15608 if $cc -c try.c >/dev/null 2>&1 ; then
15609         val="$define"
15610         echo "Yup, it can."
15611 else
15612         val="$undef"
15613         echo "Nope, it can't."
15614 fi
15615 set d_strctcpy
15616 eval $setvar
15617 $rm -f try.*
15618
15619 : see if strerror and/or sys_errlist[] exist
15620 echo " "
15621 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
15622     if set strerror val -f d_strerror; eval $csym; $val; then
15623                 echo 'strerror() found.' >&4
15624                 d_strerror="$define"
15625                 d_strerrm='strerror(e)'
15626                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
15627                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
15628                         d_syserrlst="$define"
15629                 else
15630                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
15631                         d_syserrlst="$undef"
15632                 fi
15633     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
15634                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
15635                 echo 'strerror() found in string header.' >&4
15636                 d_strerror="$define"
15637                 d_strerrm='strerror(e)'
15638                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
15639                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
15640                                 d_syserrlst="$define"
15641                 else
15642                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
15643                         d_syserrlst="$undef"
15644                 fi
15645     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
15646                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
15647                 d_strerror="$undef"
15648                 d_syserrlst="$define"
15649                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
15650     else
15651                 echo 'strerror() and sys_errlist[] NOT found.' >&4
15652                 d_strerror="$undef"
15653                 d_syserrlst="$undef"
15654                 d_strerrm='"unknown"'
15655     fi
15656 fi
15657
15658 : see if strerror_r exists
15659 set strerror_r d_strerror_r
15660 eval $inlibc
15661 case "$d_strerror_r" in
15662 "$define")
15663         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
15664         case "$d_strerror_r_proto:$usethreads" in
15665         ":define")      d_strerror_r_proto=define
15666                 set d_strerror_r_proto strerror_r $hdrs
15667                 eval $hasproto ;;
15668         *)      ;;
15669         esac
15670         case "$d_strerror_r_proto" in
15671         define)
15672         case "$strerror_r_proto" in
15673         ''|0) try='int strerror_r(int, char*, size_t);'
15674         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
15675         esac
15676         case "$strerror_r_proto" in
15677         ''|0) try='int strerror_r(int, char*, int);'
15678         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
15679         esac
15680         case "$strerror_r_proto" in
15681         ''|0) try='char* strerror_r(int, char*, size_t);'
15682         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
15683         esac
15684         case "$strerror_r_proto" in
15685         ''|0)   d_strerror_r=undef
15686                 strerror_r_proto=0
15687                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
15688         * )     case "$strerror_r_proto" in
15689                 REENTRANT_PROTO*) ;;
15690                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
15691                 esac
15692                 echo "Prototype: $try" ;;
15693         esac
15694         ;;
15695         *)      case "$usethreads" in
15696                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
15697                 esac
15698                 d_strerror_r=undef
15699                 strerror_r_proto=0
15700                 ;;
15701         esac
15702         ;;
15703 *)      strerror_r_proto=0
15704         ;;
15705 esac
15706
15707 : see if strftime exists
15708 set strftime d_strftime
15709 eval $inlibc
15710
15711 : see if strtod exists
15712 set strtod d_strtod
15713 eval $inlibc
15714
15715 : see if strtol exists
15716 set strtol d_strtol
15717 eval $inlibc
15718
15719 : see if strtold exists
15720 set strtold d_strtold
15721 eval $inlibc
15722
15723 : see if strtoll exists
15724 set strtoll d_strtoll
15725 eval $inlibc
15726
15727 case "$d_longlong-$d_strtoll" in
15728 "$define-$define")
15729         $cat <<EOM
15730 Checking whether your strtoll() works okay...
15731 EOM
15732         $cat >try.c <<'EOCP'
15733 #include <errno.h>
15734 #ifdef __hpux
15735 #define strtoll __strtoll
15736 #endif
15737 #ifdef __EMX__
15738 #define strtoll _strtoll
15739 #endif
15740 #include <stdio.h>
15741 extern long long int strtoll(char *s, char **, int); 
15742 static int bad = 0;
15743 int check(char *s, long long ell, int een) {
15744         long long gll;
15745         errno = 0;
15746         gll = strtoll(s, 0, 10);
15747         if (!((gll == ell) && (errno == een)))
15748                 bad++;
15749 }
15750 int main() {
15751         check(" 1",                                      1LL, 0);
15752         check(" 0",                                      0LL, 0);
15753         check("-1",                                     -1LL, 0);
15754         check("-9223372036854775808", -9223372036854775808LL, 0);
15755         check("-9223372036854775808", -9223372036854775808LL, 0);
15756         check(" 9223372036854775807",  9223372036854775807LL, 0);
15757         check("-9223372036854775808", -9223372036854775808LL, 0);
15758         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
15759         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
15760         if (!bad)
15761                 printf("ok\n");
15762 }
15763 EOCP
15764         set try
15765         if eval $compile; then
15766                 yyy=`$run ./try`
15767                 case "$yyy" in
15768                 ok) echo "Your strtoll() seems to be working okay." ;;
15769                 *) cat <<EOM >&4
15770 Your strtoll() doesn't seem to be working okay.
15771 EOM
15772                    d_strtoll="$undef"
15773                    ;;
15774                 esac
15775         else
15776                 echo "(I can't seem to compile the test program--assuming it doesn't)"
15777                 d_strtoll="$undef"
15778         fi
15779         ;;
15780 esac
15781
15782 : see if strtoq exists
15783 set strtoq d_strtoq
15784 eval $inlibc
15785
15786 : see if strtoul exists
15787 set strtoul d_strtoul
15788 eval $inlibc
15789
15790 case "$d_strtoul" in
15791 "$define")
15792         $cat <<EOM
15793 Checking whether your strtoul() works okay...
15794 EOM
15795         $cat >try.c <<'EOCP'
15796 #include <errno.h>
15797 #include <stdio.h>
15798 extern unsigned long int strtoul(char *s, char **, int); 
15799 static int bad = 0;
15800 void check(char *s, unsigned long eul, int een) {
15801         unsigned long gul;
15802         errno = 0;
15803         gul = strtoul(s, 0, 10);
15804         if (!((gul == eul) && (errno == een)))
15805                 bad++;
15806 }
15807 int main() {
15808         check(" 1", 1L, 0);
15809         check(" 0", 0L, 0);
15810 EOCP
15811         case "$longsize" in
15812         8)
15813             $cat >>try.c <<'EOCP'
15814         check("18446744073709551615", 18446744073709551615UL, 0);
15815         check("18446744073709551616", 18446744073709551615UL, ERANGE);
15816 #if 0 /* strtoul() for /^-/ strings is undefined. */
15817         check("-1", 18446744073709551615UL, 0);
15818         check("-18446744073709551614", 2, 0);
15819         check("-18446744073709551615", 1, 0);
15820         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
15821         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
15822 #endif
15823 EOCP
15824                 ;;
15825         4)
15826                     $cat >>try.c <<'EOCP'
15827         check("4294967295", 4294967295UL, 0);
15828         check("4294967296", 4294967295UL, ERANGE);
15829 #if 0 /* strtoul() for /^-/ strings is undefined. */
15830         check("-1", 4294967295UL, 0);
15831         check("-4294967294", 2, 0);
15832         check("-4294967295", 1, 0);
15833         check("-4294967296", 4294967295UL, ERANGE);
15834         check("-4294967297", 4294967295UL, ERANGE);
15835 #endif
15836 EOCP
15837                 ;;
15838         *)
15839 : Should we write these tests to be more portable by sprintf-ing
15840 : ~0 and then manipulating that char string as input for strtol?
15841                 ;;
15842         esac
15843         $cat >>try.c <<'EOCP'
15844         if (!bad)
15845                 printf("ok\n");
15846         return 0;
15847 }
15848 EOCP
15849         set try
15850         if eval $compile; then
15851                 case "`$run ./try`" in
15852                 ok) echo "Your strtoul() seems to be working okay." ;;
15853                 *) cat <<EOM >&4
15854 Your strtoul() doesn't seem to be working okay.
15855 EOM
15856                    d_strtoul="$undef"
15857                    ;;
15858                 esac
15859         fi
15860         ;;
15861 esac
15862
15863 : see if strtoull exists
15864 set strtoull d_strtoull
15865 eval $inlibc
15866
15867 case "$d_longlong-$d_strtoull" in
15868 "$define-$define")
15869         $cat <<EOM
15870 Checking whether your strtoull() works okay...
15871 EOM
15872         $cat >try.c <<'EOCP'
15873 #include <errno.h>
15874 #ifdef __hpux
15875 #define strtoull __strtoull
15876 #endif
15877 #include <stdio.h>
15878 extern unsigned long long int strtoull(char *s, char **, int); 
15879 static int bad = 0;
15880 int check(char *s, long long eull, int een) {
15881         long long gull;
15882         errno = 0;
15883         gull = strtoull(s, 0, 10);
15884         if (!((gull == eull) && (errno == een)))
15885                 bad++;
15886 }
15887 int main() {
15888         check(" 1",                                        1LL, 0);
15889         check(" 0",                                        0LL, 0);
15890         check("18446744073709551615",  18446744073709551615ULL, 0);
15891         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
15892 #if 0 /* strtoull() for /^-/ strings is undefined. */
15893         check("-1",                    18446744073709551615ULL, 0);
15894         check("-18446744073709551614",                     2LL, 0);
15895         check("-18446744073709551615",                     1LL, 0);
15896         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
15897         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
15898 #endif
15899         if (!bad)
15900                 printf("ok\n");
15901 }
15902 EOCP
15903         set try
15904         if eval $compile; then
15905                 case "`$run ./try`" in
15906                 ok) echo "Your strtoull() seems to be working okay." ;;
15907                 *) cat <<EOM >&4
15908 Your strtoull() doesn't seem to be working okay.
15909 EOM
15910                    d_strtoull="$undef"
15911                    ;;
15912                 esac
15913         fi
15914         ;;
15915 esac
15916
15917 : see if strtouq exists
15918 set strtouq d_strtouq
15919 eval $inlibc
15920
15921 case "$d_strtouq" in
15922 "$define")
15923         $cat <<EOM
15924 Checking whether your strtouq() works okay...
15925 EOM
15926         $cat >try.c <<'EOCP'
15927 #include <errno.h>
15928 #include <stdio.h>
15929 extern unsigned long long int strtouq(char *s, char **, int); 
15930 static int bad = 0;
15931 void check(char *s, unsigned long long eull, int een) {
15932         unsigned long long gull;
15933         errno = 0;
15934         gull = strtouq(s, 0, 10);
15935         if (!((gull == eull) && (errno == een)))
15936                 bad++;
15937 }
15938 int main() {
15939         check(" 1",                                        1LL, 0);
15940         check(" 0",                                        0LL, 0);
15941         check("18446744073709551615",  18446744073709551615ULL, 0);
15942         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
15943 #if 0 /* strtouq() for /^-/ strings is undefined. */
15944         check("-1",                    18446744073709551615ULL, 0);
15945         check("-18446744073709551614",                     2LL, 0);
15946         check("-18446744073709551615",                     1LL, 0);
15947         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
15948         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
15949 #endif
15950         if (!bad)
15951                 printf("ok\n");
15952         return 0;
15953 }
15954 EOCP
15955         set try
15956         if eval $compile; then
15957                 case "`$run ./try`" in
15958                 ok) echo "Your strtouq() seems to be working okay." ;;
15959                 *) cat <<EOM >&4
15960 Your strtouq() doesn't seem to be working okay.
15961 EOM
15962                    d_strtouq="$undef"
15963                    ;;
15964                 esac
15965         fi
15966         ;;
15967 esac
15968
15969 : see if strxfrm exists
15970 set strxfrm d_strxfrm
15971 eval $inlibc
15972
15973 : see if symlink exists
15974 set symlink d_symlink
15975 eval $inlibc
15976
15977 : see if syscall exists
15978 set syscall d_syscall
15979 eval $inlibc
15980
15981 : see if prototype for syscall is available
15982 echo " "
15983 set d_syscallproto syscall $i_unistd unistd.h
15984 eval $hasproto
15985
15986 : see if sysconf exists
15987 set sysconf d_sysconf
15988 eval $inlibc
15989
15990 : see if system exists
15991 set system d_system
15992 eval $inlibc
15993
15994 : see if tcgetpgrp exists
15995 set tcgetpgrp d_tcgetpgrp
15996 eval $inlibc
15997
15998 : see if tcsetpgrp exists
15999 set tcsetpgrp d_tcsetpgrp
16000 eval $inlibc
16001
16002 : see if prototype for telldir is available
16003 echo " "
16004 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16005 eval $hasproto
16006
16007 : see if time exists
16008 echo " "
16009 if test "X$d_time" = X -o X"$timetype" = X; then
16010     if set time val -f d_time; eval $csym; $val; then
16011                 echo 'time() found.' >&4
16012                 val="$define"
16013                 rp="What is the type returned by time() on this system?"
16014                 set time_t timetype long stdio.h sys/types.h
16015                 eval $typedef_ask
16016     else
16017                 echo 'time() not found, hope that will do.' >&4
16018                 val="$undef"
16019                 timetype='int';
16020     fi
16021     set d_time
16022     eval $setvar
16023 fi
16024
16025 : see if this is a sys/times.h system
16026 set sys/times.h i_systimes
16027 eval $inhdr
16028
16029 : see if times exists
16030 echo " "
16031 if set times val -f d_times; eval $csym; $val; then
16032         echo 'times() found.' >&4
16033         d_times="$define"
16034         inc=''
16035         case "$i_systimes" in
16036         "$define") inc='sys/times.h';;
16037         esac
16038         rp="What is the type returned by times() on this system?"
16039         set clock_t clocktype long stdio.h sys/types.h $inc
16040         eval $typedef_ask
16041 else
16042         echo 'times() NOT found, hope that will do.' >&4
16043         d_times="$undef"
16044         clocktype='int'
16045 fi
16046
16047 : see if tmpnam_r exists
16048 set tmpnam_r d_tmpnam_r
16049 eval $inlibc
16050 case "$d_tmpnam_r" in
16051 "$define")
16052         hdrs="$i_systypes sys/types.h define stdio.h "
16053         case "$d_tmpnam_r_proto:$usethreads" in
16054         ":define")      d_tmpnam_r_proto=define
16055                 set d_tmpnam_r_proto tmpnam_r $hdrs
16056                 eval $hasproto ;;
16057         *)      ;;
16058         esac
16059         case "$d_tmpnam_r_proto" in
16060         define)
16061         case "$tmpnam_r_proto" in
16062         ''|0) try='char* tmpnam_r(char*);'
16063         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16064         esac
16065         case "$tmpnam_r_proto" in
16066         ''|0)   d_tmpnam_r=undef
16067                 tmpnam_r_proto=0
16068                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16069         * )     case "$tmpnam_r_proto" in
16070                 REENTRANT_PROTO*) ;;
16071                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16072                 esac
16073                 echo "Prototype: $try" ;;
16074         esac
16075         ;;
16076         *)      case "$usethreads" in
16077                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16078                 esac
16079                 d_tmpnam_r=undef
16080                 tmpnam_r_proto=0
16081                 ;;
16082         esac
16083         ;;
16084 *)      tmpnam_r_proto=0
16085         ;;
16086 esac
16087
16088 : see if truncate exists
16089 set truncate d_truncate
16090 eval $inlibc
16091
16092 : see if ttyname_r exists
16093 set ttyname_r d_ttyname_r
16094 eval $inlibc
16095 case "$d_ttyname_r" in
16096 "$define")
16097         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16098         case "$d_ttyname_r_proto:$usethreads" in
16099         ":define")      d_ttyname_r_proto=define
16100                 set d_ttyname_r_proto ttyname_r $hdrs
16101                 eval $hasproto ;;
16102         *)      ;;
16103         esac
16104         case "$d_ttyname_r_proto" in
16105         define)
16106         case "$ttyname_r_proto" in
16107         ''|0) try='int ttyname_r(int, char*, size_t);'
16108         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16109         esac
16110         case "$ttyname_r_proto" in
16111         ''|0) try='int ttyname_r(int, char*, int);'
16112         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16113         esac
16114         case "$ttyname_r_proto" in
16115         ''|0) try='char* ttyname_r(int, char*, int);'
16116         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16117         esac
16118         case "$ttyname_r_proto" in
16119         ''|0)   d_ttyname_r=undef
16120                 ttyname_r_proto=0
16121                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16122         * )     case "$ttyname_r_proto" in
16123                 REENTRANT_PROTO*) ;;
16124                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16125                 esac
16126                 echo "Prototype: $try" ;;
16127         esac
16128         ;;
16129         *)      case "$usethreads" in
16130                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16131                 esac
16132                 d_ttyname_r=undef
16133                 ttyname_r_proto=0
16134                 ;;
16135         esac
16136         ;;
16137 *)      ttyname_r_proto=0
16138         ;;
16139 esac
16140
16141 : see if tzname[] exists
16142 echo " "
16143 if set tzname val -a d_tzname; eval $csym; $val; then
16144         val="$define"
16145         echo 'tzname[] found.' >&4
16146 else
16147         val="$undef"
16148         echo 'tzname[] NOT found.' >&4
16149 fi
16150 set d_tzname
16151 eval $setvar
16152
16153 case "$osname" in
16154 next|rhapsody|darwin) multiarch="$define" ;;
16155 esac
16156 case "$multiarch" in
16157 ''|[nN]*) multiarch="$undef" ;;
16158 esac
16159
16160 : check for ordering of bytes in a UV
16161 echo " "
16162 case "$usecrosscompile$multiarch" in
16163 *$define*)
16164         $cat <<EOM
16165 You seem to be either cross-compiling or doing a multiarchitecture build,
16166 skipping the byteorder check.
16167
16168 EOM
16169         byteorder='ffff'
16170         ;;
16171 *)
16172         case "$byteorder" in
16173         '')
16174                 $cat <<'EOM'
16175 In the following, larger digits indicate more significance.  A big-endian
16176 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16177 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16178 machines may have weird orders like 3412.  A Cray will report 87654321,
16179 an Alpha will report 12345678. If the test program works the default is
16180 probably right.
16181 I'm now running the test program...
16182 EOM
16183                 $cat >try.c <<EOCP
16184 #include <stdio.h>
16185 #include <sys/types.h>
16186 typedef $uvtype UV;
16187 int main()
16188 {
16189         int i;
16190         union {
16191                 UV l;
16192                 char c[$uvsize];
16193         } u;
16194
16195         if ($uvsize > 4)
16196                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16197         else
16198                 u.l = (UV)0x04030201;
16199         for (i = 0; i < $uvsize; i++)
16200                 printf("%c", u.c[i]+'0');
16201         printf("\n");
16202         exit(0);
16203 }
16204 EOCP
16205                 xxx_prompt=y
16206                 set try
16207                 if eval $compile && ./try > /dev/null; then
16208                         dflt=`$run ./try`
16209                         case "$dflt" in
16210                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16211                                 echo "(The test program ran ok.)"
16212                                 echo "byteorder=$dflt"
16213                                 xxx_prompt=n
16214                         ;;
16215                         ????|????????) echo "(The test program ran ok.)" ;;
16216                         *) echo "(The test program didn't run right for some reason.)" ;;
16217                         esac
16218                 else
16219                         dflt='4321'
16220                         cat <<'EOM'
16221 (I can't seem to compile the test program.  Guessing big-endian...)
16222 EOM
16223                 fi
16224                 case "$xxx_prompt" in
16225                 y)
16226                         rp="What is the order of bytes in $uvtype?"
16227                         . ./myread
16228                         byteorder="$ans"
16229                         ;;
16230                 *)      byteorder=$dflt
16231                         ;;
16232                 esac
16233                 ;;
16234         esac
16235         $rm -f try.c try
16236         ;;
16237 esac
16238
16239
16240 $cat <<EOM
16241
16242 Checking to see whether you can access character data unalignedly...
16243 EOM
16244 case "$d_u32align" in
16245 '')   $cat >try.c <<EOCP
16246 #include <stdio.h>
16247 #define U32 $u32type
16248 #define BYTEORDER 0x$byteorder
16249 #define U8 $u8type
16250 #include <signal.h>
16251 #ifdef SIGBUS
16252 $signal_t bletch(s) int s; { exit(4); }
16253 #endif
16254 int main() {
16255 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16256     U8 buf[8];
16257     U32 *up;
16258     int i;
16259
16260     if (sizeof(U32) != 4) {
16261         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16262         exit(1);
16263     }
16264
16265     fflush(stdout);
16266
16267 #ifdef SIGBUS
16268     signal(SIGBUS, bletch);
16269 #endif
16270
16271     buf[0] = 0;
16272     buf[1] = 0;
16273     buf[2] = 0;
16274     buf[3] = 1;
16275     buf[5] = 0;
16276     buf[6] = 0;
16277     buf[7] = 0;
16278     buf[8] = 1;
16279
16280     for (i = 0; i < 4; i++) {
16281         up = (U32*)(buf + i);
16282         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16283                (*up == 1 << (8*(3-i)))  /* little-endian */
16284               )
16285            )
16286         {
16287             printf("read failed (%x)\n", *up);
16288             exit(2);
16289         }
16290     }
16291
16292     /* write test */
16293     for (i = 0; i < 4; i++) {
16294         up = (U32*)(buf + i);
16295         *up = 0xBeef;
16296         if (*up != 0xBeef) {
16297             printf("write failed (%x)\n", *up);
16298             exit(3);
16299         }
16300     }
16301
16302     exit(0);
16303 #else
16304     printf("1\n");
16305     exit(1);
16306 #endif
16307     return 0;
16308 }
16309 EOCP
16310 set try
16311 if eval $compile_ok; then
16312         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16313         $run ./try 2>&1 >/dev/null
16314         case "$?" in
16315         0)      cat >&4 <<EOM
16316 You can access character data pretty unalignedly.
16317 EOM
16318                 d_u32align="$undef"
16319                 ;;
16320         *)      cat >&4 <<EOM
16321 It seems that you must access character data in an aligned manner.
16322 EOM
16323                 d_u32align="$define"
16324                 ;;
16325         esac
16326 else
16327         rp='Can you access character data at unaligned addresses?'
16328         dflt='n'
16329         . ./myread
16330         case "$ans" in
16331         [yY]*)  d_u32align="$undef"  ;;
16332         *)      d_u32align="$define" ;;
16333         esac
16334 fi
16335 $rm -f core core.try.* try.core
16336 ;;
16337 esac
16338
16339 : see if ualarm exists
16340 set ualarm d_ualarm
16341 eval $inlibc
16342
16343 : see if umask exists
16344 set umask d_umask
16345 eval $inlibc
16346
16347 : see if unordered exists
16348 set unordered d_unordered
16349 eval $inlibc
16350
16351 : see if usleep exists
16352 set usleep d_usleep
16353 eval $inlibc
16354
16355 : see if prototype for usleep is available
16356 echo " "
16357 set d_usleepproto usleep $i_unistd unistd.h
16358 eval $hasproto
16359
16360 : see if ustat exists
16361 set ustat d_ustat
16362 eval $inlibc
16363
16364 : backward compatibility for d_hvfork
16365 if test X$d_hvfork != X; then
16366         d_vfork="$d_hvfork"
16367         d_hvfork=''
16368 fi
16369 : see if there is a vfork
16370 val=''
16371 set vfork val
16372 eval $inlibc
16373
16374 : Ok, but do we want to use it. vfork is reportedly unreliable in 
16375 : perl on Solaris 2.x, and probably elsewhere.
16376 case "$val" in
16377 $define)
16378         echo " "
16379         case "$usevfork" in
16380         false) dflt='n';;
16381         *) dflt='y';;
16382         esac
16383         cat <<'EOM'
16384  
16385 Perl can only use a vfork() that doesn't suffer from strict
16386 restrictions on calling functions or modifying global data in
16387 the child.  For example, glibc-2.1 contains such a vfork()
16388 that is unsuitable.  If your system provides a proper fork()
16389 call, chances are that you do NOT want perl to use vfork().
16390
16391 EOM
16392         rp="Do you still want to use vfork()?"
16393         . ./myread
16394         case "$ans" in
16395         y|Y) ;;
16396         *)
16397                 echo "Ok, we won't use vfork()."
16398                 val="$undef"
16399                 ;;
16400         esac
16401         ;;
16402 esac
16403 set d_vfork
16404 eval $setvar
16405 case "$d_vfork" in
16406 $define) usevfork='true';;
16407 *) usevfork='false';;
16408 esac
16409
16410 : see if closedir exists
16411 set closedir d_closedir
16412 eval $inlibc
16413
16414 case "$d_closedir" in
16415 "$define")
16416         echo " "
16417         echo "Checking whether closedir() returns a status..." >&4
16418         cat > try.c <<EOM
16419 #$i_dirent I_DIRENT             /**/
16420 #$i_sysdir I_SYS_DIR            /**/
16421 #$i_sysndir I_SYS_NDIR          /**/
16422 #$i_systypes I_SYS_TYPES        /**/
16423
16424 #if defined(I_SYS_TYPES)
16425 #include <sys/types.h>
16426 #endif
16427 #if defined(I_DIRENT)
16428 #include <dirent.h>
16429 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
16430 #include <sys/dir.h>
16431 #endif
16432 #else
16433 #ifdef I_SYS_NDIR
16434 #include <sys/ndir.h>
16435 #else
16436 #ifdef I_SYS_DIR
16437 #ifdef hp9000s500
16438 #include <ndir.h>       /* may be wrong in the future */
16439 #else
16440 #include <sys/dir.h>
16441 #endif
16442 #endif
16443 #endif
16444 #endif 
16445 int main() { return closedir(opendir(".")); }
16446 EOM
16447         set try
16448         if eval $compile_ok; then
16449                 if $run ./try > /dev/null 2>&1 ; then
16450                         echo "Yes, it does."
16451                         val="$undef"
16452                 else
16453                         echo "No, it doesn't."
16454                         val="$define"
16455                 fi
16456         else
16457                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16458                 val="$define"
16459         fi
16460         ;;
16461 *)
16462         val="$undef";
16463         ;;
16464 esac
16465 set d_void_closedir
16466 eval $setvar
16467 $rm -f try try.*
16468 : see if there is a wait4
16469 set wait4 d_wait4
16470 eval $inlibc
16471
16472 : see if waitpid exists
16473 set waitpid d_waitpid
16474 eval $inlibc
16475
16476 : see if wcstombs exists
16477 set wcstombs d_wcstombs
16478 eval $inlibc
16479
16480 : see if wctomb exists
16481 set wctomb d_wctomb
16482 eval $inlibc
16483
16484 : see if writev exists
16485 set writev d_writev
16486 eval $inlibc
16487
16488 : preserve RCS keywords in files with variable substitution, grrr
16489 Date='$Date'
16490 Id='$Id'
16491 Log='$Log'
16492 RCSfile='$RCSfile'
16493 Revision='$Revision'
16494
16495 : check for alignment requirements
16496 echo " "
16497 case "$usecrosscompile$multiarch" in
16498 *$define*)
16499         $cat <<EOM
16500 You seem to be either cross-compiling or doing a multiarchitecture build,
16501 skipping the memory alignment check.
16502
16503 EOM
16504         case "$alignbytes" in
16505         '') alignbytes=8 ;;
16506         esac
16507         ;;
16508 *)
16509         case "$alignbytes" in
16510         '') echo "Checking alignment constraints..." >&4
16511                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
16512                         $cat >try.c <<'EOCP'
16513 typedef long double NV;
16514 EOCP
16515                 else
16516                         $cat >try.c <<'EOCP'
16517 typedef double NV;
16518 EOCP
16519                 fi
16520                 $cat >>try.c <<'EOCP'
16521 #include <stdio.h>
16522 struct foobar {
16523         char foo;
16524         NV bar;
16525 } try_algn;
16526 int main()
16527 {
16528     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
16529     return(0);
16530 }
16531 EOCP
16532                 set try
16533                 if eval $compile_ok; then
16534                         dflt=`$run ./try`
16535                 else
16536                         dflt='8'
16537                         echo "(I can't seem to compile the test program...)"
16538                 fi
16539                 ;;
16540         *) dflt="$alignbytes"
16541                 ;;
16542         esac
16543         rp="Doubles must be aligned on a how-many-byte boundary?"
16544         . ./myread
16545         alignbytes="$ans"
16546         $rm -f try.c try
16547         ;;
16548 esac
16549
16550
16551 : set the base revision
16552 baserev=5.0
16553
16554 : how do we catenate cpp tokens here?
16555 echo " "
16556 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
16557 $cat >cpp_stuff.c <<'EOCP'
16558 #define RCAT(a,b)a/**/b
16559 #define ACAT(a,b)a ## b
16560 RCAT(Rei,ser)
16561 ACAT(Cir,cus)
16562 EOCP
16563 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
16564 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
16565         echo "Oh!  Smells like ANSI's been here." >&4
16566         echo "We can catify or stringify, separately or together!"
16567         cpp_stuff=42
16568 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
16569         echo "Ah, yes!  The good old days!" >&4
16570         echo "However, in the good old days we don't know how to stringify and"
16571         echo "catify at the same time."
16572         cpp_stuff=1
16573 else
16574         $cat >&4 <<EOM
16575 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
16576 to have to edit the values of CAT[2-5] in config.h...
16577 EOM
16578         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
16579 fi
16580 $rm -f cpp_stuff.*
16581
16582 : see if this is a db.h system
16583 set db.h i_db
16584 eval $inhdr
16585
16586 case "$i_db" in
16587 $define)
16588         : Check db version.
16589         echo " "
16590         echo "Checking Berkeley DB version ..." >&4
16591         $cat >try.c <<EOCP
16592 #$d_const HASCONST
16593 #ifndef HASCONST
16594 #define const
16595 #endif
16596 #include <sys/types.h>
16597 #include <stdio.h>
16598 #include <db.h>
16599 int main(int argc, char *argv[])
16600 {
16601 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
16602     int Major, Minor, Patch ;
16603     unsigned long Version ;
16604     (void)db_version(&Major, &Minor, &Patch) ;
16605     if (argc == 2) {
16606         printf("%d %d %d %d %d %d\n",
16607                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
16608                Major, Minor, Patch);
16609         exit(0);
16610     }
16611     printf("You have Berkeley DB Version 2 or greater.\n");
16612
16613     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
16614                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
16615     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
16616                 Major, Minor, Patch) ;
16617
16618     /* check that db.h & libdb are compatible */
16619     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
16620         printf("db.h and libdb are incompatible.\n") ;
16621         exit(3);        
16622     }
16623
16624     printf("db.h and libdb are compatible.\n") ;
16625
16626     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
16627                 + DB_VERSION_PATCH ;
16628
16629     /* needs to be >= 2.3.4 */
16630     if (Version < 2003004) {
16631     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
16632         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
16633         exit(2);        
16634     }
16635
16636     exit(0);
16637 #else
16638 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
16639     if (argc == 2) {
16640         printf("1 0 0\n");
16641         exit(0);
16642     }
16643     printf("You have Berkeley DB Version 1.\n");
16644     exit(0);    /* DB version < 2: the coast is clear. */
16645 #else
16646     exit(1);    /* <db.h> not Berkeley DB? */
16647 #endif
16648 #endif
16649 }
16650 EOCP
16651         set try
16652         if eval $compile_ok && $run ./try; then
16653                 echo 'Looks OK.' >&4
16654                 set `$run ./try 1`
16655                 db_version_major=$1
16656                 db_version_minor=$2
16657                 db_version_patch=$3
16658         else
16659                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
16660                 i_db=$undef
16661                 case " $libs " in
16662                 *"-ldb "*)
16663                         : Remove db from list of libraries to use
16664                         echo "Removing unusable -ldb from library list" >&4
16665                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
16666                         shift
16667                         libs="$*"
16668                         echo "libs = $libs" >&4
16669                         ;;
16670                 esac
16671         fi
16672         $rm -f try.*
16673         ;;
16674 esac
16675
16676 case "$i_db" in
16677 define)
16678         : Check the return type needed for hash 
16679         echo " "
16680         echo "Checking return type needed for hash for Berkeley DB ..." >&4
16681         $cat >try.c <<EOCP
16682 #$d_const HASCONST
16683 #ifndef HASCONST
16684 #define const
16685 #endif
16686 #include <sys/types.h>
16687 #include <db.h>
16688
16689 #ifndef DB_VERSION_MAJOR
16690 u_int32_t hash_cb (ptr, size)
16691 const void *ptr;
16692 size_t size;
16693 {
16694 }
16695 HASHINFO info;
16696 int main()
16697 {
16698         info.hash = hash_cb;
16699 }
16700 #endif
16701 EOCP
16702         if $cc $ccflags -c try.c >try.out 2>&1 ; then
16703                 if $contains warning try.out >>/dev/null 2>&1 ; then
16704                         db_hashtype='int'
16705                 else
16706                         db_hashtype='u_int32_t'
16707                 fi
16708         else
16709                 : XXX Maybe we should just give up here.
16710                 db_hashtype=u_int32_t
16711                 $cat try.out >&4
16712                 echo "Help:  I can't seem to compile the db test program." >&4
16713                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
16714         fi
16715         $rm -f try.*
16716         echo "Your version of Berkeley DB uses $db_hashtype for hash."
16717         ;;
16718 *)      db_hashtype=u_int32_t
16719         ;;
16720 esac
16721 case "$i_db" in
16722 define)
16723         : Check the return type needed for prefix 
16724         echo " "
16725         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
16726         cat >try.c <<EOCP
16727 #$d_const HASCONST
16728 #ifndef HASCONST
16729 #define const
16730 #endif
16731 #include <sys/types.h>
16732 #include <db.h>
16733
16734 #ifndef DB_VERSION_MAJOR
16735 size_t prefix_cb (key1, key2)
16736 const DBT *key1;
16737 const DBT *key2;
16738 {
16739 }
16740 BTREEINFO info;
16741 int main()
16742 {
16743         info.prefix = prefix_cb;
16744 }
16745 #endif
16746 EOCP
16747         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
16748                 if $contains warning try.out >>/dev/null 2>&1 ; then
16749                         db_prefixtype='int'
16750                 else
16751                         db_prefixtype='size_t'
16752                 fi
16753         else
16754                 db_prefixtype='size_t'
16755                 : XXX Maybe we should just give up here.
16756                 $cat try.out >&4
16757                 echo "Help:  I can't seem to compile the db test program." >&4
16758                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
16759         fi
16760         $rm -f try.*
16761         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
16762         ;;
16763 *)      db_prefixtype='size_t'
16764         ;;
16765 esac
16766
16767
16768 : How can we generate normalized random numbers ?
16769 echo " "
16770 echo "Looking for a random number function..." >&4
16771 case "$randfunc" in
16772 '')
16773         if set drand48 val -f; eval $csym; $val; then
16774                 dflt="drand48"
16775                 echo "Good, found drand48()." >&4
16776         elif set random val -f; eval $csym; $val; then
16777                 dflt="random"
16778                 echo "OK, found random()." >&4
16779         else
16780                 dflt="rand"
16781                 echo "Yick, looks like I have to use rand()." >&4
16782         fi
16783         echo " "
16784         ;;
16785 *)
16786         dflt="$randfunc"
16787         ;;
16788 esac
16789 cont=true
16790
16791 case "$ccflags" in
16792 *-Dmy_rand=*|*-Dmy_srand=*)
16793         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
16794         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
16795         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
16796         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
16797         ;;
16798 esac
16799
16800 while $test "$cont"; do
16801         rp="Use which function to generate random numbers?"
16802         . ./myread
16803         if $test "$ans" = "$dflt"; then
16804                 : null
16805         else
16806                 randbits=''
16807         fi
16808         randfunc="$ans"
16809         if set $ans val -f; eval $csym; $val; then
16810                 cont=''
16811         else
16812                 dflt=y
16813                 rp="I cannot find function $ans. Use that name anyway?"
16814                 . ./myread
16815                 dflt=rand
16816                 case "$ans" in
16817                         [yY]*) cont='';;
16818                 esac
16819         fi
16820         case "$cont" in
16821         '')
16822                 case "$randfunc" in
16823                 drand48)
16824                         drand01="drand48()"
16825                         seedfunc="srand48"
16826                         randbits=48
16827                         randseedtype=long
16828                         ;;
16829                 rand|random)
16830                         case "$randbits" in
16831                         '')
16832 echo "Checking to see how many bits your $randfunc() function produces..." >&4
16833                                 $cat >try.c <<EOCP
16834 #$i_unistd I_UNISTD
16835 #$i_stdlib I_STDLIB
16836 #include <stdio.h>
16837 #ifdef I_UNISTD
16838 #  include <unistd.h>
16839 #endif
16840 #ifdef I_STDLIB
16841 #  include <stdlib.h>
16842 #endif
16843 int main()
16844 {
16845         register int i;
16846         register unsigned long tmp;
16847         register unsigned long max = 0L;
16848
16849         for (i = 1000; i; i--) {
16850                 tmp = (unsigned long) $randfunc();
16851                 if (tmp > max) max = tmp;
16852         }
16853         for (i = 0; max; i++)
16854                 max /= 2;
16855         printf("%d\n",i);
16856 }
16857 EOCP
16858                                 set try
16859                                 if eval $compile_ok; then
16860                                         dflt=`try`
16861                                 else
16862                                         dflt='?'
16863                                         echo "(I can't seem to compile the test program...)"
16864                                 fi
16865                                 ;;
16866                         *)
16867                                 dflt="$randbits"
16868                                 ;;
16869                         esac
16870                         rp="How many bits does your $randfunc() function produce?"
16871                         . ./myread
16872                         randbits="$ans"
16873                         $rm -f try.c try
16874                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
16875                         seedfunc="s$randfunc"
16876                         randseedtype=unsigned
16877                         ;;
16878                 *)
16879                         dflt="31"
16880                         rp="How many bits does your $randfunc() function produce?"
16881                         . ./myread
16882                         randbits="$ans"
16883                         seedfunc="s$randfunc"
16884                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
16885                         if set $seedfunc val -f; eval $csym; $val; then
16886                                 echo "(Using $seedfunc() to seed random generator)"
16887                         else
16888                                 echo "(Warning: no $seedfunc() to seed random generator)"
16889                                 seedfunc=rand
16890                         fi
16891                         randseedtype=unsigned
16892                         ;;
16893                 esac
16894                 ;;
16895         esac
16896 done
16897
16898 echo " "
16899 echo "Determining whether or not we are on an EBCDIC system..." >&4
16900 $cat >try.c <<'EOM'
16901 int main()
16902 {
16903   if ('M'==0xd4) return 0;
16904   return 1;
16905 }
16906 EOM
16907
16908 val=$undef
16909 set try
16910 if eval $compile_ok; then
16911         if $run ./try; then
16912                 echo "You seem to speak EBCDIC." >&4
16913                 val="$define"
16914         else
16915                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
16916         fi
16917 else
16918         echo "I'm unable to compile the test program." >&4
16919         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
16920 fi
16921 $rm -f try try.*
16922 set ebcdic
16923 eval $setvar
16924
16925 echo " "
16926 $cat >&4 <<EOM
16927 Checking how to flush all pending stdio output...
16928 EOM
16929 # I only know how to find the first 32 possibly open files on SunOS.
16930 # See also hints/sunos_4_1.sh and util.c  --AD
16931 case "$osname" in
16932 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
16933 esac
16934 $cat >>try.c <<EOCP
16935 #include <stdio.h>
16936 #$i_unistd I_UNISTD
16937 #ifdef I_UNISTD
16938 # include <unistd.h>
16939 #endif
16940 #$d_sysconf HAS_SYSCONF
16941 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
16942 #ifdef HAS_STDIO_STREAM_ARRAY
16943 # define STDIO_STREAM_ARRAY $stdio_stream_array
16944 #endif
16945 int main() {
16946   FILE* p;
16947   unlink("try.out");
16948   p = fopen("try.out", "w");
16949 #ifdef TRY_FPUTC
16950   fputc('x', p);
16951 #else
16952 # ifdef TRY_FPRINTF
16953   fprintf(p, "x");
16954 # endif
16955 #endif
16956 #ifdef TRY_FFLUSH_NULL
16957   fflush(NULL);
16958 #endif
16959 #ifdef TRY_FFLUSH_ALL
16960   {
16961     long open_max = -1;
16962 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
16963     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
16964 # else
16965 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
16966     open_max = sysconf(_SC_OPEN_MAX);
16967 #  else
16968 #   ifdef FOPEN_MAX
16969     open_max = FOPEN_MAX;
16970 #   else
16971 #    ifdef OPEN_MAX
16972     open_max = OPEN_MAX;
16973 #    else
16974 #     ifdef _NFILE
16975     open_max = _NFILE;
16976 #     endif
16977 #    endif
16978 #   endif
16979 #  endif
16980 # endif 
16981 # ifdef HAS_STDIO_STREAM_ARRAY
16982     if (open_max > 0) {
16983       long i;
16984       for (i = 0; i < open_max; i++)
16985             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
16986                 STDIO_STREAM_ARRAY[i]._file < open_max &&
16987                 STDIO_STREAM_ARRAY[i]._flag)
16988                 fflush(&STDIO_STREAM_ARRAY[i]);
16989     }   
16990   }
16991 # endif
16992 #endif
16993   _exit(42);
16994 }
16995 EOCP
16996 : first we have to find out how _not_ to flush
16997 $to try.c
16998 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
16999     output=''
17000     set try -DTRY_FPUTC
17001     if eval $compile; then
17002             $run ./try 2>/dev/null
17003             code="$?"
17004             $from try.out
17005             if $test ! -s try.out -a "X$code" = X42; then
17006                 output=-DTRY_FPUTC
17007             fi
17008     fi
17009     case "$output" in
17010     '')
17011             set try -DTRY_FPRINTF
17012             if eval $compile; then
17013                     $run ./try 2>/dev/null
17014                     code="$?"
17015                     $from try.out
17016                     if $test ! -s try.out -a "X$code" = X42; then
17017                         output=-DTRY_FPRINTF
17018                     fi
17019             fi
17020         ;;
17021     esac
17022 fi
17023 : check for fflush NULL behaviour
17024 case "$fflushNULL" in
17025 '')     set try -DTRY_FFLUSH_NULL $output
17026         if eval $compile; then
17027                 $run ./try 2>/dev/null
17028                 code="$?"
17029                 $from try.out
17030                 if $test -s try.out -a "X$code" = X42; then
17031                         fflushNULL="`$cat try.out`"
17032                 else
17033                         if $test "X$code" != X42; then
17034                                 $cat >&4 <<EOM
17035 (If this test failed, don't worry, we'll try another method shortly.)
17036 EOM
17037                         fi
17038                 fi
17039         fi
17040         $rm -f core try.core core.try.*
17041         case "$fflushNULL" in
17042         x)      $cat >&4 <<EOM
17043 Your fflush(NULL) works okay for output streams.
17044 Let's see if it clobbers input pipes...
17045 EOM
17046 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17047 # bug that improperly flushes the input end of pipes.  So we avoid the
17048 # autoflush on fork/system/exec support for now. :-(
17049 $cat >tryp.c <<EOCP
17050 #include <stdio.h>
17051 int
17052 main(int argc, char **argv)
17053 {
17054     char buf[1024];
17055     int i;
17056     char *bp = buf;
17057     while (1) {
17058         while ((i = getc(stdin)) != -1
17059                && (*bp++ = i) != '\n'
17060                && bp < &buf[1024])
17061         /* DO NOTHING */ ;
17062         *bp = '\0';
17063         fprintf(stdout, "%s", buf);
17064         fflush(NULL);
17065         if (i == -1)
17066             return 0;
17067         bp = buf;
17068     }
17069 }
17070 EOCP
17071                 fflushNULL="$define"
17072                 set tryp
17073                 if eval $compile; then
17074                     $rm -f tryp.out
17075                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17076                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17077                        $cat >&4 <<EOM
17078 fflush(NULL) seems to behave okay with input streams.
17079 EOM
17080                         fflushNULL="$define"
17081                     else
17082                         $cat >&4 <<EOM
17083 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17084 EOM
17085                         fflushNULL="$undef"
17086                     fi
17087                 fi
17088                 $rm -f core tryp.c tryp.core core.tryp.*
17089                 ;;
17090         '')     $cat >&4 <<EOM
17091 Your fflush(NULL) isn't working (contrary to ANSI C).
17092 EOM
17093                 fflushNULL="$undef"
17094                 ;;
17095         *)      $cat >&4 <<EOM
17096 Cannot figure out whether your fflush(NULL) works or not.
17097 I'm assuming it doesn't (contrary to ANSI C).
17098 EOM
17099                 fflushNULL="$undef"
17100                 ;;
17101         esac
17102         ;;
17103 $define|true|[yY]*)
17104         fflushNULL="$define"
17105         ;;
17106 *)
17107         fflushNULL="$undef"
17108         ;;
17109 esac
17110 : check explicit looping only if NULL did not work, and if the pipe
17111 : bug does not show up on an explicit flush too
17112 case "$fflushNULL" in
17113 "$undef")
17114         $cat >tryp.c <<EOCP
17115 #include <stdio.h>
17116 int
17117 main(int argc, char **argv)
17118 {
17119     char buf[1024];
17120     int i;
17121     char *bp = buf;
17122     while (1) {
17123         while ((i = getc(stdin)) != -1
17124                && (*bp++ = i) != '\n'
17125                && bp < &buf[1024])
17126         /* DO NOTHING */ ;
17127         *bp = '\0';
17128         fprintf(stdout, "%s", buf);
17129         fflush(stdin);
17130         if (i == -1)
17131             return 0;
17132         bp = buf;
17133     }
17134 }
17135 EOCP
17136         set tryp
17137         if eval $compile; then
17138             $rm -f tryp.out
17139             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17140             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17141                $cat >&4 <<EOM
17142 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17143 EOM
17144                 : now check for fflushall behaviour
17145                 case "$fflushall" in
17146                 '')     set try -DTRY_FFLUSH_ALL $output
17147                         if eval $compile; then
17148                                 $cat >&4 <<EOM
17149 (Now testing the other method--but note that this also may fail.)
17150 EOM
17151                                 $run ./try 2>/dev/null
17152                                 code=$?
17153                                 $from try.out
17154                                 if $test -s try.out -a "X$code" = X42; then
17155                                         fflushall="`$cat try.out`"
17156                                 fi
17157                         fi
17158                         $rm -f core try.core core.try.*
17159                         case "$fflushall" in
17160                         x)      $cat >&4 <<EOM
17161 Whew. Flushing explicitly all the stdio streams works.
17162 EOM
17163                                 fflushall="$define"
17164                                 ;;
17165                         '')     $cat >&4 <<EOM
17166 Sigh. Flushing explicitly all the stdio streams doesn't work.
17167 EOM
17168                                 fflushall="$undef"
17169                                 ;;
17170                         *)      $cat >&4 <<EOM
17171 Cannot figure out whether flushing stdio streams explicitly works or not.
17172 I'm assuming it doesn't.
17173 EOM
17174                                 fflushall="$undef"
17175                                 ;;
17176                         esac
17177                         ;;
17178                 "$define"|true|[yY]*)
17179                         fflushall="$define"
17180                         ;;
17181                 *)
17182                         fflushall="$undef"
17183                         ;;
17184                 esac
17185             else
17186                 $cat >&4 <<EOM
17187 All is futile.  Even fflush(stdin) clobbers input pipes!
17188 EOM
17189                 fflushall="$undef"
17190             fi
17191         else
17192             fflushall="$undef"
17193         fi
17194         $rm -f core tryp.c tryp.core core.tryp.*
17195         ;;
17196 *)      fflushall="$undef"
17197         ;;
17198 esac
17199
17200 case "$fflushNULL$fflushall" in
17201 undefundef)
17202         $cat <<EOM
17203 OK, I give up.  I cannot figure out how to flush pending stdio output.
17204 We won't be flushing handles at all before fork/exec/popen.
17205 EOM
17206         ;;
17207 esac
17208 $rm -f try.* try$exe_ext
17209
17210 : Store the full pathname to the ar program for use in the C program
17211 : Respect a hint or command line value for full_ar.
17212 case "$full_ar" in
17213 '') full_ar=$ar ;;
17214 esac
17215
17216 : Store the full pathname to the sed program for use in the C program
17217 full_sed=$sed
17218
17219 : see what type gids are declared as in the kernel
17220 echo " "
17221 echo "Looking for the type for group ids returned by getgid()."
17222 set gid_t gidtype xxx stdio.h sys/types.h
17223 eval $typedef
17224 case "$gidtype" in
17225 xxx)
17226         xxx=`./findhdr sys/user.h`
17227         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17228         case $1 in
17229         unsigned) dflt="$1 $2" ;;
17230         *) dflt="$1" ;;
17231         esac
17232         ;;
17233 *) dflt="$gidtype";;
17234 esac
17235 case "$gidtype" in
17236 gid_t) echo "gid_t found." ;;
17237 *)      rp="What is the type for group ids returned by getgid()?"
17238         . ./myread
17239         gidtype="$ans"
17240         ;;
17241 esac
17242
17243 echo " "
17244 case "$gidtype" in
17245 *_t) zzz="$gidtype"     ;;
17246 *)   zzz="gid"          ;;
17247 esac
17248 echo "Checking the size of $zzz..." >&4 
17249 cat > try.c <<EOCP
17250 #include <sys/types.h>
17251 #include <stdio.h>
17252 int main() {
17253     printf("%d\n", (int)sizeof($gidtype));
17254     exit(0);
17255 }
17256 EOCP
17257 set try
17258 if eval $compile_ok; then
17259         yyy=`$run ./try`
17260         case "$yyy" in
17261         '')     gidsize=4
17262                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17263                 ;;
17264         *)      gidsize=$yyy
17265                 echo "Your $zzz is $gidsize bytes long."
17266                 ;;
17267         esac
17268 else
17269         gidsize=4
17270         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17271 fi
17272
17273
17274 echo " "
17275 case "$gidtype" in
17276 *_t) zzz="$gidtype"     ;;
17277 *)   zzz="gid"          ;;
17278 esac
17279 echo "Checking the sign of $zzz..." >&4 
17280 cat > try.c <<EOCP
17281 #include <sys/types.h>
17282 #include <stdio.h>
17283 int main() {
17284         $gidtype foo = -1;
17285         if (foo < 0)
17286                 printf("-1\n");
17287         else
17288                 printf("1\n");
17289 }
17290 EOCP
17291 set try
17292 if eval $compile; then
17293         yyy=`$run ./try`
17294         case "$yyy" in
17295         '')     gidsign=1
17296                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17297                 ;;
17298         *)      gidsign=$yyy
17299                 case "$gidsign" in
17300                  1) echo "Your $zzz is unsigned." ;;
17301                 -1) echo "Your $zzz is signed."   ;;
17302                 esac
17303                 ;;
17304         esac
17305 else
17306         gidsign=1
17307         echo "(I can't compile the test program--guessing unsigned.)" >&4
17308 fi
17309
17310
17311 echo " "
17312
17313 if $test X"$quadtype" != X; then
17314
17315 echo "Checking how to print 64-bit integers..." >&4
17316
17317 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17318         $cat >try.c <<'EOCP'
17319 #include <sys/types.h>
17320 #include <stdio.h>
17321 int main() {
17322   int q = 12345678901;
17323   printf("%ld\n", q);
17324 }
17325 EOCP
17326         set try
17327         if eval $compile; then
17328                 yyy=`$run ./try`
17329                 case "$yyy" in
17330                 12345678901)
17331                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17332                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17333                         echo "We will use %d."
17334                         ;;
17335                 esac
17336         fi
17337 fi
17338
17339 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17340         $cat >try.c <<'EOCP'
17341 #include <sys/types.h>
17342 #include <stdio.h>
17343 int main() {
17344   long q = 12345678901;
17345   printf("%ld\n", q);
17346 }
17347 EOCP
17348         set try
17349         if eval $compile; then
17350                 yyy=`$run ./try`
17351                 case "$yyy" in
17352                 12345678901)
17353                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17354                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17355                         echo "We will use %ld."
17356                         ;;
17357                 esac
17358         fi
17359 fi
17360
17361 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17362         $cat >try.c <<'EOCP'
17363 #include <sys/types.h>
17364 #include <inttypes.h>
17365 #include <stdio.h>
17366 int main() {
17367   int64_t q = 12345678901;
17368   printf("%" PRId64 "\n", q);
17369 }
17370 EOCP
17371         set try
17372         if eval $compile; then
17373                 yyy=`$run ./try`
17374                 case "$yyy" in
17375                 12345678901)
17376                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
17377                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
17378                         echo "We will use the C9X style."
17379                         ;;
17380                 esac
17381         fi
17382 fi
17383
17384 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
17385         $cat >try.c <<EOCP
17386 #include <sys/types.h>
17387 #include <stdio.h>
17388 int main() {
17389   $quadtype q = 12345678901;
17390   printf("%Ld\n", q);
17391 }
17392 EOCP
17393         set try
17394         if eval $compile; then
17395                 yyy=`$run ./try`
17396                 case "$yyy" in
17397                 12345678901)
17398                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
17399                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
17400                         echo "We will use %Ld."
17401                         ;;
17402                 esac
17403         fi
17404 fi
17405
17406 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
17407         $cat >try.c <<'EOCP'
17408 #include <sys/types.h>
17409 #include <stdio.h>
17410 int main() {
17411   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
17412   printf("%lld\n", q);
17413 }
17414 EOCP
17415         set try
17416         if eval $compile; then
17417                 yyy=`$run ./try`
17418                 case "$yyy" in
17419                 12345678901)
17420                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
17421                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
17422                         echo "We will use the %lld style."
17423                         ;;
17424                 esac
17425         fi
17426 fi
17427
17428 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
17429         $cat >try.c <<EOCP
17430 #include <sys/types.h>
17431 #include <stdio.h>
17432 int main() {
17433   $quadtype q = 12345678901;
17434   printf("%qd\n", q);
17435 }
17436 EOCP
17437         set try
17438         if eval $compile; then
17439                 yyy=`$run ./try`
17440                 case "$yyy" in
17441                 12345678901)
17442                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
17443                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
17444                         echo "We will use %qd."
17445                         ;;
17446                 esac
17447         fi
17448 fi
17449
17450 if $test X"$sPRId64" = X; then
17451         echo "Cannot figure out how to print 64-bit integers." >&4
17452 fi
17453
17454 $rm -f try try.*
17455
17456 fi
17457
17458 case "$sPRId64" in
17459 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
17460         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
17461         ;;
17462 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
17463         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
17464         ;;
17465 esac
17466
17467
17468 echo " "
17469 $echo "Checking the format strings to be used for Perl's internal types..." >&4
17470
17471 if $test X"$ivsize" = X8; then
17472         ivdformat="$sPRId64"
17473         uvuformat="$sPRIu64"
17474         uvoformat="$sPRIo64"
17475         uvxformat="$sPRIx64"
17476         uvXUformat="$sPRIXU64"
17477 else
17478         if $test X"$ivsize" = X"$longsize"; then
17479                 ivdformat='"ld"'
17480                 uvuformat='"lu"'
17481                 uvoformat='"lo"'
17482                 uvxformat='"lx"'
17483                 uvXUformat='"lX"'
17484         else
17485                 if $test X"$ivsize" = X"$intsize"; then
17486                         ivdformat='"d"'
17487                         uvuformat='"u"'
17488                         uvoformat='"o"'
17489                         uvxformat='"x"'
17490                         uvXUformat='"X"'
17491                 else
17492                         : far out
17493                         if $test X"$ivsize" = X"$shortsize"; then
17494                                 ivdformat='"hd"'
17495                                 uvuformat='"hu"'
17496                                 uvoformat='"ho"'
17497                                 uvxformat='"hx"'
17498                                 uvXUformat='"hX"'
17499                         fi
17500                 fi
17501         fi
17502 fi
17503
17504 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
17505         nveformat="$sPRIeldbl"
17506         nvfformat="$sPRIfldbl"
17507         nvgformat="$sPRIgldbl"
17508         nvEUformat="$sPRIEUldbl"
17509         nvFUformat="$sPRIFUldbl"
17510         nvGUformat="$sPRIGUldbl"
17511 else
17512         nveformat='"e"'
17513         nvfformat='"f"'
17514         nvgformat='"g"'
17515         nvEUformat='"E"'
17516         nvFUformat='"F"'
17517         nvGUformat='"G"'
17518 fi
17519
17520 case "$ivdformat" in
17521 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
17522     exit 1
17523     ;;
17524 esac
17525
17526
17527 echo " "
17528 $echo "Checking the format string to be used for gids..." >&4
17529
17530 case "$gidsign" in
17531 -1)     if $test X"$gidsize" = X"$ivsize"; then
17532                 gidformat="$ivdformat"
17533         else
17534                 if $test X"$gidsize" = X"$longsize"; then
17535                         gidformat='"ld"'
17536                 else
17537                         if $test X"$gidsize" = X"$intsize"; then
17538                                 gidformat='"d"'
17539                         else
17540                                 if $test X"$gidsize" = X"$shortsize"; then
17541                                         gidformat='"hd"'
17542                                 fi
17543                         fi
17544                 fi
17545         fi
17546         ;;
17547 *)      if $test X"$gidsize" = X"$uvsize"; then
17548                 gidformat="$uvuformat"
17549         else
17550                 if $test X"$gidsize" = X"$longsize"; then
17551                         gidformat='"lu"'
17552                 else
17553                         if $test X"$gidsize" = X"$intsize"; then
17554                                 gidformat='"u"'
17555                         else
17556                                 if $test X"$gidsize" = X"$shortsize"; then
17557                                         gidformat='"hu"'
17558                                 fi
17559                         fi
17560                 fi
17561         fi
17562         ;;
17563 esac
17564
17565 : see if getgroups exists
17566 set getgroups d_getgrps
17567 eval $inlibc
17568
17569 : see if setgroups exists
17570 set setgroups d_setgrps
17571 eval $inlibc
17572
17573
17574 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
17575 echo " "
17576 case "$d_getgrps$d_setgrps" in
17577 *define*)
17578         case "$groupstype" in
17579         '') dflt="$gidtype" ;;
17580         *)  dflt="$groupstype" ;;
17581         esac
17582         $cat <<EOM
17583 What type of pointer is the second argument to getgroups() and setgroups()?
17584 Usually this is the same as group ids, $gidtype, but not always.
17585
17586 EOM
17587         rp='What type pointer is the second argument to getgroups() and setgroups()?'
17588         . ./myread
17589         groupstype="$ans"
17590         ;;
17591 *)  groupstype="$gidtype";;
17592 esac
17593
17594 echo " "
17595 echo "Checking if your $make program sets \$(MAKE)..." >&4
17596 case "$make_set_make" in
17597 '')
17598         $sed 's/^X //' > testmake.mak << 'EOF'
17599 Xall:
17600 X       @echo 'maketemp="$(MAKE)"'
17601 EOF
17602         case "`$make -f testmake.mak 2>/dev/null`" in
17603         *maketemp=*) make_set_make='#' ;;
17604         *)      make_set_make="MAKE=$make" ;;
17605         esac
17606         $rm -f testmake.mak
17607         ;;
17608 esac
17609 case "$make_set_make" in
17610 '#') echo "Yup, it does.";;
17611 *) echo "Nope, it doesn't.";;
17612 esac
17613
17614 : see what type is used for mode_t
17615 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
17616 set mode_t modetype int stdio.h sys/types.h
17617 eval $typedef_ask
17618
17619 : see if stdarg is available
17620 echo " "
17621 if $test `./findhdr stdarg.h`; then
17622         echo "<stdarg.h> found." >&4
17623         valstd="$define"
17624 else
17625         echo "<stdarg.h> NOT found." >&4
17626         valstd="$undef"
17627 fi
17628
17629 : see if varags is available
17630 echo " "
17631 if $test `./findhdr varargs.h`; then
17632         echo "<varargs.h> found." >&4
17633 else
17634         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
17635 fi
17636
17637 : set up the varargs testing programs
17638 $cat > varargs.c <<EOP
17639 #ifdef I_STDARG
17640 #include <stdarg.h>
17641 #endif
17642 #ifdef I_VARARGS
17643 #include <varargs.h>
17644 #endif
17645
17646 #ifdef I_STDARG
17647 int f(char *p, ...)
17648 #else
17649 int f(va_alist)
17650 va_dcl
17651 #endif
17652 {
17653         va_list ap;
17654 #ifndef I_STDARG
17655         char *p;
17656 #endif
17657 #ifdef I_STDARG
17658         va_start(ap,p);
17659 #else
17660         va_start(ap);
17661         p = va_arg(ap, char *);
17662 #endif
17663         va_end(ap);
17664 }
17665 EOP
17666 $cat > varargs <<EOP
17667 $startsh
17668 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
17669         echo "true"
17670 else
17671         echo "false"
17672 fi
17673 $rm -f varargs$_o
17674 EOP
17675 chmod +x varargs
17676
17677 : now check which varargs header should be included
17678 echo " "
17679 i_varhdr=''
17680 case "$valstd" in
17681 "$define")
17682         if `./varargs I_STDARG`; then
17683                 val='stdarg.h'
17684         elif `./varargs I_VARARGS`; then
17685                 val='varargs.h'
17686         fi
17687         ;;
17688 *)
17689         if `./varargs I_VARARGS`; then
17690                 val='varargs.h'
17691         fi
17692         ;;
17693 esac
17694 case "$val" in
17695 '')
17696 echo "I could not find the definition for va_dcl... You have problems..." >&4
17697         val="$undef"; set i_stdarg; eval $setvar
17698         val="$undef"; set i_varargs; eval $setvar
17699         ;;
17700 *) 
17701         set i_varhdr
17702         eval $setvar
17703         case "$i_varhdr" in
17704         stdarg.h)
17705                 val="$define"; set i_stdarg; eval $setvar
17706                 val="$undef"; set i_varargs; eval $setvar
17707                 ;;
17708         varargs.h)
17709                 val="$undef"; set i_stdarg; eval $setvar
17710                 val="$define"; set i_varargs; eval $setvar
17711                 ;;
17712         esac
17713         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
17714 esac
17715 $rm -f varargs*
17716
17717 : see if we need va_copy
17718 echo " "
17719 case "$i_stdarg" in
17720 "$define")
17721         $cat >try.c <<EOCP
17722 #include <stdarg.h>
17723 #include <stdio.h>
17724 #$i_stdlib I_STDLIB
17725 #ifdef I_STDLIB
17726 #include <stdlib.h>
17727 #endif
17728 #include <signal.h>
17729
17730 int
17731 ivfprintf(FILE *f, const char *fmt, va_list *valp)
17732 {
17733   return vfprintf(f, fmt, *valp);
17734 }
17735  
17736 int    
17737 myvfprintf(FILE *f, const  char *fmt, va_list val)
17738 {
17739   return ivfprintf(f, fmt, &val);
17740 }
17741       
17742 int
17743 myprintf(char *fmt, ...) 
17744 {
17745   va_list val;
17746   va_start(val, fmt);
17747   return myvfprintf(stdout, fmt, val); 
17748 }         
17749
17750 int
17751 main(int ac, char **av)
17752 {
17753   signal(SIGSEGV, exit);
17754
17755   myprintf("%s%cs all right, then\n", "that", '\'');                            
17756   exit(0);      
17757 }
17758 EOCP
17759         set try
17760         if eval $compile && $run ./try 2>&1 >/dev/null; then
17761                 case "`$run ./try`" in
17762                 "that's all right, then")
17763                         okay=yes
17764                         ;;
17765                 esac
17766         fi
17767         case "$okay" in
17768         yes)    echo "It seems that you don't need va_copy()." >&4
17769                 need_va_copy="$undef"
17770                 ;;
17771         *)      echo "It seems that va_copy() or similar will be needed." >&4
17772                 need_va_copy="$define"
17773                 ;;
17774         esac
17775         $rm -f try.* core core.* *.core *.core.*
17776         ;;
17777 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
17778         ;;
17779 esac
17780
17781 : see what type is used for size_t
17782 rp="What is the type used for the length parameter for string functions?"
17783 set size_t sizetype 'unsigned int' stdio.h sys/types.h
17784 eval $typedef_ask
17785
17786 : check for type of arguments to gethostbyaddr. 
17787 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
17788         case "$d_gethbyaddr" in
17789         $define)
17790                 $cat <<EOM
17791
17792 Checking to see what type of arguments are accepted by gethostbyaddr().
17793 EOM
17794                 hdrs="$define sys/types.h
17795                         $d_socket sys/socket.h 
17796                         $i_niin netinet/in.h 
17797                         $i_netdb netdb.h
17798                         $i_unistd unistd.h"
17799                 : The first arg can 'char *' or 'void *'
17800                 : The second arg is some of integral type
17801                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
17802                         for yyy in size_t long int; do
17803                                 case "$netdb_host_type" in
17804                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
17805                                         if ./protochk "$try" $hdrs; then
17806                                                 echo "Your system accepts $xxx for the first arg."
17807                                                 echo "...and $yyy for the second arg."
17808                                                 netdb_host_type="$xxx"
17809                                                 netdb_hlen_type="$yyy"
17810                                         fi
17811                                         ;;
17812                                 esac
17813                         done
17814                 done
17815                 : In case none of those worked, prompt the user.
17816                 case "$netdb_host_type" in
17817                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
17818                         dflt='char *'
17819                         . ./myread
17820                         netdb_host_type=$ans
17821                         rp='What is the type for the 2nd argument to gethostbyaddr?'
17822                         dflt="$sizetype"
17823                         . ./myread
17824                         netdb_hlen_type=$ans
17825                         ;;
17826                 esac
17827                 ;;
17828         *)      : no gethostbyaddr, so pick harmless defaults
17829                 netdb_host_type='char *'
17830                 netdb_hlen_type="$sizetype"
17831                 ;;
17832         esac
17833         # Remove the "const" if needed. -- but then we'll have a 
17834         # prototype clash!
17835         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
17836 fi
17837
17838 : check for type of argument to gethostbyname. 
17839 if test "X$netdb_name_type" = X ; then
17840         case "$d_gethbyname" in
17841         $define)
17842                 $cat <<EOM
17843
17844 Checking to see what type of argument is accepted by gethostbyname().
17845 EOM
17846                 hdrs="$define sys/types.h
17847                         $d_socket sys/socket.h 
17848                         $i_niin netinet/in.h 
17849                         $i_netdb netdb.h
17850                         $i_unistd unistd.h"
17851                 for xxx in "const char *" "char *"; do
17852                         case "$netdb_name_type" in
17853                         '')     try="extern struct hostent *gethostbyname($xxx);"
17854                                 if ./protochk "$try" $hdrs; then
17855                                         echo "Your system accepts $xxx."
17856                                         netdb_name_type="$xxx"
17857                                 fi
17858                                 ;;
17859                         esac
17860                 done
17861                 : In case none of those worked, prompt the user.
17862                 case "$netdb_name_type" in
17863                 '')     rp='What is the type for the 1st argument to gethostbyname?'
17864                         dflt='char *'
17865                         . ./myread
17866                         netdb_name_type=$ans
17867                         ;;
17868                 esac
17869                 ;;
17870         *)      : no gethostbyname, so pick harmless default
17871                 netdb_name_type='char *'
17872                 ;;
17873         esac
17874 fi
17875
17876 : check for type of 1st argument to getnetbyaddr. 
17877 if test "X$netdb_net_type" = X ; then
17878         case "$d_getnbyaddr" in
17879         $define)
17880                 $cat <<EOM
17881
17882 Checking to see what type of 1st argument is accepted by getnetbyaddr().
17883 EOM
17884                 hdrs="$define sys/types.h
17885                         $d_socket sys/socket.h 
17886                         $i_niin netinet/in.h 
17887                         $i_netdb netdb.h
17888                         $i_unistd unistd.h"
17889                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
17890                         case "$netdb_net_type" in
17891                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
17892                                 if ./protochk "$try" $hdrs; then
17893                                         echo "Your system accepts $xxx."
17894                                         netdb_net_type="$xxx"
17895                                 fi
17896                                 ;;
17897                         esac
17898                 done
17899                 : In case none of those worked, prompt the user.
17900                 case "$netdb_net_type" in
17901                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
17902                         dflt='long'
17903                         . ./myread
17904                         netdb_net_type=$ans
17905                         ;;
17906                 esac
17907                 ;;
17908         *)      : no getnetbyaddr, so pick harmless default
17909                 netdb_net_type='long'
17910                 ;;
17911         esac
17912 fi
17913 : locate the preferred pager for this system
17914 fn=f/
17915 case "$pager" in
17916 '')
17917         dflt=''
17918         case "$pg" in
17919         /*) dflt=$pg;;
17920         [a-zA-Z]:/*) dflt=$pg;;
17921         esac
17922         case "$more" in
17923         /*) dflt=$more;;
17924         [a-zA-Z]:/*) dflt=$more;;
17925         esac
17926         case "$less" in
17927         /*) dflt=$less;;
17928         [a-zA-Z]:/*) dflt=$less;;
17929         esac
17930         case "$dflt" in
17931         '') dflt=/usr/ucb/more;;
17932         esac
17933         ;;
17934 *)      dflt="$pager"
17935         : Instruct ./getfile to trust the hinted or previous pager value,
17936         : even if it does not begin with a slash.  For example, on os2,
17937         : pager might be cmd /c more.  See comments in UU/getfile.
17938         fn="f/($pager)"
17939         ;;
17940 esac
17941 echo " "
17942 rp='What pager is used on your system?'
17943 . ./getfile
17944 pager="$ans"
17945
17946 : see what type pids are declared as in the kernel
17947 rp="What is the type of process ids on this system?"
17948 set pid_t pidtype int stdio.h sys/types.h
17949 eval $typedef_ask
17950
17951 : Find earliest binary compatible site_perl subdirectory perl can use.
17952 xs_apiversion=$version # The current site_perl version.
17953 : Find earliest pure perl site_perl subdirectory perl can use.
17954 : The versioned directories started at 5.005.
17955 pm_apiversion='5.005'
17956
17957 : see if ar generates random libraries by itself
17958 echo " "
17959 echo "Checking how to generate random libraries on your machine..." >&4
17960 echo 'int bar1() { return bar2(); }' > bar1.c
17961 echo 'int bar2() { return 2; }' > bar2.c
17962 $cat > foo.c <<'EOP'
17963 int main() { printf("%d\n", bar1()); exit(0); }
17964 EOP
17965 $cc $ccflags -c bar1.c >/dev/null 2>&1
17966 $cc $ccflags -c bar2.c >/dev/null 2>&1
17967 $cc $ccflags -c foo.c >/dev/null 2>&1
17968 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
17969 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
17970         $run ./foobar >/dev/null 2>&1; then
17971         echo "$ar appears to generate random libraries itself."
17972         orderlib=false
17973         ranlib=":"
17974 elif $ar ts bar$_a >/dev/null 2>&1 &&
17975         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
17976         $run ./foobar >/dev/null 2>&1; then
17977                 echo "a table of contents needs to be added with '$ar ts'."
17978                 orderlib=false
17979                 ranlib="$ar ts"
17980 else
17981         case "$ranlib" in
17982         :) ranlib='';;
17983         '')
17984                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
17985                 $test -f $ranlib || ranlib=''
17986                 ;;
17987         esac
17988         if $test -n "$ranlib"; then
17989                 echo "your system has '$ranlib'; we'll use that."
17990                 orderlib=false
17991         else
17992                 echo "your system doesn't seem to support random libraries"
17993                 echo "so we'll use lorder and tsort to order the libraries."
17994                 orderlib=true
17995                 ranlib=":"
17996         fi
17997 fi
17998 $rm -f foo* bar* 
17999
18000 : check for type of arguments to select. 
18001 case "$selecttype" in
18002 '') case "$d_select" in
18003         $define)
18004                 echo " "
18005                 $cat <<EOM
18006 Checking to see what type of arguments are accepted by select().
18007 EOM
18008                 hdrs="$define sys/types.h
18009                         $i_systime sys/time.h 
18010                         $i_sysselct sys/select.h
18011                         $d_socket sys/socket.h"
18012                 : The first arg can be int, unsigned, or size_t
18013                 : The last arg may or may not be 'const'
18014                 val=''
18015                 : void pointer has been seen but using that
18016                 : breaks the selectminbits test
18017                 for xxx in 'fd_set *' 'int *'; do
18018                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18019                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18020                                         case "$val" in
18021                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18022                                                 if ./protochk "$try" $hdrs; then
18023                                                         echo "Your system accepts $xxx."
18024                                                         val="$xxx"
18025                                                 fi
18026                                                 ;;
18027                                         esac
18028                                 done
18029                         done
18030                 done
18031                 case "$val" in
18032                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18033                         case "$d_fd_set" in
18034                                 $define) dflt="fd_set *" ;;
18035                                 *)              dflt="int *" ;;
18036                         esac
18037                         . ./myread
18038                         val=$ans
18039                         ;;
18040                 esac
18041                 selecttype="$val"
18042                 ;;
18043         *)      : no select, so pick a harmless default
18044                 selecttype='int *'
18045                 ;;
18046         esac
18047         ;;
18048 esac
18049
18050 : check for the select 'width'
18051 case "$selectminbits" in
18052 '') case "$d_select" in
18053         $define)
18054                 $cat <<EOM
18055
18056 Checking to see on how many bits at a time your select() operates...
18057 EOM
18058                 $cat >try.c <<EOCP
18059 #include <sys/types.h>
18060 #$i_time I_TIME
18061 #$i_systime I_SYS_TIME
18062 #$i_systimek I_SYS_TIME_KERNEL
18063 #ifdef I_TIME
18064 #   include <time.h>
18065 #endif
18066 #ifdef I_SYS_TIME
18067 #   ifdef I_SYS_TIME_KERNEL
18068 #       define KERNEL
18069 #   endif
18070 #   include <sys/time.h>
18071 #   ifdef I_SYS_TIME_KERNEL
18072 #       undef KERNEL
18073 #   endif
18074 #endif
18075 #$i_sysselct I_SYS_SELECT
18076 #ifdef I_SYS_SELECT
18077 #include <sys/select.h>
18078 #endif
18079 #$d_socket HAS_SOCKET
18080 #ifdef HAS_SOCKET
18081 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18082 #endif
18083 #include <stdio.h>
18084 $selecttype b;
18085 #define S sizeof(*(b))
18086 #define MINBITS 64
18087 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18088 #define NBITS  (NBYTES * 8)
18089 int main() {
18090     char s[NBYTES];
18091     struct timeval t;
18092     int i;
18093     FILE* fp;
18094     int fd;
18095
18096     fclose(stdin);
18097     fp = fopen("try.c", "r");
18098     if (fp == 0)
18099       exit(1);
18100     fd = fileno(fp);
18101     if (fd < 0)
18102       exit(2);
18103     b = ($selecttype)s;
18104     for (i = 0; i < NBITS; i++)
18105         FD_SET(i, b);
18106     t.tv_sec  = 0;
18107     t.tv_usec = 0;
18108     select(fd + 1, b, 0, 0, &t);
18109     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18110     printf("%d\n", i + 1);
18111     return 0;
18112 }
18113 EOCP
18114                 set try
18115                 if eval $compile_ok; then
18116                         selectminbits=`$run ./try`
18117                         case "$selectminbits" in
18118                         '')     cat >&4 <<EOM
18119 Cannot figure out on how many bits at a time your select() operates.
18120 I'll play safe and guess it is 32 bits.
18121 EOM
18122                                 selectminbits=32
18123                                 bits="32 bits"
18124                                 ;;
18125                         1)      bits="1 bit" ;;
18126                         *)      bits="$selectminbits bits" ;;
18127                         esac
18128                         echo "Your select() operates on $bits at a time." >&4
18129                 else
18130                         rp='What is the minimum number of bits your select() operates on?'
18131                         case "$byteorder" in
18132                         1234|12345678)  dflt=32 ;;
18133                         *)              dflt=1  ;;
18134                         esac
18135                         . ./myread
18136                         val=$ans
18137                         selectminbits="$val"
18138                 fi
18139                 $rm -f try.* try
18140                 ;;
18141         *)      : no select, so pick a harmless default
18142                 selectminbits='32'
18143                 ;;
18144         esac
18145         ;;
18146 esac
18147
18148 : Trace out the files included by signal.h, then look for SIGxxx names.
18149 : Remove SIGARRAYSIZE used by HPUX.
18150 : Remove SIGSTKSIZE used by Linux.
18151 : Remove SIGSTKSZ used by Posix.
18152 : Remove SIGTYP void lines used by OS2.
18153 : Some cpps, like os390, dont give the file name anywhere
18154 if [ "X$fieldn" = X ]; then
18155         : Just make some guesses.  We check them later.
18156         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18157 else
18158         xxx=`echo '#include <signal.h>' |
18159         $cppstdin $cppminus $cppflags 2>/dev/null |
18160         $grep '^[       ]*#.*include' | 
18161         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18162 fi
18163 : Check this list of files to be sure we have parsed the cpp output ok.
18164 : This will also avoid potentially non-existent files, such 
18165 : as ../foo/bar.h
18166 xxxfiles=''
18167 for xx in $xxx /dev/null ; do
18168         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18169 done
18170 : If we have found no files, at least try signal.h
18171 case "$xxxfiles" in
18172 '')     xxxfiles=`./findhdr signal.h` ;;
18173 esac
18174 xxx=`awk '
18175 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18176         print substr($2, 4, 20)
18177 }
18178 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18179         print substr($3, 4, 20)
18180 }' $xxxfiles`
18181 : Append some common names just in case the awk scan failed.
18182 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18183 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18184 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18185 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18186 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18187
18188 : generate a few handy files for later
18189 $cat > signal.c <<'EOCP'
18190 #include <sys/types.h>
18191 #include <signal.h>
18192 #include <stdio.h>
18193 int main() {
18194
18195 /* Strange style to avoid deeply-nested #if/#else/#endif */
18196 #ifndef NSIG
18197 #  ifdef _NSIG
18198 #    define NSIG (_NSIG)
18199 #  endif
18200 #endif
18201
18202 #ifndef NSIG
18203 #  ifdef SIGMAX
18204 #    define NSIG (SIGMAX+1)
18205 #  endif
18206 #endif
18207
18208 #ifndef NSIG
18209 #  ifdef SIG_MAX
18210 #    define NSIG (SIG_MAX+1)
18211 #  endif
18212 #endif
18213
18214 #ifndef NSIG
18215 #  ifdef MAXSIG
18216 #    define NSIG (MAXSIG+1)
18217 #  endif
18218 #endif
18219
18220 #ifndef NSIG
18221 #  ifdef MAX_SIG
18222 #    define NSIG (MAX_SIG+1)
18223 #  endif
18224 #endif
18225
18226 #ifndef NSIG
18227 #  ifdef SIGARRAYSIZE
18228 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18229 #  endif
18230 #endif
18231
18232 #ifndef NSIG
18233 #  ifdef _sys_nsig
18234 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18235 #  endif
18236 #endif
18237
18238 /* Default to some arbitrary number that's big enough to get most
18239    of the common signals.
18240 */
18241 #ifndef NSIG
18242 #    define NSIG 50
18243 #endif
18244
18245 printf("NSIG %d\n", NSIG);
18246
18247 #ifndef JUST_NSIG
18248
18249 EOCP
18250
18251 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18252 {
18253         printf "#ifdef SIG"; printf $1; printf "\n"
18254         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18255         printf $1; printf ");\n"
18256         printf "#endif\n"
18257 }
18258 END {
18259         printf "#endif /* JUST_NSIG */\n";
18260         printf "exit(0);\n}\n";
18261 }
18262 ' >>signal.c
18263 $cat >signal.awk <<'EOP'
18264 BEGIN { ndups = 0 }
18265 $1 ~ /^NSIG$/ { nsig = $2 }
18266 ($1 !~ /^NSIG$/) && (NF == 2) {
18267     if ($2 > maxsig) { maxsig = $2 }
18268     if (sig_name[$2]) {
18269         dup_name[ndups] = $1
18270         dup_num[ndups] = $2
18271         ndups++ 
18272     }
18273     else {
18274         sig_name[$2] = $1
18275         sig_num[$2] = $2
18276     }
18277 }
18278 END { 
18279     if (nsig == 0) {
18280         nsig = maxsig + 1
18281     }
18282     printf("NSIG %d\n", nsig);
18283     for (n = 1; n < nsig; n++) {
18284         if (sig_name[n]) {
18285             printf("%s %d\n", sig_name[n], sig_num[n])
18286         }
18287         else {
18288             printf("NUM%d %d\n", n, n) 
18289         }
18290     }
18291     for (n = 0; n < ndups; n++) {
18292         printf("%s %d\n", dup_name[n], dup_num[n])
18293     }
18294 }
18295 EOP
18296 $cat >signal_cmd <<EOS
18297 $startsh
18298 if $test -s signal.lst; then
18299     echo "Using your existing signal.lst file"
18300         exit 0
18301 fi
18302 xxx="$xxx"
18303 EOS
18304 $cat >>signal_cmd <<'EOS'
18305
18306 set signal
18307 if eval $compile_ok; then
18308         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
18309 else
18310         echo "(I can't seem be able to compile the whole test program)" >&4
18311         echo "(I'll try it in little pieces.)" >&4
18312         set signal -DJUST_NSIG
18313         if eval $compile_ok; then
18314                 $run ./signal$_exe > signal.nsg
18315                 $cat signal.nsg
18316         else
18317                 echo "I can't seem to figure out how many signals you have." >&4
18318                 echo "Guessing 50." >&4
18319                 echo 'NSIG 50' > signal.nsg
18320         fi
18321         : Now look at all the signal names, one at a time.
18322         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18323                 $cat > signal.c <<EOCP
18324 #include <sys/types.h>
18325 #include <signal.h>
18326 #include <stdio.h>
18327 int main() {
18328 printf("$xx %d\n", SIG${xx});
18329 return 0;
18330 }
18331 EOCP
18332                 set signal
18333                 if eval $compile; then
18334                         echo "SIG${xx} found."
18335                         $run ./signal$_exe  >> signal.ls1
18336                 else
18337                         echo "SIG${xx} NOT found."
18338                 fi
18339         done
18340         if $test -s signal.ls1; then
18341                 $cat signal.nsg signal.ls1 |
18342                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
18343         fi
18344
18345 fi
18346 if $test -s signal.lst; then
18347         :
18348 else
18349         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
18350         echo 'kill -l' >signal
18351         set X `csh -f <signal`
18352         $rm -f signal
18353         shift
18354         case $# in
18355         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
18356         esac
18357         echo $@ | $tr ' ' $trnl | \
18358             $awk '{ printf "%s %d\n", $1, ++s; }
18359                   END { printf "NSIG %d\n", ++s }' >signal.lst
18360 fi
18361 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
18362 EOS
18363 chmod a+x signal_cmd
18364 $eunicefix signal_cmd
18365
18366 : generate list of signal names
18367 echo " "
18368 case "$sig_name_init" in
18369 '') doinit=yes ;;
18370 *)  case "$sig_num_init" in
18371     ''|*,*) doinit=yes ;;
18372     esac ;;
18373 esac
18374 case "$doinit" in
18375 yes)
18376         echo "Generating a list of signal names and numbers..." >&4
18377         . ./signal_cmd
18378         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
18379         sig_name=`$awk 'BEGIN { printf "ZERO " }
18380                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
18381         sig_num=`$awk  'BEGIN { printf "0 " }
18382                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
18383         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
18384                              !/^NSIG/   { printf "\"%s\", ", $1 }
18385                              END        { printf "0\n" }' signal.lst`
18386         sig_num_init=`$awk  'BEGIN      { printf "0, " }
18387                              !/^NSIG/   { printf "%d, ", $2}
18388                              END        { printf "0\n"}' signal.lst`
18389         ;;
18390 esac
18391 echo "The following $sig_count signals are available:"
18392 echo " "
18393 echo $sig_name | $awk \
18394 'BEGIN { linelen = 0 }
18395 {
18396         for (i = 1; i <= NF; i++) {
18397                 name = "SIG" $i " "
18398                 linelen = linelen + length(name)
18399                 if (linelen > 70) {
18400                         printf "\n"
18401                         linelen = length(name)
18402                 }
18403                 printf "%s", name
18404         }
18405         printf "\n"
18406 }'
18407 sig_size=`echo $sig_name | awk '{print NF}'`
18408 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
18409
18410 echo " "
18411 case "$sizetype" in
18412 *_t) zzz="$sizetype"    ;;
18413 *)   zzz="filesize"     ;;
18414 esac
18415 echo "Checking the size of $zzz..." >&4 
18416 cat > try.c <<EOCP
18417 #include <sys/types.h>
18418 #include <stdio.h>
18419 int main() {
18420     printf("%d\n", (int)sizeof($sizetype));
18421     exit(0);
18422 }
18423 EOCP
18424 set try
18425 if eval $compile_ok; then
18426         yyy=`$run ./try`
18427         case "$yyy" in
18428         '')     sizesize=4
18429                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
18430                 ;;
18431         *)      sizesize=$yyy
18432                 echo "Your $zzz size is $sizesize bytes."
18433                 ;;
18434         esac
18435 else
18436         sizesize=4
18437         echo "(I can't compile the test program--guessing $sizesize.)" >&4
18438 fi
18439
18440
18441 : check for socklen_t
18442 echo " "
18443 echo "Checking to see if you have socklen_t..." >&4
18444 $cat >try.c <<EOCP
18445 #include <sys/types.h>
18446 #$d_socket HAS_SOCKET
18447 #ifdef HAS_SOCKET
18448 #include <sys/socket.h>
18449 #endif
18450 int main() { socklen_t x = 16; }
18451 EOCP
18452 set try
18453 if eval $compile; then
18454         val="$define"
18455         echo "You have socklen_t."
18456 else
18457         val="$undef"
18458         echo "You do not have socklen_t."
18459         case "$sizetype" in
18460         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
18461         esac
18462 fi
18463 $rm -f try try.*
18464 set d_socklen_t
18465 eval $setvar
18466
18467 : see if this is a socks.h system
18468 set socks.h i_socks
18469 eval $inhdr
18470
18471 : check for type of the size argument to socket calls
18472 case "$d_socket" in
18473 "$define")
18474         $cat <<EOM
18475
18476 Checking to see what type is the last argument of accept().
18477 EOM
18478         yyy=''
18479         case "$d_socklen_t" in
18480         "$define") yyy="$yyy socklen_t"
18481         esac
18482         yyy="$yyy $sizetype int long unsigned"
18483         for xxx in $yyy; do
18484                 case "$socksizetype" in
18485                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
18486                         case "$usesocks" in
18487                         "$define")
18488                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
18489                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
18490                                         socksizetype="$xxx"
18491                                 fi
18492                                 ;;
18493                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
18494                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
18495                                         socksizetype="$xxx"
18496                                 fi
18497                                 ;;
18498                         esac
18499                         ;;
18500                 esac
18501         done
18502 : In case none of those worked, prompt the user.
18503         case "$socksizetype" in
18504         '')     rp='What is the type for socket address structure sizes?'
18505                 dflt='int'
18506                 . ./myread
18507                 socksizetype=$ans
18508                 ;;
18509         esac
18510         ;;
18511 *)      : no sockets, so pick relatively harmless default
18512         socksizetype='int'
18513         ;;
18514 esac
18515
18516 : see what type is used for signed size_t
18517 set ssize_t ssizetype int stdio.h sys/types.h
18518 eval $typedef
18519 dflt="$ssizetype"
18520 $cat > try.c <<EOM
18521 #include <stdio.h>
18522 #include <sys/types.h>
18523 #define Size_t $sizetype
18524 #define SSize_t $dflt
18525 int main()
18526 {
18527         if (sizeof(Size_t) == sizeof(SSize_t))
18528                 printf("$dflt\n");
18529         else if (sizeof(Size_t) == sizeof(int))
18530                 printf("int\n");
18531         else 
18532                 printf("long\n");
18533         exit(0);
18534 }
18535 EOM
18536 echo " "
18537 set try
18538 if eval $compile_ok && $run ./try > /dev/null; then
18539         ssizetype=`$run ./try`
18540         echo "I'll be using $ssizetype for functions returning a byte count." >&4
18541 else
18542         $cat >&4 <<EOM
18543 Help! I can't compile and run the ssize_t test program: please enlighten me!
18544 (This is probably a misconfiguration in your system or libraries, and
18545 you really ought to fix it.  Still, I'll try anyway.)
18546
18547 I need a type that is the same size as $sizetype, but is guaranteed to
18548 be signed.  Common values are ssize_t, int and long.
18549
18550 EOM
18551         rp="What signed type is the same size as $sizetype?"
18552         . ./myread
18553         ssizetype="$ans"
18554 fi
18555 $rm -f try try.*
18556
18557 : see what type of char stdio uses.
18558 echo " "
18559 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
18560 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
18561         echo "Your stdio uses unsigned chars." >&4
18562         stdchar="unsigned char"
18563 else
18564         echo "Your stdio uses signed chars." >&4
18565         stdchar="char"
18566 fi
18567 $rm -f stdioh
18568
18569
18570
18571 : see what type uids are declared as in the kernel
18572 echo " "
18573 echo "Looking for the type for user ids returned by getuid()."
18574 set uid_t uidtype xxx stdio.h sys/types.h
18575 eval $typedef
18576 case "$uidtype" in
18577 xxx)
18578         xxx=`./findhdr sys/user.h`
18579         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
18580         case $1 in
18581         unsigned) dflt="$1 $2" ;;
18582         *) dflt="$1" ;;
18583         esac
18584         ;;
18585 *) dflt="$uidtype";;
18586 esac
18587 case "$uidtype" in
18588 uid_t)  echo "uid_t found." ;;
18589 *)      rp="What is the type for user ids returned by getuid()?"
18590         . ./myread
18591         uidtype="$ans"
18592         ;;
18593 esac
18594
18595 echo " "
18596 case "$uidtype" in
18597 *_t) zzz="$uidtype"     ;;
18598 *)   zzz="uid"          ;;
18599 esac
18600 echo "Checking the size of $zzz..." >&4 
18601 cat > try.c <<EOCP
18602 #include <sys/types.h>
18603 #include <stdio.h>
18604 int main() {
18605     printf("%d\n", (int)sizeof($uidtype));
18606     exit(0);
18607 }
18608 EOCP
18609 set try
18610 if eval $compile_ok; then
18611         yyy=`$run ./try`
18612         case "$yyy" in
18613         '')     uidsize=4
18614                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
18615                 ;;
18616         *)      uidsize=$yyy
18617                 echo "Your $zzz is $uidsize bytes long."
18618                 ;;
18619         esac
18620 else
18621         uidsize=4
18622         echo "(I can't compile the test program--guessing $uidsize.)" >&4
18623 fi
18624
18625 echo " "
18626 case "$uidtype" in
18627 *_t) zzz="$uidtype"     ;;
18628 *)   zzz="uid"          ;;
18629 esac
18630 echo "Checking the sign of $zzz..." >&4
18631 cat > try.c <<EOCP
18632 #include <sys/types.h>
18633 #include <stdio.h>
18634 int main() {
18635         $uidtype foo = -1;
18636         if (foo < 0)
18637                 printf("-1\n");
18638         else
18639                 printf("1\n");
18640 }
18641 EOCP
18642 set try
18643 if eval $compile; then
18644         yyy=`$run ./try`
18645         case "$yyy" in
18646         '')     uidsign=1
18647                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18648                 ;;
18649         *)      uidsign=$yyy
18650                 case "$uidsign" in
18651                  1) echo "Your $zzz is unsigned." ;;
18652                 -1) echo "Your $zzz is signed."   ;;
18653                 esac
18654                 ;;
18655         esac
18656 else
18657         uidsign=1
18658         echo "(I can't compile the test program--guessing unsigned.)" >&4
18659 fi
18660
18661
18662
18663 echo " "
18664 $echo "Checking the format string to be used for uids..." >&4
18665
18666 case "$uidsign" in
18667 -1)     if $test X"$uidsize" = X"$ivsize"; then
18668                 uidformat="$ivdformat"
18669         else
18670                 if $test X"$uidsize" = X"$longsize"; then
18671                         uidformat='"ld"'
18672                 else
18673                         if $test X"$uidsize" = X"$intsize"; then
18674                                 uidformat='"d"'
18675                         else
18676                                 if $test X"$uidsize" = X"$shortsize"; then
18677                                         uidformat='"hd"'
18678                                 fi
18679                         fi
18680                 fi
18681         fi
18682         ;;
18683 *)      if $test X"$uidsize" = X"$uvsize"; then
18684                 uidformat="$uvuformat"
18685         else
18686                 if $test X"$uidsize" = X"$longsize"; then
18687                         uidformat='"lu"'
18688                 else
18689                         if $test X"$uidsize" = X"$intsize"; then
18690                                 uidformat='"u"'
18691                         else
18692                                 if $test X"$uidsize" = X"$shortsize"; then
18693                                         uidformat='"hu"'
18694                                 fi
18695                         fi
18696                 fi
18697         fi
18698         ;;
18699 esac
18700
18701 : determine compiler compiler
18702 case "$yacc" in
18703 '')
18704         dflt=yacc;;
18705 *)
18706         dflt="$yacc";;
18707 esac
18708 echo " "
18709 comp='yacc'
18710 if $test -f "$byacc$_exe"; then
18711         dflt="$byacc"
18712         comp="byacc or $comp"
18713 fi
18714 if $test -f "$bison$_exe"; then
18715         comp="$comp or bison -y"
18716 fi
18717 rp="Which compiler compiler ($comp) shall I use?"
18718 . ./myread
18719 yacc="$ans"
18720 case "$yacc" in
18721 *bis*)
18722         case "$yacc" in
18723         *-y*) ;;
18724         *)
18725                 yacc="$yacc -y"
18726                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
18727                 ;;
18728         esac
18729         ;;
18730 esac
18731
18732 : see if this is a fp.h system
18733 set fp.h i_fp
18734 eval $inhdr
18735
18736 : see if this is a fp_class.h system
18737 set fp_class.h i_fp_class
18738 eval $inhdr
18739
18740 : see if this is a ieeefp.h system
18741 case "$i_ieeefp" in
18742 '' ) set ieeefp.h i_ieeefp
18743      eval $inhdr
18744      ;;
18745 esac
18746
18747 : see if this is a libutil.h system
18748 set libutil.h i_libutil
18749 eval $inhdr
18750
18751 : see if mach cthreads are available
18752 if test "X$usethreads" = "X$define"; then
18753         set mach/cthreads.h i_machcthr
18754         eval $inhdr
18755 else
18756         i_machcthr="$undef"
18757 fi
18758
18759
18760
18761 : see if this is a math.h system
18762 set math.h i_math
18763 eval $inhdr
18764
18765 : see if this is a mntent.h system
18766 set mntent.h i_mntent
18767 eval $inhdr
18768
18769 : see if ndbm.h is available
18770 set ndbm.h t_ndbm
18771 eval $inhdr
18772
18773 case "$t_ndbm" in
18774 $undef)
18775     # Some Linux distributions such as RedHat 7.1 put the
18776     # ndbm.h header in /usr/include/gdbm/ndbm.h.
18777     if $test -f /usr/include/gdbm/ndbm.h; then
18778         echo '<gdbm/ndbm.h> found.'
18779         ccflags="$ccflags -I/usr/include/gdbm"
18780         cppflags="$cppflags -I/usr/include/gdbm"
18781         t_ndbm=$define
18782     fi
18783     ;;
18784 esac
18785
18786 case "$t_ndbm" in
18787 $define)
18788         : see if dbm_open exists
18789         set dbm_open d_dbm_open
18790         eval $inlibc
18791         case "$d_dbm_open" in
18792         $undef)
18793                 t_ndbm="$undef"
18794                 echo "We won't be including <ndbm.h>"
18795                 ;;
18796         esac
18797         ;;
18798 esac
18799 val="$t_ndbm"
18800 set i_ndbm
18801 eval $setvar
18802
18803 : see if net/errno.h is available
18804 val=''
18805 set net/errno.h val
18806 eval $inhdr
18807
18808 : Unfortunately, it causes problems on some systems.  Arrgh.
18809 case "$val" in
18810 $define)
18811         cat > try.c <<'EOM'
18812 #include <stdio.h>
18813 #include <errno.h>
18814 #include <net/errno.h>
18815 int func()
18816 {
18817         return ENOTSOCK;
18818 }
18819 EOM
18820         if $cc $ccflags -c try.c >/dev/null 2>&1; then
18821                 echo "We'll be including <net/errno.h>." >&4
18822         else
18823                 echo "We won't be including <net/errno.h>." >&4
18824                 val="$undef"
18825         fi
18826         $rm -f try.* try
18827         ;;
18828 esac
18829 set i_neterrno
18830 eval $setvar
18831
18832 : see if netinet/tcp.h is available
18833 set netinet/tcp.h i_netinettcp
18834 eval $inhdr
18835
18836 : see if this is a poll.h system
18837 set poll.h i_poll
18838 eval $inhdr
18839
18840 : see if this is a prot.h system
18841 set prot.h i_prot
18842 eval $inhdr
18843
18844 echo " "
18845 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
18846 $cat <<'EOSH' > Cppsym.know
18847 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
18848 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
18849 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
18850 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
18851 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
18852 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
18853 bull c cadmus clipper CMU COFF COMPILER_VERSION
18854 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
18855 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
18856 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
18857 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
18858 GLIBC GLIBC_MINOR
18859 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
18860 H3050R H3050RX hbullx20 hcx host_mips
18861 hp200 hp300 hp700 HP700 hp800 hp9000
18862 hp9000s200 hp9000s300 hp9000s400 hp9000s500
18863 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
18864 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
18865 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
18866 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
18867 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
18868 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
18869 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
18870 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
18871 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
18872 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
18873 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
18874 MATH_HAS_NO_SIDE_EFFECTS
18875 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
18876 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
18877 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
18878 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
18879 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
18880 NetBSD news1500 news1700 news1800 news1900 news3700
18881 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
18882 ns32016 ns32332 ns32k nsc32000
18883 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
18884 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
18885 pc532 pdp11 PGC PIC plexus PORTAR posix
18886 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
18887 POSIX_C_SOURCE POSIX_SOURCE POWER
18888 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
18889 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
18890 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
18891 sony sony_news sonyrisc sparc sparclite spectrum
18892 stardent stdc STDC_EXT stratos sun sun3 sun386
18893 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
18894 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
18895 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
18896 sysV68 sysV88 Tek4132 Tek4300 titan
18897 TM3200 TM5400 TM5600
18898 tower tower32 tower32_200 tower32_600 tower32_700
18899 tower32_800 tower32_850 tss
18900 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
18901 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
18902 unix UNIX95 UNIX99 unixpc unos
18903 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
18904 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
18905 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
18906 USGr4 USGr4_2
18907 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
18908 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
18909 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
18910 z8000
18911 EOSH
18912 # Maybe put other stuff here too.
18913 cat <<EOSH >>Cppsym.know
18914 $osname
18915 EOSH
18916 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
18917 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
18918 $cat Cppsym.know > Cppsym.c
18919 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
18920 $rm -f Cppsym.a Cppsym.b Cppsym.c
18921 cat <<EOSH > Cppsym
18922 $startsh
18923 if $test \$# -gt 0; then
18924     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
18925     if $test -s Cppsym.got; then
18926         $rm -f Cppsym.got
18927         exit 0
18928     fi
18929     $rm -f Cppsym.got
18930     exit 1
18931 else
18932     $tr " " "$trnl" | ./Cppsym.try
18933     exit 0
18934 fi
18935 EOSH
18936 chmod +x Cppsym
18937 $eunicefix Cppsym
18938 cat <<EOSH > Cppsym.try
18939 $startsh
18940 cat <<'EOCP' > try.c
18941 #include <stdio.h>
18942 int main() {
18943 EOCP
18944 $awk \\
18945 EOSH
18946 cat <<'EOSH' >> Cppsym.try
18947 'length($1) > 0 {
18948     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
18949     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
18950     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
18951     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
18952 }'       >> try.c
18953 echo 'return 0;}' >> try.c
18954 EOSH
18955 cat <<EOSH >> Cppsym.try
18956 ccflags="$ccflags"
18957 case "$osname-$gccversion" in
18958 irix-) ccflags="\$ccflags -woff 1178" ;;
18959 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
18960 esac
18961 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
18962 EOSH
18963 chmod +x Cppsym.try
18964 $eunicefix Cppsym.try
18965 ./Cppsym < Cppsym.know > Cppsym.true
18966 : now check the C compiler for additional symbols
18967 postprocess_cc_v=''
18968 case "$osname" in
18969 aix) postprocess_cc_v="|$tr , ' '" ;;
18970 esac
18971 $cat >ccsym <<EOS
18972 $startsh
18973 $cat >tmp.c <<EOF
18974 extern int foo;
18975 EOF
18976 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
18977 do
18978         case "\$i" in
18979         -D*) echo "\$i" | $sed 's/^-D//';;
18980         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
18981         esac
18982 done
18983 $rm -f try.c
18984 EOS
18985 postprocess_cc_v=''
18986 chmod +x ccsym
18987 $eunicefix ccsym
18988 ./ccsym > ccsym1.raw
18989 if $test -s ccsym1.raw; then
18990        $sort ccsym1.raw | $uniq >ccsym.raw
18991 else
18992        mv ccsym1.raw ccsym.raw
18993 fi
18994
18995 $awk '/\=/ { print $0; next }
18996         { print $0"=1" }' ccsym.raw >ccsym.list
18997 $awk '/\=/ { print $0; next }
18998         { print $0"=1" }' Cppsym.true >ccsym.true
18999 $comm -13 ccsym.true ccsym.list >ccsym.own
19000 $comm -12 ccsym.true ccsym.list >ccsym.com
19001 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19002 also=''
19003 if $test -z ccsym.raw; then
19004         echo "Your C compiler doesn't seem to define any symbols!" >&4
19005         echo " "
19006         echo "However, your C preprocessor defines the following symbols:"
19007         $cat Cppsym.true
19008         ccsymbols=''
19009         cppsymbols=`$cat Cppsym.true`
19010         cppsymbols=`echo $cppsymbols`
19011         cppccsymbols="$cppsymbols"
19012 else
19013         if $test -s ccsym.com; then
19014                 echo "Your C compiler and pre-processor define these symbols:"
19015                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19016                 also='also '
19017                 symbols='ones'
19018                 cppccsymbols=`$cat ccsym.com`
19019                 cppccsymbols=`echo $cppccsymbols`
19020                 $test "$silent" || sleep 1
19021         fi
19022         if $test -s ccsym.cpp; then
19023                 $test "$also" && echo " "
19024                 echo "Your C pre-processor ${also}defines the following symbols:"
19025                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19026                 also='further '
19027                 cppsymbols=`$cat ccsym.cpp`
19028                 cppsymbols=`echo $cppsymbols`
19029                 $test "$silent" || sleep 1
19030         fi
19031         if $test -s ccsym.own; then
19032                 $test "$also" && echo " "
19033                 echo "Your C compiler ${also}defines the following cpp symbols:"
19034                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19035                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19036                 ccsymbols=`$cat ccsym.own`
19037                 ccsymbols=`echo $ccsymbols`
19038                 $test "$silent" || sleep 1
19039         fi
19040 fi
19041
19042 : see if this is a termio system
19043 val="$undef"
19044 val2="$undef"
19045 val3="$undef"
19046 if $test `./findhdr termios.h`; then
19047         set tcsetattr i_termios
19048         eval $inlibc
19049         val3="$i_termios"
19050 fi
19051 echo " "
19052 case "$val3" in
19053 "$define") echo "You have POSIX termios.h... good!" >&4;;
19054 *) if ./Cppsym pyr; then
19055                 case "`/bin/universe`" in
19056                 ucb) if $test `./findhdr sgtty.h`; then
19057                                 val2="$define"
19058                                 echo "<sgtty.h> found." >&4
19059                         else
19060                                 echo "System is pyramid with BSD universe."
19061                                 echo "<sgtty.h> not found--you could have problems." >&4
19062                         fi;;
19063                 *) if $test `./findhdr termio.h`; then
19064                                 val="$define"
19065                                 echo "<termio.h> found." >&4
19066                         else
19067                                 echo "System is pyramid with USG universe."
19068                                 echo "<termio.h> not found--you could have problems." >&4
19069                         fi;;
19070                 esac
19071         elif ./usg; then
19072                 if $test `./findhdr termio.h`; then
19073                         echo "<termio.h> found." >&4
19074                         val="$define"
19075                 elif $test `./findhdr sgtty.h`; then
19076                         echo "<sgtty.h> found." >&4
19077                         val2="$define"
19078                 else
19079 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19080                 fi
19081         else
19082                 if $test `./findhdr sgtty.h`; then
19083                         echo "<sgtty.h> found." >&4
19084                         val2="$define"
19085                 elif $test `./findhdr termio.h`; then
19086                         echo "<termio.h> found." >&4
19087                         val="$define"
19088                 else
19089 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19090                 fi
19091         fi;;
19092 esac
19093 set i_termio; eval $setvar
19094 val=$val2; set i_sgtty; eval $setvar
19095 val=$val3; set i_termios; eval $setvar
19096
19097 : see if stddef is available
19098 set stddef.h i_stddef
19099 eval $inhdr
19100
19101 : see if this is a sunmath.h system
19102 set sunmath.h i_sunmath
19103 eval $inhdr
19104
19105 : see if sys/access.h is available
19106 set sys/access.h i_sysaccess
19107 eval $inhdr
19108
19109 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19110 set sys/filio.h i_sysfilio
19111 eval $inhdr
19112 echo " "
19113 if $test `./findhdr sys/ioctl.h`; then
19114         val="$define"
19115         echo '<sys/ioctl.h> found.' >&4
19116 else
19117         val="$undef"
19118         if $test $i_sysfilio = "$define"; then
19119             echo '<sys/ioctl.h> NOT found.' >&4
19120         else
19121                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19122                 $test $i_termio = "$define" && xxx="termio.h"
19123                 $test $i_termios = "$define" && xxx="termios.h"
19124 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19125         fi
19126 fi
19127 set i_sysioctl
19128 eval $setvar
19129
19130 : see if socket ioctl defs are in sys/sockio.h
19131 echo " "
19132 xxx=`./findhdr sys/sockio.h`
19133 if $test "$xxx"; then
19134         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19135                 val="$define"
19136                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19137         else
19138                 val="$undef"
19139                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19140         fi
19141 else
19142         val="$undef"
19143         $cat <<EOM
19144 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19145 EOM
19146 fi
19147 set i_syssockio
19148 eval $setvar
19149
19150
19151 : see if this is a syslog.h system
19152 set syslog.h i_syslog
19153 eval $inhdr
19154
19155
19156 : see if this is a sys/mode.h system
19157 set sys/mode.h i_sysmode
19158 eval $inhdr
19159
19160 : see if sys/resource.h has to be included
19161 set sys/resource.h i_sysresrc
19162 eval $inhdr
19163
19164 : see if sys/security.h is available
19165 set sys/security.h i_syssecrt
19166 eval $inhdr
19167
19168 : see if this is a sys/statvfs.h system
19169 set sys/statvfs.h i_sysstatvfs
19170 eval $inhdr
19171
19172 : see if this is a sys/un.h system
19173 set sys/un.h i_sysun
19174 eval $inhdr
19175
19176
19177 : see if this is a sys/utsname.h system
19178 set sys/utsname.h i_sysutsname
19179 eval $inhdr
19180
19181 : see if this is a syswait system
19182 set sys/wait.h i_syswait
19183 eval $inhdr
19184
19185 : see if this is a ustat.h system
19186 set ustat.h i_ustat
19187 eval $inhdr
19188
19189 : see if this is an utime system
19190 set utime.h i_utime
19191 eval $inhdr
19192
19193 : see if this is a values.h system
19194 set values.h i_values
19195 eval $inhdr
19196
19197 : see if this is a vfork system
19198 case "$d_vfork" in
19199 "$define")
19200         set vfork.h i_vfork
19201         eval $inhdr
19202         ;;
19203 *)
19204         i_vfork="$undef"
19205         ;;
19206 esac
19207
19208 : see if gdbm.h is available
19209 set gdbm.h t_gdbm
19210 eval $inhdr
19211 case "$t_gdbm" in
19212 $define)
19213         : see if gdbm_open exists
19214         set gdbm_open d_gdbm_open
19215         eval $inlibc
19216         case "$d_gdbm_open" in
19217         $undef)
19218                 t_gdbm="$undef"
19219                 echo "We won't be including <gdbm.h>"
19220                 ;;
19221         esac
19222         ;;
19223 esac
19224 val="$t_gdbm"
19225 set i_gdbm
19226 eval $setvar
19227
19228 echo " "
19229 echo "Looking for extensions..." >&4
19230 : If we are using the old config.sh, known_extensions may contain
19231 : old or inaccurate or duplicate values.
19232 known_extensions=''
19233 nonxs_extensions=''
19234 : We do not use find because it might not be available.
19235 : We do not just use MANIFEST because the user may have dropped
19236 : some additional extensions into the source tree and expect them
19237 : to be built.
19238
19239 : Function to recursively find available extensions, ignoring DynaLoader
19240 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19241 find_extensions='
19242     for xxx in *; do
19243        case "$xxx" in
19244            DynaLoader|dynaload) ;;
19245            *)
19246            if $test -f $xxx/$xxx.xs; then
19247                known_extensions="$known_extensions $1$xxx";
19248            elif $test -f $xxx/Makefile.PL; then
19249                nonxs_extensions="$nonxs_extensions $1$xxx";
19250            else
19251                if $test -d $xxx -a $# -lt 10; then
19252                    set $1$xxx/ $*;
19253                    cd "$xxx";
19254                    eval $find_extensions;
19255                    cd ..;
19256                    shift;
19257                fi;
19258            fi
19259            ;;
19260        esac;
19261     done'
19262 tdir=`pwd`
19263 cd "$rsrc/ext"
19264 set X
19265 shift
19266 eval $find_extensions
19267 # Special case:  Add in threads/shared since it is not picked up by the
19268 # recursive find above (and adding in general recursive finding breaks
19269 # SDBM_File/sdbm).  A.D.  10/25/2001.
19270 known_extensions="$known_extensions threads/shared"
19271 set X $nonxs_extensions
19272 shift
19273 nonxs_extensions="$*"
19274 set X $known_extensions
19275 shift
19276 known_extensions="$*"
19277 cd "$tdir"
19278
19279 : Now see which are supported on this system.
19280 avail_ext=''
19281 for xxx in $known_extensions ; do
19282         case "$xxx" in
19283         DB_File|db_file)
19284                 case "$i_db" in
19285                 $define) avail_ext="$avail_ext $xxx" ;;
19286                 esac
19287                 ;;
19288         GDBM_File|gdbm_fil)
19289                 case "$i_gdbm" in 
19290                 $define) avail_ext="$avail_ext $xxx" ;;
19291                 esac
19292                 ;;
19293         I18N/Langinfo|i18n_lan)
19294                 case "$i_langinfo$d_nl_langinfo" in 
19295                 $define$define) avail_ext="$avail_ext $xxx" ;;
19296                 esac
19297                 ;;
19298         NDBM_File|ndbm_fil)
19299                 case "$i_ndbm" in
19300                 $define)
19301                     case "$osname-$use64bitint" in
19302                     cygwin-*|hpux-define)
19303                         case "$libs" in
19304                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19305                         esac
19306                         ;;
19307                     *) avail_ext="$avail_ext $xxx" ;;
19308                     esac
19309                     ;;
19310                 esac
19311                 ;;
19312         ODBM_File|odbm_fil) 
19313                 case "${i_dbm}${i_rpcsvcdbm}" in
19314                 *"${define}"*)
19315                     case "$osname-$use64bitint" in
19316                     cygwin-*|hpux-define)
19317                         case "$libs" in
19318                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19319                         esac
19320                         ;;
19321                     *) avail_ext="$avail_ext $xxx" ;;
19322                     esac
19323                     ;;
19324                 esac
19325                 ;;
19326         POSIX|posix)
19327                 case "$useposix" in
19328                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19329                 esac
19330                 ;;
19331         Opcode|opcode)
19332                 case "$useopcode" in
19333                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19334                 esac
19335                 ;;
19336         Socket|socket)
19337                 case "$d_socket" in 
19338                 true|$define|y)
19339                     case "$osname" in
19340                     beos) ;; # not unless BONE
19341                     *) avail_ext="$avail_ext $xxx" ;;
19342                     esac
19343                     ;;
19344                 esac
19345                 ;;
19346         Sys/Syslog|sys/syslog)
19347                 : XXX syslog requires socket
19348                 case "$d_socket" in 
19349                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
19350                 esac
19351                 ;;
19352         Thread|thread)
19353                 case "$usethreads" in
19354                 true|$define|y)
19355                         case "$useithreads" in
19356                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
19357                         esac
19358                 esac
19359                 ;;
19360         threads|threads/shared)
19361                 # threads and threads::shared are special cases.
19362                 # To stop people from asking "Perl 5.8.0 was supposed
19363                 # to have this new fancy threads implementation but my
19364                 # perl doesn't have it" and from people trying to
19365                 # (re)install the threads module using CPAN.pm and
19366                 # CPAN.pm then offering to reinstall Perl 5.8.0,
19367                 # the threads.pm and threads/shared.pm will always be
19368                 # there, croaking informatively ("you need to rebuild
19369                 # all of Perl with threads, sorry") when threads haven't
19370                 # been compiled in.
19371                 # --jhi
19372                 avail_ext="$avail_ext $xxx"
19373                 ;;
19374         IPC/SysV|ipc/sysv)
19375                 : XXX Do we need a useipcsysv variable here
19376                 case "${d_msg}${d_sem}${d_shm}" in 
19377                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
19378                 esac
19379                 ;;
19380         *)      avail_ext="$avail_ext $xxx"
19381                 ;;
19382         esac
19383 done
19384
19385 set X $avail_ext
19386 shift
19387 avail_ext="$*"
19388
19389 : Now see which nonxs extensions are supported on this system.
19390 : For now assume all are.
19391 nonxs_ext=''
19392 for xxx in $nonxs_extensions ; do
19393         case "$xxx" in
19394         *)      nonxs_ext="$nonxs_ext $xxx"
19395                 ;;
19396         esac
19397 done
19398
19399 set X $nonxs_ext
19400 shift
19401 nonxs_ext="$*"
19402
19403 case $usedl in
19404 $define)
19405         $cat <<EOM
19406 A number of extensions are supplied with $package.  You may choose to
19407 compile these extensions for dynamic loading (the default), compile
19408 them into the $package executable (static loading), or not include
19409 them at all.  Answer "none" to include no extensions.
19410 Note that DynaLoader is always built and need not be mentioned here.
19411
19412 EOM
19413         case "$dynamic_ext" in
19414         '') dflt="$avail_ext" ;;
19415         *)      dflt="$dynamic_ext"
19416                 # Perhaps we are reusing an old out-of-date config.sh.
19417                 case "$hint" in
19418                 previous)
19419                         if test X"$dynamic_ext" != X"$avail_ext"; then
19420                                 $cat <<EOM
19421 NOTICE:  Your previous config.sh list may be incorrect. 
19422 The extensions now available to you are 
19423         ${avail_ext}
19424 but the default list from your previous config.sh is
19425         ${dynamic_ext} 
19426
19427 EOM
19428                         fi
19429                         ;;
19430                 esac
19431                 ;;
19432         esac
19433         case "$dflt" in
19434         '')     dflt=none;;
19435         esac
19436         rp="What extensions do you wish to load dynamically?"
19437         . ./myread
19438         case "$ans" in
19439         none) dynamic_ext=' ' ;;
19440         *) dynamic_ext="$ans" ;;
19441         esac
19442
19443         case "$static_ext" in
19444         '')
19445                 : Exclude those already listed in dynamic linking
19446                 dflt=''
19447                 for xxx in $avail_ext; do
19448                         case " $dynamic_ext " in
19449                         *" $xxx "*) ;;
19450                         *) dflt="$dflt $xxx" ;;
19451                         esac
19452                 done
19453                 set X $dflt
19454                 shift
19455                 dflt="$*"
19456                 ;;
19457         *)  dflt="$static_ext" 
19458                 ;;
19459         esac
19460
19461         case "$dflt" in
19462         '')     dflt=none;;
19463         esac
19464         rp="What extensions do you wish to load statically?"
19465         . ./myread
19466         case "$ans" in
19467         none) static_ext=' ' ;;
19468         *) static_ext="$ans" ;;
19469         esac
19470         ;;
19471 *)
19472         $cat <<EOM
19473 A number of extensions are supplied with $package.  Answer "none" 
19474 to include no extensions. 
19475 Note that DynaLoader is always built and need not be mentioned here.
19476
19477 EOM
19478         case "$static_ext" in
19479         '') dflt="$avail_ext" ;;
19480         *)      dflt="$static_ext"
19481                 # Perhaps we are reusing an old out-of-date config.sh.
19482                 case "$hint" in
19483                 previous)
19484                         if test X"$static_ext" != X"$avail_ext"; then
19485                                 $cat <<EOM
19486 NOTICE:  Your previous config.sh list may be incorrect. 
19487 The extensions now available to you are 
19488         ${avail_ext}
19489 but the default list from your previous config.sh is
19490         ${static_ext} 
19491
19492 EOM
19493                         fi
19494                         ;;
19495                 esac
19496                 ;;
19497         esac
19498         : Exclude those that are not xs extensions
19499         case "$dflt" in
19500         '')     dflt=none;;
19501         esac
19502         rp="What extensions do you wish to include?"
19503         . ./myread
19504         case "$ans" in
19505         none) static_ext=' ' ;;
19506         *) static_ext="$ans" ;;
19507         esac
19508         ;;
19509 esac
19510 #        
19511 # Encode is a special case.  If we are building Encode as a static
19512 # extension, we need to explicitly list its subextensions as well.
19513 # For other nested extensions, this is handled automatically by
19514 # the appropriate Makefile.PL.
19515 case " $static_ext " in
19516         *" Encode "*) # Add the subextensions of Encode
19517         cd "$rsrc/ext"
19518         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
19519                 static_ext="$static_ext Encode/$xxx"
19520         done
19521         cd "$tdir"
19522         ;;
19523 esac
19524
19525 set X $dynamic_ext $static_ext $nonxs_ext
19526 shift
19527 extensions="$*"
19528
19529 : Remove libraries needed only for extensions
19530 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
19531 : The exception is SunOS 4.x, which needs them.
19532 case "${osname}X${osvers}" in
19533 sunos*X4*)
19534     perllibs="$libs"
19535     ;;
19536 *) case "$usedl" in
19537     $define|true|[yY]*)
19538             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
19539             shift
19540             perllibs="$*"
19541             ;;
19542     *)  perllibs="$libs"
19543             ;;
19544     esac
19545     ;;
19546 esac
19547
19548 : Remove build directory name from cppstdin so it can be used from
19549 : either the present location or the final installed location.
19550 echo " "
19551 : Get out of the UU directory to get correct path name.
19552 cd ..
19553 case "$cppstdin" in
19554 `pwd`/cppstdin)
19555         echo "Stripping down cppstdin path name"
19556         cppstdin=cppstdin
19557         ;;
19558 esac
19559 cd UU
19560
19561 : end of configuration questions
19562 echo " "
19563 echo "End of configuration questions."
19564 echo " "
19565
19566 : back to where it started
19567 if test -d ../UU; then
19568         cd ..
19569 fi
19570
19571 : configuration may be patched via a 'config.arch' file
19572 if $test -f config.arch; then
19573         echo "I see a config.arch file, loading it."
19574         . ./config.arch
19575 fi
19576
19577 : configuration may be patched via a 'config.over' file
19578 if $test -f config.over; then
19579         echo " "
19580         dflt=y
19581         rp='I see a config.over file.  Do you wish to load it?'
19582         . UU/myread
19583         case "$ans" in
19584         n*) echo "OK, I'll ignore it.";;
19585         *)      . ./config.over
19586                 echo "Configuration override changes have been loaded."
19587                 ;;
19588         esac
19589 fi
19590
19591 : in case they want portability, strip down executable paths
19592 case "$d_portable" in
19593 "$define")
19594         echo " "
19595         echo "Stripping down executable paths..." >&4
19596         for file in $loclist $trylist; do
19597                 eval temp=\$$file
19598                 eval $file=`basename $temp`
19599         done
19600         ;;
19601 esac
19602
19603 : create config.sh file
19604 echo " "
19605 echo "Creating config.sh..." >&4
19606 $spitshell <<EOT >config.sh
19607 $startsh
19608 #
19609 # This file was produced by running the Configure script. It holds all the
19610 # definitions figured out by Configure. Should you modify one of these values,
19611 # do not forget to propagate your changes by running "Configure -der". You may
19612 # instead choose to run each of the .SH files by yourself, or "Configure -S".
19613 #
19614
19615 # Package name      : $package
19616 # Source directory  : $src
19617 # Configuration time: $cf_time
19618 # Configured by     : $cf_by
19619 # Target system     : $myuname
19620
19621 Author='$Author'
19622 Date='$Date'
19623 Header='$Header'
19624 Id='$Id'
19625 Locker='$Locker'
19626 Log='$Log'
19627 Mcc='$Mcc'
19628 RCSfile='$RCSfile'
19629 Revision='$Revision'
19630 Source='$Source'
19631 State='$State'
19632 _a='$_a'
19633 _exe='$_exe'
19634 _o='$_o'
19635 afs='$afs'
19636 afsroot='$afsroot'
19637 alignbytes='$alignbytes'
19638 ansi2knr='$ansi2knr'
19639 aphostname='$aphostname'
19640 api_revision='$api_revision'
19641 api_subversion='$api_subversion'
19642 api_version='$api_version'
19643 api_versionstring='$api_versionstring'
19644 ar='$ar'
19645 archlib='$archlib'
19646 archlibexp='$archlibexp'
19647 archname64='$archname64'
19648 archname='$archname'
19649 archobjs='$archobjs'
19650 asctime_r_proto='$asctime_r_proto'
19651 awk='$awk'
19652 baserev='$baserev'
19653 bash='$bash'
19654 bin='$bin'
19655 binexp='$binexp'
19656 bison='$bison'
19657 byacc='$byacc'
19658 byteorder='$byteorder'
19659 c='$c'
19660 castflags='$castflags'
19661 cat='$cat'
19662 cc='$cc'
19663 cccdlflags='$cccdlflags'
19664 ccdlflags='$ccdlflags'
19665 ccflags='$ccflags'
19666 ccflags_uselargefiles='$ccflags_uselargefiles'
19667 ccname='$ccname'
19668 ccsymbols='$ccsymbols'
19669 ccversion='$ccversion'
19670 cf_by='$cf_by'
19671 cf_email='$cf_email'
19672 cf_time='$cf_time'
19673 charsize='$charsize'
19674 chgrp='$chgrp'
19675 chmod='$chmod'
19676 chown='$chown'
19677 clocktype='$clocktype'
19678 comm='$comm'
19679 compress='$compress'
19680 contains='$contains'
19681 cp='$cp'
19682 cpio='$cpio'
19683 cpp='$cpp'
19684 cpp_stuff='$cpp_stuff'
19685 cppccsymbols='$cppccsymbols'
19686 cppflags='$cppflags'
19687 cpplast='$cpplast'
19688 cppminus='$cppminus'
19689 cpprun='$cpprun'
19690 cppstdin='$cppstdin'
19691 cppsymbols='$cppsymbols'
19692 crypt_r_proto='$crypt_r_proto'
19693 cryptlib='$cryptlib'
19694 csh='$csh'
19695 ctermid_r_proto='$ctermid_r_proto'
19696 ctime_r_proto='$ctime_r_proto'
19697 d_Gconvert='$d_Gconvert'
19698 d_PRIEUldbl='$d_PRIEUldbl'
19699 d_PRIFUldbl='$d_PRIFUldbl'
19700 d_PRIGUldbl='$d_PRIGUldbl'
19701 d_PRIXU64='$d_PRIXU64'
19702 d_PRId64='$d_PRId64'
19703 d_PRIeldbl='$d_PRIeldbl'
19704 d_PRIfldbl='$d_PRIfldbl'
19705 d_PRIgldbl='$d_PRIgldbl'
19706 d_PRIi64='$d_PRIi64'
19707 d_PRIo64='$d_PRIo64'
19708 d_PRIu64='$d_PRIu64'
19709 d_PRIx64='$d_PRIx64'
19710 d_SCNfldbl='$d_SCNfldbl'
19711 d__fwalk='$d__fwalk'
19712 d_access='$d_access'
19713 d_accessx='$d_accessx'
19714 d_alarm='$d_alarm'
19715 d_archlib='$d_archlib'
19716 d_asctime_r='$d_asctime_r'
19717 d_atolf='$d_atolf'
19718 d_atoll='$d_atoll'
19719 d_attribut='$d_attribut'
19720 d_bcmp='$d_bcmp'
19721 d_bcopy='$d_bcopy'
19722 d_bsd='$d_bsd'
19723 d_bsdgetpgrp='$d_bsdgetpgrp'
19724 d_bsdsetpgrp='$d_bsdsetpgrp'
19725 d_bzero='$d_bzero'
19726 d_casti32='$d_casti32'
19727 d_castneg='$d_castneg'
19728 d_charvspr='$d_charvspr'
19729 d_chown='$d_chown'
19730 d_chroot='$d_chroot'
19731 d_chsize='$d_chsize'
19732 d_class='$d_class'
19733 d_closedir='$d_closedir'
19734 d_cmsghdr_s='$d_cmsghdr_s'
19735 d_const='$d_const'
19736 d_crypt='$d_crypt'
19737 d_crypt_r='$d_crypt_r'
19738 d_csh='$d_csh'
19739 d_ctermid_r='$d_ctermid_r'
19740 d_ctime_r='$d_ctime_r'
19741 d_cuserid='$d_cuserid'
19742 d_dbl_dig='$d_dbl_dig'
19743 d_dbminitproto='$d_dbminitproto'
19744 d_difftime='$d_difftime'
19745 d_dirfd='$d_dirfd'
19746 d_dirnamlen='$d_dirnamlen'
19747 d_dlerror='$d_dlerror'
19748 d_dlopen='$d_dlopen'
19749 d_dlsymun='$d_dlsymun'
19750 d_dosuid='$d_dosuid'
19751 d_drand48_r='$d_drand48_r'
19752 d_drand48proto='$d_drand48proto'
19753 d_dup2='$d_dup2'
19754 d_eaccess='$d_eaccess'
19755 d_endgrent='$d_endgrent'
19756 d_endgrent_r='$d_endgrent_r'
19757 d_endhent='$d_endhent'
19758 d_endhostent_r='$d_endhostent_r'
19759 d_endnent='$d_endnent'
19760 d_endnetent_r='$d_endnetent_r'
19761 d_endpent='$d_endpent'
19762 d_endprotoent_r='$d_endprotoent_r'
19763 d_endpwent='$d_endpwent'
19764 d_endpwent_r='$d_endpwent_r'
19765 d_endsent='$d_endsent'
19766 d_endservent_r='$d_endservent_r'
19767 d_eofnblk='$d_eofnblk'
19768 d_eunice='$d_eunice'
19769 d_fchdir='$d_fchdir'
19770 d_fchmod='$d_fchmod'
19771 d_fchown='$d_fchown'
19772 d_fcntl='$d_fcntl'
19773 d_fcntl_can_lock='$d_fcntl_can_lock'
19774 d_fd_macros='$d_fd_macros'
19775 d_fd_set='$d_fd_set'
19776 d_fds_bits='$d_fds_bits'
19777 d_fgetpos='$d_fgetpos'
19778 d_finite='$d_finite'
19779 d_finitel='$d_finitel'
19780 d_flexfnam='$d_flexfnam'
19781 d_flock='$d_flock'
19782 d_flockproto='$d_flockproto'
19783 d_fork='$d_fork'
19784 d_fp_class='$d_fp_class'
19785 d_fpathconf='$d_fpathconf'
19786 d_fpclass='$d_fpclass'
19787 d_fpclassify='$d_fpclassify'
19788 d_fpclassl='$d_fpclassl'
19789 d_fpos64_t='$d_fpos64_t'
19790 d_frexpl='$d_frexpl'
19791 d_fs_data_s='$d_fs_data_s'
19792 d_fseeko='$d_fseeko'
19793 d_fsetpos='$d_fsetpos'
19794 d_fstatfs='$d_fstatfs'
19795 d_fstatvfs='$d_fstatvfs'
19796 d_fsync='$d_fsync'
19797 d_ftello='$d_ftello'
19798 d_ftime='$d_ftime'
19799 d_getcwd='$d_getcwd'
19800 d_getespwnam='$d_getespwnam'
19801 d_getfsstat='$d_getfsstat'
19802 d_getgrent='$d_getgrent'
19803 d_getgrent_r='$d_getgrent_r'
19804 d_getgrgid_r='$d_getgrgid_r'
19805 d_getgrnam_r='$d_getgrnam_r'
19806 d_getgrps='$d_getgrps'
19807 d_gethbyaddr='$d_gethbyaddr'
19808 d_gethbyname='$d_gethbyname'
19809 d_gethent='$d_gethent'
19810 d_gethname='$d_gethname'
19811 d_gethostbyaddr_r='$d_gethostbyaddr_r'
19812 d_gethostbyname_r='$d_gethostbyname_r'
19813 d_gethostent_r='$d_gethostent_r'
19814 d_gethostprotos='$d_gethostprotos'
19815 d_getitimer='$d_getitimer'
19816 d_getlogin='$d_getlogin'
19817 d_getlogin_r='$d_getlogin_r'
19818 d_getmnt='$d_getmnt'
19819 d_getmntent='$d_getmntent'
19820 d_getnbyaddr='$d_getnbyaddr'
19821 d_getnbyname='$d_getnbyname'
19822 d_getnent='$d_getnent'
19823 d_getnetbyaddr_r='$d_getnetbyaddr_r'
19824 d_getnetbyname_r='$d_getnetbyname_r'
19825 d_getnetent_r='$d_getnetent_r'
19826 d_getnetprotos='$d_getnetprotos'
19827 d_getpagsz='$d_getpagsz'
19828 d_getpbyname='$d_getpbyname'
19829 d_getpbynumber='$d_getpbynumber'
19830 d_getpent='$d_getpent'
19831 d_getpgid='$d_getpgid'
19832 d_getpgrp2='$d_getpgrp2'
19833 d_getpgrp='$d_getpgrp'
19834 d_getppid='$d_getppid'
19835 d_getprior='$d_getprior'
19836 d_getprotobyname_r='$d_getprotobyname_r'
19837 d_getprotobynumber_r='$d_getprotobynumber_r'
19838 d_getprotoent_r='$d_getprotoent_r'
19839 d_getprotoprotos='$d_getprotoprotos'
19840 d_getprpwnam='$d_getprpwnam'
19841 d_getpwent='$d_getpwent'
19842 d_getpwent_r='$d_getpwent_r'
19843 d_getpwnam_r='$d_getpwnam_r'
19844 d_getpwuid_r='$d_getpwuid_r'
19845 d_getsbyname='$d_getsbyname'
19846 d_getsbyport='$d_getsbyport'
19847 d_getsent='$d_getsent'
19848 d_getservbyname_r='$d_getservbyname_r'
19849 d_getservbyport_r='$d_getservbyport_r'
19850 d_getservent_r='$d_getservent_r'
19851 d_getservprotos='$d_getservprotos'
19852 d_getspnam='$d_getspnam'
19853 d_getspnam_r='$d_getspnam_r'
19854 d_gettimeod='$d_gettimeod'
19855 d_gmtime_r='$d_gmtime_r'
19856 d_gnulibc='$d_gnulibc'
19857 d_grpasswd='$d_grpasswd'
19858 d_hasmntopt='$d_hasmntopt'
19859 d_htonl='$d_htonl'
19860 d_index='$d_index'
19861 d_inetaton='$d_inetaton'
19862 d_int64_t='$d_int64_t'
19863 d_isascii='$d_isascii'
19864 d_isfinite='$d_isfinite'
19865 d_isinf='$d_isinf'
19866 d_isnan='$d_isnan'
19867 d_isnanl='$d_isnanl'
19868 d_killpg='$d_killpg'
19869 d_lchown='$d_lchown'
19870 d_ldbl_dig='$d_ldbl_dig'
19871 d_link='$d_link'
19872 d_localtime_r='$d_localtime_r'
19873 d_locconv='$d_locconv'
19874 d_lockf='$d_lockf'
19875 d_longdbl='$d_longdbl'
19876 d_longlong='$d_longlong'
19877 d_lseekproto='$d_lseekproto'
19878 d_lstat='$d_lstat'
19879 d_madvise='$d_madvise'
19880 d_mblen='$d_mblen'
19881 d_mbstowcs='$d_mbstowcs'
19882 d_mbtowc='$d_mbtowc'
19883 d_memchr='$d_memchr'
19884 d_memcmp='$d_memcmp'
19885 d_memcpy='$d_memcpy'
19886 d_memmove='$d_memmove'
19887 d_memset='$d_memset'
19888 d_mkdir='$d_mkdir'
19889 d_mkdtemp='$d_mkdtemp'
19890 d_mkfifo='$d_mkfifo'
19891 d_mkstemp='$d_mkstemp'
19892 d_mkstemps='$d_mkstemps'
19893 d_mktime='$d_mktime'
19894 d_mmap='$d_mmap'
19895 d_modfl='$d_modfl'
19896 d_modfl_pow32_bug='$d_modfl_pow32_bug'
19897 d_mprotect='$d_mprotect'
19898 d_msg='$d_msg'
19899 d_msg_ctrunc='$d_msg_ctrunc'
19900 d_msg_dontroute='$d_msg_dontroute'
19901 d_msg_oob='$d_msg_oob'
19902 d_msg_peek='$d_msg_peek'
19903 d_msg_proxy='$d_msg_proxy'
19904 d_msgctl='$d_msgctl'
19905 d_msgget='$d_msgget'
19906 d_msghdr_s='$d_msghdr_s'
19907 d_msgrcv='$d_msgrcv'
19908 d_msgsnd='$d_msgsnd'
19909 d_msync='$d_msync'
19910 d_munmap='$d_munmap'
19911 d_mymalloc='$d_mymalloc'
19912 d_nice='$d_nice'
19913 d_nl_langinfo='$d_nl_langinfo'
19914 d_nv_preserves_uv='$d_nv_preserves_uv'
19915 d_off64_t='$d_off64_t'
19916 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
19917 d_oldpthreads='$d_oldpthreads'
19918 d_oldsock='$d_oldsock'
19919 d_open3='$d_open3'
19920 d_pathconf='$d_pathconf'
19921 d_pause='$d_pause'
19922 d_perl_otherlibdirs='$d_perl_otherlibdirs'
19923 d_phostname='$d_phostname'
19924 d_pipe='$d_pipe'
19925 d_poll='$d_poll'
19926 d_portable='$d_portable'
19927 d_procselfexe='$d_procselfexe'
19928 d_pthread_atfork='$d_pthread_atfork'
19929 d_pthread_yield='$d_pthread_yield'
19930 d_pwage='$d_pwage'
19931 d_pwchange='$d_pwchange'
19932 d_pwclass='$d_pwclass'
19933 d_pwcomment='$d_pwcomment'
19934 d_pwexpire='$d_pwexpire'
19935 d_pwgecos='$d_pwgecos'
19936 d_pwpasswd='$d_pwpasswd'
19937 d_pwquota='$d_pwquota'
19938 d_qgcvt='$d_qgcvt'
19939 d_quad='$d_quad'
19940 d_random_r='$d_random_r'
19941 d_readdir64_r='$d_readdir64_r'
19942 d_readdir='$d_readdir'
19943 d_readdir_r='$d_readdir_r'
19944 d_readlink='$d_readlink'
19945 d_readv='$d_readv'
19946 d_recvmsg='$d_recvmsg'
19947 d_rename='$d_rename'
19948 d_rewinddir='$d_rewinddir'
19949 d_rmdir='$d_rmdir'
19950 d_safebcpy='$d_safebcpy'
19951 d_safemcpy='$d_safemcpy'
19952 d_sanemcmp='$d_sanemcmp'
19953 d_sbrkproto='$d_sbrkproto'
19954 d_sched_yield='$d_sched_yield'
19955 d_scm_rights='$d_scm_rights'
19956 d_seekdir='$d_seekdir'
19957 d_select='$d_select'
19958 d_sem='$d_sem'
19959 d_semctl='$d_semctl'
19960 d_semctl_semid_ds='$d_semctl_semid_ds'
19961 d_semctl_semun='$d_semctl_semun'
19962 d_semget='$d_semget'
19963 d_semop='$d_semop'
19964 d_sendmsg='$d_sendmsg'
19965 d_setegid='$d_setegid'
19966 d_seteuid='$d_seteuid'
19967 d_setgrent='$d_setgrent'
19968 d_setgrent_r='$d_setgrent_r'
19969 d_setgrps='$d_setgrps'
19970 d_sethent='$d_sethent'
19971 d_sethostent_r='$d_sethostent_r'
19972 d_setitimer='$d_setitimer'
19973 d_setlinebuf='$d_setlinebuf'
19974 d_setlocale='$d_setlocale'
19975 d_setlocale_r='$d_setlocale_r'
19976 d_setnent='$d_setnent'
19977 d_setnetent_r='$d_setnetent_r'
19978 d_setpent='$d_setpent'
19979 d_setpgid='$d_setpgid'
19980 d_setpgrp2='$d_setpgrp2'
19981 d_setpgrp='$d_setpgrp'
19982 d_setprior='$d_setprior'
19983 d_setproctitle='$d_setproctitle'
19984 d_setprotoent_r='$d_setprotoent_r'
19985 d_setpwent='$d_setpwent'
19986 d_setpwent_r='$d_setpwent_r'
19987 d_setregid='$d_setregid'
19988 d_setresgid='$d_setresgid'
19989 d_setresuid='$d_setresuid'
19990 d_setreuid='$d_setreuid'
19991 d_setrgid='$d_setrgid'
19992 d_setruid='$d_setruid'
19993 d_setsent='$d_setsent'
19994 d_setservent_r='$d_setservent_r'
19995 d_setsid='$d_setsid'
19996 d_setvbuf='$d_setvbuf'
19997 d_sfio='$d_sfio'
19998 d_shm='$d_shm'
19999 d_shmat='$d_shmat'
20000 d_shmatprototype='$d_shmatprototype'
20001 d_shmctl='$d_shmctl'
20002 d_shmdt='$d_shmdt'
20003 d_shmget='$d_shmget'
20004 d_sigaction='$d_sigaction'
20005 d_sigprocmask='$d_sigprocmask'
20006 d_sigsetjmp='$d_sigsetjmp'
20007 d_sockatmark='$d_sockatmark'
20008 d_sockatmarkproto='$d_sockatmarkproto'
20009 d_socket='$d_socket'
20010 d_socklen_t='$d_socklen_t'
20011 d_sockpair='$d_sockpair'
20012 d_socks5_init='$d_socks5_init'
20013 d_sqrtl='$d_sqrtl'
20014 d_srand48_r='$d_srand48_r'
20015 d_srandom_r='$d_srandom_r'
20016 d_sresgproto='$d_sresgproto'
20017 d_sresuproto='$d_sresuproto'
20018 d_statblks='$d_statblks'
20019 d_statfs_f_flags='$d_statfs_f_flags'
20020 d_statfs_s='$d_statfs_s'
20021 d_statvfs='$d_statvfs'
20022 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20023 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20024 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20025 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20026 d_stdio_stream_array='$d_stdio_stream_array'
20027 d_stdiobase='$d_stdiobase'
20028 d_stdstdio='$d_stdstdio'
20029 d_strchr='$d_strchr'
20030 d_strcoll='$d_strcoll'
20031 d_strctcpy='$d_strctcpy'
20032 d_strerrm='$d_strerrm'
20033 d_strerror='$d_strerror'
20034 d_strerror_r='$d_strerror_r'
20035 d_strftime='$d_strftime'
20036 d_strtod='$d_strtod'
20037 d_strtol='$d_strtol'
20038 d_strtold='$d_strtold'
20039 d_strtoll='$d_strtoll'
20040 d_strtoq='$d_strtoq'
20041 d_strtoul='$d_strtoul'
20042 d_strtoull='$d_strtoull'
20043 d_strtouq='$d_strtouq'
20044 d_strxfrm='$d_strxfrm'
20045 d_suidsafe='$d_suidsafe'
20046 d_symlink='$d_symlink'
20047 d_syscall='$d_syscall'
20048 d_syscallproto='$d_syscallproto'
20049 d_sysconf='$d_sysconf'
20050 d_sysernlst='$d_sysernlst'
20051 d_syserrlst='$d_syserrlst'
20052 d_system='$d_system'
20053 d_tcgetpgrp='$d_tcgetpgrp'
20054 d_tcsetpgrp='$d_tcsetpgrp'
20055 d_telldir='$d_telldir'
20056 d_telldirproto='$d_telldirproto'
20057 d_time='$d_time'
20058 d_times='$d_times'
20059 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20060 d_tm_tm_zone='$d_tm_tm_zone'
20061 d_tmpnam_r='$d_tmpnam_r'
20062 d_truncate='$d_truncate'
20063 d_ttyname_r='$d_ttyname_r'
20064 d_tzname='$d_tzname'
20065 d_u32align='$d_u32align'
20066 d_ualarm='$d_ualarm'
20067 d_umask='$d_umask'
20068 d_uname='$d_uname'
20069 d_union_semun='$d_union_semun'
20070 d_unordered='$d_unordered'
20071 d_usleep='$d_usleep'
20072 d_usleepproto='$d_usleepproto'
20073 d_ustat='$d_ustat'
20074 d_vendorarch='$d_vendorarch'
20075 d_vendorbin='$d_vendorbin'
20076 d_vendorlib='$d_vendorlib'
20077 d_vfork='$d_vfork'
20078 d_void_closedir='$d_void_closedir'
20079 d_voidsig='$d_voidsig'
20080 d_voidtty='$d_voidtty'
20081 d_volatile='$d_volatile'
20082 d_vprintf='$d_vprintf'
20083 d_wait4='$d_wait4'
20084 d_waitpid='$d_waitpid'
20085 d_wcstombs='$d_wcstombs'
20086 d_wctomb='$d_wctomb'
20087 d_writev='$d_writev'
20088 d_xenix='$d_xenix'
20089 date='$date'
20090 db_hashtype='$db_hashtype'
20091 db_prefixtype='$db_prefixtype'
20092 db_version_major='$db_version_major'
20093 db_version_minor='$db_version_minor'
20094 db_version_patch='$db_version_patch'
20095 defvoidused='$defvoidused'
20096 direntrytype='$direntrytype'
20097 dlext='$dlext'
20098 dlsrc='$dlsrc'
20099 doublesize='$doublesize'
20100 drand01='$drand01'
20101 drand48_r_proto='$drand48_r_proto'
20102 dynamic_ext='$dynamic_ext'
20103 eagain='$eagain'
20104 ebcdic='$ebcdic'
20105 echo='$echo'
20106 egrep='$egrep'
20107 emacs='$emacs'
20108 endgrent_r_proto='$endgrent_r_proto'
20109 endhostent_r_proto='$endhostent_r_proto'
20110 endnetent_r_proto='$endnetent_r_proto'
20111 endprotoent_r_proto='$endprotoent_r_proto'
20112 endpwent_r_proto='$endpwent_r_proto'
20113 endservent_r_proto='$endservent_r_proto'
20114 eunicefix='$eunicefix'
20115 exe_ext='$exe_ext'
20116 expr='$expr'
20117 extensions='$extensions'
20118 extras='$extras'
20119 fflushNULL='$fflushNULL'
20120 fflushall='$fflushall'
20121 find='$find'
20122 firstmakefile='$firstmakefile'
20123 flex='$flex'
20124 fpossize='$fpossize'
20125 fpostype='$fpostype'
20126 freetype='$freetype'
20127 from='$from'
20128 full_ar='$full_ar'
20129 full_csh='$full_csh'
20130 full_sed='$full_sed'
20131 gccosandvers='$gccosandvers'
20132 gccversion='$gccversion'
20133 getgrent_r_proto='$getgrent_r_proto'
20134 getgrgid_r_proto='$getgrgid_r_proto'
20135 getgrnam_r_proto='$getgrnam_r_proto'
20136 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20137 gethostbyname_r_proto='$gethostbyname_r_proto'
20138 gethostent_r_proto='$gethostent_r_proto'
20139 getlogin_r_proto='$getlogin_r_proto'
20140 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20141 getnetbyname_r_proto='$getnetbyname_r_proto'
20142 getnetent_r_proto='$getnetent_r_proto'
20143 getprotobyname_r_proto='$getprotobyname_r_proto'
20144 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20145 getprotoent_r_proto='$getprotoent_r_proto'
20146 getpwent_r_proto='$getpwent_r_proto'
20147 getpwnam_r_proto='$getpwnam_r_proto'
20148 getpwuid_r_proto='$getpwuid_r_proto'
20149 getservbyname_r_proto='$getservbyname_r_proto'
20150 getservbyport_r_proto='$getservbyport_r_proto'
20151 getservent_r_proto='$getservent_r_proto'
20152 getspnam_r_proto='$getspnam_r_proto'
20153 gidformat='$gidformat'
20154 gidsign='$gidsign'
20155 gidsize='$gidsize'
20156 gidtype='$gidtype'
20157 glibpth='$glibpth'
20158 gmake='$gmake'
20159 gmtime_r_proto='$gmtime_r_proto'
20160 gnulibc_version='$gnulibc_version'
20161 grep='$grep'
20162 groupcat='$groupcat'
20163 groupstype='$groupstype'
20164 gzip='$gzip'
20165 h_fcntl='$h_fcntl'
20166 h_sysfile='$h_sysfile'
20167 hint='$hint'
20168 hostcat='$hostcat'
20169 i16size='$i16size'
20170 i16type='$i16type'
20171 i32size='$i32size'
20172 i32type='$i32type'
20173 i64size='$i64size'
20174 i64type='$i64type'
20175 i8size='$i8size'
20176 i8type='$i8type'
20177 i_arpainet='$i_arpainet'
20178 i_bsdioctl='$i_bsdioctl'
20179 i_crypt='$i_crypt'
20180 i_db='$i_db'
20181 i_dbm='$i_dbm'
20182 i_dirent='$i_dirent'
20183 i_dld='$i_dld'
20184 i_dlfcn='$i_dlfcn'
20185 i_fcntl='$i_fcntl'
20186 i_float='$i_float'
20187 i_fp='$i_fp'
20188 i_fp_class='$i_fp_class'
20189 i_gdbm='$i_gdbm'
20190 i_grp='$i_grp'
20191 i_ieeefp='$i_ieeefp'
20192 i_inttypes='$i_inttypes'
20193 i_langinfo='$i_langinfo'
20194 i_libutil='$i_libutil'
20195 i_limits='$i_limits'
20196 i_locale='$i_locale'
20197 i_machcthr='$i_machcthr'
20198 i_malloc='$i_malloc'
20199 i_math='$i_math'
20200 i_memory='$i_memory'
20201 i_mntent='$i_mntent'
20202 i_ndbm='$i_ndbm'
20203 i_netdb='$i_netdb'
20204 i_neterrno='$i_neterrno'
20205 i_netinettcp='$i_netinettcp'
20206 i_niin='$i_niin'
20207 i_poll='$i_poll'
20208 i_prot='$i_prot'
20209 i_pthread='$i_pthread'
20210 i_pwd='$i_pwd'
20211 i_rpcsvcdbm='$i_rpcsvcdbm'
20212 i_sfio='$i_sfio'
20213 i_sgtty='$i_sgtty'
20214 i_shadow='$i_shadow'
20215 i_socks='$i_socks'
20216 i_stdarg='$i_stdarg'
20217 i_stddef='$i_stddef'
20218 i_stdlib='$i_stdlib'
20219 i_string='$i_string'
20220 i_sunmath='$i_sunmath'
20221 i_sysaccess='$i_sysaccess'
20222 i_sysdir='$i_sysdir'
20223 i_sysfile='$i_sysfile'
20224 i_sysfilio='$i_sysfilio'
20225 i_sysin='$i_sysin'
20226 i_sysioctl='$i_sysioctl'
20227 i_syslog='$i_syslog'
20228 i_sysmman='$i_sysmman'
20229 i_sysmode='$i_sysmode'
20230 i_sysmount='$i_sysmount'
20231 i_sysndir='$i_sysndir'
20232 i_sysparam='$i_sysparam'
20233 i_sysresrc='$i_sysresrc'
20234 i_syssecrt='$i_syssecrt'
20235 i_sysselct='$i_sysselct'
20236 i_syssockio='$i_syssockio'
20237 i_sysstat='$i_sysstat'
20238 i_sysstatfs='$i_sysstatfs'
20239 i_sysstatvfs='$i_sysstatvfs'
20240 i_systime='$i_systime'
20241 i_systimek='$i_systimek'
20242 i_systimes='$i_systimes'
20243 i_systypes='$i_systypes'
20244 i_sysuio='$i_sysuio'
20245 i_sysun='$i_sysun'
20246 i_sysutsname='$i_sysutsname'
20247 i_sysvfs='$i_sysvfs'
20248 i_syswait='$i_syswait'
20249 i_termio='$i_termio'
20250 i_termios='$i_termios'
20251 i_time='$i_time'
20252 i_unistd='$i_unistd'
20253 i_ustat='$i_ustat'
20254 i_utime='$i_utime'
20255 i_values='$i_values'
20256 i_varargs='$i_varargs'
20257 i_varhdr='$i_varhdr'
20258 i_vfork='$i_vfork'
20259 ignore_versioned_solibs='$ignore_versioned_solibs'
20260 inc_version_list='$inc_version_list'
20261 inc_version_list_init='$inc_version_list_init'
20262 incpath='$incpath'
20263 inews='$inews'
20264 installarchlib='$installarchlib'
20265 installbin='$installbin'
20266 installman1dir='$installman1dir'
20267 installman3dir='$installman3dir'
20268 installprefix='$installprefix'
20269 installprefixexp='$installprefixexp'
20270 installprivlib='$installprivlib'
20271 installscript='$installscript'
20272 installsitearch='$installsitearch'
20273 installsitebin='$installsitebin'
20274 installsitelib='$installsitelib'
20275 installstyle='$installstyle'
20276 installusrbinperl='$installusrbinperl'
20277 installvendorarch='$installvendorarch'
20278 installvendorbin='$installvendorbin'
20279 installvendorlib='$installvendorlib'
20280 intsize='$intsize'
20281 issymlink='$issymlink'
20282 ivdformat='$ivdformat'
20283 ivsize='$ivsize'
20284 ivtype='$ivtype'
20285 known_extensions='$known_extensions'
20286 ksh='$ksh'
20287 ld='$ld'
20288 lddlflags='$lddlflags'
20289 ldflags='$ldflags'
20290 ldflags_uselargefiles='$ldflags_uselargefiles'
20291 ldlibpthname='$ldlibpthname'
20292 less='$less'
20293 lib_ext='$lib_ext'
20294 libc='$libc'
20295 libperl='$libperl'
20296 libpth='$libpth'
20297 libs='$libs'
20298 libsdirs='$libsdirs'
20299 libsfiles='$libsfiles'
20300 libsfound='$libsfound'
20301 libspath='$libspath'
20302 libswanted='$libswanted'
20303 libswanted_uselargefiles='$libswanted_uselargefiles'
20304 line='$line'
20305 lint='$lint'
20306 lkflags='$lkflags'
20307 ln='$ln'
20308 lns='$lns'
20309 localtime_r_proto='$localtime_r_proto'
20310 locincpth='$locincpth'
20311 loclibpth='$loclibpth'
20312 longdblsize='$longdblsize'
20313 longlongsize='$longlongsize'
20314 longsize='$longsize'
20315 lp='$lp'
20316 lpr='$lpr'
20317 ls='$ls'
20318 lseeksize='$lseeksize'
20319 lseektype='$lseektype'
20320 mail='$mail'
20321 mailx='$mailx'
20322 make='$make'
20323 make_set_make='$make_set_make'
20324 mallocobj='$mallocobj'
20325 mallocsrc='$mallocsrc'
20326 malloctype='$malloctype'
20327 man1dir='$man1dir'
20328 man1direxp='$man1direxp'
20329 man1ext='$man1ext'
20330 man3dir='$man3dir'
20331 man3direxp='$man3direxp'
20332 man3ext='$man3ext'
20333 mips_type='$mips_type'
20334 mkdir='$mkdir'
20335 mmaptype='$mmaptype'
20336 modetype='$modetype'
20337 more='$more'
20338 multiarch='$multiarch'
20339 mv='$mv'
20340 myarchname='$myarchname'
20341 mydomain='$mydomain'
20342 myhostname='$myhostname'
20343 myuname='$myuname'
20344 n='$n'
20345 need_va_copy='$need_va_copy'
20346 netdb_hlen_type='$netdb_hlen_type'
20347 netdb_host_type='$netdb_host_type'
20348 netdb_name_type='$netdb_name_type'
20349 netdb_net_type='$netdb_net_type'
20350 nm='$nm'
20351 nm_opt='$nm_opt'
20352 nm_so_opt='$nm_so_opt'
20353 nonxs_ext='$nonxs_ext'
20354 nroff='$nroff'
20355 nvEUformat='$nvEUformat'
20356 nvFUformat='$nvFUformat'
20357 nvGUformat='$nvGUformat'
20358 nv_preserves_uv_bits='$nv_preserves_uv_bits'
20359 nveformat='$nveformat'
20360 nvfformat='$nvfformat'
20361 nvgformat='$nvgformat'
20362 nvsize='$nvsize'
20363 nvtype='$nvtype'
20364 o_nonblock='$o_nonblock'
20365 obj_ext='$obj_ext'
20366 old_pthread_create_joinable='$old_pthread_create_joinable'
20367 optimize='$optimize'
20368 orderlib='$orderlib'
20369 osname='$osname'
20370 osvers='$osvers'
20371 otherlibdirs='$otherlibdirs'
20372 package='$package'
20373 pager='$pager'
20374 passcat='$passcat'
20375 patchlevel='$patchlevel'
20376 path_sep='$path_sep'
20377 perl5='$perl5'
20378 perl='$perl'
20379 perl_patchlevel='$perl_patchlevel'
20380 perladmin='$perladmin'
20381 perllibs='$perllibs'
20382 perlpath='$perlpath'
20383 pg='$pg'
20384 phostname='$phostname'
20385 pidtype='$pidtype'
20386 plibpth='$plibpth'
20387 pm_apiversion='$pm_apiversion'
20388 pmake='$pmake'
20389 pr='$pr'
20390 prefix='$prefix'
20391 prefixexp='$prefixexp'
20392 privlib='$privlib'
20393 privlibexp='$privlibexp'
20394 procselfexe='$procselfexe'
20395 prototype='$prototype'
20396 ptrsize='$ptrsize'
20397 quadkind='$quadkind'
20398 quadtype='$quadtype'
20399 randbits='$randbits'
20400 randfunc='$randfunc'
20401 random_r_proto='$random_r_proto'
20402 randseedtype='$randseedtype'
20403 ranlib='$ranlib'
20404 rd_nodata='$rd_nodata'
20405 readdir64_r_proto='$readdir64_r_proto'
20406 readdir_r_proto='$readdir_r_proto'
20407 revision='$revision'
20408 rm='$rm'
20409 rmail='$rmail'
20410 run='$run'
20411 runnm='$runnm'
20412 sPRIEUldbl='$sPRIEUldbl'
20413 sPRIFUldbl='$sPRIFUldbl'
20414 sPRIGUldbl='$sPRIGUldbl'
20415 sPRIXU64='$sPRIXU64'
20416 sPRId64='$sPRId64'
20417 sPRIeldbl='$sPRIeldbl'
20418 sPRIfldbl='$sPRIfldbl'
20419 sPRIgldbl='$sPRIgldbl'
20420 sPRIi64='$sPRIi64'
20421 sPRIo64='$sPRIo64'
20422 sPRIu64='$sPRIu64'
20423 sPRIx64='$sPRIx64'
20424 sSCNfldbl='$sSCNfldbl'
20425 sched_yield='$sched_yield'
20426 scriptdir='$scriptdir'
20427 scriptdirexp='$scriptdirexp'
20428 sed='$sed'
20429 seedfunc='$seedfunc'
20430 selectminbits='$selectminbits'
20431 selecttype='$selecttype'
20432 sendmail='$sendmail'
20433 setgrent_r_proto='$setgrent_r_proto'
20434 sethostent_r_proto='$sethostent_r_proto'
20435 setlocale_r_proto='$setlocale_r_proto'
20436 setnetent_r_proto='$setnetent_r_proto'
20437 setprotoent_r_proto='$setprotoent_r_proto'
20438 setpwent_r_proto='$setpwent_r_proto'
20439 setservent_r_proto='$setservent_r_proto'
20440 sh='$sh'
20441 shar='$shar'
20442 sharpbang='$sharpbang'
20443 shmattype='$shmattype'
20444 shortsize='$shortsize'
20445 shrpenv='$shrpenv'
20446 shsharp='$shsharp'
20447 sig_count='$sig_count'
20448 sig_name='$sig_name'
20449 sig_name_init='$sig_name_init'
20450 sig_num='$sig_num'
20451 sig_num_init='$sig_num_init'
20452 sig_size='$sig_size'
20453 signal_t='$signal_t'
20454 sitearch='$sitearch'
20455 sitearchexp='$sitearchexp'
20456 sitebin='$sitebin'
20457 sitebinexp='$sitebinexp'
20458 sitelib='$sitelib'
20459 sitelib_stem='$sitelib_stem'
20460 sitelibexp='$sitelibexp'
20461 siteprefix='$siteprefix'
20462 siteprefixexp='$siteprefixexp'
20463 sizesize='$sizesize'
20464 sizetype='$sizetype'
20465 sleep='$sleep'
20466 smail='$smail'
20467 so='$so'
20468 sockethdr='$sockethdr'
20469 socketlib='$socketlib'
20470 socksizetype='$socksizetype'
20471 sort='$sort'
20472 spackage='$spackage'
20473 spitshell='$spitshell'
20474 srand48_r_proto='$srand48_r_proto'
20475 srandom_r_proto='$srandom_r_proto'
20476 src='$src'
20477 ssizetype='$ssizetype'
20478 startperl='$startperl'
20479 startsh='$startsh'
20480 static_ext='$static_ext'
20481 stdchar='$stdchar'
20482 stdio_base='$stdio_base'
20483 stdio_bufsiz='$stdio_bufsiz'
20484 stdio_cnt='$stdio_cnt'
20485 stdio_filbuf='$stdio_filbuf'
20486 stdio_ptr='$stdio_ptr'
20487 stdio_stream_array='$stdio_stream_array'
20488 strerror_r_proto='$strerror_r_proto'
20489 strings='$strings'
20490 submit='$submit'
20491 subversion='$subversion'
20492 sysman='$sysman'
20493 tail='$tail'
20494 tar='$tar'
20495 targetarch='$targetarch'
20496 tbl='$tbl'
20497 tee='$tee'
20498 test='$test'
20499 timeincl='$timeincl'
20500 timetype='$timetype'
20501 tmpnam_r_proto='$tmpnam_r_proto'
20502 to='$to'
20503 touch='$touch'
20504 tr='$tr'
20505 trnl='$trnl'
20506 troff='$troff'
20507 ttyname_r_proto='$ttyname_r_proto'
20508 u16size='$u16size'
20509 u16type='$u16type'
20510 u32size='$u32size'
20511 u32type='$u32type'
20512 u64size='$u64size'
20513 u64type='$u64type'
20514 u8size='$u8size'
20515 u8type='$u8type'
20516 uidformat='$uidformat'
20517 uidsign='$uidsign'
20518 uidsize='$uidsize'
20519 uidtype='$uidtype'
20520 uname='$uname'
20521 uniq='$uniq'
20522 uquadtype='$uquadtype'
20523 use5005threads='$use5005threads'
20524 use64bitall='$use64bitall'
20525 use64bitint='$use64bitint'
20526 usecrosscompile='$usecrosscompile'
20527 usedl='$usedl'
20528 useithreads='$useithreads'
20529 uselargefiles='$uselargefiles'
20530 uselongdouble='$uselongdouble'
20531 usemorebits='$usemorebits'
20532 usemultiplicity='$usemultiplicity'
20533 usemymalloc='$usemymalloc'
20534 usenm='$usenm'
20535 useopcode='$useopcode'
20536 useperlio='$useperlio'
20537 useposix='$useposix'
20538 usereentrant='$usereentrant'
20539 usesfio='$usesfio'
20540 useshrplib='$useshrplib'
20541 usesocks='$usesocks'
20542 usethreads='$usethreads'
20543 usevendorprefix='$usevendorprefix'
20544 usevfork='$usevfork'
20545 usrinc='$usrinc'
20546 uuname='$uuname'
20547 uvXUformat='$uvXUformat'
20548 uvoformat='$uvoformat'
20549 uvsize='$uvsize'
20550 uvtype='$uvtype'
20551 uvuformat='$uvuformat'
20552 uvxformat='$uvxformat'
20553 vendorarch='$vendorarch'
20554 vendorarchexp='$vendorarchexp'
20555 vendorbin='$vendorbin'
20556 vendorbinexp='$vendorbinexp'
20557 vendorlib='$vendorlib'
20558 vendorlib_stem='$vendorlib_stem'
20559 vendorlibexp='$vendorlibexp'
20560 vendorprefix='$vendorprefix'
20561 vendorprefixexp='$vendorprefixexp'
20562 version='$version'
20563 version_patchlevel_string='$version_patchlevel_string'
20564 versiononly='$versiononly'
20565 vi='$vi'
20566 voidflags='$voidflags'
20567 xlibpth='$xlibpth'
20568 xs_apiversion='$xs_apiversion'
20569 yacc='$yacc'
20570 yaccflags='$yaccflags'
20571 zcat='$zcat'
20572 zip='$zip'
20573 EOT
20574
20575 : Add in command line options if available
20576 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
20577
20578 : add special variables
20579 $test -f $src/patchlevel.h && \
20580 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
20581 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
20582 echo "PERL_CONFIG_SH=true" >>config.sh
20583
20584 : propagate old symbols
20585 if $test -f UU/config.sh; then
20586         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
20587         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
20588         $sort | $uniq -u >UU/oldsyms
20589         set X `cat UU/oldsyms`
20590         shift
20591         case $# in
20592         0) ;;
20593         *)
20594                 cat <<EOM
20595 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
20596 EOM
20597                 echo "# Variables propagated from previous config.sh file." >>config.sh
20598                 for sym in `cat UU/oldsyms`; do
20599                         echo "    Propagating $hint variable "'$'"$sym..."
20600                         eval 'tmp="$'"${sym}"'"'
20601                         echo "$tmp" | \
20602                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
20603                 done
20604                 ;;
20605         esac
20606 fi
20607
20608 : Finish up by extracting the .SH files
20609 case "$alldone" in
20610 exit)
20611         $rm -rf UU
20612         echo "Extraction done."
20613         exit 0
20614         ;;
20615 cont)
20616         ;;
20617 '')
20618         dflt=''
20619         nostick=true
20620         $cat <<EOM
20621
20622 If you'd like to make any changes to the config.sh file before I begin
20623 to configure things, do it as a shell escape now (e.g. !vi config.sh).
20624
20625 EOM
20626         rp="Press return or use a shell escape to edit config.sh:"
20627         . UU/myread
20628         nostick=''
20629         case "$ans" in
20630         '') ;;
20631         *) : in case they cannot read
20632                 sh 1>&4 -c "$ans";;
20633         esac
20634         ;;
20635 esac
20636
20637 : if this fails, just run all the .SH files by hand
20638 . ./config.sh
20639
20640 echo " "
20641 exec 1>&4
20642 pwd=`pwd`
20643 . ./UU/extract
20644 cd "$pwd"
20645
20646 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
20647         dflt=y
20648         case "$silent" in
20649         true) ;;
20650         *)
20651                 $cat <<EOM
20652
20653 Now you need to generate make dependencies by running "$make depend".
20654 You might prefer to run it in background: "$make depend > makedepend.out &"
20655 It can take a while, so you might not want to run it right now.
20656
20657 EOM
20658                 ;;
20659         esac
20660         rp="Run $make depend now?"
20661         . UU/myread
20662         case "$ans" in
20663         y*)
20664                 $make depend && echo "Now you must run '$make'."
20665                 ;;
20666         *)
20667                 echo "You must run '$make depend' then '$make'."
20668                 ;;
20669         esac
20670 elif test -f [Mm]akefile; then
20671         echo " "
20672         echo "Now you must run a $make."
20673 else
20674         echo "Configure done."
20675 fi
20676
20677 if $test -f Policy.sh; then
20678     $cat <<EOM
20679
20680 If you compile $package on a different machine or from a different object
20681 directory, copy the Policy.sh file from this object directory to the
20682 new one before you run Configure -- this will help you with most of
20683 the policy defaults.
20684
20685 EOM
20686 fi
20687 if $test -f config.msg; then
20688     echo "Hmm.  I also noted the following information while running:"
20689     echo " "
20690     $cat config.msg >&4
20691     $rm -f config.msg
20692 fi
20693 $rm -f kit*isdone ark*isdone
20694 $rm -rf UU
20695
20696 : End of Configure
20697