This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Optimise for (reverse ...)
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Wed May 12 13:00:30 METDST 2004 [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 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 mistrustnm=''
192 perllibs=''
193 dynamic_ext=''
194 extensions=''
195 known_extensions=''
196 nonxs_ext=''
197 static_ext=''
198 useopcode=''
199 useposix=''
200 extras=''
201 d_bsd=''
202 d_eunice=''
203 d_xenix=''
204 eunicefix=''
205 Mcc=''
206 ar=''
207 awk=''
208 bash=''
209 bison=''
210 byacc=''
211 cat=''
212 chgrp=''
213 chmod=''
214 chown=''
215 comm=''
216 compress=''
217 cp=''
218 cpio=''
219 cpp=''
220 csh=''
221 date=''
222 echo=''
223 egrep=''
224 emacs=''
225 expr=''
226 find=''
227 flex=''
228 gmake=''
229 grep=''
230 gzip=''
231 inews=''
232 ksh=''
233 less=''
234 line=''
235 lint=''
236 ln=''
237 lp=''
238 lpr=''
239 ls=''
240 mail=''
241 mailx=''
242 make=''
243 mkdir=''
244 more=''
245 mv=''
246 nm=''
247 nroff=''
248 perl=''
249 pg=''
250 pmake=''
251 pr=''
252 rm=''
253 rmail=''
254 sed=''
255 sendmail=''
256 shar=''
257 sleep=''
258 smail=''
259 sort=''
260 submit=''
261 tail=''
262 tar=''
263 tbl=''
264 tee=''
265 test=''
266 touch=''
267 tr=''
268 troff=''
269 uname=''
270 uniq=''
271 uuname=''
272 vi=''
273 zcat=''
274 zip=''
275 full_ar=''
276 full_sed=''
277 libswanted=''
278 hint=''
279 myuname=''
280 osname=''
281 osvers=''
282 Author=''
283 Date=''
284 Header=''
285 Id=''
286 Locker=''
287 Log=''
288 RCSfile=''
289 Revision=''
290 Source=''
291 State=''
292 _a=''
293 _exe=''
294 _o=''
295 archobjs=''
296 exe_ext=''
297 firstmakefile=''
298 lib_ext=''
299 obj_ext=''
300 path_sep=''
301 afs=''
302 afsroot=''
303 alignbytes=''
304 ansi2knr=''
305 archlib=''
306 archlibexp=''
307 d_archlib=''
308 installarchlib=''
309 archname=''
310 myarchname=''
311 d_atolf=''
312 d_atoll=''
313 baserev=''
314 bin=''
315 binexp=''
316 installbin=''
317 byteorder=''
318 cc=''
319 ccflags=''
320 cppflags=''
321 ldflags=''
322 lkflags=''
323 locincpth=''
324 optimize=''
325 cf_email=''
326 cf_by=''
327 cf_time=''
328 charsize=''
329 contains=''
330 cpp_stuff=''
331 cpplast=''
332 cppminus=''
333 cpprun=''
334 cppstdin=''
335 d__fwalk=''
336 d_access=''
337 d_accessx=''
338 d_aintl=''
339 d_alarm=''
340 asctime_r_proto=''
341 d_asctime_r=''
342 d_attribut=''
343 d_bcmp=''
344 d_bcopy=''
345 d_bzero=''
346 d_casti32=''
347 castflags=''
348 d_castneg=''
349 d_chown=''
350 d_chroot=''
351 d_chsize=''
352 d_class=''
353 d_closedir=''
354 d_void_closedir=''
355 d_cmsghdr_s=''
356 d_const=''
357 d_copysignl=''
358 cryptlib=''
359 d_crypt=''
360 crypt_r_proto=''
361 d_crypt_r=''
362 d_csh=''
363 full_csh=''
364 ctermid_r_proto=''
365 d_ctermid_r=''
366 ctime_r_proto=''
367 d_ctime_r=''
368 d_cuserid=''
369 d_dbl_dig=''
370 d_dbminitproto=''
371 d_difftime=''
372 d_dirfd=''
373 d_dlerror=''
374 d_dlopen=''
375 d_dlsymun=''
376 d_dosuid=''
377 d_suidsafe=''
378 d_drand48_r=''
379 drand48_r_proto=''
380 d_drand48proto=''
381 d_dup2=''
382 d_eaccess=''
383 d_endgrent=''
384 d_endgrent_r=''
385 endgrent_r_proto=''
386 d_endhent=''
387 d_endhostent_r=''
388 endhostent_r_proto=''
389 d_endnent=''
390 d_endnetent_r=''
391 endnetent_r_proto=''
392 d_endpent=''
393 d_endprotoent_r=''
394 endprotoent_r_proto=''
395 d_endpwent=''
396 d_endpwent_r=''
397 endpwent_r_proto=''
398 d_endsent=''
399 d_endservent_r=''
400 endservent_r_proto=''
401 d_faststdio=''
402 d_fchdir=''
403 d_fchmod=''
404 d_fchown=''
405 d_fcntl=''
406 d_fcntl_can_lock=''
407 d_fd_macros=''
408 d_fd_set=''
409 d_fds_bits=''
410 d_fgetpos=''
411 d_finite=''
412 d_finitel=''
413 d_flexfnam=''
414 d_flock=''
415 d_flockproto=''
416 d_fork=''
417 d_fp_class=''
418 d_fpclass=''
419 d_fpclassify=''
420 d_fpclassl=''
421 d_fpos64_t=''
422 d_frexpl=''
423 d_fs_data_s=''
424 d_fseeko=''
425 d_fsetpos=''
426 d_fstatfs=''
427 d_fsync=''
428 d_ftello=''
429 d_ftime=''
430 d_gettimeod=''
431 d_Gconvert=''
432 d_getcwd=''
433 d_getespwnam=''
434 d_getfsstat=''
435 d_getgrent=''
436 d_getgrent_r=''
437 getgrent_r_proto=''
438 d_getgrgid_r=''
439 getgrgid_r_proto=''
440 d_getgrnam_r=''
441 getgrnam_r_proto=''
442 d_getgrps=''
443 d_gethbyaddr=''
444 d_gethbyname=''
445 d_gethent=''
446 aphostname=''
447 d_gethname=''
448 d_phostname=''
449 d_uname=''
450 d_gethostbyaddr_r=''
451 gethostbyaddr_r_proto=''
452 d_gethostbyname_r=''
453 gethostbyname_r_proto=''
454 d_gethostent_r=''
455 gethostent_r_proto=''
456 d_gethostprotos=''
457 d_getitimer=''
458 d_getlogin=''
459 d_getlogin_r=''
460 getlogin_r_proto=''
461 d_getmnt=''
462 d_getmntent=''
463 d_getnbyaddr=''
464 d_getnbyname=''
465 d_getnent=''
466 d_getnetbyaddr_r=''
467 getnetbyaddr_r_proto=''
468 d_getnetbyname_r=''
469 getnetbyname_r_proto=''
470 d_getnetent_r=''
471 getnetent_r_proto=''
472 d_getnetprotos=''
473 d_getpagsz=''
474 d_getpent=''
475 d_getpgid=''
476 d_getpgrp2=''
477 d_bsdgetpgrp=''
478 d_getpgrp=''
479 d_getppid=''
480 d_getprior=''
481 d_getpbyname=''
482 d_getpbynumber=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
487 d_getprotoent_r=''
488 getprotoent_r_proto=''
489 d_getprotoprotos=''
490 d_getprpwnam=''
491 d_getpwent=''
492 d_getpwent_r=''
493 getpwent_r_proto=''
494 d_getpwnam_r=''
495 getpwnam_r_proto=''
496 d_getpwuid_r=''
497 getpwuid_r_proto=''
498 d_getsent=''
499 d_getservbyname_r=''
500 getservbyname_r_proto=''
501 d_getservbyport_r=''
502 getservbyport_r_proto=''
503 d_getservent_r=''
504 getservent_r_proto=''
505 d_getservprotos=''
506 d_getspnam=''
507 d_getspnam_r=''
508 getspnam_r_proto=''
509 d_getsbyname=''
510 d_getsbyport=''
511 d_gmtime_r=''
512 gmtime_r_proto=''
513 d_gnulibc=''
514 gnulibc_version=''
515 d_hasmntopt=''
516 d_htonl=''
517 d_ilogbl=''
518 d_inetaton=''
519 d_int64_t=''
520 d_isascii=''
521 d_isfinite=''
522 d_isinf=''
523 d_isnan=''
524 d_isnanl=''
525 d_killpg=''
526 d_lchown=''
527 d_ldbl_dig=''
528 d_link=''
529 d_localtime_r=''
530 localtime_r_proto=''
531 d_locconv=''
532 d_lockf=''
533 d_longdbl=''
534 longdblsize=''
535 d_longlong=''
536 longlongsize=''
537 d_lseekproto=''
538 d_lstat=''
539 d_madvise=''
540 d_mblen=''
541 d_mbstowcs=''
542 d_mbtowc=''
543 d_memchr=''
544 d_memcmp=''
545 d_memcpy=''
546 d_memmove=''
547 d_memset=''
548 d_mkdir=''
549 d_mkdtemp=''
550 d_mkfifo=''
551 d_mkstemp=''
552 d_mkstemps=''
553 d_mktime=''
554 d_mmap=''
555 mmaptype=''
556 d_modfl=''
557 d_modfl_pow32_bug=''
558 d_modflproto=''
559 d_mprotect=''
560 d_msg=''
561 d_msgctl=''
562 d_msgget=''
563 d_msghdr_s=''
564 d_msgrcv=''
565 d_msgsnd=''
566 d_msync=''
567 d_munmap=''
568 d_nice=''
569 d_nl_langinfo=''
570 d_off64_t=''
571 d_open3=''
572 d_fpathconf=''
573 d_pathconf=''
574 d_pause=''
575 d_pipe=''
576 d_poll=''
577 d_portable=''
578 d_procselfexe=''
579 procselfexe=''
580 d_old_pthread_create_joinable=''
581 old_pthread_create_joinable=''
582 d_pthread_atfork=''
583 d_pthread_attr_setscope=''
584 d_pthread_yield=''
585 d_sched_yield=''
586 sched_yield=''
587 d_qgcvt=''
588 d_random_r=''
589 random_r_proto=''
590 d_readdir64_r=''
591 readdir64_r_proto=''
592 d_readdir=''
593 d_rewinddir=''
594 d_seekdir=''
595 d_telldir=''
596 d_readdir_r=''
597 readdir_r_proto=''
598 d_readlink=''
599 d_readv=''
600 d_recvmsg=''
601 d_rename=''
602 d_rmdir=''
603 d_safebcpy=''
604 d_safemcpy=''
605 d_sanemcmp=''
606 d_sbrkproto=''
607 d_scalbnl=''
608 d_select=''
609 d_sem=''
610 d_semctl=''
611 d_semget=''
612 d_semop=''
613 d_sendmsg=''
614 d_setegid=''
615 d_seteuid=''
616 d_setgrent=''
617 d_setgrent_r=''
618 setgrent_r_proto=''
619 d_setgrps=''
620 d_sethent=''
621 d_sethostent_r=''
622 sethostent_r_proto=''
623 d_setitimer=''
624 d_setlinebuf=''
625 d_setlocale=''
626 d_setlocale_r=''
627 setlocale_r_proto=''
628 d_setnent=''
629 d_setnetent_r=''
630 setnetent_r_proto=''
631 d_setpent=''
632 d_setpgid=''
633 d_setpgrp2=''
634 d_bsdsetpgrp=''
635 d_setpgrp=''
636 d_setprior=''
637 d_setproctitle=''
638 d_setprotoent_r=''
639 setprotoent_r_proto=''
640 d_setpwent=''
641 d_setpwent_r=''
642 setpwent_r_proto=''
643 d_setregid=''
644 d_setresgid=''
645 d_setresuid=''
646 d_setreuid=''
647 d_setrgid=''
648 d_setruid=''
649 d_setsent=''
650 d_setservent_r=''
651 setservent_r_proto=''
652 d_setsid=''
653 d_setvbuf=''
654 d_sfio=''
655 usesfio=''
656 d_shm=''
657 d_shmat=''
658 d_shmatprototype=''
659 shmattype=''
660 d_shmctl=''
661 d_shmdt=''
662 d_shmget=''
663 d_sigaction=''
664 d_sigprocmask=''
665 d_sigsetjmp=''
666 d_sockatmark=''
667 d_sockatmarkproto=''
668 d_msg_ctrunc=''
669 d_msg_dontroute=''
670 d_msg_oob=''
671 d_msg_peek=''
672 d_msg_proxy=''
673 d_oldsock=''
674 d_scm_rights=''
675 d_socket=''
676 d_sockpair=''
677 sockethdr=''
678 socketlib=''
679 d_socklen_t=''
680 d_socks5_init=''
681 d_sqrtl=''
682 d_srand48_r=''
683 srand48_r_proto=''
684 d_srandom_r=''
685 srandom_r_proto=''
686 d_sresgproto=''
687 d_sresuproto=''
688 d_statblks=''
689 d_statfs_f_flags=''
690 d_statfs_s=''
691 d_fstatvfs=''
692 d_statvfs=''
693 d_stdio_cnt_lval=''
694 d_stdio_ptr_lval=''
695 d_stdio_ptr_lval_nochange_cnt=''
696 d_stdio_ptr_lval_sets_cnt=''
697 d_stdiobase=''
698 d_stdstdio=''
699 stdio_base=''
700 stdio_bufsiz=''
701 stdio_cnt=''
702 stdio_filbuf=''
703 stdio_ptr=''
704 d_index=''
705 d_strchr=''
706 d_strcoll=''
707 d_strctcpy=''
708 d_strerrm=''
709 d_strerror=''
710 d_sysernlst=''
711 d_syserrlst=''
712 d_strerror_r=''
713 strerror_r_proto=''
714 d_strftime=''
715 d_strtod=''
716 d_strtol=''
717 d_strtold=''
718 d_strtoll=''
719 d_strtoq=''
720 d_strtoul=''
721 d_strtoull=''
722 d_strtouq=''
723 d_strxfrm=''
724 d_symlink=''
725 d_syscall=''
726 d_syscallproto=''
727 d_sysconf=''
728 d_system=''
729 d_tcgetpgrp=''
730 d_tcsetpgrp=''
731 d_telldirproto=''
732 d_time=''
733 timetype=''
734 clocktype=''
735 d_times=''
736 d_tmpnam_r=''
737 tmpnam_r_proto=''
738 d_truncate=''
739 d_ttyname_r=''
740 ttyname_r_proto=''
741 d_tzname=''
742 d_u32align=''
743 d_ualarm=''
744 d_umask=''
745 d_semctl_semid_ds=''
746 d_semctl_semun=''
747 d_union_semun=''
748 d_unordered=''
749 d_usleep=''
750 d_usleepproto=''
751 d_ustat=''
752 d_vfork=''
753 usevfork=''
754 d_voidsig=''
755 signal_t=''
756 d_volatile=''
757 d_charvspr=''
758 d_vprintf=''
759 d_wait4=''
760 d_waitpid=''
761 d_wcstombs=''
762 d_wctomb=''
763 d_writev=''
764 dlext=''
765 cccdlflags=''
766 ccdlflags=''
767 dlsrc=''
768 ld=''
769 lddlflags=''
770 usedl=''
771 doublesize=''
772 ebcdic=''
773 fflushNULL=''
774 fflushall=''
775 fpossize=''
776 fpostype=''
777 gccansipedantic=''
778 gccosandvers=''
779 gccversion=''
780 gidformat=''
781 gidsign=''
782 gidsize=''
783 gidtype=''
784 groupstype=''
785 h_fcntl=''
786 h_sysfile=''
787 html1dir=''
788 html1direxp=''
789 installhtml1dir=''
790 html3dir=''
791 html3direxp=''
792 installhtml3dir=''
793 i_arpainet=''
794 i_crypt=''
795 db_hashtype=''
796 db_prefixtype=''
797 db_version_major=''
798 db_version_minor=''
799 db_version_patch=''
800 i_db=''
801 i_dbm=''
802 i_rpcsvcdbm=''
803 d_dirnamlen=''
804 direntrytype=''
805 i_dirent=''
806 i_dld=''
807 i_dlfcn=''
808 i_fcntl=''
809 i_float=''
810 i_fp=''
811 i_fp_class=''
812 i_gdbm=''
813 d_grpasswd=''
814 i_grp=''
815 i_ieeefp=''
816 i_inttypes=''
817 i_langinfo=''
818 i_libutil=''
819 i_limits=''
820 i_locale=''
821 i_machcthr=''
822 i_malloc=''
823 i_math=''
824 i_memory=''
825 i_mntent=''
826 i_ndbm=''
827 i_netdb=''
828 i_neterrno=''
829 i_netinettcp=''
830 i_niin=''
831 i_sysin=''
832 i_poll=''
833 i_prot=''
834 i_pthread=''
835 d_pwage=''
836 d_pwchange=''
837 d_pwclass=''
838 d_pwcomment=''
839 d_pwexpire=''
840 d_pwgecos=''
841 d_pwpasswd=''
842 d_pwquota=''
843 i_pwd=''
844 i_sfio=''
845 i_shadow=''
846 i_socks=''
847 i_stddef=''
848 i_stdlib=''
849 i_string=''
850 strings=''
851 i_sunmath=''
852 i_sysaccess=''
853 i_sysdir=''
854 i_sysfile=''
855 d_voidtty=''
856 i_bsdioctl=''
857 i_sysfilio=''
858 i_sysioctl=''
859 i_syssockio=''
860 i_syslog=''
861 i_sysmman=''
862 i_sysmode=''
863 i_sysmount=''
864 i_sysndir=''
865 i_sysparam=''
866 i_sysresrc=''
867 i_syssecrt=''
868 i_sysselct=''
869 i_sysstat=''
870 i_sysstatfs=''
871 i_sysstatvfs=''
872 i_systimes=''
873 i_systypes=''
874 i_sysuio=''
875 i_sysun=''
876 i_sysutsname=''
877 i_sysvfs=''
878 i_syswait=''
879 i_sgtty=''
880 i_termio=''
881 i_termios=''
882 d_tm_tm_gmtoff=''
883 d_tm_tm_zone=''
884 i_systime=''
885 i_systimek=''
886 i_time=''
887 timeincl=''
888 i_unistd=''
889 i_ustat=''
890 i_utime=''
891 i_values=''
892 i_stdarg=''
893 i_varargs=''
894 i_varhdr=''
895 i_vfork=''
896 inc_version_list=''
897 inc_version_list_init=''
898 installprefix=''
899 installprefixexp=''
900 installstyle=''
901 installusrbinperl=''
902 intsize=''
903 longsize=''
904 shortsize=''
905 issymlink=''
906 libc=''
907 ldlibpthname=''
908 libperl=''
909 shrpenv=''
910 useshrplib=''
911 glibpth=''
912 libpth=''
913 loclibpth=''
914 plibpth=''
915 xlibpth=''
916 ignore_versioned_solibs=''
917 libs=''
918 libsdirs=''
919 libsfiles=''
920 libsfound=''
921 libspath=''
922 lns=''
923 d_PRIEUldbl=''
924 d_PRIFUldbl=''
925 d_PRIGUldbl=''
926 d_PRIeldbl=''
927 d_PRIfldbl=''
928 d_PRIgldbl=''
929 d_SCNfldbl=''
930 sPRIEUldbl=''
931 sPRIFUldbl=''
932 sPRIGUldbl=''
933 sPRIeldbl=''
934 sPRIfldbl=''
935 sPRIgldbl=''
936 sSCNfldbl=''
937 lseeksize=''
938 lseektype=''
939 make_set_make=''
940 d_mymalloc=''
941 freetype=''
942 mallocobj=''
943 mallocsrc=''
944 malloctype=''
945 usemallocwrap=''
946 usemymalloc=''
947 installman1dir=''
948 man1dir=''
949 man1direxp=''
950 man1ext=''
951 installman3dir=''
952 man3dir=''
953 man3direxp=''
954 man3ext=''
955 modetype=''
956 multiarch=''
957 mydomain=''
958 myhostname=''
959 phostname=''
960 c=''
961 n=''
962 d_eofnblk=''
963 eagain=''
964 o_nonblock=''
965 rd_nodata=''
966 need_va_copy=''
967 netdb_hlen_type=''
968 netdb_host_type=''
969 netdb_name_type=''
970 netdb_net_type=''
971 groupcat=''
972 hostcat=''
973 passcat=''
974 orderlib=''
975 ranlib=''
976 d_perl_otherlibdirs=''
977 otherlibdirs=''
978 package=''
979 spackage=''
980 pager=''
981 api_revision=''
982 api_subversion=''
983 api_version=''
984 api_versionstring=''
985 patchlevel=''
986 perl_patchlevel=''
987 revision=''
988 subversion=''
989 version=''
990 version_patchlevel_string=''
991 perl5=''
992 perladmin=''
993 perlpath=''
994 d_nv_preserves_uv=''
995 i16size=''
996 i16type=''
997 i32size=''
998 i32type=''
999 i64size=''
1000 i64type=''
1001 i8size=''
1002 i8type=''
1003 ivsize=''
1004 ivtype=''
1005 nv_preserves_uv_bits=''
1006 nvsize=''
1007 nvtype=''
1008 u16size=''
1009 u16type=''
1010 u32size=''
1011 u32type=''
1012 u64size=''
1013 u64type=''
1014 u8size=''
1015 u8type=''
1016 uvsize=''
1017 uvtype=''
1018 ivdformat=''
1019 nvEUformat=''
1020 nvFUformat=''
1021 nvGUformat=''
1022 nveformat=''
1023 nvfformat=''
1024 nvgformat=''
1025 uvXUformat=''
1026 uvoformat=''
1027 uvuformat=''
1028 uvxformat=''
1029 pidtype=''
1030 prefix=''
1031 prefixexp=''
1032 installprivlib=''
1033 privlib=''
1034 privlibexp=''
1035 prototype=''
1036 ptrsize=''
1037 d_PRIXU64=''
1038 d_PRId64=''
1039 d_PRIi64=''
1040 d_PRIo64=''
1041 d_PRIu64=''
1042 d_PRIx64=''
1043 sPRIXU64=''
1044 sPRId64=''
1045 sPRIi64=''
1046 sPRIo64=''
1047 sPRIu64=''
1048 sPRIx64=''
1049 d_quad=''
1050 quadkind=''
1051 quadtype=''
1052 uquadtype=''
1053 drand01=''
1054 randbits=''
1055 randfunc=''
1056 randseedtype=''
1057 seedfunc=''
1058 installscript=''
1059 scriptdir=''
1060 scriptdirexp=''
1061 selectminbits=''
1062 selecttype=''
1063 sh=''
1064 sig_count=''
1065 sig_name=''
1066 sig_name_init=''
1067 sig_num=''
1068 sig_num_init=''
1069 sig_size=''
1070 installsitearch=''
1071 sitearch=''
1072 sitearchexp=''
1073 installsitebin=''
1074 sitebin=''
1075 sitebinexp=''
1076 installsitehtml1dir=''
1077 sitehtml1dir=''
1078 sitehtml1direxp=''
1079 installsitehtml3dir=''
1080 sitehtml3dir=''
1081 sitehtml3direxp=''
1082 installsitelib=''
1083 sitelib=''
1084 sitelib_stem=''
1085 sitelibexp=''
1086 installsiteman1dir=''
1087 siteman1dir=''
1088 siteman1direxp=''
1089 installsiteman3dir=''
1090 siteman3dir=''
1091 siteman3direxp=''
1092 siteprefix=''
1093 siteprefixexp=''
1094 installsitescript=''
1095 sitescript=''
1096 sitescriptexp=''
1097 sizesize=''
1098 sizetype=''
1099 so=''
1100 socksizetype=''
1101 sharpbang=''
1102 shsharp=''
1103 spitshell=''
1104 src=''
1105 ssizetype=''
1106 startperl=''
1107 startsh=''
1108 stdchar=''
1109 d_stdio_stream_array=''
1110 stdio_stream_array=''
1111 sysman=''
1112 trnl=''
1113 uidformat=''
1114 uidsign=''
1115 uidsize=''
1116 uidtype=''
1117 archname64=''
1118 use64bitall=''
1119 use64bitint=''
1120 usefaststdio=''
1121 ccflags_uselargefiles=''
1122 ldflags_uselargefiles=''
1123 libswanted_uselargefiles=''
1124 uselargefiles=''
1125 uselongdouble=''
1126 usemorebits=''
1127 usemultiplicity=''
1128 nm_opt=''
1129 nm_so_opt=''
1130 runnm=''
1131 usenm=''
1132 useperlio=''
1133 usesocks=''
1134 d_oldpthreads=''
1135 use5005threads=''
1136 useithreads=''
1137 usereentrant=''
1138 usethreads=''
1139 incpath=''
1140 mips_type=''
1141 usrinc=''
1142 d_vendorarch=''
1143 installvendorarch=''
1144 vendorarch=''
1145 vendorarchexp=''
1146 d_vendorbin=''
1147 installvendorbin=''
1148 vendorbin=''
1149 vendorbinexp=''
1150 installvendorhtml1dir=''
1151 vendorhtml1dir=''
1152 vendorhtml1direxp=''
1153 installvendorhtml3dir=''
1154 vendorhtml3dir=''
1155 vendorhtml3direxp=''
1156 d_vendorlib=''
1157 installvendorlib=''
1158 vendorlib=''
1159 vendorlib_stem=''
1160 vendorlibexp=''
1161 installvendorman1dir=''
1162 vendorman1dir=''
1163 vendorman1direxp=''
1164 installvendorman3dir=''
1165 vendorman3dir=''
1166 vendorman3direxp=''
1167 usevendorprefix=''
1168 vendorprefix=''
1169 vendorprefixexp=''
1170 d_vendorscript=''
1171 installvendorscript=''
1172 vendorscript=''
1173 vendorscriptexp=''
1174 versiononly=''
1175 defvoidused=''
1176 voidflags=''
1177 yacc=''
1178 yaccflags=''
1179 CONFIG=''
1180
1181 define='define'
1182 undef='undef'
1183 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1184 rmlist=''
1185
1186 : We must find out about Eunice early
1187 eunicefix=':'
1188 if test -f /etc/unixtovms; then
1189         eunicefix=/etc/unixtovms
1190 fi
1191 if test -f /etc/unixtovms.exe; then
1192         eunicefix=/etc/unixtovms.exe
1193 fi
1194
1195 : Set executable suffix now -- needed before hints available
1196 if test -f "/libs/version.library"; then
1197 : Amiga OS
1198     _exe=""
1199 elif test -f "/system/gnu_library/bin/ar.pm"; then
1200 : Stratus VOS
1201     _exe=".pm"
1202 elif test -n "$DJGPP"; then
1203 : DOS DJGPP
1204     _exe=".exe"
1205 elif test -d c:/. -o -n "$is_os2" ; then
1206 : OS/2 or cygwin
1207     _exe=".exe"
1208 fi
1209
1210 i_whoami=''
1211 ccname=''
1212 ccversion=''
1213 perllibs=''
1214 : set useposix=false in your hint file to disable the POSIX extension.
1215 useposix=true
1216 : set useopcode=false in your hint file to disable the Opcode extension.
1217 useopcode=true
1218 : Trailing extension.  Override this in a hint file, if needed.
1219 : Extra object files, if any, needed on this platform.
1220 archobjs=''
1221 archname=''
1222 : Possible local include directories to search.
1223 : Set locincpth to "" in a hint file to defeat local include searches.
1224 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1225 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1226 :
1227 : no include file wanted by default
1228 inclwanted=''
1229
1230 groupstype=''
1231 libnames=''
1232 : change the next line if compiling for Xenix/286 on Xenix/386
1233 xlibpth='/usr/lib/386 /lib/386'
1234 : Possible local library directories to search.
1235 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1236 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1237
1238 : general looking path for locating libraries
1239 glibpth="/lib /usr/lib $xlibpth"
1240 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1241 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1242 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1243
1244 : Private path used by Configure to find libraries.  Its value
1245 : is prepended to libpth. This variable takes care of special
1246 : machines, like the mips.  Usually, it should be empty.
1247 plibpth=''
1248
1249 : default library list
1250 libswanted=''
1251 : some systems want to use only the non-versioned libso:s
1252 ignore_versioned_solibs=''
1253 siteman1dir=''
1254 siteman3dir=''
1255 sitescript=''
1256 archname64=''
1257 ccflags_uselargefiles=''
1258 ldflags_uselargefiles=''
1259 libswanted_uselargefiles=''
1260 : set usemultiplicity on the Configure command line to enable multiplicity.
1261 : set usesocks on the Configure command line to enable socks.
1262 : set usethreads on the Configure command line to enable threads.
1263 usereentrant='undef'
1264 : full support for void wanted by default
1265 defvoidused=15
1266
1267 : List of libraries we want.
1268 : If anyone needs extra -lxxx, put those in a hint file.
1269 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1270 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1271 : We probably want to search /usr/shlib before most other libraries.
1272 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1273 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1274 glibpth="/usr/shlib $glibpth"
1275 : Do not use vfork unless overridden by a hint file.
1276 usevfork=false
1277
1278 : Find the basic shell for Bourne shell scripts
1279 case "$sh" in
1280 '')
1281         case "$SYSTYPE" in
1282         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1283         *) xxx='/bin/sh';;
1284         esac
1285         if test -f "$xxx"; then
1286                 sh="$xxx"
1287         else
1288                 : Build up a list and do a single loop so we can 'break' out.
1289                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1290                 for xxx in sh bash ksh pdksh ash; do
1291                         for p in $pth; do
1292                                 try="$try ${p}/${xxx}"
1293                         done
1294                 done
1295                 for xxx in $try; do
1296                         if test -f "$xxx"; then
1297                                 sh="$xxx";
1298                                 break
1299                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1300                                 sh="$xxx";
1301                                 break
1302                         elif test -f "$xxx.exe"; then
1303                                 sh="$xxx";
1304                                 break
1305                         fi
1306                 done
1307         fi
1308         ;;
1309 esac
1310
1311 case "$sh" in
1312 '')     cat >&2 <<EOM
1313 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1314
1315 Usually it's in /bin/sh.  How did you even get this far?
1316 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1317 we'll try to straighten this all out.
1318 EOM
1319         exit 1
1320         ;;
1321 esac
1322
1323 : see if sh knows # comments
1324 if `$sh -c '#' >/dev/null 2>&1`; then
1325         shsharp=true
1326         spitshell=cat
1327         xcat=/bin/cat
1328         test -f $xcat$_exe || xcat=/usr/bin/cat
1329         if test ! -f $xcat$_exe; then
1330                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1331                         if test -f $p/cat$_exe; then
1332                                 xcat=$p/cat
1333                                 break
1334                         fi
1335                 done
1336                 if test ! -f $xcat$_exe; then
1337                         echo "Can't find cat anywhere!"
1338                         exit 1
1339                 fi
1340         fi
1341         echo "#!$xcat" >sharp
1342         $eunicefix sharp
1343         chmod +x sharp
1344         ./sharp > today
1345         if test -s today; then
1346                 sharpbang='#!'
1347         else
1348                 echo "#! $xcat" > sharp
1349                 $eunicefix sharp
1350                 chmod +x sharp
1351                 ./sharp > today
1352                 if test -s today; then
1353                         sharpbang='#! '
1354                 else
1355                         sharpbang=': use '
1356                 fi
1357         fi
1358 else
1359         echo " "
1360         echo "Your $sh doesn't grok # comments--I will strip them later on."
1361         shsharp=false
1362         cd ..
1363         echo "exec grep -v '^[  ]*#'" >spitshell
1364         chmod +x spitshell
1365         $eunicefix spitshell
1366         spitshell=`pwd`/spitshell
1367         cd UU
1368         echo "I presume that if # doesn't work, #! won't work either!"
1369         sharpbang=': use '
1370 fi
1371 rm -f sharp today
1372
1373 : figure out how to guarantee sh startup
1374 case "$startsh" in
1375 '') startsh=${sharpbang}${sh} ;;
1376 *)
1377 esac
1378 cat >sharp <<EOSS
1379 $startsh
1380 set abc
1381 test "$?abc" != 1
1382 EOSS
1383
1384 chmod +x sharp
1385 $eunicefix sharp
1386 if ./sharp; then
1387         : echo "Yup, it does."
1388 else
1389         echo "Hmm... '$startsh' does not guarantee sh startup..."
1390         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1391 fi
1392 rm -f sharp
1393
1394
1395 : Save command line options in file UU/cmdline.opt for later use in
1396 : generating config.sh.
1397 cat > cmdline.opt <<EOSH
1398 # Configure command line arguments.
1399 config_arg0='$0'
1400 config_args='$*'
1401 config_argc=$#
1402 EOSH
1403 argn=1
1404 args_exp=''
1405 args_sep=''
1406 for arg in "$@"; do
1407         cat >>cmdline.opt <<EOSH
1408 config_arg$argn='$arg'
1409 EOSH
1410         # Extreme backslashitis: replace each ' by '"'"'
1411         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1412 $arg
1413 EOC
1414         arg_exp=`cat cmdl.opt`
1415         args_exp="$args_exp$args_sep'$arg_exp'"
1416         argn=`expr $argn + 1`
1417         args_sep=' '
1418 done
1419 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1420 # used by ./hints/os2.sh
1421 rm -f cmdl.opt
1422
1423 : produce awk script to parse command line options
1424 cat >options.awk <<'EOF'
1425 BEGIN {
1426         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1427
1428         len = length(optstr);
1429         for (i = 1; i <= len; i++) {
1430                 c = substr(optstr, i, 1);
1431                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1432                 if (a == ":") {
1433                         arg[c] = 1;
1434                         i++;
1435                 }
1436                 opt[c] = 1;
1437         }
1438 }
1439 {
1440         expect = 0;
1441         str = $0;
1442         if (substr(str, 1, 1) != "-") {
1443                 printf("'%s'\n", str);
1444                 next;
1445         }
1446         len = length($0);
1447         for (i = 2; i <= len; i++) {
1448                 c = substr(str, i, 1);
1449                 if (!opt[c]) {
1450                         printf("-%s\n", substr(str, i));
1451                         next;
1452                 }
1453                 printf("-%s\n", c);
1454                 if (arg[c]) {
1455                         if (i < len)
1456                                 printf("'%s'\n", substr(str, i + 1));
1457                         else
1458                                 expect = 1;
1459                         next;
1460                 }
1461         }
1462 }
1463 END {
1464         if (expect)
1465                 print "?";
1466 }
1467 EOF
1468
1469 : process the command line options
1470 set X `for arg in "$@"; do echo "X$arg"; done |
1471         sed -e s/X// | awk -f options.awk`
1472 eval "set $*"
1473 shift
1474 rm -f options.awk
1475
1476 : set up default values
1477 fastread=''
1478 reuseval=false
1479 config_sh=''
1480 alldone=''
1481 error=''
1482 silent=''
1483 extractsh=''
1484 override=''
1485 knowitall=''
1486 rm -f optdef.sh posthint.sh
1487 cat >optdef.sh <<EOS
1488 $startsh
1489 EOS
1490
1491
1492 : option parsing
1493 while test $# -gt 0; do
1494         case "$1" in
1495         -d) shift; fastread=yes;;
1496         -e) shift; alldone=cont;;
1497         -f)
1498                 shift
1499                 cd ..
1500                 if test -r "$1"; then
1501                         config_sh="$1"
1502                 else
1503                         echo "$me: cannot read config file $1." >&2
1504                         error=true
1505                 fi
1506                 cd UU
1507                 shift;;
1508         -h) shift; error=true;;
1509         -r) shift; reuseval=true;;
1510         -s) shift; silent=true; realsilent=true;;
1511         -E) shift; alldone=exit;;
1512         -K) shift; knowitall=true;;
1513         -O) shift; override=true;;
1514         -S) shift; silent=true; extractsh=true;;
1515         -D)
1516                 shift
1517                 case "$1" in
1518                 *=)
1519                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1520                         echo "$me: ignoring -D $1" >&2
1521                         ;;
1522                 *=*) echo "$1" | \
1523                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1524                 *) echo "$1='define'" >> optdef.sh;;
1525                 esac
1526                 shift
1527                 ;;
1528         -U)
1529                 shift
1530                 case "$1" in
1531                 *=) echo "$1" >> optdef.sh;;
1532                 *=*)
1533                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1534                         echo "$me: ignoring -U $1" >&2
1535                         ;;
1536                 *) echo "$1='undef'" >> optdef.sh;;
1537                 esac
1538                 shift
1539                 ;;
1540         -A)
1541             shift
1542             xxx=''
1543             yyy="$1"
1544             zzz=''
1545             uuu=undef
1546             case "$yyy" in
1547             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1548                  case "$zzz" in
1549                  *:*) zzz='' ;;
1550                  *)   xxx=append
1551                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1552                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1553                  esac
1554                  ;;
1555             esac
1556             case "$xxx" in
1557             '')  case "$yyy" in
1558                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1559                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1560                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1561                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1562                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1563                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1564                  esac
1565                  ;;       
1566             esac
1567             case "$xxx" in
1568             append)
1569                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1570             clear)
1571                 echo "$yyy=''"                  >> posthint.sh ;;
1572             define)
1573                 case "$zzz" in
1574                 '') zzz=define ;;
1575                 esac
1576                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1577             eval)
1578                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1579             prepend)
1580                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1581             undef)
1582                 case "$zzz" in
1583                 '') zzz="$uuu" ;;
1584                 esac
1585                 echo "$yyy=$zzz"                >> posthint.sh ;;
1586             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1587             esac
1588             shift
1589             ;;
1590         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1591             exit 0;;
1592         --) break;;
1593         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1594         *) break;;
1595         esac
1596 done
1597
1598 case "$error" in
1599 true)
1600         cat >&2 <<EOM
1601 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1602                  [-U symbol] [-U symbol=] [-A command:symbol...]
1603   -d : use defaults for all answers.
1604   -e : go on without questioning past the production of config.sh.
1605   -f : specify an alternate default configuration file.
1606   -h : print this help message and exit (with an error status).
1607   -r : reuse C symbols value if possible (skips costly nm extraction).
1608   -s : silent mode, only echoes questions and essential information.
1609   -D : define symbol to have some value:
1610          -D symbol         symbol gets the value 'define'
1611          -D symbol=value   symbol gets the value 'value'
1612   -E : stop at the end of questions, after having produced config.sh.
1613   -K : do not use unless you know what you are doing.
1614   -O : let -D and -U override definitions from loaded configuration file.
1615   -S : perform variable substitutions on all .SH files (can mix with -f)
1616   -U : undefine symbol:
1617          -U symbol    symbol gets the value 'undef'
1618          -U symbol=   symbol gets completely empty
1619   -A : manipulate symbol after the platform specific hints have been applied:
1620          -A symbol=value                append " "value to symbol
1621          -A append:symbol=value         append value to symbol
1622          -A define:symbol=value         define symbol to have value
1623          -A clear:symbol                define symbol to be ''
1624          -A define:symbol               define symbol to be 'define'
1625          -A eval:symbol=value           define symbol to be eval of value
1626          -A prepend:symbol=value        prepend value to symbol
1627          -A undef:symbol                define symbol to be 'undef'
1628          -A undef:symbol=               define symbol to be ''
1629   -V : print version number and exit (with a zero status).
1630 EOM
1631         exit 1
1632         ;;
1633 esac
1634
1635 : Sanity checks
1636 case "$fastread$alldone" in
1637 yescont|yesexit) ;;
1638 *)
1639         case "$extractsh" in
1640         true) ;;
1641         *)
1642                 if test ! -t 0; then
1643                         echo "Say 'sh Configure', not 'sh <Configure'"
1644                         exit 1
1645                 fi
1646                 ;;
1647         esac
1648         ;;
1649 esac
1650
1651 exec 4>&1
1652 case "$silent" in
1653 true) exec 1>/dev/null;;
1654 esac
1655
1656 : run the defines and the undefines, if any, but leave the file out there...
1657 touch optdef.sh
1658 . ./optdef.sh
1659 : create the posthint manipulation script and leave the file out there...
1660 touch posthint.sh
1661
1662 : set package name
1663 package=perl5
1664 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1665 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1666 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1667 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1668 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1669 esac
1670
1671 : Some greps do not return status, grrr.
1672 echo "grimblepritz" >grimble
1673 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1674         contains=contains
1675 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1676         contains=grep
1677 else
1678         contains=contains
1679 fi
1680 rm -f grimble
1681 : the following should work in any shell
1682 case "$contains" in
1683 contains*)
1684         echo " "
1685         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1686         cat >contains <<'EOSS'
1687 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1688 EOSS
1689 chmod +x contains
1690 esac
1691
1692 : Find the path to the source tree
1693 case "$src" in
1694 '') case "$0" in
1695     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1696          case "$src" in
1697          /*)    ;;
1698          .)     ;;
1699          *)     src=`cd ../$src && pwd` ;;
1700          esac
1701          ;;
1702     *)   src='.';;
1703     esac;;
1704 esac
1705 case "$src" in
1706 '')     src=/
1707         rsrc=/
1708         ;;
1709 /*) rsrc="$src";;
1710 *) rsrc="../$src";;
1711 esac
1712 if test -f $rsrc/Configure && \
1713         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1714 then
1715    : found it, so we are ok.
1716 else
1717         rsrc=''
1718         for src in . .. ../.. ../../.. ../../../..; do
1719                 if test -f ../$src/Configure && \
1720                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1721                 then
1722                         rsrc=../$src
1723                         break
1724                 fi
1725         done
1726 fi
1727 case "$rsrc" in
1728 '')
1729         cat <<EOM >&4
1730
1731 Sorry, I can't seem to locate the source dir for $package.  Please start
1732 Configure with an explicit path -- i.e. /some/path/Configure.
1733
1734 EOM
1735         exit 1
1736         ;;
1737 ../.)   rsrc='..';;
1738 *)
1739         echo " "
1740         echo "Sources for $package found in \"$src\"." >&4
1741         ;;
1742 esac
1743
1744 : script used to extract .SH files with variable substitutions
1745 cat >extract <<'EOS'
1746 PERL_CONFIG_SH=true
1747 echo "Doing variable substitutions on .SH files..."
1748 if test -f MANIFEST; then
1749         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1750 else
1751         echo "(Looking for .SH files under the source directory.)"
1752         set x `(cd "$src"; find . -name "*.SH" -print)`
1753 fi
1754 shift
1755 case $# in
1756 0) set x `(cd "$src"; echo *.SH)`; shift;;
1757 esac
1758 if test ! -f "$src/$1"; then
1759         shift
1760 fi
1761 mkdir_p='
1762 name=$1;
1763 create="";
1764 while test $name; do
1765         if test ! -d "$name"; then
1766                 create="$name $create";
1767                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1768                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1769         else
1770                 name="";
1771         fi;
1772 done;
1773 for file in $create; do
1774         mkdir $file;
1775 done
1776 '
1777 for file in $*; do
1778         case "$src" in
1779         ".")
1780                 case "$file" in
1781                 */*)
1782                         dir=`expr X$file : 'X\(.*\)/'`
1783                         file=`expr X$file : 'X.*/\(.*\)'`
1784                         (cd "$dir" && . ./$file)
1785                         ;;
1786                 *)
1787                         . ./$file
1788                         ;;
1789                 esac
1790                 ;;
1791         *)
1792                 case "$file" in
1793                 */*)
1794                         dir=`expr X$file : 'X\(.*\)/'`
1795                         file=`expr X$file : 'X.*/\(.*\)'`
1796                         (set x $dir; shift; eval $mkdir_p)
1797                         sh <"$src/$dir/$file"
1798                         ;;
1799                 *)
1800                         sh <"$src/$file"
1801                         ;;
1802                 esac
1803                 ;;
1804         esac
1805 done
1806 if test -f "$src/config_h.SH"; then
1807         if test ! -f config.h; then
1808         : oops, they left it out of MANIFEST, probably, so do it anyway.
1809         . "$src/config_h.SH"
1810         fi
1811 fi
1812 EOS
1813
1814 : extract files and exit if asked to do so
1815 case "$extractsh" in
1816 true)
1817         case "$realsilent" in
1818         true) ;;
1819         *) exec 1>&4;;
1820         esac
1821         case "$config_sh" in
1822         '') config_sh='config.sh';;
1823         esac
1824         echo " "
1825         echo "Fetching answers from $config_sh..."
1826         cd ..
1827         . $config_sh
1828         test "$override" && . ./optdef.sh
1829         echo " "
1830         . UU/extract
1831         rm -rf UU
1832         echo "Extraction done."
1833         exit 0
1834         ;;
1835 esac
1836
1837 : Eunice requires " " instead of "", can you believe it
1838 echo " "
1839 : Here we go...
1840 echo "Beginning of configuration questions for $package."
1841
1842 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1843
1844 : first determine how to suppress newline on echo command
1845 echo " "
1846 echo "Checking echo to see how to suppress newlines..."
1847 (echo "hi there\c" ; echo " ") >.echotmp
1848 if $contains c .echotmp >/dev/null 2>&1 ; then
1849         echo "...using -n."
1850         n='-n'
1851         c=''
1852 else
1853         cat <<'EOM'
1854 ...using \c
1855 EOM
1856         n=''
1857         c='\c'
1858 fi
1859 echo $n "The star should be here-->$c"
1860 echo '*'
1861 rm -f .echotmp
1862
1863 : Now test for existence of everything in MANIFEST
1864 echo " "
1865 if test -f "$rsrc/MANIFEST"; then
1866         echo "First let's make sure your kit is complete.  Checking..." >&4
1867         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1868         rm -f missing
1869         tmppwd=`pwd`
1870         for filelist in x??; do
1871                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1872         done
1873         if test -s missing; then
1874                 cat missing >&4
1875                 cat >&4 <<'EOM'
1876
1877 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1878
1879 You have the option of continuing the configuration process, despite the
1880 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1881 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1882 and contact the author (perlbug@perl.org).
1883
1884 EOM
1885                 echo $n "Continue? [n] $c" >&4
1886                 read ans
1887                 case "$ans" in
1888                 y*)
1889                         echo "Continuing..." >&4
1890                         rm -f missing
1891                         ;;
1892                 *)
1893                         echo "ABORTING..." >&4
1894                         kill $$
1895                         ;;
1896                 esac
1897         else
1898                 echo "Looks good..."
1899         fi
1900 else
1901         echo "There is no MANIFEST file.  I hope your kit is complete !"
1902 fi
1903 rm -f missing x??
1904
1905 echo " "
1906 : Find the appropriate value for a newline for tr
1907 if test -n "$DJGPP"; then
1908        trnl='\012'
1909 fi
1910 if test X"$trnl" = X; then
1911         case "`echo foo|tr '\n' x 2>/dev/null`" in
1912         foox) trnl='\n' ;;
1913         esac
1914 fi
1915 if test X"$trnl" = X; then
1916         case "`echo foo|tr '\012' x 2>/dev/null`" in
1917         foox) trnl='\012' ;;
1918         esac
1919 fi
1920 if test X"$trnl" = X; then
1921        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1922        fooxy) trnl='\n\r' ;;
1923        esac
1924 fi
1925 if test X"$trnl" = X; then
1926         cat <<EOM >&2
1927
1928 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1929
1930 EOM
1931         exit 1
1932 fi
1933
1934 : compute the number of columns on the terminal for proper question formatting
1935 case "$COLUMNS" in
1936 '') COLUMNS='80';;
1937 esac
1938
1939 : set up the echo used in my read
1940 myecho="case \"\$xxxm\" in
1941 '') echo $n \"\$rp $c\" >&4;;
1942 *) case \"\$rp\" in
1943         '') echo $n \"[\$xxxm] $c\";;
1944         *)
1945                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1946                         echo \"\$rp\" >&4
1947                         echo $n \"[\$xxxm] $c\" >&4
1948                 else
1949                         echo $n \"\$rp [\$xxxm] $c\" >&4
1950                 fi
1951                 ;;
1952         esac;;
1953 esac"
1954
1955 : now set up to do reads with possible shell escape and default assignment
1956 cat <<EOSC >myread
1957 $startsh
1958 xxxm=\$dflt
1959 $myecho
1960 ans='!'
1961 case "\$fastread" in
1962 yes) case "\$dflt" in
1963         '') ;;
1964         *) ans='';
1965                 case "\$silent-\$rp" in
1966                 true-) ;;
1967                 *) echo " " >&4;;
1968                 esac;;
1969         esac;;
1970 *) case "\$silent" in
1971         true) case "\$rp" in
1972                 '') ans='';;
1973                 esac;;
1974         esac;;
1975 esac
1976 while expr "X\$ans" : "X!" >/dev/null; do
1977         read answ
1978         set x \$xxxm
1979         shift
1980         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1981         case  "\$answ" in
1982         "!")
1983                 sh 1>&4
1984                 echo " "
1985                 $myecho
1986                 ;;
1987         !*)
1988                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1989                 shift
1990                 sh 1>&4 -c "\$*"
1991                 echo " "
1992                 $myecho
1993                 ;;
1994         "\$ans")
1995                 case "\$ans" in
1996                 \\&*)
1997                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1998                         shift
1999                         case "\$1" in
2000                         -d)
2001                                 fastread=yes
2002                                 echo "(OK, I'll run with -d after this question.)" >&4
2003                                 ;;
2004                         -*)
2005                                 echo "*** Sorry, \$1 not supported yet." >&4
2006                                 ;;
2007                         esac
2008                         $myecho
2009                         ans=!
2010                         ;;
2011                 esac;;
2012         *)
2013                 case "\$aok" in
2014                 y)
2015                         echo "*** Substitution done -- please confirm."
2016                         xxxm="\$ans"
2017                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2018                         xxxm="\$ans"
2019                         ans=!
2020                         ;;
2021                 *)
2022                         echo "*** Error -- try again."
2023                         ans=!
2024                         ;;
2025                 esac
2026                 $myecho
2027                 ;;
2028         esac
2029         case "\$ans\$xxxm\$nostick" in
2030         '')
2031                 ans=!
2032                 $myecho
2033                 ;;
2034         esac
2035 done
2036 case "\$ans" in
2037 '') ans="\$xxxm";;
2038 esac
2039 EOSC
2040
2041 : create .config dir to save info across Configure sessions
2042 test -d ../.config || mkdir ../.config
2043 cat >../.config/README <<EOF
2044 This directory created by Configure to save information that should
2045 persist across sessions for $package.
2046
2047 You may safely delete it if you wish.
2048 EOF
2049
2050 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2051 case "$usedevel" in
2052 $define|true|[yY]*) ;;
2053 *) case "$xversion" in
2054    *[13579])
2055         cat >&4 <<EOH
2056 *** WHOA THERE!!! ***
2057
2058     This is an UNSTABLE DEVELOPMENT release.
2059     The version of this $package distribution is $xversion, that is, odd,
2060     (as opposed to even) and that signifies a development release.
2061     If you want a maintenance release, you want an even-numbered version.
2062
2063     Do ***NOT*** install this into production use.
2064     Data corruption and crashes are possible.
2065
2066     It is most seriously suggested that you do not continue any further
2067     unless you want to help in developing and debugging Perl.
2068
2069     If you *still* want to build perl, you can answer 'y' now,
2070     or pass -Dusedevel to Configure.
2071
2072 EOH
2073         rp='Do you really want to continue?'
2074         dflt='n'
2075         . ./myread
2076         case "$ans" in
2077         [yY]) echo >&4 "Okay, continuing."
2078               usedevel="$define" ;;
2079         *) echo >&4 "Okay, bye."
2080            exit 1
2081            ;;
2082         esac
2083         ;;
2084     esac
2085     ;;
2086 esac
2087 case "$usedevel" in
2088 $define|true|[yY]*)
2089         case "$versiononly" in
2090         '') versiononly="$define" ;;
2091         esac
2092         case "$installusrbinperl" in
2093         '') installusrbinperl="$undef" ;;
2094         esac
2095         ;;
2096 esac
2097
2098 : general instructions
2099 needman=true
2100 firsttime=true
2101 user=`(logname) 2>/dev/null`
2102 case "$user" in
2103 '') user=`whoami 2>&1`;;
2104 esac
2105 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2106         firsttime=false
2107         echo " "
2108         rp='Would you like to see the instructions?'
2109         dflt=n
2110         . ./myread
2111         case "$ans" in
2112         [yY]*) ;;
2113         *) needman=false;;
2114         esac
2115 fi
2116 if $needman; then
2117         cat <<EOH
2118
2119 This installation shell script will examine your system and ask you questions
2120 to determine how the perl5 package should be installed. If you get
2121 stuck on a question, you may use a ! shell escape to start a subshell or
2122 execute a command.  Many of the questions will have default answers in square
2123 brackets; typing carriage return will give you the default.
2124
2125 On some of the questions which ask for file or directory names you are allowed
2126 to use the ~name construct to specify the login directory belonging to "name",
2127 even if you don't have a shell which knows about that.  Questions where this is
2128 allowed will be marked "(~name ok)".
2129
2130 EOH
2131         rp=''
2132         dflt='Type carriage return to continue'
2133         . ./myread
2134         cat <<'EOH'
2135
2136 The prompter used in this script allows you to use shell variables and
2137 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2138 in the default answer, as if the default line was a set of arguments given to a
2139 script shell.  This means you may also use $* to repeat the whole default line,
2140 so you do not have to re-type everything to add something to the default.
2141
2142 Everytime there is a substitution, you will have to confirm.  If there is an
2143 error (e.g. an unmatched backtick), the default answer will remain unchanged
2144 and you will be prompted again.
2145
2146 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2147 the questions and use the computed defaults (or the previous answers if there
2148 was already a config.sh file). Type 'Configure -h' for a list of options.
2149 You may also start interactively and then answer '& -d' at any prompt to turn
2150 on the non-interactive behaviour for the remainder of the execution.
2151
2152 EOH
2153         . ./myread
2154         cat <<EOH
2155
2156 Much effort has been expended to ensure that this shell script will run on any
2157 Unix system.  If despite that it blows up on yours, your best bet is to edit
2158 Configure and run it again.  If you can't run Configure for some reason,
2159 you'll have to generate a config.sh file by hand.  Whatever problems you
2160 have, let me (perlbug@perl.org) know how I blew it.
2161
2162 This installation script affects things in two ways:
2163
2164 1) it may do direct variable substitutions on some of the files included
2165    in this kit.
2166 2) it builds a config.h file for inclusion in C programs.  You may edit
2167    any of these files as the need arises after running this script.
2168
2169 If you make a mistake on a question, there is no easy way to back up to it
2170 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2171 files.  Configure will offer to let you do this before it runs the SH files.
2172
2173 EOH
2174         dflt='Type carriage return to continue'
2175         . ./myread
2176         case "$firsttime" in
2177         true) echo $user >>../.config/instruct;;
2178         esac
2179 fi
2180
2181 : find out where common programs are
2182 echo " "
2183 echo "Locating common programs..." >&4
2184 cat <<EOSC >loc
2185 $startsh
2186 case \$# in
2187 0) exit 1;;
2188 esac
2189 thing=\$1
2190 shift
2191 dflt=\$1
2192 shift
2193 for dir in \$*; do
2194         case "\$thing" in
2195         .)
2196         if test -d \$dir/\$thing; then
2197                 echo \$dir
2198                 exit 0
2199         fi
2200         ;;
2201         *)
2202         for thisthing in \$dir/\$thing; do
2203                 : just loop through to pick last item
2204         done
2205         if test -f \$thisthing; then
2206                 echo \$thisthing
2207                 exit 0
2208         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2209                 echo \$thisthing
2210                 exit 0
2211         elif test -f \$dir/\$thing.exe; then
2212                 if test -n "$DJGPP"; then
2213                         echo \$dir/\$thing.exe
2214                 elif test "$eunicefix" != ":"; then
2215                         : on Eunice apparently
2216                         echo \$dir/\$thing
2217                         exit 0
2218                 fi
2219                 exit 0
2220         fi
2221         ;;
2222         esac
2223 done
2224 echo \$dflt
2225 exit 1
2226 EOSC
2227 chmod +x loc
2228 $eunicefix loc
2229 loclist="
2230 awk
2231 cat
2232 chmod
2233 comm
2234 cp
2235 echo
2236 expr
2237 grep
2238 ls
2239 mkdir
2240 rm
2241 sed
2242 sort
2243 touch
2244 tr
2245 uniq
2246 "
2247 trylist="
2248 Mcc
2249 ar
2250 bison
2251 byacc
2252 cpp
2253 csh
2254 date
2255 egrep
2256 gmake
2257 gzip
2258 less
2259 ln
2260 make
2261 more
2262 nm
2263 nroff
2264 pg
2265 test
2266 uname
2267 zip
2268 "
2269 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2270 pth="$pth /lib /usr/lib"
2271 for file in $loclist; do
2272         eval xxx=\$$file
2273         case "$xxx" in
2274         /*|?:[\\/]*)
2275                 if test -f "$xxx"; then
2276                         : ok
2277                 else
2278                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2279                         xxx=`./loc $file $file $pth`
2280                 fi
2281                 ;;
2282         '') xxx=`./loc $file $file $pth`;;
2283         *) xxx=`./loc $xxx $xxx $pth`;;
2284         esac
2285         eval $file=$xxx$_exe
2286         eval _$file=$xxx
2287         case "$xxx" in
2288         /*)
2289                 echo $file is in $xxx.
2290                 ;;
2291         ?:[\\/]*)
2292                 echo $file is in $xxx.
2293                 ;;
2294         *)
2295                 echo "I don't know where '$file' is, and my life depends on it." >&4
2296                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2297                 exit 1
2298                 ;;
2299         esac
2300 done
2301 echo " "
2302 echo "Don't worry if any of the following aren't found..."
2303 say=offhand
2304 for file in $trylist; do
2305         eval xxx=\$$file
2306         case "$xxx" in
2307         /*|?:[\\/]*)
2308                 if test -f "$xxx"; then
2309                         : ok
2310                 else
2311                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2312                         xxx=`./loc $file $file $pth`
2313                 fi
2314                 ;;
2315         '') xxx=`./loc $file $file $pth`;;
2316         *) xxx=`./loc $xxx $xxx $pth`;;
2317         esac
2318         eval $file=$xxx$_exe
2319         eval _$file=$xxx
2320         case "$xxx" in
2321         /*)
2322                 echo $file is in $xxx.
2323                 ;;
2324         ?:[\\/]*)
2325                 echo $file is in $xxx.
2326                 ;;
2327         *)
2328                 echo "I don't see $file out there, $say."
2329                 say=either
2330                 ;;
2331         esac
2332 done
2333 case "$egrep" in
2334 egrep)
2335         echo "Substituting grep for egrep."
2336         egrep=$grep
2337         _egrep=$grep
2338         ;;
2339 esac
2340 case "$ln" in
2341 ln)
2342         echo "Substituting cp for ln."
2343         ln=$cp
2344         _ln=$cp
2345         ;;
2346 esac
2347 case "$make" in
2348 make)   
2349         case "$gmake" in
2350         gmake)
2351         echo "I can't find make or gmake, and my life depends on it." >&4
2352         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2353         exit 1
2354         ;;
2355         esac
2356         ;;
2357 esac    
2358 case "$gmake" in
2359 gmake)  ;;
2360 *)      # We can't have osname yet.
2361         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2362                 # Assume that gmake, if found, is definitely GNU make
2363                 # and prefer it over the system make.
2364                 echo "Substituting gmake for make."
2365                 make=$gmake
2366                 _make=$gmake
2367         fi
2368         ;;
2369 esac
2370 case "$test" in
2371 test)
2372         echo "Hopefully test is built into your sh."
2373         ;;
2374 *)
2375         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2376                 echo "Using the test built into your sh."
2377                 test=test
2378                 _test=test
2379         fi
2380         ;;
2381 esac
2382 case "$echo" in
2383 echo)
2384         echo "Hopefully echo is built into your sh."
2385         ;;
2386 '') ;;
2387 *)
2388         echo " "
2389 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2390         $echo $n "hi there$c" >foo1
2391         echo $n "hi there$c" >foo2
2392         if cmp foo1 foo2 >/dev/null 2>&1; then
2393                 echo "They are compatible.  In fact, they may be identical."
2394         else
2395                 case "$n" in
2396                 '-n') n='' c='\c';;
2397                 *) n='-n' c='';;
2398                 esac
2399                 cat <<FOO
2400 They are not compatible!  You are probably running ksh on a non-USG system.
2401 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2402 have echo built in and we may have to run some Bourne shell scripts.  That
2403 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2404
2405 FOO
2406                 $echo $n "The star should be here-->$c"
2407                 $echo "*"
2408         fi
2409         $rm -f foo1 foo2
2410         ;;
2411 esac
2412
2413 cat <<EOS >trygcc
2414 $startsh
2415 EOS
2416 cat <<'EOSC' >>trygcc
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         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2429         despair=yes
2430         trygcc=yes
2431         case "$cc" in
2432         *gcc*) trygcc=no ;;
2433         esac
2434         case "`$cc -v -c try.c 2>&1`" in
2435         *gcc*) trygcc=no ;;
2436         esac
2437         if $test X"$trygcc" = Xyes; then
2438             if gcc -o try -c try.c; then
2439                 echo " "
2440                 echo "You seem to have a working gcc, though." >&4
2441                 rp="Would you like to use it?"
2442                 dflt=y
2443                 if $test -f myread; then
2444                     . ./myread
2445                 else
2446                     if $test -f UU/myread; then
2447                         . ./UU/myread
2448                     else
2449                         echo "Cannot find myread, sorry.  Aborting." >&2
2450                         exit 1
2451                     fi
2452                 fi  
2453                 case "$ans" in
2454                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2455                        if $test -f usethreads.cbu; then
2456                            $cat >&4 <<EOM 
2457
2458 *** However, any setting of the C compiler flags (e.g. for thread support)
2459 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2460 *** (together with e.g. -Dusethreads).
2461
2462 EOM
2463                        fi;;
2464                 esac
2465             fi
2466         fi
2467     fi
2468     $rm -f try try.*
2469     ;;
2470 esac
2471 EOSC
2472
2473 cat <<EOS >checkcc
2474 $startsh
2475 EOS
2476 cat <<'EOSC' >>checkcc
2477 case "$cc" in        
2478 '') ;;
2479 *)  $rm -f try try.*              
2480     $cat >try.c <<EOM
2481 int main(int argc, char *argv[]) {
2482   return 0;
2483 }
2484 EOM
2485     if $cc -o try $ccflags $ldflags try.c; then
2486        :
2487     else
2488         if $test X"$despair" = Xyes; then
2489            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2490         fi
2491         $cat >&4 <<EOM         
2492 You need to find a working C compiler.
2493 Either (purchase and) install the C compiler supplied by your OS vendor,
2494 or for a free C compiler try http://gcc.gnu.org/
2495 I cannot continue any further, aborting.
2496 EOM
2497         exit 1
2498     fi
2499     $rm -f try try.*
2500     ;;
2501 esac
2502 EOSC
2503
2504 : determine whether symbolic links are supported
2505 echo " "
2506 $touch blurfl
2507 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2508         echo "Symbolic links are supported." >&4
2509         lns="$ln -s"
2510 else
2511         echo "Symbolic links are NOT supported." >&4
2512         lns="$ln"
2513 fi
2514 $rm -f blurfl sym
2515
2516 : determine whether symbolic links are supported
2517 echo " "
2518 case "$lns" in
2519 *"ln"*" -s")
2520         echo "Checking how to test for symbolic links..." >&4
2521         $lns blurfl sym
2522         if $test "X$issymlink" = X; then
2523                 case "$newsh" in
2524                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526                 esac
2527                 if test $? = 0; then
2528                         issymlink="test -h"
2529                 else
2530                         echo "Your builtin 'test -h' may be broken." >&4
2531                         case "$test" in
2532                         /*)     ;;
2533                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2534                                 for p in $pth
2535                                 do
2536                                         if test -f "$p/$test"; then
2537                                                 test="$p/$test"
2538                                                 break
2539                                         fi
2540                                 done
2541                                 ;;
2542                         esac
2543                         case "$test" in
2544                         /*)
2545                                 echo "Trying external '$test -h'." >&4
2546                                 issymlink="$test -h"
2547                                 if $test ! -h sym >/dev/null 2>&1; then
2548                                         echo "External '$test -h' is broken, too." >&4
2549                                         issymlink=''
2550                                 fi
2551                                 ;;
2552                         *)      issymlink='' ;;
2553                         esac
2554                 fi              
2555         fi
2556         if $test "X$issymlink" = X; then
2557                 if $test -L sym 2>/dev/null; then
2558                         issymlink="$test -L"
2559                         echo "The builtin '$test -L' worked." >&4
2560                 fi
2561         fi
2562         if $test "X$issymlink" != X; then
2563                 echo "You can test for symbolic links with '$issymlink'." >&4
2564         else
2565                 echo "I do not know how you can test for symbolic links." >&4
2566         fi
2567         $rm -f blurfl sym
2568         ;;
2569 *)      echo "No symbolic links, so not testing for their testing..." >&4
2570         ;;
2571 esac
2572 echo " "
2573
2574
2575 case "$mksymlinks" in
2576 $define|true|[yY]*)
2577         case "$src" in
2578         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2579                 exit 1
2580                 ;;
2581         *)      case "$lns:$issymlink" in
2582                 *"ln"*" -s:"*"test -"?)
2583                         echo "Creating the symbolic links..." >&4
2584                         echo "(First creating the subdirectories...)" >&4
2585                         cd ..
2586                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2587                                 read directory
2588                                 test -z "$directory" && break
2589                                 mkdir -p $directory
2590                         done
2591                         # Sanity check 1.
2592                         if test ! -d t/base; then
2593                                 echo "Failed to create the subdirectories.  Aborting." >&4
2594                                 exit 1
2595                         fi
2596                         echo "(Then creating the symlinks...)" >&4
2597                         awk '{print $1}' $src/MANIFEST | while true; do
2598                                 read filename
2599                                 test -z "$filename" && break
2600                                 if test -f $filename; then
2601                                         if $issymlink $filename; then
2602                                                 rm -f $filename
2603                                         fi
2604                                 fi
2605                                 if test -f $filename; then
2606                                         echo "$filename already exists, not symlinking."
2607                                 else
2608                                         ln -s $src/$filename $filename
2609                                 fi
2610                         done
2611                         # Sanity check 2.
2612                         if test ! -f t/base/lex.t; then
2613                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2614                                 exit 1
2615                         fi
2616                         cd UU
2617                         ;;
2618                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2619                         ;;
2620                 esac
2621                 ;;
2622         esac
2623         ;;
2624 esac
2625
2626
2627 case "$usecrosscompile" in
2628 $define|true|[yY]*)
2629         $echo "Cross-compiling..."
2630         croak=''
2631         case "$cc" in
2632         *-*-gcc) # A cross-compiling gcc, probably.
2633             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2634             ar=$targetarch-ar
2635             # leave out ld, choosing it is more complex
2636             nm=$targetarch-nm
2637             ranlib=$targetarch-ranlib
2638             $echo 'extern int foo;' > try.c
2639             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2640             shift
2641             if $test $# -gt 0; then
2642                 incpth="$incpth $*"
2643                 incpth="`$echo $incpth|$sed 's/^ //'`"
2644                 echo "Guessing incpth '$incpth'." >&4
2645                 for i in $*; do
2646                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2647                     if $test -d $j; then
2648                         libpth="$libpth $j"
2649                     fi
2650                 done   
2651                 libpth="`$echo $libpth|$sed 's/^ //'`"
2652                 echo "Guessing libpth '$libpth'." >&4
2653             fi
2654             $rm -f try.c
2655             ;;
2656         esac
2657         case "$targetarch" in
2658         '') echo "Targetarch not defined." >&4; croak=y ;;
2659         *)  echo "Using targetarch $targetarch." >&4 ;;
2660         esac
2661         case "$incpth" in
2662         '') echo "Incpth not defined." >&4; croak=y ;;
2663         *)  echo "Using incpth '$incpth'." >&4 ;;
2664         esac
2665         case "$libpth" in
2666         '') echo "Libpth not defined." >&4; croak=y ;;
2667         *)  echo "Using libpth '$libpth'." >&4 ;;
2668         esac
2669         case "$usrinc" in
2670         '') for i in $incpth; do
2671                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2672                     usrinc=$i
2673                     echo "Guessing usrinc $usrinc." >&4
2674                     break
2675                 fi
2676             done
2677             case "$usrinc" in
2678             '') echo "Usrinc not defined." >&4; croak=y ;;
2679             esac
2680             ;;
2681         *)  echo "Using usrinc $usrinc." >&4 ;;
2682         esac
2683         case "$targethost" in
2684         '') echo "Targethost not defined." >&4; croak=y ;;
2685         *)  echo "Using targethost $targethost." >&4
2686         esac
2687         locincpth=' '
2688         loclibpth=' '
2689         case "$croak" in
2690         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2691         esac
2692         case "$src" in
2693         /*) run=$src/Cross/run
2694             targetmkdir=$src/Cross/mkdir
2695             to=$src/Cross/to
2696             from=$src/Cross/from
2697             ;;
2698         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2699             run=$pwd/Cross/run
2700             targetmkdir=$pwd/Cross/mkdir
2701             to=$pwd/Cross/to
2702             from=$pwd/Cross/from
2703             ;;
2704         esac
2705         case "$targetrun" in
2706         '') targetrun=ssh ;;
2707         esac
2708         case "$targetto" in
2709         '') targetto=scp ;;
2710         esac
2711         case "$targetfrom" in
2712         '') targetfrom=scp ;;
2713         esac
2714         run=$run-$targetrun
2715         to=$to-$targetto
2716         from=$from-$targetfrom
2717         case "$targetdir" in
2718         '')  targetdir=/tmp
2719              echo "Guessing targetdir $targetdir." >&4
2720              ;;
2721         esac
2722         case "$targetuser" in
2723         '')  targetuser=root
2724              echo "Guessing targetuser $targetuser." >&4
2725              ;;
2726         esac
2727         case "$targetfrom" in
2728         scp)    q=-q ;;
2729         *)      q='' ;;
2730         esac
2731         case "$targetrun" in
2732         ssh|rsh)
2733             cat >$run <<EOF
2734 #!/bin/sh
2735 case "\$1" in
2736 -cwd)
2737   shift
2738   cwd=\$1
2739   shift
2740   ;;
2741 esac
2742 case "\$cwd" in
2743 '') cwd=$targetdir ;;
2744 esac
2745 exe=\$1
2746 shift
2747 if $test ! -f \$exe.xok; then
2748   $to \$exe
2749   $touch \$exe.xok
2750 fi
2751 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2752 EOF
2753             ;;
2754         *)  echo "Unknown targetrun '$targetrun'" >&4
2755             exit 1
2756             ;;
2757         esac
2758         case "$targetmkdir" in
2759         */Cross/mkdir)
2760             cat >$targetmkdir <<EOF
2761 #!/bin/sh
2762 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2763 EOF
2764             $chmod a+rx $targetmkdir
2765             ;;
2766         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2767             exit 1
2768             ;;
2769         esac
2770         case "$targetto" in
2771         scp|rcp)
2772             cat >$to <<EOF
2773 #!/bin/sh
2774 for f in \$@
2775 do
2776   case "\$f" in
2777   /*)
2778     $targetmkdir \`dirname \$f\`
2779     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2780     ;;
2781   *)
2782     $targetmkdir $targetdir/\`dirname \$f\`
2783     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2784     ;;
2785   esac
2786 done
2787 exit 0
2788 EOF
2789             ;;
2790         cp) cat >$to <<EOF
2791 #!/bin/sh
2792 for f in \$@
2793 do
2794   case "\$f" in
2795   /*)
2796     $mkdir -p $targetdir/\`dirname \$f\`
2797     $cp \$f $targetdir/\$f || exit 1
2798     ;;
2799   *)
2800     $targetmkdir $targetdir/\`dirname \$f\`
2801     $cp \$f $targetdir/\$f || exit 1
2802     ;;
2803   esac
2804 done
2805 exit 0
2806 EOF
2807             ;;
2808         *)  echo "Unknown targetto '$targetto'" >&4
2809             exit 1
2810             ;;
2811         esac
2812         case "$targetfrom" in
2813         scp|rcp)
2814           cat >$from <<EOF
2815 #!/bin/sh
2816 for f in \$@
2817 do
2818   $rm -f \$f
2819   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2820 done
2821 exit 0
2822 EOF
2823             ;;
2824         cp) cat >$from <<EOF
2825 #!/bin/sh
2826 for f in \$@
2827 do
2828   $rm -f \$f
2829   cp $targetdir/\$f . || exit 1
2830 done
2831 exit 0
2832 EOF
2833             ;;
2834         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2835             exit 1
2836             ;;
2837         esac
2838         if $test ! -f $run; then
2839             echo "Target 'run' script '$run' not found." >&4
2840         else
2841             $chmod a+rx $run
2842         fi
2843         if $test ! -f $to; then
2844             echo "Target 'to' script '$to' not found." >&4
2845         else
2846             $chmod a+rx $to
2847         fi
2848         if $test ! -f $from; then
2849             echo "Target 'from' script '$from' not found." >&4
2850         else
2851             $chmod a+rx $from
2852         fi
2853         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2854             exit 1
2855         fi
2856         cat >&4 <<EOF
2857 Using '$run' for remote execution,
2858 and '$from' and '$to'
2859 for remote file transfer.
2860 EOF
2861         ;;
2862 *)      run=''
2863         to=:
2864         from=:
2865         usecrosscompile='undef'
2866         targetarch=''
2867         ;;
2868 esac
2869
2870 : see whether [:lower:] and [:upper:] are supported character classes
2871 echo " "
2872 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2873 ABYZ)
2874         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2875         up='[:upper:]'
2876         low='[:lower:]'
2877         ;;
2878 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2879         # (0xd9 and 0xe2), therefore that is a nice testing point.
2880         if test "X$up" = X -o "X$low" = X; then
2881             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2882             rs) up='[A-Z]'
2883                 low='[a-z]'
2884                 ;;
2885             esac
2886         fi
2887         if test "X$up" = X -o "X$low" = X; then
2888             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2889             rs) up='A-Z'
2890                 low='a-z'
2891                 ;;
2892             esac
2893         fi
2894         if test "X$up" = X -o "X$low" = X; then
2895             case "`echo RS | od -x 2>/dev/null`" in
2896             *D9E2*|*d9e2*)
2897                 echo "Hey, this might be EBCDIC." >&4
2898                 if test "X$up" = X -o "X$low" = X; then
2899                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2900                     rs) up='[A-IJ-RS-Z]'
2901                         low='[a-ij-rs-z]'
2902                         ;;
2903                     esac
2904                 fi
2905                 if test "X$up" = X -o "X$low" = X; then
2906                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2907                     rs) up='A-IJ-RS-Z'
2908                         low='a-ij-rs-z'
2909                         ;;
2910                     esac
2911                 fi
2912                 ;;
2913             esac
2914         fi
2915 esac
2916 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2917 rs)
2918     echo "Using $up and $low to convert case." >&4
2919     ;;
2920 *)
2921     echo "I don't know how to translate letters from upper to lower case." >&4
2922     echo "Your tr is not acting any way I know of." >&4
2923     exit 1
2924     ;;
2925 esac
2926 : set up the translation script tr, must be called with ./tr of course
2927 cat >tr <<EOSC
2928 $startsh
2929 case "\$1\$2" in
2930 '[A-Z][a-z]') exec $tr '$up' '$low';;
2931 '[a-z][A-Z]') exec $tr '$low' '$up';;
2932 esac
2933 exec $tr "\$@"
2934 EOSC
2935 chmod +x tr
2936 $eunicefix tr
2937
2938 : Try to determine whether config.sh was made on this system
2939 case "$config_sh" in
2940 '')
2941 myuname=`$uname -a 2>/dev/null`
2942 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2943 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2944 # because the A-Z/a-z are not consecutive.
2945 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2946         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2947 newmyuname="$myuname"
2948 dflt=n
2949 case "$knowitall" in
2950 '')
2951         if test -f ../config.sh; then
2952                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2953                         eval "`grep myuname= ../config.sh`"
2954                 fi
2955                 if test "X$myuname" = "X$newmyuname"; then
2956                         dflt=y
2957                 fi
2958         fi
2959         ;;
2960 *) dflt=y;;
2961 esac
2962
2963 : Get old answers from old config file if Configure was run on the
2964 : same system, otherwise use the hints.
2965 hint=default
2966 cd ..
2967 if test -f config.sh; then
2968         echo " "
2969         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2970         . UU/myread
2971         case "$ans" in
2972         n*|N*) echo "OK, I'll ignore it."
2973                 mv config.sh config.sh.old
2974                 myuname="$newmyuname"
2975                 ;;
2976         *)  echo "Fetching default answers from your old config.sh file..." >&4
2977                 tmp_n="$n"
2978                 tmp_c="$c"
2979                 tmp_sh="$sh"
2980                 . ./config.sh
2981                 cp config.sh UU
2982                 n="$tmp_n"
2983                 c="$tmp_c"
2984                 : Older versions did not always set $sh.  Catch re-use of such
2985                 : an old config.sh.
2986                 case "$sh" in
2987                 '') sh="$tmp_sh" ;;
2988                 esac
2989                 hint=previous
2990                 ;;
2991         esac
2992 fi
2993 . ./UU/checkcc
2994 if test ! -f config.sh; then
2995         $cat <<EOM
2996
2997 First time through, eh?  I have some defaults handy for some systems
2998 that need some extra help getting the Configure answers right:
2999
3000 EOM
3001         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3002         dflt=''
3003         : Half the following guesses are probably wrong... If you have better
3004         : tests or hints, please send them to perlbug@perl.org
3005         : The metaconfig authors would also appreciate a copy...
3006         $test -f /irix && osname=irix
3007         $test -f /xenix && osname=sco_xenix
3008         $test -f /dynix && osname=dynix
3009         $test -f /dnix && osname=dnix
3010         $test -f /lynx.os && osname=lynxos
3011         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3012         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3013         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3014         $test -f /bin/mips && /bin/mips && osname=mips
3015         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3016                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3017         $test -d /usr/apollo/bin && osname=apollo
3018         $test -f /etc/saf/_sactab && osname=svr4
3019         $test -d /usr/include/minix && osname=minix
3020         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3021         if $test -d /MachTen -o -d /MachTen_Folder; then
3022                 osname=machten
3023                 if $test -x /sbin/version; then
3024                         osvers=`/sbin/version | $awk '{print $2}' |
3025                         $sed -e 's/[A-Za-z]$//'`
3026                 elif $test -x /usr/etc/version; then
3027                         osvers=`/usr/etc/version | $awk '{print $2}' |
3028                         $sed -e 's/[A-Za-z]$//'`
3029                 else
3030                         osvers="$2.$3"
3031                 fi
3032         fi
3033
3034         $test -f /sys/posix.dll &&
3035                 $test -f /usr/bin/what &&
3036                 set X `/usr/bin/what /sys/posix.dll` &&
3037                 $test "$3" = UWIN &&
3038                 osname=uwin &&
3039                 osvers="$5"
3040
3041         if $test -f $uname; then
3042                 set X $myuname
3043                 shift
3044
3045                 case "$5" in
3046                 fps*) osname=fps ;;
3047                 mips*)
3048                         case "$4" in
3049                         umips) osname=umips ;;
3050                         *) osname=mips ;;
3051                         esac;;
3052                 [23]100) osname=mips ;;
3053                 next*) osname=next ;;
3054                 i386*)
3055                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3056                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3057                                 osname='sco'
3058                                 osvers=$tmp
3059                         elif $test -f /etc/kconfig; then
3060                                 osname=isc
3061                                 if test "$lns" = "$ln -s"; then
3062                                         osvers=4
3063                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3064                                         osvers=3
3065                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3066                                         osvers=2
3067                                 fi
3068                         fi
3069                         tmp=''
3070                         ;;
3071                 pc*)
3072                         if test -n "$DJGPP"; then
3073                                 osname=dos
3074                                 osvers=djgpp
3075                         fi
3076                         ;;
3077                 esac
3078
3079                 case "$1" in
3080                 aix) osname=aix
3081                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3082                         case "$tmp" in
3083                         'not found') osvers="$4"."$3" ;;
3084                         '<3240'|'<>3240') osvers=3.2.0 ;;
3085                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3086                         '=3250'|'>3250') osvers=3.2.5 ;;
3087                         *) osvers=$tmp;;
3088                         esac
3089                         ;;
3090                 bsd386) osname=bsd386
3091                         osvers=`$uname -r`
3092                         ;;
3093                 cygwin*) osname=cygwin
3094                         osvers="$3"
3095                         ;;
3096                 *dc.osx) osname=dcosx
3097                         osvers="$3"
3098                         ;;
3099                 dnix) osname=dnix
3100                         osvers="$3"
3101                         ;;
3102                 domainos) osname=apollo
3103                         osvers="$3"
3104                         ;;
3105                 dgux)   osname=dgux 
3106                         osvers="$3"
3107                         ;;
3108                 dynixptx*) osname=dynixptx
3109                         osvers=`echo "$4"|sed 's/^v//'`
3110                         ;;
3111                 freebsd) osname=freebsd 
3112                         osvers="$3" ;;
3113                 genix)  osname=genix ;;
3114                 gnu)    osname=gnu
3115                         osvers="$3" ;;
3116                 hp*)    osname=hpux 
3117                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3118                         ;;
3119                 irix*)  osname=irix
3120                         case "$3" in
3121                         4*) osvers=4 ;;
3122                         5*) osvers=5 ;;
3123                         *)      osvers="$3" ;;
3124                         esac
3125                         ;;
3126                 linux)  osname=linux
3127                         case "$3" in
3128                         *)      osvers="$3" ;;
3129                         esac
3130                         ;;
3131                 MiNT)   osname=mint
3132                         ;;
3133                 netbsd*) osname=netbsd
3134                         osvers="$3"
3135                         ;;
3136                 news-os) osvers="$3"
3137                         case "$3" in
3138                         4*) osname=newsos4 ;;
3139                         *) osname=newsos ;;
3140                         esac
3141                         ;;
3142                 next*) osname=next ;;
3143                 nonstop-ux) osname=nonstopux ;;
3144                 openbsd) osname=openbsd
3145                         osvers="$3"
3146                         ;;
3147                 os2)    osname=os2
3148                         osvers="$4"
3149                         ;;
3150                 POSIX-BC | posix-bc ) osname=posix-bc
3151                         osvers="$3"
3152                         ;;
3153                 powerux | power_ux | powermax_os | powermaxos | \
3154                 powerunix | power_unix) osname=powerux
3155                         osvers="$3"
3156                         ;;
3157                 qnx) osname=qnx
3158                         osvers="$4"
3159                         ;;
3160                 solaris) osname=solaris
3161                         case "$3" in
3162                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3163                         *)      osvers="$3" ;;
3164                         esac
3165                         ;;
3166                 sunos) osname=sunos
3167                         case "$3" in
3168                         5*) osname=solaris
3169                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3170                         *)      osvers="$3" ;;
3171                         esac
3172                         ;;
3173                 titanos) osname=titanos
3174                         case "$3" in
3175                         1*) osvers=1 ;;
3176                         2*) osvers=2 ;;
3177                         3*) osvers=3 ;;
3178                         4*) osvers=4 ;;
3179                         *)      osvers="$3" ;;
3180                         esac
3181                         ;;
3182                 ultrix) osname=ultrix
3183                         osvers="$3"
3184                         ;;
3185                 osf1|mls+)      case "$5" in
3186                                 alpha)
3187                                         osname=dec_osf
3188                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3189                                         case "$osvers" in
3190                                         [1-9].[0-9]*) ;;
3191                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3192                                         esac
3193                                         ;;
3194                         hp*)    osname=hp_osf1  ;;
3195                         mips)   osname=mips_osf1 ;;
3196                         esac
3197                         ;;
3198                 # UnixWare 7.1.2 is known as Open UNIX 8
3199                 openunix|unixware) osname=svr5
3200                         osvers="$4"
3201                         ;;
3202                 uts)    osname=uts
3203                         osvers="$3"
3204                         ;;
3205                 vos) osvers="$3"
3206                         ;;
3207                 $2) case "$osname" in
3208                         *isc*) ;;
3209                         *freebsd*) ;;
3210                         svr*)
3211                                 : svr4.x or possibly later
3212                                 case "svr$3" in 
3213                                 ${osname}*)
3214                                         osname=svr$3
3215                                         osvers=$4
3216                                         ;;
3217                                 esac
3218                                 case "$osname" in
3219                                 svr4.0)
3220                                         : Check for ESIX
3221                                         if test -f /stand/boot ; then
3222                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3223                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3224                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3225                                                         if test -n "$isesix"; then
3226                                                                 osname=esix4
3227                                                         fi
3228                                                 fi
3229                                         fi
3230                                         ;;
3231                                 esac
3232                                 ;;
3233                         *)      if test -f /etc/systemid; then
3234                                         osname=sco
3235                                         set `echo $3 | $sed 's/\./ /g'` $4
3236                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3237                                                 osvers=$1.$2.$3
3238                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3239                                                 osvers=$1.$2
3240                                         elif $test -f $src/hints/sco_$1.sh; then
3241                                                 osvers=$1
3242                                         fi
3243                                 else
3244                                         case "$osname" in
3245                                         '') : Still unknown.  Probably a generic Sys V.
3246                                                 osname="sysv"
3247                                                 osvers="$3"
3248                                                 ;;
3249                                         esac
3250                                 fi
3251                                 ;;
3252                         esac
3253                         ;;
3254                 *)      case "$osname" in
3255                         '') : Still unknown.  Probably a generic BSD.
3256                                 osname="$1"
3257                                 osvers="$3"
3258                                 ;;
3259                         esac
3260                         ;;
3261                 esac
3262         else
3263                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3264                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3265                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3266                                 osname=news_os
3267                         fi
3268                         $rm -f UU/kernel.what
3269                 elif test -d c:/. -o -n "$is_os2" ; then
3270                         set X $myuname
3271                         osname=os2
3272                         osvers="$5"
3273                 fi
3274         fi
3275         
3276         case "$targetarch" in
3277         '') ;;
3278         *)  hostarch=$osname
3279             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3280             osvers=''
3281             ;;
3282         esac
3283
3284         : Now look for a hint file osname_osvers, unless one has been
3285         : specified already.
3286         case "$hintfile" in
3287         ''|' ')
3288                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3289                 : Also try without trailing minor version numbers.
3290                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3291                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3292                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3293                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3294                 case "$file" in
3295                 '') dflt=none ;;
3296                 *)  case "$osvers" in
3297                         '') dflt=$file
3298                                 ;;
3299                         *)  if $test -f $src/hints/$file.sh ; then
3300                                         dflt=$file
3301                                 elif $test -f $src/hints/$xfile.sh ; then
3302                                         dflt=$xfile
3303                                 elif $test -f $src/hints/$xxfile.sh ; then
3304                                         dflt=$xxfile
3305                                 elif $test -f $src/hints/$xxxfile.sh ; then
3306                                         dflt=$xxxfile
3307                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3308                                         dflt=$xxxxfile
3309                                 elif $test -f "$src/hints/${osname}.sh" ; then
3310                                         dflt="${osname}"
3311                                 else
3312                                         dflt=none
3313                                 fi
3314                                 ;;
3315                         esac
3316                         ;;
3317                 esac
3318                 if $test -f Policy.sh ; then
3319                         case "$dflt" in
3320                         *Policy*) ;;
3321                         none) dflt="Policy" ;;
3322                         *) dflt="Policy $dflt" ;;
3323                         esac
3324                 fi
3325                 ;;
3326         *)
3327                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3328                 ;;
3329         esac
3330
3331         if $test -f Policy.sh ; then
3332                 $cat <<EOM
3333
3334 There's also a Policy hint file available, which should make the
3335 site-specific (policy) questions easier to answer.
3336 EOM
3337
3338         fi
3339
3340         $cat <<EOM
3341
3342 You may give one or more space-separated answers, or "none" if appropriate.
3343 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3344 is a good thing.  DO NOT give a wrong version or a wrong OS.
3345
3346 EOM
3347
3348         rp="Which of these apply, if any?"
3349         . UU/myread
3350         tans=$ans
3351         for file in $tans; do
3352                 if $test X$file = XPolicy -a -f Policy.sh; then
3353                         . Policy.sh
3354                         $cat Policy.sh >> UU/config.sh
3355                 elif $test -f $src/hints/$file.sh; then
3356                         . $src/hints/$file.sh
3357                         $cat $src/hints/$file.sh >> UU/config.sh
3358                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3359                         : nothing
3360                 else
3361                         : Give one chance to correct a possible typo.
3362                         echo "$file.sh does not exist"
3363                         dflt=$file
3364                         rp="hint to use instead?"
3365                         . UU/myread
3366                         for file in $ans; do
3367                                 if $test -f "$src/hints/$file.sh"; then
3368                                         . $src/hints/$file.sh
3369                                         $cat $src/hints/$file.sh >> UU/config.sh
3370                                 elif $test X$ans = X -o X$ans = Xnone ; then
3371                                         : nothing
3372                                 else
3373                                         echo "$file.sh does not exist -- ignored."
3374                                 fi
3375                         done
3376                 fi
3377         done
3378
3379         hint=recommended
3380         : Remember our hint file for later.
3381         if $test -f "$src/hints/$file.sh" ; then
3382                 hintfile="$file"
3383         else
3384                 hintfile=''
3385         fi
3386 fi
3387 cd UU
3388 ;;
3389 *)
3390         echo " "
3391         echo "Fetching default answers from $config_sh..." >&4
3392         tmp_n="$n"
3393         tmp_c="$c"
3394         cd ..
3395         cp $config_sh config.sh 2>/dev/null
3396         chmod +w config.sh
3397         . ./config.sh
3398         cd UU
3399         cp ../config.sh .
3400         n="$tmp_n"
3401         c="$tmp_c"
3402         hint=previous
3403         ;;
3404 esac
3405 test "$override" && . ./optdef.sh
3406
3407 : Restore computed paths
3408 for file in $loclist $trylist; do
3409         eval $file="\$_$file"
3410 done
3411
3412 cat << EOM
3413
3414 Configure uses the operating system name and version to set some defaults.
3415 The default value is probably right if the name rings a bell. Otherwise,
3416 since spelling matters for me, either accept the default or answer "none"
3417 to leave it blank.
3418
3419 EOM
3420 case "$osname" in
3421         ''|' ')
3422                 case "$hintfile" in
3423                 ''|' '|none) dflt=none ;;
3424                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3425                 esac
3426                 ;;
3427         *) dflt="$osname" ;;
3428 esac
3429 rp="Operating system name?"
3430 . ./myread
3431 case "$ans" in
3432 none)  osname='' ;;
3433 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3434 esac
3435 echo " "
3436 case "$osvers" in
3437         ''|' ')
3438                 case "$hintfile" in
3439                 ''|' '|none) dflt=none ;;
3440                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3441                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3442                         case "$dflt" in
3443                         ''|' ') dflt=none ;;
3444                         esac
3445                         ;;
3446                 esac
3447                 ;;
3448         *) dflt="$osvers" ;;
3449 esac
3450 rp="Operating system version?"
3451 . ./myread
3452 case "$ans" in
3453 none)  osvers='' ;;
3454 *) osvers="$ans" ;;
3455 esac
3456
3457
3458 . ./posthint.sh
3459
3460 : who configured the system
3461 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3462 case "$cf_by" in
3463 "")
3464         cf_by=`(logname) 2>/dev/null`
3465         case "$cf_by" in
3466         "")
3467                 cf_by=`(whoami) 2>/dev/null`
3468                 case "$cf_by" in
3469                 "") cf_by=unknown ;;
3470                 esac ;;
3471         esac ;;
3472 esac
3473
3474 : set up the script used to warn in case of inconsistency
3475 cat <<EOS >whoa
3476 $startsh
3477 EOS
3478 cat <<'EOSC' >>whoa
3479 dflt=y
3480 echo " "
3481 echo "*** WHOA THERE!!! ***" >&4
3482 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3483 rp="    Keep the $hint value?"
3484 . ./myread
3485 case "$ans" in
3486 y) td=$was; tu=$was;;
3487 esac
3488 EOSC
3489
3490 : function used to set $1 to $val
3491 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3492 case "$val$was" in
3493 $define$undef) . ./whoa; eval "$var=\$td";;
3494 $undef$define) . ./whoa; eval "$var=\$tu";;
3495 *) eval "$var=$val";;
3496 esac'
3497
3498 case "$usesocks" in
3499 $define|true|[yY]*)     dflt='y';;
3500 *) dflt='n';;
3501 esac
3502 cat <<EOM
3503
3504 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3505 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3506 to use the PerlIO abstraction layer, this will be implicitly selected.
3507
3508 If this doesn't make any sense to you, just accept the default '$dflt'.
3509 EOM
3510 rp='Build Perl for SOCKS?'
3511 . ./myread
3512 case "$ans" in
3513 y|Y)    val="$define" ;;     
3514 *)      val="$undef" ;;
3515 esac
3516 set usesocks
3517 eval $setvar
3518
3519 case "$usesocks" in
3520 $define|true|[yY]*) useperlio="$define";;
3521 esac
3522
3523 case "$useperlio" in
3524 $define|true|[yY]*|'')  dflt='y';;
3525 *) dflt='n';;
3526 esac
3527 cat <<EOM
3528
3529 Previous version of $package used the standard IO mechanisms as
3530 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3531 alternate IO mechanisms via the PerlIO abstraction layer, but the
3532 stdio mechanism is still available if needed.  The abstraction layer
3533 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3534 Using PerlIO with sfio may cause problems with some extension modules.
3535
3536 If this doesn't make any sense to you, just accept the default '$dflt'.
3537 EOM
3538 rp='Use the PerlIO abstraction layer?'
3539 . ./myread
3540 case "$ans" in
3541 y|Y) 
3542         val="$define"
3543         ;;
3544 *)      
3545         echo "Ok, doing things the stdio way."
3546         val="$undef"
3547         ;;
3548 esac
3549 set useperlio
3550 eval $setvar 
3551
3552 case "$usesocks" in
3553 $define|true|[yY]*)
3554         case "$useperlio" in
3555         $define|true|[yY]*) ;;
3556         *)      cat >&4 <<EOM
3557
3558 You are using the SOCKS proxy protocol library which means that you
3559 should also use the PerlIO layer.  You may be headed for trouble.
3560
3561 EOM
3562                 ;;
3563         esac
3564         ;;
3565 esac
3566
3567         
3568 case "$usethreads" in
3569 $define|true|[yY]*)     dflt='y';;
3570 *)     # Catch case where user specified ithreads or 5005threads but
3571        # forgot -Dusethreads (A.D. 4/2002)
3572        case "$useithreads$use5005threads" in
3573        *$define*)      
3574                 case "$useperlio" in
3575                 "$define")      dflt='y' ;;
3576                 *)              dflt='n' ;;
3577                 esac
3578                 ;;
3579        *)       dflt='n';;
3580        esac
3581        ;;
3582 esac
3583 cat <<EOM
3584
3585 Perl can be built to take advantage of threads on some systems.
3586 To do so, Configure can be run with -Dusethreads.
3587
3588 Note that Perl built with threading support runs slightly slower
3589 and uses more memory than plain Perl. The current implementation
3590 is believed to be stable, but it is fairly new, and so should be
3591 treated with caution.
3592
3593 If this doesn't make any sense to you, just accept the default '$dflt'.
3594 EOM
3595 rp='Build a threading Perl?'
3596 . ./myread
3597 case "$ans" in
3598 y|Y)    val="$define" ;;
3599 *)      val="$undef" ;;
3600 esac
3601 set usethreads
3602 eval $setvar
3603
3604 case "$usethreads" in
3605 $define)
3606         $cat <<EOM
3607
3608 Since release 5.6, Perl has had two different threading implementations,
3609 the newer interpreter-based version (ithreads) with one interpreter per
3610 thread, and the older 5.005 version (5005threads).
3611 The 5005threads version is effectively unmaintained and will probably be
3612 removed in Perl 5.10, so there should be no need to build a Perl using it
3613 unless needed for backwards compatibility with some existing 5.005threads
3614 code.
3615
3616 EOM
3617         : Default to ithreads unless overridden on command line or with
3618         : old config.sh
3619         dflt='y'
3620         case "$use5005threads" in
3621                 $define|true|[yY]*) dflt='n';;
3622         esac
3623         case "$useithreads" in
3624                 $undef|false|[nN]*) dflt='n';;
3625         esac
3626         rp='Use the newer interpreter-based ithreads?'
3627         . ./myread
3628         case "$ans" in
3629         y|Y)    val="$define" ;;
3630         *)      val="$undef" ;;
3631         esac
3632         set useithreads
3633         eval $setvar
3634         : Now set use5005threads to the opposite value.
3635         case "$useithreads" in
3636         $define) val="$undef" ;;
3637         *) val="$define" ;;
3638         esac
3639         set use5005threads
3640         eval $setvar
3641         ;;
3642 *)
3643         useithreads="$undef"
3644         use5005threads="$undef"
3645         ;;
3646 esac
3647
3648 case "$useithreads$use5005threads" in
3649 "$define$define")
3650         $cat >&4 <<EOM
3651
3652 You cannot have both the ithreads and the 5.005 threads enabled
3653 at the same time.  Disabling the 5.005 threads since they are
3654 much less stable than the ithreads.
3655
3656 EOM
3657         use5005threads="$undef"
3658         ;;
3659 esac
3660
3661 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3662         cat >&4 <<EOF
3663 ***
3664 *** To build with ithreads you must also use the PerlIO layer.
3665 *** Cannot continue, aborting.
3666 ***
3667 EOF
3668         exit 1
3669 fi
3670
3671 case "$d_oldpthreads" in
3672 '')     : Configure tests would be welcome here.  For now, assume undef.
3673         val="$undef" ;;
3674 *)      val="$d_oldpthreads" ;;
3675 esac
3676 set d_oldpthreads
3677 eval $setvar
3678
3679
3680 : Look for a hint-file generated 'call-back-unit'.  If the
3681 : user has specified that a threading perl is to be built,
3682 : we may need to set or change some other defaults.
3683 if $test -f usethreads.cbu; then
3684     echo "Your platform has some specific hints regarding threaded builds, using them..."
3685     . ./usethreads.cbu
3686 else
3687     case "$usethreads" in
3688         "$define"|true|[yY]*)
3689                 $cat <<EOM
3690 (Your platform does not have any specific hints for threaded builds.
3691  Assuming POSIX threads, then.)
3692 EOM
3693         ;;
3694     esac
3695 fi
3696
3697 cat <<EOM
3698
3699 Perl can be built so that multiple Perl interpreters can coexist
3700 within the same Perl executable.
3701 EOM
3702
3703 case "$useithreads" in
3704 $define)
3705         cat <<EOM
3706 This multiple interpreter support is required for interpreter-based threads.
3707 EOM
3708         val="$define"
3709         ;;
3710 *)      case "$usemultiplicity" in
3711         $define|true|[yY]*)     dflt='y';;
3712         *) dflt='n';;
3713         esac
3714         echo " "
3715         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3716         rp='Build Perl for multiplicity?'
3717         . ./myread
3718         case "$ans" in
3719         y|Y)    val="$define" ;;
3720         *)      val="$undef" ;;
3721         esac
3722         ;;
3723 esac
3724 set usemultiplicity
3725 eval $setvar
3726
3727
3728 case "$usemorebits" in
3729 "$define"|true|[yY]*)
3730         use64bitint="$define"
3731         uselongdouble="$define"
3732         usemorebits="$define"
3733         ;;
3734 *)      usemorebits="$undef"
3735         ;;
3736 esac
3737
3738 : make some quick guesses about what we are up against
3739 echo " "
3740 $echo $n "Hmm...  $c"
3741 echo exit 1 >bsd
3742 echo exit 1 >usg
3743 echo exit 1 >v7
3744 echo exit 1 >osf1
3745 echo exit 1 >eunice
3746 echo exit 1 >xenix
3747 echo exit 1 >venix
3748 echo exit 1 >os2
3749 d_bsd="$undef"
3750 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3751 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3752 then
3753         echo "Looks kind of like an OSF/1 system, but we'll see..."
3754         echo exit 0 >osf1
3755 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3756         xxx=`./loc addbib blurfl $pth`
3757         if $test -f $xxx; then
3758         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3759                 echo exit 0 >bsd
3760                 echo exit 0 >usg
3761         else
3762                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3763                         echo "Looks kind of like an extended USG system, but we'll see..."
3764                 else
3765                         echo "Looks kind of like a USG system, but we'll see..."
3766                 fi
3767                 echo exit 0 >usg
3768         fi
3769 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3770         echo "Looks kind of like a BSD system, but we'll see..."
3771         d_bsd="$define"
3772         echo exit 0 >bsd
3773 else
3774         echo "Looks kind of like a Version 7 system, but we'll see..."
3775         echo exit 0 >v7
3776 fi
3777 case "$eunicefix" in
3778 *unixtovms*)
3779         $cat <<'EOI'
3780 There is, however, a strange, musty smell in the air that reminds me of
3781 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3782 EOI
3783         echo exit 0 >eunice
3784         d_eunice="$define"
3785 : it so happens the Eunice I know will not run shell scripts in Unix format
3786         ;;
3787 *)
3788         echo " "
3789         echo "Congratulations.  You aren't running Eunice."
3790         d_eunice="$undef"
3791         ;;
3792 esac
3793 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3794 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3795 : semicolon as a patch separator
3796 case "$p_" in
3797 :) ;;
3798 *)
3799         $cat <<'EOI'
3800 I have the feeling something is not exactly right, however...don't tell me...
3801 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3802 (Or you may be running DOS with DJGPP.)
3803 EOI
3804         echo exit 0 >os2
3805         ;;
3806 esac
3807 if test -f /xenix; then
3808         echo "Actually, this looks more like a XENIX system..."
3809         echo exit 0 >xenix
3810         d_xenix="$define"
3811 else
3812         echo " "
3813         echo "It's not Xenix..."
3814         d_xenix="$undef"
3815 fi
3816 chmod +x xenix
3817 $eunicefix xenix
3818 if test -f /venix; then
3819         echo "Actually, this looks more like a VENIX system..."
3820         echo exit 0 >venix
3821 else
3822         echo " "
3823         if ./xenix; then
3824                 : null
3825         else
3826                 echo "Nor is it Venix..."
3827         fi
3828 fi
3829 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3830 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3831 $rm -f foo
3832
3833 case "$cc" in
3834 '') dflt=cc;;
3835 *) dflt="$cc";;
3836 esac
3837 rp="Use which C compiler?"
3838 . ./myread
3839 cc="$ans"
3840
3841 : See if they have not cc but they do have gcc
3842 . ./trygcc
3843 : Look for a hint-file generated 'call-back-unit'.  Now that the
3844 : user has specified the compiler, we may need to set or change some
3845 : other defaults.
3846 if $test -f cc.cbu; then
3847     . ./cc.cbu
3848 fi
3849 . ./checkcc
3850
3851 echo " "
3852 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3853 $cat >try.c <<EOM
3854 #include <stdio.h>
3855 int main() {
3856 #ifdef __GNUC__
3857 #ifdef __VERSION__
3858         printf("%s\n", __VERSION__);
3859 #else
3860         printf("%s\n", "1");
3861 #endif
3862 #endif
3863         return(0);
3864 }
3865 EOM
3866 if $cc -o try $ccflags $ldflags try.c; then
3867         gccversion=`$run ./try`
3868         case "$gccversion" in
3869         '') echo "You are not using GNU cc." ;;
3870         *)  echo "You are using GNU cc $gccversion."
3871             ccname=gcc
3872             ;;
3873         esac
3874 else
3875         echo " "
3876         echo "*** WHOA THERE!!! ***" >&4
3877         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3878         case "$knowitall" in
3879         '')
3880         echo "    You'd better start hunting for one and let me know about it." >&4
3881                 exit 1
3882                 ;;
3883         esac
3884 fi
3885 $rm -f try try.*
3886 case "$gccversion" in
3887 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3888 esac
3889 case "$gccversion" in
3890 '') gccosandvers='' ;;
3891 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3892    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3893    gccshortvers=''
3894    case "$gccosandvers" in
3895    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3896    $osname$osvers) ;; # looking good
3897    $osname*) cat <<EOM >&4
3898
3899 *** WHOA THERE!!! ***
3900
3901     Your gcc has not been compiled for the exact release of
3902     your operating system ($gccosandvers versus $osname$osvers).
3903
3904     In general it is a good idea to keep gcc synchronized with
3905     the operating system because otherwise serious problems
3906     may ensue when trying to compile software, like Perl.
3907
3908     I'm trying to be optimistic here, though, and will continue.
3909     If later during the configuration and build icky compilation
3910     problems appear (headerfile conflicts being the most common
3911     manifestation), I suggest reinstalling the gcc to match
3912     your operating system release.
3913
3914 EOM
3915       ;;
3916    *) gccosandvers='' ;; # failed to parse, better be silent
3917    esac
3918    ;;
3919 esac
3920 case "$ccname" in
3921 '') ccname="$cc" ;;
3922 esac
3923
3924 # gcc 3.* complain about adding -Idirectories that they already know about,
3925 # so we will take those off from locincpth.
3926 case "$gccversion" in
3927 3*)
3928     echo "main(){}">try.c
3929     for incdir in $locincpth; do
3930        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3931              grep '^c[cp]p*[01]: warning: changing search order '`
3932        if test "X$warn" != X; then
3933            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3934        fi
3935     done
3936     $rm -f try try.*
3937 esac
3938
3939 : decide how portable to be.  Allow command line overrides.
3940 case "$d_portable" in
3941 "$undef") ;;
3942 *)      d_portable="$define" ;;
3943 esac
3944
3945 : set up shell script to do ~ expansion
3946 cat >filexp <<EOSS
3947 $startsh
3948 : expand filename
3949 case "\$1" in
3950  ~/*|~)
3951         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3952         ;;
3953  ~*)
3954         if $test -f /bin/csh; then
3955                 /bin/csh -f -c "glob \$1"
3956                 failed=\$?
3957                 echo ""
3958                 exit \$failed
3959         else
3960                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3961                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3962                 if $test ! -d "\$dir"; then
3963                         me=\`basename \$0\`
3964                         echo "\$me: can't locate home directory for: \$name" >&2
3965                         exit 1
3966                 fi
3967                 case "\$1" in
3968                 */*)
3969                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3970                         ;;
3971                 *)
3972                         echo \$dir
3973                         ;;
3974                 esac
3975         fi
3976         ;;
3977 *)
3978         echo \$1
3979         ;;
3980 esac
3981 EOSS
3982 chmod +x filexp
3983 $eunicefix filexp
3984
3985 : now set up to get a file name
3986 cat <<EOS >getfile
3987 $startsh
3988 EOS
3989 cat <<'EOSC' >>getfile
3990 tilde=''
3991 fullpath=''
3992 already=''
3993 skip=''
3994 none_ok=''
3995 exp_file=''
3996 nopath_ok=''
3997 orig_rp="$rp"
3998 orig_dflt="$dflt"
3999 case "$gfpth" in
4000 '') gfpth='.' ;;
4001 esac
4002
4003 case "$fn" in
4004 *\(*)
4005         : getfile will accept an answer from the comma-separated list
4006         : enclosed in parentheses even if it does not meet other criteria.
4007         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4008         fn=`echo $fn | sed 's/(.*)//'`
4009         ;;
4010 esac
4011
4012 case "$fn" in
4013 *:*)
4014         loc_file=`expr $fn : '.*:\(.*\)'`
4015         fn=`expr $fn : '\(.*\):.*'`
4016         ;;
4017 esac
4018
4019 case "$fn" in
4020 *~*) tilde=true;;
4021 esac
4022 case "$fn" in
4023 */*) fullpath=true;;
4024 esac
4025 case "$fn" in
4026 *+*) skip=true;;
4027 esac
4028 case "$fn" in
4029 *n*) none_ok=true;;
4030 esac
4031 case "$fn" in
4032 *e*) exp_file=true;;
4033 esac
4034 case "$fn" in
4035 *p*) nopath_ok=true;;
4036 esac
4037
4038 case "$fn" in
4039 *f*) type='File';;
4040 *d*) type='Directory';;
4041 *l*) type='Locate';;
4042 esac
4043
4044 what="$type"
4045 case "$what" in
4046 Locate) what='File';;
4047 esac
4048
4049 case "$exp_file" in
4050 '')
4051         case "$d_portable" in
4052         "$define") ;;
4053         *) exp_file=true;;
4054         esac
4055         ;;
4056 esac
4057
4058 cd ..
4059 while test "$type"; do
4060         redo=''
4061         rp="$orig_rp"
4062         dflt="$orig_dflt"
4063         case "$tilde" in
4064         true) rp="$rp (~name ok)";;
4065         esac
4066         . UU/myread
4067         if test -f UU/getfile.ok && \
4068                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4069         then
4070                 value="$ans"
4071                 ansexp="$ans"
4072                 break
4073         fi
4074         case "$ans" in
4075         none)
4076                 value=''
4077                 ansexp=''
4078                 case "$none_ok" in
4079                 true) type='';;
4080                 esac
4081                 ;;
4082         *)
4083                 case "$tilde" in
4084                 '') value="$ans"
4085                         ansexp="$ans";;
4086                 *)
4087                         value=`UU/filexp $ans`
4088                         case $? in
4089                         0)
4090                                 if test "$ans" != "$value"; then
4091                                         echo "(That expands to $value on this system.)"
4092                                 fi
4093                                 ;;
4094                         *) value="$ans";;
4095                         esac
4096                         ansexp="$value"
4097                         case "$exp_file" in
4098                         '') value="$ans";;
4099                         esac
4100                         ;;
4101                 esac
4102                 case "$fullpath" in
4103                 true)
4104                         case "$ansexp" in
4105                         /*) value="$ansexp" ;;
4106                         [a-zA-Z]:/*) value="$ansexp" ;;
4107                         *)
4108                                 redo=true
4109                                 case "$already" in
4110                                 true)
4111                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4112                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4113                                         ;;
4114                                 *)
4115                                 echo "Please give a full path name, starting with slash." >&4
4116                                         case "$tilde" in
4117                                         true)
4118                                 echo "Note that using ~name is ok provided it expands well." >&4
4119                                                 already=true
4120                                                 ;;
4121                                         esac
4122                                 esac
4123                                 ;;
4124                         esac
4125                         ;;
4126                 esac
4127                 case "$redo" in
4128                 '')
4129                         case "$type" in
4130                         File)
4131                                 for fp in $gfpth; do
4132                                         if test "X$fp" = X.; then
4133                                             pf="$ansexp"
4134                                         else    
4135                                             pf="$fp/$ansexp"
4136                                         fi
4137                                         if test -f "$pf"; then
4138                                                 type=''
4139                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4140                                         then
4141                                                 echo "($value is not a plain file, but that's ok.)"
4142                                                 type=''
4143                                         fi
4144                                         if test X"$type" = X; then
4145                                             value="$pf"
4146                                             break
4147                                         fi
4148                                 done
4149                                 ;;
4150                         Directory)
4151                                 for fp in $gfpth; do
4152                                         if test "X$fp" = X.; then
4153                                             dir="$ans"
4154                                             direxp="$ansexp"
4155                                         else    
4156                                             dir="$fp/$ansexp"
4157                                             direxp="$fp/$ansexp"
4158                                         fi
4159                                         if test -d "$direxp"; then
4160                                                 type=''
4161                                                 value="$dir"
4162                                                 break
4163                                         fi
4164                                 done
4165                                 ;;
4166                         Locate)
4167                                 if test -d "$ansexp"; then
4168                                         echo "(Looking for $loc_file in directory $value.)"
4169                                         value="$value/$loc_file"
4170                                         ansexp="$ansexp/$loc_file"
4171                                 fi
4172                                 if test -f "$ansexp"; then
4173                                         type=''
4174                                 fi
4175                                 case "$nopath_ok" in
4176                                 true)   case "$value" in
4177                                         */*) ;;
4178                                         *)      echo "Assuming $value will be in people's path."
4179                                                 type=''
4180                                                 ;;
4181                                         esac
4182                                         ;;
4183                                 esac
4184                                 ;;
4185                         esac
4186
4187                         case "$skip" in
4188                         true) type='';
4189                         esac
4190
4191                         case "$type" in
4192                         '') ;;
4193                         *)
4194                                 if test "$fastread" = yes; then
4195                                         dflt=y
4196                                 else
4197                                         dflt=n
4198                                 fi
4199                                 rp="$what $value doesn't exist.  Use that name anyway?"
4200                                 . UU/myread
4201                                 dflt=''
4202                                 case "$ans" in
4203                                 y*) type='';;
4204                                 *) echo " ";;
4205                                 esac
4206                                 ;;
4207                         esac
4208                         ;;
4209                 esac
4210                 ;;
4211         esac
4212 done
4213 cd UU
4214 ans="$value"
4215 rp="$orig_rp"
4216 dflt="$orig_dflt"
4217 rm -f getfile.ok
4218 test "X$gfpthkeep" != Xy && gfpth=""
4219 EOSC
4220
4221 : What should the include directory be ?
4222 echo " "
4223 $echo $n "Hmm...  $c"
4224 dflt='/usr/include'
4225 incpath=''
4226 mips_type=''
4227 if $test -f /bin/mips && /bin/mips; then
4228         echo "Looks like a MIPS system..."
4229         $cat >usr.c <<'EOCP'
4230 #ifdef SYSTYPE_BSD43
4231 /bsd43
4232 #endif
4233 EOCP
4234         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4235                 dflt='/bsd43/usr/include'
4236                 incpath='/bsd43'
4237                 mips_type='BSD 4.3'
4238         else
4239                 mips_type='System V'
4240         fi
4241         $rm -f usr.c usr.out
4242         echo "and you're compiling with the $mips_type compiler and libraries."
4243         xxx_prompt=y
4244         echo "exit 0" >mips
4245 else
4246         echo "Doesn't look like a MIPS system."
4247         xxx_prompt=n
4248         echo "exit 1" >mips
4249 fi
4250 chmod +x mips
4251 $eunicefix mips
4252 case "$usrinc" in
4253 '') ;;
4254 *) dflt="$usrinc";;
4255 esac
4256 case "$xxx_prompt" in
4257 y)      fn=d/
4258         echo " "
4259         rp='Where are the include files you want to use?'
4260         . ./getfile
4261         usrinc="$ans"
4262         ;;
4263 *)      usrinc="$dflt"
4264         ;;
4265 esac
4266
4267 : see how we invoke the C preprocessor
4268 echo " "
4269 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4270 cat <<'EOT' >testcpp.c
4271 #define ABC abc
4272 #define XYZ xyz
4273 ABC.XYZ
4274 EOT
4275 cd ..
4276 if test ! -f cppstdin; then
4277         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4278                 # AIX cc -E doesn't show the absolute headerfile
4279                 # locations but we'll cheat by using the -M flag.
4280                 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
4281         else
4282                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4283         fi
4284 else
4285         echo "Keeping your $hint cppstdin wrapper."
4286 fi
4287 chmod 755 cppstdin
4288 wrapper=`pwd`/cppstdin
4289 ok='false'
4290 cd UU
4291
4292 if $test "X$cppstdin" != "X" && \
4293         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4294         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4295 then
4296         echo "You used to use $cppstdin $cppminus so we'll use that again."
4297         case "$cpprun" in
4298         '') echo "But let's see if we can live without a wrapper..." ;;
4299         *)
4300                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4301                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4302                 then
4303                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4304                         ok='true'
4305                 else
4306                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4307                 fi
4308                 ;;
4309         esac
4310 else
4311         case "$cppstdin" in
4312         '') ;;
4313         *)
4314                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4315                 ;;
4316         esac
4317 fi
4318
4319 if $ok; then
4320         : nothing
4321 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4322         $cc -E <testcpp.c >testcpp.out 2>&1; \
4323         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4324         echo "Yup, it does."
4325         x_cpp="$cc -E"
4326         x_minus='';
4327 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4328         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4329         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4330         echo "Yup, it does."
4331         x_cpp="$cc -E"
4332         x_minus='-';
4333 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4334         $cc -P <testcpp.c >testcpp.out 2>&1; \
4335         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4336         echo "Yipee, that works!"
4337         x_cpp="$cc -P"
4338         x_minus='';
4339 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4340         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4341         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4342         echo "At long last!"
4343         x_cpp="$cc -P"
4344         x_minus='-';
4345 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4346         $cpp <testcpp.c >testcpp.out 2>&1; \
4347         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4348         echo "It works!"
4349         x_cpp="$cpp"
4350         x_minus='';
4351 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4352         $cpp - <testcpp.c >testcpp.out 2>&1; \
4353         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4354         echo "Hooray, it works!  I was beginning to wonder."
4355         x_cpp="$cpp"
4356         x_minus='-';
4357 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4358         $wrapper <testcpp.c >testcpp.out 2>&1; \
4359         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4360         x_cpp="$wrapper"
4361         x_minus=''
4362         echo "Eureka!"
4363 else
4364         dflt=''
4365         rp="No dice.  I can't find a C preprocessor.  Name one:"
4366         . ./myread
4367         x_cpp="$ans"
4368         x_minus=''
4369         $x_cpp <testcpp.c >testcpp.out 2>&1
4370         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4371                 echo "OK, that will do." >&4
4372         else
4373 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4374                 exit 1
4375         fi
4376 fi
4377
4378 case "$ok" in
4379 false)
4380         cppstdin="$x_cpp"
4381         cppminus="$x_minus"
4382         cpprun="$x_cpp"
4383         cpplast="$x_minus"
4384         set X $x_cpp
4385         shift
4386         case "$1" in
4387         "$cpp")
4388                 echo "Perhaps can we force $cc -E using a wrapper..."
4389                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4390                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4391                 then
4392                         echo "Yup, we can."
4393                         cppstdin="$wrapper"
4394                         cppminus='';
4395                 else
4396                         echo "Nope, we'll have to live without it..."
4397                 fi
4398                 ;;
4399         esac
4400         case "$cpprun" in
4401         "$wrapper")
4402                 cpprun=''
4403                 cpplast=''
4404                 ;;
4405         esac
4406         ;;
4407 esac
4408
4409 case "$cppstdin" in
4410 "$wrapper"|'cppstdin') ;;
4411 *) $rm -f $wrapper;;
4412 esac
4413 $rm -f testcpp.c testcpp.out
4414
4415 : Set private lib path
4416 case "$plibpth" in
4417 '') if ./mips; then
4418                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4419         fi;;
4420 esac
4421 case "$libpth" in
4422 ' ') dlist='';;
4423 '') dlist="$loclibpth $plibpth $glibpth";;
4424 *) dlist="$libpth";;
4425 esac
4426
4427 : Now check and see which directories actually exist, avoiding duplicates
4428 libpth=''
4429 for xxx in $dlist
4430 do
4431     if $test -d $xxx; then
4432                 case " $libpth " in
4433                 *" $xxx "*) ;;
4434                 *) libpth="$libpth $xxx";;
4435                 esac
4436     fi
4437 done
4438 $cat <<'EOM'
4439
4440 Some systems have incompatible or broken versions of libraries.  Among
4441 the directories listed in the question below, please remove any you
4442 know not to be holding relevant libraries, and add any that are needed.
4443 Say "none" for none.
4444
4445 EOM
4446 case "$libpth" in
4447 '') dflt='none';;
4448 *)
4449         set X $libpth
4450         shift
4451         dflt=${1+"$@"}
4452         ;;
4453 esac
4454 rp="Directories to use for library searches?"
4455 . ./myread
4456 case "$ans" in
4457 none) libpth=' ';;
4458 *) libpth="$ans";;
4459 esac
4460
4461 : compute shared library extension
4462 case "$so" in
4463 '')
4464         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4465                 dflt='sl'
4466         else
4467                 dflt='so'
4468         fi
4469         ;;
4470 *) dflt="$so";;
4471 esac
4472 $cat <<EOM
4473
4474 On some systems, shared libraries may be available.  Answer 'none' if
4475 you want to suppress searching of shared libraries for the remainder
4476 of this configuration.
4477
4478 EOM
4479 rp='What is the file extension used for shared libraries?'
4480 . ./myread
4481 so="$ans"
4482
4483 : Define several unixisms.
4484 : Hints files or command line option can be used to override them.
4485 : The convoluted testing is in case hints files set either the old
4486 : or the new name.
4487 case "$_exe" in
4488 '')     case "$exe_ext" in
4489         '')     ;;
4490         *)      _exe="$exe_ext" ;;
4491         esac
4492         ;;
4493 esac
4494 case "$_a" in
4495 '')     case "$lib_ext" in
4496     '') _a='.a';;
4497         *)      _a="$lib_ext" ;;
4498         esac
4499         ;;
4500 esac
4501 case "$_o" in
4502 '') case "$obj_ext" in
4503         '')     _o='.o';;
4504         *)      _o="$obj_ext";;
4505         esac
4506         ;;
4507 esac
4508 case "$p_" in
4509 '') case "$path_sep" in
4510         '')     p_=':';;
4511         *)      p_="$path_sep";;
4512         esac
4513         ;;
4514 esac
4515 exe_ext=$_exe
4516 lib_ext=$_a
4517 obj_ext=$_o
4518 path_sep=$p_
4519
4520 : Which makefile gets called first.  This is used by make depend.
4521 case "$firstmakefile" in
4522 '') firstmakefile='makefile';;
4523 esac
4524
4525 case "$ccflags" in
4526 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4527 esac
4528
4529 case "$uselongdouble" in
4530 $define|true|[yY]*)     dflt='y';;
4531 *) dflt='n';;
4532 esac
4533 cat <<EOM
4534
4535 Perl can be built to take advantage of long doubles which
4536 (if available) may give more accuracy and range for floating point numbers.
4537
4538 If this doesn't make any sense to you, just accept the default '$dflt'.
4539 EOM
4540 rp='Try to use long doubles if available?'
4541 . ./myread
4542 case "$ans" in
4543 y|Y)    val="$define"   ;;
4544 *)      val="$undef"    ;;
4545 esac
4546 set uselongdouble
4547 eval $setvar
4548
4549 case "$uselongdouble" in
4550 true|[yY]*) uselongdouble="$define" ;;
4551 esac
4552
4553 : Look for a hint-file generated 'call-back-unit'.  If the
4554 : user has specified that long doubles should be used,
4555 : we may need to set or change some other defaults.
4556 if $test -f uselongdouble.cbu; then
4557     echo "Your platform has some specific hints regarding long doubles, using them..."
4558     . ./uselongdouble.cbu
4559 else
4560     case "$uselongdouble" in
4561         $define)
4562                 $cat <<EOM
4563 (Your platform does not have any specific hints for long doubles.)
4564 EOM
4565         ;;
4566     esac
4567 fi
4568
4569 : Looking for optional libraries
4570 echo " "
4571 echo "Checking for optional libraries..." >&4
4572 case "$libs" in
4573 ' '|'') dflt='';;
4574 *) dflt="$libs";;
4575 esac
4576 case "$libswanted" in
4577 '') libswanted='c_s';;
4578 esac
4579 case "$usesocks" in
4580 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4581 esac
4582 libsfound=''
4583 libsfiles=''
4584 libsdirs=''
4585 libspath=''
4586 for thisdir in $libpth $xlibpth; do
4587   test -d $thisdir && libspath="$libspath $thisdir"
4588 done
4589 for thislib in $libswanted; do
4590         for thisdir in $libspath; do
4591             xxx=''
4592             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4593                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4594                 $test -f "$xxx" && eval $libscheck
4595                 $test -f "$xxx" && libstyle=shared
4596             fi
4597             if test ! -f "$xxx"; then
4598                 xxx=$thisdir/lib$thislib.$so
4599                 $test -f "$xxx" && eval $libscheck
4600                 $test -f "$xxx" && libstyle=shared
4601             fi  
4602             if test ! -f "$xxx"; then
4603                 xxx=$thisdir/lib$thislib$_a
4604                 $test -f "$xxx" && eval $libscheck
4605                 $test -f "$xxx" && libstyle=static
4606             fi
4607             if test ! -f "$xxx"; then
4608                 xxx=$thisdir/$thislib$_a
4609                 $test -f "$xxx" && eval $libscheck
4610                 $test -f "$xxx" && libstyle=static
4611             fi
4612             if test ! -f "$xxx"; then
4613                 xxx=$thisdir/lib${thislib}_s$_a
4614                 $test -f "$xxx" && eval $libscheck
4615                 $test -f "$xxx" && libstyle=static
4616                 $test -f "$xxx" && thislib=${thislib}_s
4617             fi
4618             if test ! -f "$xxx"; then
4619                 xxx=$thisdir/Slib$thislib$_a
4620                 $test -f "$xxx" && eval $libscheck
4621                 $test -f "$xxx" && libstyle=static
4622             fi
4623             if $test -f "$xxx"; then
4624                 case "$libstyle" in
4625                 shared) echo "Found -l$thislib (shared)." ;;
4626                 static) echo "Found -l$thislib." ;;
4627                 *)      echo "Found -l$thislib ($libstyle)." ;;
4628                 esac
4629                 case " $dflt " in
4630                 *"-l$thislib "*);;
4631                 *) dflt="$dflt -l$thislib"
4632                    libsfound="$libsfound $xxx"
4633                    yyy=`basename $xxx`
4634                    libsfiles="$libsfiles $yyy"
4635                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4636                    case " $libsdirs " in
4637                    *" $yyy "*) ;;
4638                    *) libsdirs="$libsdirs $yyy" ;;
4639                    esac
4640                    ;;
4641                 esac
4642                 break
4643             fi  
4644         done
4645         if $test ! -f "$xxx"; then
4646             echo "No -l$thislib."
4647         fi
4648 done
4649 set X $dflt
4650 shift
4651 dflt="$*"
4652 case "$libs" in
4653 '') dflt="$dflt";;
4654 *) dflt="$libs";;
4655 esac
4656 case "$dflt" in
4657 ' '|'') dflt='none';;
4658 esac
4659
4660 $cat <<EOM
4661
4662 In order to compile $package on your machine, a number of libraries
4663 are usually needed.  Include any other special libraries here as well.
4664 Say "none" for none.  The default list is almost always right.
4665 EOM
4666
4667 echo " "
4668 rp="What libraries to use?"
4669 . ./myread
4670 case "$ans" in
4671 none) libs=' ';;
4672 *) libs="$ans";;
4673 esac
4674
4675 : determine optimization, if desired, or use for debug flag also
4676 case "$optimize" in
4677 ' '|$undef) dflt='none';;
4678 '') dflt='-O';;
4679 *) dflt="$optimize";;
4680 esac
4681 $cat <<EOH
4682
4683 By default, $package compiles with the -O flag to use the optimizer.
4684 Alternately, you might want to use the symbolic debugger, which uses
4685 the -g flag (on traditional Unix systems).  Either flag can be
4686 specified here.  To use neither flag, specify the word "none".
4687
4688 EOH
4689 rp="What optimizer/debugger flag should be used?"
4690 . ./myread
4691 optimize="$ans"
4692 case "$optimize" in
4693 'none') optimize=" ";;
4694 esac
4695
4696 dflt=''
4697 : We will not override a previous value, but we might want to
4698 : augment a hint file
4699 case "$hint" in
4700 default|recommended)
4701         case "$gccversion" in
4702         1*) dflt='-fpcc-struct-return' ;;
4703         esac
4704         case "$optimize" in
4705         *-g*) dflt="$dflt -DDEBUGGING";;
4706         esac
4707         case "$gccversion" in
4708         2*) if test -d /etc/conf/kconfig.d &&
4709                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4710                 then
4711                         # Interactive Systems (ISC) POSIX mode.
4712                         dflt="$dflt -posix"
4713                 fi
4714                 ;;
4715         esac
4716         case "$gccversion" in
4717         1*) ;;
4718         2.[0-8]*) ;;
4719         ?*)     echo " "
4720                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4721                 echo 'int main(void) { return 0; }' > gcctest.c
4722                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4723                         echo "Yes, it does." 2>&1
4724                         case "$ccflags" in
4725                         *strict-aliasing*)
4726                                 echo "Leaving current flags $ccflags alone." 2>&1
4727                                 ;;
4728                         *) dflt="$dflt -fno-strict-aliasing" ;;
4729                         esac
4730                 else
4731                         echo "Nope, it doesn't, but that's ok." 2>&1
4732                 fi
4733                 ;;
4734         esac
4735         # For gcc, adding -pipe speeds up compilations for some, but apparently
4736         # some assemblers can't read from stdin.  (It also slows down compilations
4737         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
4738         case "$gccversion" in
4739         ?*)     echo " "
4740                 echo "Checking if your compiler accepts -pipe" 2>&1
4741                 echo 'int main(void) { return 0; }' > gcctest.c
4742                 if $cc -O2 -pipe -o gcctest gcctest.c; then
4743                         echo "Yes, it does." 2>&1
4744                         case "$ccflags" in
4745                         *-pipe*)
4746                                 echo "Leaving current flags $ccflags alone." 2>&1
4747                                 ;;
4748                         *) dflt="$dflt -pipe" ;;
4749                         esac
4750                 else
4751                         echo "Nope, it doesn't, but that's ok." 2>&1
4752                 fi
4753                 ;;
4754         esac
4755         ;;
4756 esac
4757
4758 case "$mips_type" in
4759 *BSD*|'') inclwanted="$locincpth $usrinc";;
4760 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4761 esac
4762 for thisincl in $inclwanted; do
4763         if $test -d $thisincl; then
4764                 if $test x$thisincl != x$usrinc; then
4765                         case "$dflt" in
4766                         *" -I$thisincl "*);;
4767                         *) dflt="$dflt -I$thisincl ";;
4768                         esac
4769                 fi
4770         fi
4771 done
4772
4773 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4774         xxx=true;
4775 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4776         xxx=true;
4777 else
4778         xxx=false;
4779 fi;
4780 if $xxx; then
4781         case "$dflt" in
4782         *$2*);;
4783         *) dflt="$dflt -D$2";;
4784         esac;
4785 fi'
4786
4787 set signal.h LANGUAGE_C; eval $inctest
4788
4789 case "$usesocks" in
4790 $define)
4791         ccflags="$ccflags -DSOCKS"
4792         ;;
4793 esac
4794
4795 case "$hint" in
4796 default|recommended) dflt="$ccflags $dflt" ;;
4797 *) dflt="$ccflags";;
4798 esac
4799
4800 case "$dflt" in
4801 ''|' ') dflt=none;;
4802 esac
4803
4804 $cat <<EOH
4805
4806 Your C compiler may want other flags.  For this question you should include
4807 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4808 but you should NOT include libraries or ld flags like -lwhatever.  If you
4809 want $package to honor its debug switch, you should include -DDEBUGGING here.
4810 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4811
4812 To use no flags, specify the word "none".
4813
4814 EOH
4815 set X $dflt
4816 shift
4817 dflt=${1+"$@"}
4818 rp="Any additional cc flags?"
4819 . ./myread
4820 case "$ans" in
4821 none) ccflags='';;
4822 *) ccflags="$ans";;
4823 esac
4824
4825 : the following weeds options from ccflags that are of no interest to cpp
4826 case "$cppflags" in
4827 '') cppflags="$ccflags" ;;
4828 *)  cppflags="$cppflags $ccflags" ;;
4829 esac
4830 case "$gccversion" in
4831 1*) cppflags="$cppflags -D__GNUC__"
4832 esac
4833 case "$mips_type" in
4834 '');;
4835 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4836 esac
4837 case "$cppflags" in
4838 '');;
4839 *)
4840         echo " "
4841         echo "Let me guess what the preprocessor flags are..." >&4
4842         set X $cppflags
4843         shift
4844         cppflags=''
4845         $cat >cpp.c <<'EOM'
4846 #define BLURFL foo
4847
4848 BLURFL xx LFRULB
4849 EOM
4850         previous=''
4851         for flag in $*
4852         do
4853                 case "$flag" in
4854                 -*) ftry="$flag";;
4855                 *) ftry="$previous $flag";;
4856                 esac
4857                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4858                         >cpp1.out 2>/dev/null && \
4859                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4860                         >cpp2.out 2>/dev/null && \
4861                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4862                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4863                 then
4864                         cppflags="$cppflags $ftry"
4865                         previous=''
4866                 else
4867                         previous="$flag"
4868                 fi
4869         done
4870         set X $cppflags
4871         shift
4872         cppflags=${1+"$@"}
4873         case "$cppflags" in
4874         *-*)  echo "They appear to be: $cppflags";;
4875         esac
4876         $rm -f cpp.c cpp?.out
4877         ;;
4878 esac
4879
4880 : flags used in final linking phase
4881 case "$ldflags" in
4882 '') if ./venix; then
4883                 dflt='-i -z'
4884         else
4885                 dflt=''
4886         fi
4887         case "$ccflags" in
4888         *-posix*) dflt="$dflt -posix" ;;
4889         esac
4890         ;;
4891 *) dflt="$ldflags";;
4892 esac
4893
4894 : Try to guess additional flags to pick up local libraries.
4895 for thislibdir in $libpth; do
4896         case " $loclibpth " in
4897         *" $thislibdir "*)
4898                 case "$dflt " in
4899                 *"-L$thislibdir "*) ;;
4900                 *)  dflt="$dflt -L$thislibdir" ;;
4901                 esac
4902                 ;;
4903         esac
4904 done
4905
4906 case "$dflt" in
4907 '') dflt='none' ;;
4908 esac
4909
4910 $cat <<EOH
4911
4912 Your C linker may need flags.  For this question you should
4913 include -L/whatever and any other flags used by the C linker, but you
4914 should NOT include libraries like -lwhatever.
4915
4916 Make sure you include the appropriate -L/path flags if your C linker
4917 does not normally search all of the directories you specified above,
4918 namely
4919         $libpth
4920 To use no flags, specify the word "none".
4921
4922 EOH
4923
4924 rp="Any additional ld flags (NOT including libraries)?"
4925 . ./myread
4926 case "$ans" in
4927 none) ldflags='';;
4928 *) ldflags="$ans";;
4929 esac
4930 rmlist="$rmlist pdp11"
4931
4932 : coherency check
4933 echo " "
4934 echo "Checking your choice of C compiler and flags for coherency..." >&4
4935 $cat > try.c <<'EOF'
4936 #include <stdio.h>
4937 int main() { printf("Ok\n"); return(0); }
4938 EOF
4939 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4940 shift
4941 $cat >try.msg <<'EOM'
4942 I've tried to compile and run the following simple program:
4943
4944 EOM
4945 $cat try.c >> try.msg
4946
4947 $cat >> try.msg <<EOM
4948
4949 I used the command:
4950
4951         $*
4952         $run ./try
4953
4954 and I got the following output:
4955
4956 EOM
4957 dflt=y
4958 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4959         if $sh -c "$run ./try" >>try.msg 2>&1; then
4960                 xxx=`$run ./try`
4961                 case "$xxx" in
4962                 "Ok") dflt=n ;;
4963                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4964                         case " $libs " in
4965                         *" -lsfio "*)
4966                                 cat >> try.msg <<'EOQS'
4967 If $libs contains -lsfio, and sfio is mis-configured, then it
4968 sometimes (apparently) runs and exits with a 0 status, but with no
4969 output!  It may have to do with sfio's use of _exit vs. exit.
4970
4971 EOQS
4972                                 rp="You have a big problem.  Shall I abort Configure"
4973                                 dflt=y
4974                                 ;;
4975                         esac
4976                         ;;
4977                 esac
4978         else
4979                 echo "The program compiled OK, but exited with status $?." >>try.msg
4980                 rp="You have a problem.  Shall I abort Configure"
4981                 dflt=y
4982         fi
4983 else
4984         echo "I can't compile the test program." >>try.msg
4985         rp="You have a BIG problem.  Shall I abort Configure"
4986         dflt=y
4987 fi
4988 case "$dflt" in
4989 y)
4990         $cat try.msg >&4
4991         case "$knowitall" in
4992         '')
4993                 echo "(The supplied flags or libraries might be incorrect.)"
4994                 ;;
4995         *) dflt=n;;
4996         esac
4997         echo " "
4998         . ./myread
4999         case "$ans" in
5000         n*|N*) ;;
5001         *)      echo "Ok.  Stopping Configure." >&4
5002                 exit 1
5003                 ;;
5004         esac
5005         ;;
5006 n) echo "OK, that should do.";;
5007 esac
5008 $rm -f try try.* core
5009
5010 : define a shorthand compile call
5011 compile='
5012 mc_file=$1;
5013 shift;
5014 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5015 : define a shorthand compile call for compilations that should be ok.
5016 compile_ok='
5017 mc_file=$1;
5018 shift;
5019 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5020
5021 : determine filename position in cpp output
5022 echo " "
5023 echo "Computing filename position in cpp output for #include directives..." >&4
5024 case "$osname" in
5025 vos) testaccess=-e ;;
5026 *)   testaccess=-r ;;
5027 esac
5028 echo '#include <stdio.h>' > foo.c
5029 $cat >fieldn <<EOF
5030 $startsh
5031 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5032 $grep '^[       ]*#.*stdio\.h' | \
5033 while read cline; do
5034         pos=1
5035         set \$cline
5036         while $test \$# -gt 0; do
5037                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5038                         echo "\$pos"
5039                         exit 0
5040                 fi
5041                 shift
5042                 pos=\`expr \$pos + 1\`
5043         done
5044 done
5045 EOF
5046 chmod +x fieldn
5047 fieldn=`./fieldn`
5048 $rm -f foo.c fieldn
5049 case $fieldn in
5050 '') pos='???';;
5051 1) pos=first;;
5052 2) pos=second;;
5053 3) pos=third;;
5054 *) pos="${fieldn}th";;
5055 esac
5056 echo "Your cpp writes the filename in the $pos field of the line."
5057
5058 case "$osname" in
5059 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5060 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5061 *)   cppfilter='' ;;
5062 esac
5063 : locate header file
5064 $cat >findhdr <<EOF
5065 $startsh
5066 wanted=\$1
5067 name=''
5068 for usrincdir in $usrinc
5069 do
5070         if test -f \$usrincdir/\$wanted; then
5071                 echo "\$usrincdir/\$wanted"
5072                 exit 0
5073         fi
5074 done
5075 awkprg='{ print \$$fieldn }'
5076 echo "#include <\$wanted>" > foo\$\$.c
5077 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5078 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5079 while read cline; do
5080         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5081         case "\$name" in
5082         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5083         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5084         *) exit 2;;
5085         esac;
5086 done;
5087 #
5088 # status = 0: grep returned 0 lines, case statement not executed
5089 # status = 1: headerfile found
5090 # status = 2: while loop executed, no headerfile found
5091 #
5092 status=\$?
5093 $rm -f foo\$\$.c;
5094 if test \$status -eq 1; then
5095         exit 0;
5096 fi
5097 exit 1
5098 EOF
5099 chmod +x findhdr
5100
5101 : define an alternate in-header-list? function
5102 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5103 cont=true; xxf="echo \"<\$1> found.\" >&4";
5104 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5105 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5106 esac;
5107 case $# in 4) instead=instead;; *) instead="at last";; esac;
5108 while $test "$cont"; do
5109         xxx=`./findhdr $1`
5110         var=$2; eval "was=\$$2";
5111         if $test "$xxx" && $test -r "$xxx";
5112         then eval $xxf;
5113         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5114                 cont="";
5115         else eval $xxnf;
5116         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5117         set $yyy; shift; shift; yyy=$@;
5118         case $# in 0) cont="";;
5119         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5120                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5121         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5122                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5123         esac;
5124 done;
5125 while $test "$yyy";
5126 do set $yyy; var=$2; eval "was=\$$2";
5127         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5128         set $yyy; shift; shift; yyy=$@;
5129 done'
5130
5131 : see if stdlib is available
5132 set stdlib.h i_stdlib
5133 eval $inhdr
5134
5135 : check for lengths of integral types
5136 echo " "
5137 case "$intsize" in
5138 '')
5139         echo "Checking to see how big your integers are..." >&4
5140         $cat >try.c <<EOCP
5141 #include <stdio.h>
5142 #$i_stdlib I_STDLIB
5143 #ifdef I_STDLIB
5144 #include <stdlib.h>
5145 #endif
5146 int main()
5147 {
5148         printf("intsize=%d;\n", (int)sizeof(int));
5149         printf("longsize=%d;\n", (int)sizeof(long));
5150         printf("shortsize=%d;\n", (int)sizeof(short));
5151         exit(0);
5152 }
5153 EOCP
5154         set try
5155         if eval $compile_ok && $run ./try > /dev/null; then
5156                 eval `$run ./try`
5157                 echo "Your integers are $intsize bytes long."
5158                 echo "Your long integers are $longsize bytes long."
5159                 echo "Your short integers are $shortsize bytes long."
5160         else
5161                 $cat >&4 <<EOM
5162 !
5163 Help! I can't compile and run the intsize test program: please enlighten me!
5164 (This is probably a misconfiguration in your system or libraries, and
5165 you really ought to fix it.  Still, I'll try anyway.)
5166 !
5167 EOM
5168                 dflt=4
5169                 rp="What is the size of an integer (in bytes)?"
5170                 . ./myread
5171                 intsize="$ans"
5172                 dflt=$intsize
5173                 rp="What is the size of a long integer (in bytes)?"
5174                 . ./myread
5175                 longsize="$ans"
5176                 dflt=2
5177                 rp="What is the size of a short integer (in bytes)?"
5178                 . ./myread
5179                 shortsize="$ans"
5180         fi
5181         ;;
5182 esac
5183 $rm -f try try.*
5184
5185 : check for long long
5186 echo " "
5187 echo "Checking to see if you have long long..." >&4
5188 echo 'int main() { long long x = 7; return 0; }' > try.c
5189 set try
5190 if eval $compile; then
5191         val="$define"
5192         echo "You have long long."
5193 else
5194         val="$undef"
5195         echo "You do not have long long."
5196 fi
5197 $rm try.*
5198 set d_longlong
5199 eval $setvar
5200
5201 : check for length of long long
5202 case "${d_longlong}${longlongsize}" in
5203 $define)
5204         echo " "
5205         echo "Checking to see how big your long longs are..." >&4
5206         $cat >try.c <<'EOCP'
5207 #include <stdio.h>
5208 int main()
5209 {
5210     printf("%d\n", (int)sizeof(long long));
5211     return(0);
5212 }
5213 EOCP
5214         set try
5215         if eval $compile_ok; then
5216                 longlongsize=`$run ./try`
5217                 echo "Your long longs are $longlongsize bytes long."
5218         else
5219                 dflt='8'
5220                 echo " "
5221                 echo "(I can't seem to compile the test program.  Guessing...)"
5222                 rp="What is the size of a long long (in bytes)?"
5223                 . ./myread
5224                 longlongsize="$ans"
5225         fi
5226         if $test "X$longsize" = "X$longlongsize"; then
5227                 echo "(That isn't any different from an ordinary long.)"
5228         fi      
5229         ;;
5230 esac
5231 $rm -f try.* try
5232
5233 : see if inttypes.h is available
5234 : we want a real compile instead of Inhdr because some systems
5235 : have an inttypes.h which includes non-existent headers
5236 echo " "
5237 $cat >try.c <<EOCP
5238 #include <inttypes.h>
5239 int main() {
5240         static int32_t foo32 = 0x12345678;
5241 }
5242 EOCP
5243 set try
5244 if eval $compile; then
5245         echo "<inttypes.h> found." >&4
5246         val="$define"
5247 else
5248         echo "<inttypes.h> NOT found." >&4
5249         val="$undef"
5250 fi
5251 $rm -f try.c try
5252 set i_inttypes
5253 eval $setvar
5254
5255 : check for int64_t
5256 echo " "
5257 echo "Checking to see if you have int64_t..." >&4
5258 $cat >try.c <<EOCP
5259 #include <sys/types.h>
5260 #$i_inttypes I_INTTYPES
5261 #ifdef I_INTTYPES
5262 #include <inttypes.h>
5263 #endif
5264 int main() { int64_t x = 7; }
5265 EOCP
5266 set try
5267 if eval $compile; then
5268         val="$define"
5269         echo "You have int64_t."
5270 else
5271         val="$undef"
5272         echo "You do not have int64_t."
5273 fi
5274 $rm -f try try.*
5275 set d_int64_t
5276 eval $setvar
5277
5278
5279 echo " "
5280 echo "Checking which 64-bit integer type we could use..." >&4
5281
5282 case "$intsize" in
5283 8) val=int
5284    set quadtype
5285    eval $setvar
5286    val='"unsigned int"'
5287    set uquadtype
5288    eval $setvar
5289    quadkind=1
5290    ;;
5291 *) case "$longsize" in
5292    8) val=long
5293       set quadtype
5294       eval $setvar
5295       val='"unsigned long"'
5296       set uquadtype
5297       eval $setvar
5298       quadkind=2
5299       ;;
5300    *) case "$d_longlong:$longlongsize" in
5301       define:8)
5302         val='"long long"'
5303         set quadtype
5304         eval $setvar
5305         val='"unsigned long long"'
5306         set uquadtype
5307         eval $setvar
5308         quadkind=3
5309         ;;
5310       *) case "$d_int64_t" in
5311          define)
5312            val=int64_t
5313            set quadtype
5314            eval $setvar
5315            val=uint64_t
5316            set uquadtype
5317            eval $setvar
5318            quadkind=4
5319            ;;
5320          esac
5321          ;;
5322       esac
5323       ;;
5324    esac
5325    ;;
5326 esac
5327
5328 case "$quadtype" in
5329 '')     echo "Alas, no 64-bit integer types in sight." >&4
5330         d_quad="$undef"
5331         ;;
5332 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5333         d_quad="$define"
5334         ;;
5335 esac
5336
5337
5338 case "$uselonglong" in
5339 "$define"|true|[yY]*)
5340         cat <<EOM >&4
5341
5342 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5343 EOM
5344         use64bitint="$define"
5345         ;;
5346 esac                          
5347 case "$use64bits" in
5348 "$define"|true|[yY]*)
5349         cat <<EOM >&4
5350
5351 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5352 EOM
5353         use64bitint="$define"
5354         ;;
5355 esac                          
5356 case "$use64bitints" in
5357 "$define"|true|[yY]*)
5358         cat <<EOM >&4
5359
5360 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5361 EOM
5362         use64bitint="$define"
5363         ;;
5364 esac                          
5365 case "$use64bitsint" in
5366 "$define"|true|[yY]*)
5367         cat <<EOM >&4
5368
5369 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5370 EOM
5371         use64bitint="$define"
5372         ;;
5373 esac                          
5374 case "$uselonglongs" in
5375 "$define"|true|[yY]*)
5376         cat <<EOM >&4
5377
5378 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5379 EOM
5380         use64bitint="$define"
5381         ;;
5382 esac                          
5383 case "$use64bitsall" in
5384 "$define"|true|[yY]*)
5385         cat <<EOM >&4
5386
5387 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5388 EOM
5389         use64bitall="$define"
5390         ;;
5391 esac                          
5392
5393 case "$ccflags" in
5394 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5395 esac
5396 case "$use64bitall" in
5397 "$define"|true|[yY]*) use64bitint="$define" ;;
5398 esac
5399
5400 case "$longsize" in
5401 8) cat <<EOM
5402
5403 You have natively 64-bit long integers.
5404 EOM
5405    val="$define"
5406    ;;
5407 *) case "$use64bitint" in
5408    "$define"|true|[yY]*) dflt='y';;
5409    *) dflt='n';;
5410    esac
5411    case "$d_quad" in
5412    "$define") ;;
5413    *) dflt='n' ;;
5414    esac
5415    cat <<EOM
5416
5417 Perl can be built to take advantage of 64-bit integer types
5418 on some systems.  To do so, Configure can be run with -Duse64bitint.
5419 Choosing this option will most probably introduce binary incompatibilities.
5420
5421 If this doesn't make any sense to you, just accept the default '$dflt'.
5422 (The default has been chosen based on your configuration.)
5423 EOM
5424    rp='Try to use 64-bit integers, if available?'
5425    . ./myread
5426    case "$ans" in
5427    [yY]*) val="$define" ;;
5428    *)     val="$undef"  ;;
5429    esac
5430    ;;
5431 esac
5432 set use64bitint
5433 eval $setvar
5434
5435 case "$use64bitall" in
5436 "$define"|true|[yY]*) dflt='y' ;;
5437 *) case "$longsize" in
5438    8) dflt='y' ;;
5439    *) dflt='n' ;;
5440    esac
5441    ;;
5442 esac    
5443 cat <<EOM
5444
5445 You may also choose to try maximal 64-bitness.  It means using as much
5446 64-bitness as possible on the platform.  This in turn means even more
5447 binary incompatibilities.  On the other hand, your platform may not
5448 have any more 64-bitness available than what you already have chosen.
5449
5450 If this doesn't make any sense to you, just accept the default '$dflt'.
5451 (The default has been chosen based on your configuration.)
5452 EOM
5453 rp='Try to use maximal 64-bit support, if available?'
5454 . ./myread
5455 case "$ans" in
5456 [yY]*) val="$define" ;;
5457 *)     val="$undef"  ;;
5458 esac
5459 set use64bitall
5460 eval $setvar
5461 case "$use64bitall" in
5462 "$define")
5463         case "$use64bitint" in
5464         "$undef")
5465                 cat <<EOM
5466
5467 Since you have chosen a maximally 64-bit build, I'm also turning on
5468 the use of 64-bit integers.
5469 EOM
5470                 use64bitint="$define" ;;
5471         esac
5472         ;;
5473 esac
5474
5475 : Look for a hint-file generated 'call-back-unit'.  If the
5476 : user has specified that a 64-bit perl is to be built,
5477 : we may need to set or change some other defaults.
5478 if $test -f use64bitint.cbu; then
5479         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5480         . ./use64bitint.cbu
5481 fi
5482 case "$use64bitint" in
5483 "$define"|true|[yY]*)
5484         case "$longsize" in
5485         4) case "$archname64" in
5486            '') archname64=64int ;;
5487            esac
5488            ;;
5489         esac
5490         ;;
5491 esac
5492
5493 : Look for a hint-file generated 'call-back-unit'.  If the
5494 : user has specified that a maximally 64-bit perl is to be built,
5495 : we may need to set or change some other defaults.
5496 if $test -f use64bitall.cbu; then
5497         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5498         . ./use64bitall.cbu
5499 fi
5500 case "$use64bitall" in
5501 "$define"|true|[yY]*)
5502         case "$longsize" in
5503         4) case "$archname64" in
5504            ''|64int) archname64=64all ;;
5505            esac
5506            ;;
5507         esac
5508         ;;
5509 esac
5510
5511 case "$d_quad:$use64bitint" in
5512 $undef:$define)
5513         cat >&4 <<EOF
5514
5515 *** You have chosen to use 64-bit integers,
5516 *** but none can be found.
5517 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5518 *** Cannot continue, aborting.
5519
5520 EOF
5521         exit 1
5522         ;;
5523 esac
5524
5525 : check for length of double
5526 echo " "
5527 case "$doublesize" in
5528 '')
5529         echo "Checking to see how big your double precision numbers are..." >&4
5530         $cat >try.c <<EOCP
5531 #include <stdio.h>
5532 #$i_stdlib I_STDLIB
5533 #ifdef I_STDLIB
5534 #include <stdlib.h>
5535 #endif
5536 int main()
5537 {
5538     printf("%d\n", (int)sizeof(double));
5539     exit(0);
5540 }
5541 EOCP
5542         set try
5543         if eval $compile_ok; then
5544                 doublesize=`$run ./try`
5545                 echo "Your double is $doublesize bytes long."
5546         else
5547                 dflt='8'
5548                 echo "(I can't seem to compile the test program.  Guessing...)"
5549                 rp="What is the size of a double precision number (in bytes)?"
5550                 . ./myread
5551                 doublesize="$ans"
5552         fi
5553         ;;
5554 esac
5555 $rm -f try.c try
5556
5557 : check for long doubles
5558 echo " "
5559 echo "Checking to see if you have long double..." >&4
5560 echo 'int main() { long double x = 7.0; }' > try.c
5561 set try
5562 if eval $compile; then
5563         val="$define"
5564         echo "You have long double."
5565 else
5566         val="$undef"
5567         echo "You do not have long double."
5568 fi
5569 $rm try.*
5570 set d_longdbl
5571 eval $setvar
5572
5573 : check for length of long double
5574 case "${d_longdbl}${longdblsize}" in
5575 $define)
5576         echo " "
5577         echo "Checking to see how big your long doubles are..." >&4
5578         $cat >try.c <<'EOCP'
5579 #include <stdio.h>
5580 int main()
5581 {
5582         printf("%d\n", sizeof(long double));
5583 }
5584 EOCP
5585         set try
5586         set try
5587         if eval $compile; then
5588                 longdblsize=`$run ./try`
5589                 echo "Your long doubles are $longdblsize bytes long."
5590         else
5591                 dflt='8'
5592                 echo " "
5593                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5594                 rp="What is the size of a long double (in bytes)?"
5595                 . ./myread
5596                 longdblsize="$ans"
5597         fi
5598         if $test "X$doublesize" = "X$longdblsize"; then
5599                 echo "That isn't any different from an ordinary double."
5600                 echo "I'll keep your setting anyway, but you may see some"
5601                 echo "harmless compilation warnings."
5602         fi      
5603         ;;
5604 esac
5605 $rm -f try.* try
5606
5607 : determine the architecture name
5608 echo " "
5609 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5610         tarch=`arch`"-$osname"
5611 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5612         if uname -m > tmparch 2>&1 ; then
5613                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5614                         -e 's/$/'"-$osname/" tmparch`
5615         else
5616                 tarch="$osname"
5617         fi
5618         $rm -f tmparch
5619 else
5620         tarch="$osname"
5621 fi
5622 case "$myarchname" in
5623 ''|"$tarch") ;;
5624 *)
5625         echo "(Your architecture name used to be $myarchname.)"
5626         archname=''
5627         ;;
5628 esac
5629 case "$targetarch" in
5630 '') ;;
5631 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5632 esac
5633 myarchname="$tarch"
5634 case "$archname" in
5635 '') dflt="$tarch";;
5636 *) dflt="$archname";;
5637 esac
5638 rp='What is your architecture name'
5639 . ./myread
5640 archname="$ans"
5641 case "$usethreads" in
5642 $define)
5643         echo "Threads selected." >&4
5644         case "$archname" in
5645         *-thread*) echo "...and architecture name already has -thread." >&4
5646                 ;;
5647         *)      archname="$archname-thread"
5648                 echo "...setting architecture name to $archname." >&4
5649                 ;;
5650         esac
5651         ;;
5652 esac
5653 case "$usemultiplicity" in
5654 $define)
5655         echo "Multiplicity selected." >&4
5656         case "$archname" in
5657         *-multi*) echo "...and architecture name already has -multi." >&4
5658                 ;;
5659         *)      archname="$archname-multi"
5660                 echo "...setting architecture name to $archname." >&4
5661                 ;;
5662         esac
5663         ;;
5664 esac
5665 case "$use64bitint$use64bitall" in
5666 *"$define"*)
5667         case "$archname64" in
5668         '')
5669                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5670                 ;;
5671         *)
5672                 case "$use64bitint" in
5673                 "$define") echo "64 bit integers selected." >&4 ;;
5674                 esac
5675                 case "$use64bitall" in
5676                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5677                 esac
5678                 case "$archname" in
5679                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5680                         ;;
5681                 *)      archname="$archname-$archname64"
5682                         echo "...setting architecture name to $archname." >&4
5683                         ;;
5684                 esac
5685                 ;;
5686         esac
5687 esac
5688 case "$uselongdouble" in
5689 $define)
5690         echo "Long doubles selected." >&4
5691         case "$longdblsize" in
5692         $doublesize)
5693                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5694                 ;;
5695         *)
5696                 case "$archname" in
5697                 *-ld*) echo "...and architecture name already has -ld." >&4
5698                         ;;
5699                 *)      archname="$archname-ld"
5700                         echo "...setting architecture name to $archname." >&4
5701                         ;;
5702                 esac
5703                 ;;
5704         esac
5705         ;;
5706 esac
5707 case "$useperlio" in
5708 $define)
5709         echo "Perlio selected." >&4
5710         ;;
5711 *)
5712         echo "Perlio not selected, using stdio." >&4
5713         case "$archname" in
5714         *-stdio*) echo "...and architecture name already has -stdio." >&4
5715                 ;;
5716         *)      archname="$archname-stdio"
5717                 echo "...setting architecture name to $archname." >&4
5718                 ;;
5719         esac
5720         ;;
5721 esac
5722 if $test -f archname.cbu; then
5723         echo "Your platform has some specific hints for architecture name, using them..."
5724         . ./archname.cbu
5725 fi
5726
5727 : determine root of directory hierarchy where package will be installed.
5728 case "$prefix" in
5729 '')
5730         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5731         ;;
5732 *?/)
5733         dflt=`echo "$prefix" | sed 's/.$//'`
5734         ;;
5735 *)
5736         dflt="$prefix"
5737         ;;
5738 esac
5739 $cat <<EOM
5740
5741 By default, $package will be installed in $dflt/bin, manual pages
5742 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5743 installation directories. Typically this is something like /usr/local.
5744 If you wish to have binaries under /usr/bin but other parts of the
5745 installation under /usr/local, that's ok: you will be prompted
5746 separately for each of the installation directories, the prefix being
5747 only used to set the defaults.
5748
5749 EOM
5750 fn=d~
5751 rp='Installation prefix to use?'
5752 . ./getfile
5753 oldprefix=''
5754 case "$prefix" in
5755 '') ;;
5756 *)
5757         case "$ans" in
5758         "$prefix") ;;
5759         *) oldprefix="$prefix";;
5760         esac
5761         ;;
5762 esac
5763 prefix="$ans"
5764 prefixexp="$ansexp"
5765
5766 case "$afsroot" in
5767 '')     afsroot=/afs ;;
5768 *)      afsroot=$afsroot ;;
5769 esac
5770
5771 : is AFS running?
5772 echo " "
5773 case "$afs" in
5774 $define|true)   afs=true ;;
5775 $undef|false)   afs=false ;;
5776 *)      if test -d $afsroot; then
5777                 afs=true
5778         else
5779                 afs=false
5780         fi
5781         ;;
5782 esac
5783 if $afs; then
5784         echo "AFS may be running... I'll be extra cautious then..." >&4
5785 else
5786         echo "AFS does not seem to be running..." >&4
5787 fi
5788
5789 : determine installation prefix for where package is to be installed.
5790 if $afs; then 
5791 $cat <<EOM
5792
5793 Since you are running AFS, I need to distinguish the directory in which
5794 files will reside from the directory in which they are installed (and from
5795 which they are presumably copied to the former directory by occult means).
5796
5797 EOM
5798         case "$installprefix" in
5799         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5800         *) dflt="$installprefix";;
5801         esac
5802 else
5803 $cat <<EOM
5804
5805 In some special cases, particularly when building $package for distribution,
5806 it is convenient to distinguish the directory in which files should be
5807 installed from the directory ($prefix) in which they will
5808 eventually reside.  For most users, these two directories are the same.
5809
5810 EOM
5811         case "$installprefix" in
5812         '') dflt=$prefix ;;
5813         *) dflt=$installprefix;;
5814         esac
5815 fi
5816 fn=d~
5817 rp='What installation prefix should I use for installing files?'
5818 . ./getfile
5819 installprefix="$ans"
5820 installprefixexp="$ansexp"
5821
5822 : set the prefixit variable, to compute a suitable default value
5823 prefixit='case "$3" in
5824 ""|none)
5825         case "$oldprefix" in
5826         "") eval "$1=\"\$$2\"";;
5827         *)
5828                 case "$3" in
5829                 "") eval "$1=";;
5830                 none)
5831                         eval "tp=\"\$$2\"";
5832                         case "$tp" in
5833                         ""|" ") eval "$1=\"\$$2\"";;
5834                         *) eval "$1=";;
5835                         esac;;
5836                 esac;;
5837         esac;;
5838 *)
5839         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5840         case "$tp" in
5841         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5842         /*-$oldprefix/*|\~*-$oldprefix/*)
5843                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5844         *) eval "$1=\"\$$2\"";;
5845         esac;;
5846 esac'
5847
5848 : get the patchlevel
5849 echo " "
5850 echo "Getting the current patchlevel..." >&4
5851 if $test -r $rsrc/patchlevel.h;then
5852         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5853         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5854         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5855         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5856         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5857         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5858        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5859 else
5860         revision=0
5861         patchlevel=0
5862         subversion=0
5863         api_revision=0
5864         api_version=0
5865         api_subversion=0
5866         perl_patchlevel=0
5867         $echo "(You do not have patchlevel.h.  Eek.)"
5868 fi
5869 if $test -r $rsrc/.patch ; then  
5870         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5871                 perl_patchlevel=`cat $rsrc/.patch`
5872         fi
5873 fi
5874 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5875 version_patchlevel_string="version $patchlevel subversion $subversion"
5876 case "$perl_patchlevel" in
5877 0|'') ;;
5878 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5879 esac
5880
5881 $echo "(You have $package $version_patchlevel_string.)"
5882
5883 case "$osname" in
5884 dos|vms)
5885         : XXX Should be a Configure test for double-dots in filenames.
5886         version=`echo $revision $patchlevel $subversion | \
5887                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5888         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5889                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5890         ;;
5891 *)
5892         version=`echo $revision $patchlevel $subversion | \
5893                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5894         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5895                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5896         ;;
5897 esac
5898 : Special case the 5.005_xx maintenance series, which used 5.005
5899 : without any subversion label as a subdirectory in $sitelib
5900 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5901         api_versionstring='5.005'
5902 fi
5903
5904 : determine installation style
5905 : For now, try to deduce it from prefix unless it is already set.
5906 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5907 case "$installstyle" in
5908 '')     case "$prefix" in
5909                 *perl*) dflt='lib';;
5910                 *) dflt='lib/perl5' ;;
5911         esac
5912         ;;
5913 *)      dflt="$installstyle" ;;
5914 esac
5915 : Probably not worth prompting for this since we prompt for all
5916 : the directories individually, and the prompt would be too long and
5917 : confusing anyway.
5918 installstyle=$dflt
5919
5920 : determine where private library files go
5921 : Usual default is /usr/local/lib/perl5/$version.
5922 : Also allow things like /opt/perl/lib/$version, since 
5923 : /opt/perl/lib/perl5... would be redundant.
5924 : The default "style" setting is made in installstyle.U
5925 case "$installstyle" in
5926 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5927 *)       set dflt privlib lib/$version ;;
5928 esac
5929 eval $prefixit
5930 $cat <<EOM
5931
5932 There are some auxiliary files for $package that need to be put into a
5933 private library directory that is accessible by everyone.
5934
5935 EOM
5936 fn=d~+
5937 rp='Pathname where the private library files will reside?'
5938 . ./getfile
5939 privlib="$ans"
5940 privlibexp="$ansexp"
5941 : Change installation prefix, if necessary.
5942 if $test X"$prefix" != X"$installprefix"; then
5943         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5944 else
5945         installprivlib="$privlibexp"
5946 fi
5947
5948 : set the prefixup variable, to restore leading tilda escape
5949 prefixup='case "$prefixexp" in
5950 "$prefix") ;;
5951 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5952 esac'
5953
5954 : determine where public architecture dependent libraries go
5955 set archlib archlib
5956 eval $prefixit
5957 : privlib default is /usr/local/lib/$package/$version
5958 : archlib default is /usr/local/lib/$package/$version/$archname
5959 : privlib may have an optional trailing /share.
5960 tdflt=`echo $privlib | $sed 's,/share$,,'`
5961 tdflt=$tdflt/$archname
5962 case "$archlib" in
5963 '')     dflt=$tdflt
5964         ;;
5965 *)      dflt="$archlib"
5966     ;;
5967 esac
5968 $cat <<EOM
5969
5970 $spackage contains architecture-dependent library files.  If you are
5971 sharing libraries in a heterogeneous environment, you might store
5972 these files in a separate location.  Otherwise, you can just include
5973 them with the rest of the public library files.
5974
5975 EOM
5976 fn=d+~
5977 rp='Where do you want to put the public architecture-dependent libraries?'
5978 . ./getfile
5979 archlib="$ans"
5980 archlibexp="$ansexp"
5981 if $test X"$archlib" = X"$privlib"; then
5982         d_archlib="$undef"
5983 else
5984         d_archlib="$define"
5985 fi
5986 : Change installation prefix, if necessary.
5987 if $test X"$prefix" != X"$installprefix"; then
5988         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5989 else
5990         installarchlib="$archlibexp"
5991 fi
5992
5993 : see if setuid scripts can be secure
5994 $cat <<EOM
5995
5996 Some kernels have a bug that prevents setuid #! scripts from being
5997 secure.  Some sites have disabled setuid #! scripts because of this.
5998
5999 First let's decide if your kernel supports secure setuid #! scripts.
6000 (If setuid #! scripts would be secure but have been disabled anyway,
6001 don't say that they are secure if asked.)
6002
6003 EOM
6004
6005 val="$undef"
6006 if $test -d /dev/fd; then
6007         echo "#!$ls" >reflect
6008         chmod +x,u+s reflect
6009         ./reflect >flect 2>&1
6010         if $contains "/dev/fd" flect >/dev/null; then
6011                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6012                 val="$define"
6013         else
6014                 $cat <<EOM
6015 If you are not sure if they are secure, I can check but I'll need a
6016 username and password different from the one you are using right now.
6017 If you don't have such a username or don't want me to test, simply
6018 enter 'none'.
6019
6020 EOM
6021                 rp='Other username to test security of setuid scripts with?'
6022                 dflt='none'
6023                 . ./myread
6024                 case "$ans" in
6025                 n|none)
6026                         case "$d_suidsafe" in
6027                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6028                                 dflt=n;;
6029                         "$undef")
6030                                 echo "Well, the $hint value is *not* secure." >&4
6031                                 dflt=n;;
6032                         *)      echo "Well, the $hint value *is* secure." >&4
6033                                 dflt=y;;
6034                         esac
6035                         ;;
6036                 *)
6037                         $rm -f reflect flect
6038                         echo "#!$ls" >reflect
6039                         chmod +x,u+s reflect
6040                         echo >flect
6041                         chmod a+w flect
6042                         echo '"su" will (probably) prompt you for '"$ans's password."
6043                         su $ans -c './reflect >flect'
6044                         if $contains "/dev/fd" flect >/dev/null; then
6045                                 echo "Okay, it looks like setuid scripts are secure." >&4
6046                                 dflt=y
6047                         else
6048                                 echo "I don't think setuid scripts are secure." >&4
6049                                 dflt=n
6050                         fi
6051                         ;;
6052                 esac
6053                 rp='Does your kernel have *secure* setuid scripts?'
6054                 . ./myread
6055                 case "$ans" in
6056                 [yY]*)  val="$define";;
6057                 *)      val="$undef";;
6058                 esac
6059         fi
6060 else
6061         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6062         echo "(That's for file descriptors, not floppy disks.)"
6063         val="$undef"
6064 fi
6065 set d_suidsafe
6066 eval $setvar
6067
6068 $rm -f reflect flect
6069
6070 : now see if they want to do setuid emulation
6071 echo " "
6072 val="$undef"
6073 case "$d_suidsafe" in
6074 "$define")
6075         val="$undef"
6076         echo "No need to emulate SUID scripts since they are secure here." >&4
6077         ;;
6078 *)
6079         $cat <<EOM
6080 Some systems have disabled setuid scripts, especially systems where
6081 setuid scripts cannot be secure.  On systems where setuid scripts have
6082 been disabled, the setuid/setgid bits on scripts are currently
6083 useless.  It is possible for $package to detect those bits and emulate
6084 setuid/setgid in a secure fashion.  This emulation will only work if
6085 setuid scripts have been disabled in your kernel.
6086
6087 EOM
6088         case "$d_dosuid" in
6089         "$define") dflt=y ;;
6090         *) dflt=n ;;
6091         esac
6092         rp="Do you want to do setuid/setgid emulation?"
6093         . ./myread
6094         case "$ans" in
6095         [yY]*)  val="$define";;
6096         *)      val="$undef";;
6097         esac
6098         ;;
6099 esac
6100 set d_dosuid
6101 eval $setvar
6102
6103 : see if this is a malloc.h system
6104 : we want a real compile instead of Inhdr because some systems have a
6105 : malloc.h that just gives a compile error saying to use stdlib.h instead
6106 echo " "
6107 $cat >try.c <<EOCP
6108 #include <stdlib.h>
6109 #include <malloc.h>
6110 int main () { return 0; }
6111 EOCP
6112 set try
6113 if eval $compile; then
6114     echo "<malloc.h> found." >&4
6115     val="$define"
6116 else
6117     echo "<malloc.h> NOT found." >&4
6118     val="$undef"
6119 fi
6120 $rm -f try.c try
6121 set i_malloc
6122 eval $setvar
6123
6124 : check for void type
6125 echo " "
6126 echo "Checking to see how well your C compiler groks the void type..." >&4
6127 case "$voidflags" in
6128 '')
6129         $cat >try.c <<EOCP
6130 #$i_stdlib I_STDLIB
6131 #ifdef I_STDLIB
6132 #include <stdlib.h>
6133 #endif
6134 #if TRY & 1
6135 void sub() {
6136 #else
6137 sub() {
6138 #endif
6139         extern void moo();      /* function returning void */
6140         void (*goo)();          /* ptr to func returning void */
6141 #if TRY & 8
6142         void *hue;              /* generic ptr */
6143 #endif
6144 #if TRY & 2
6145         void (*foo[10])();
6146 #endif
6147
6148 #if TRY & 4
6149         if(goo == moo) {
6150                 exit(0);
6151         }
6152 #endif
6153         exit(0);
6154 }
6155 int main() { sub(); }
6156 EOCP
6157         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6158                 voidflags=$defvoidused
6159         echo "Good.  It appears to support void to the level $package wants.">&4
6160                 if $contains warning .out >/dev/null 2>&1; then
6161                         echo "However, you might get some warnings that look like this:"
6162                         $cat .out
6163                 fi
6164         else
6165 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6166                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6167                         echo "It supports 1..."
6168                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6169                                 echo "It also supports 2..."
6170                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6171                                         voidflags=7
6172                                         echo "And it supports 4 but not 8 definitely."
6173                                 else
6174                                         echo "It doesn't support 4..."
6175                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6176                                                 voidflags=11
6177                                                 echo "But it supports 8."
6178                                         else
6179                                                 voidflags=3
6180                                                 echo "Neither does it support 8."
6181                                         fi
6182                                 fi
6183                         else
6184                                 echo "It does not support 2..."
6185                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6186                                         voidflags=13
6187                                         echo "But it supports 4 and 8."
6188                                 else
6189                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6190                                                 voidflags=5
6191                                                 echo "And it supports 4 but has not heard about 8."
6192                                         else
6193                                                 echo "However it supports 8 but not 4."
6194                                         fi
6195                                 fi
6196                         fi
6197                 else
6198                         echo "There is no support at all for void."
6199                         voidflags=0
6200                 fi
6201         fi
6202 esac
6203 case "$voidflags" in
6204 "$defvoidused") ;;
6205 *)      $cat >&4 <<'EOM'
6206   Support flag bits are:
6207     1: basic void declarations.
6208     2: arrays of pointers to functions returning void.
6209     4: operations between pointers to and addresses of void functions.
6210     8: generic void pointers.
6211 EOM
6212         dflt="$voidflags";
6213         rp="Your void support flags add up to what?"
6214         . ./myread
6215         voidflags="$ans"
6216         ;;
6217 esac
6218 $rm -f try.* .out
6219
6220 : check for length of pointer
6221 echo " "
6222 case "$ptrsize" in
6223 '')
6224         echo "Checking to see how big your pointers are..." >&4
6225         if test "$voidflags" -gt 7; then
6226                 echo '#define VOID_PTR char *' > try.c
6227         else
6228                 echo '#define VOID_PTR void *' > try.c
6229         fi
6230         $cat >>try.c <<EOCP
6231 #include <stdio.h>
6232 #$i_stdlib I_STDLIB
6233 #ifdef I_STDLIB
6234 #include <stdlib.h>
6235 #endif
6236 int main()
6237 {
6238     printf("%d\n", (int)sizeof(VOID_PTR));
6239     exit(0);
6240 }
6241 EOCP
6242         set try
6243         if eval $compile_ok; then
6244                 ptrsize=`$run ./try`
6245                 echo "Your pointers are $ptrsize bytes long."
6246         else
6247                 dflt='4'
6248                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6249                 rp="What is the size of a pointer (in bytes)?"
6250                 . ./myread
6251                 ptrsize="$ans"
6252         fi
6253         ;;
6254 esac
6255 $rm -f try.c try
6256 case "$use64bitall" in
6257 "$define"|true|[yY]*)
6258         case "$ptrsize" in
6259         4)      cat <<EOM >&4
6260
6261 *** You have chosen a maximally 64-bit build,
6262 *** but your pointers are only 4 bytes wide.
6263 *** Please rerun Configure without -Duse64bitall.
6264 EOM
6265                 case "$d_quad" in
6266                 define)
6267                         cat <<EOM >&4
6268 *** Since you have quads, you could possibly try with -Duse64bitint.
6269 EOM
6270                         ;;
6271                 esac
6272                 cat <<EOM >&4
6273 *** Cannot continue, aborting.
6274
6275 EOM
6276
6277                 exit 1
6278                 ;;
6279         esac
6280         ;;
6281 esac
6282
6283
6284 : determine whether to use malloc wrapping
6285 echo " "
6286 case "$usemallocwrap" in
6287 [yY]*|true|$define)     dflt='y' ;;
6288 [nN]*|false|$undef)     dflt='n' ;;
6289 *)      case "$usedevel" in
6290         [yY]*|true|$define)     dflt='y' ;;
6291         *) dflt='n' ;;
6292         esac
6293         ;;
6294 esac
6295 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6296 . ./myread
6297 usemallocwrap="$ans"
6298 case "$ans" in
6299 y*|true)
6300         usemallocwrap="$define" ;;
6301 *)
6302         usemallocwrap="$undef" ;;
6303 esac
6304
6305 : determine which malloc to compile in
6306 echo " "
6307 case "$usemymalloc" in
6308 [yY]*|true|$define)     dflt='y' ;;
6309 [nN]*|false|$undef)     dflt='n' ;;
6310 *)      case "$ptrsize" in
6311         4) dflt='y' ;;
6312         *) dflt='n' ;;
6313         esac
6314         ;;
6315 esac
6316 rp="Do you wish to attempt to use the malloc that comes with $package?"
6317 . ./myread
6318 usemymalloc="$ans"
6319 case "$ans" in
6320 y*|true)
6321         usemymalloc='y'
6322         mallocsrc='malloc.c'
6323         mallocobj="malloc$_o"
6324         d_mymalloc="$define"
6325         case "$libs" in
6326         *-lmalloc*)
6327                 : Remove malloc from list of libraries to use
6328                 echo "Removing unneeded -lmalloc from library list" >&4
6329                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6330                 shift
6331                 libs="$*"
6332                 echo "libs = $libs" >&4
6333                 ;;
6334         esac
6335         ;;
6336 *)
6337         usemymalloc='n'
6338         mallocsrc=''
6339         mallocobj=''
6340         d_mymalloc="$undef"
6341         ;;
6342 esac
6343
6344 : compute the return types of malloc and free
6345 echo " "
6346 $cat >malloc.c <<END
6347 #$i_malloc I_MALLOC
6348 #$i_stdlib I_STDLIB
6349 #include <stdio.h>
6350 #include <sys/types.h>
6351 #ifdef I_MALLOC
6352 #include <malloc.h>
6353 #endif
6354 #ifdef I_STDLIB
6355 #include <stdlib.h>
6356 #endif
6357 #ifdef TRY_MALLOC
6358 void *malloc();
6359 #endif
6360 #ifdef TRY_FREE
6361 void free();
6362 #endif
6363 END
6364 case "$malloctype" in
6365 '')
6366         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6367                 malloctype='void *'
6368         else
6369                 malloctype='char *'
6370         fi
6371         ;;
6372 esac
6373 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6374
6375 case "$freetype" in
6376 '')
6377         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6378                 freetype='void'
6379         else
6380                 freetype='int'
6381         fi
6382         ;;
6383 esac
6384 echo "Your system uses $freetype free(), it would seem." >&4
6385 $rm -f malloc.[co]
6386 $cat <<EOM
6387
6388 After $package is installed, you may wish to install various
6389 add-on modules and utilities.  Typically, these add-ons will
6390 be installed under $prefix with the rest
6391 of this package.  However, you may wish to install such add-ons
6392 elsewhere under a different prefix.
6393
6394 If you do not wish to put everything under a single prefix, that's
6395 ok.  You will be prompted for the individual locations; this siteprefix
6396 is only used to suggest the defaults.
6397
6398 The default should be fine for most people.
6399
6400 EOM
6401 fn=d~+
6402 rp='Installation prefix to use for add-on modules and utilities?'
6403 : XXX Here might be another good place for an installstyle setting.
6404 case "$siteprefix" in
6405 '') dflt=$prefix ;;
6406 *)  dflt=$siteprefix ;;
6407 esac
6408 . ./getfile
6409 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6410 oldsiteprefix=''
6411 case "$siteprefix" in
6412 '') ;;
6413 *)      case "$ans" in
6414         "$prefix") ;;
6415         *) oldsiteprefix="$prefix";;
6416         esac
6417         ;;
6418 esac
6419 siteprefix="$ans"
6420 siteprefixexp="$ansexp"
6421
6422 : determine where site specific libraries go.
6423 : Usual default is /usr/local/lib/perl5/site_perl/$version
6424 : The default "style" setting is made in installstyle.U
6425 : XXX No longer works with Prefixit stuff.
6426 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6427 case "$sitelib" in
6428 '') case "$installstyle" in
6429         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6430         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6431         esac
6432         ;;
6433 *)      dflt="$sitelib"
6434         ;;
6435 esac
6436 $cat <<EOM
6437
6438 The installation process will create a directory for
6439 site-specific extensions and modules.  Most users find it convenient
6440 to place all site-specific files in this directory rather than in the
6441 main distribution directory.
6442
6443 EOM
6444 fn=d~+
6445 rp='Pathname for the site-specific library files?'
6446 . ./getfile
6447 sitelib="$ans"
6448 sitelibexp="$ansexp"
6449 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6450 : Change installation prefix, if necessary.
6451 if $test X"$prefix" != X"$installprefix"; then
6452         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6453 else
6454         installsitelib="$sitelibexp"
6455 fi
6456
6457 : determine where site specific architecture-dependent libraries go.
6458 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6459 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6460 : sitelib may have an optional trailing /share.
6461 case "$sitearch" in
6462 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6463         dflt="$dflt/$archname"
6464         ;;
6465 *)      dflt="$sitearch"
6466         ;;
6467 esac
6468 set sitearch sitearch none
6469 eval $prefixit
6470 $cat <<EOM
6471
6472 The installation process will also create a directory for
6473 architecture-dependent site-specific extensions and modules.
6474
6475 EOM
6476 fn=d~+
6477 rp='Pathname for the site-specific architecture-dependent library files?'
6478 . ./getfile
6479 sitearch="$ans"
6480 sitearchexp="$ansexp"
6481 : Change installation prefix, if necessary.
6482 if $test X"$prefix" != X"$installprefix"; then
6483         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6484 else
6485         installsitearch="$sitearchexp"
6486 fi
6487
6488 $cat <<EOM
6489
6490 The installation process will also create a directory for
6491 vendor-supplied add-ons.  Vendors who supply perl with their system
6492 may find it convenient to place all vendor-supplied files in this
6493 directory rather than in the main distribution directory.  This will
6494 ease upgrades between binary-compatible maintenance versions of perl.
6495
6496 Of course you may also use these directories in whatever way you see
6497 fit.  For example, you might use them to access modules shared over a
6498 company-wide network.
6499
6500 The default answer should be fine for most people.
6501 This causes further questions about vendor add-ons to be skipped
6502 and no vendor-specific directories will be configured for perl.
6503
6504 EOM
6505 rp='Do you want to configure vendor-specific add-on directories?'
6506 case "$usevendorprefix" in
6507 define|true|[yY]*) dflt=y ;;
6508 *)      : User may have set vendorprefix directly on Configure command line.
6509         case "$vendorprefix" in
6510         ''|' ') dflt=n ;;
6511         *)      dflt=y ;;
6512         esac
6513         ;;
6514 esac
6515 . ./myread
6516 case "$ans" in
6517 [yY]*)  fn=d~+
6518         rp='Installation prefix to use for vendor-supplied add-ons?'
6519         case "$vendorprefix" in
6520         '') dflt='' ;;
6521         *)  dflt=$vendorprefix ;;
6522         esac
6523         . ./getfile
6524         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6525         oldvendorprefix=''
6526         case "$vendorprefix" in
6527         '') ;;
6528         *)      case "$ans" in
6529                 "$prefix") ;;
6530                 *) oldvendorprefix="$prefix";;
6531                 esac
6532                 ;;
6533         esac
6534         usevendorprefix="$define"
6535         vendorprefix="$ans"
6536         vendorprefixexp="$ansexp"
6537         ;;
6538 *)      usevendorprefix="$undef"
6539         vendorprefix=''
6540         vendorprefixexp=''
6541         ;;
6542 esac
6543
6544 case "$vendorprefix" in
6545 '')     d_vendorlib="$undef"
6546         vendorlib=''
6547         vendorlibexp=''
6548         ;;
6549 *)      d_vendorlib="$define"
6550         : determine where vendor-supplied modules go.
6551         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6552         case "$vendorlib" in
6553         '')
6554                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6555                 case "$installstyle" in
6556                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6557                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6558                 esac
6559                 ;;
6560         *)      dflt="$vendorlib"
6561                 ;;
6562         esac
6563         fn=d~+
6564         rp='Pathname for the vendor-supplied library files?'
6565         . ./getfile
6566         vendorlib="$ans"
6567         vendorlibexp="$ansexp"
6568         ;;
6569 esac
6570 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6571 : Change installation prefix, if necessary.
6572 if $test X"$prefix" != X"$installprefix"; then
6573         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6574 else
6575         installvendorlib="$vendorlibexp"
6576 fi
6577
6578 case "$vendorprefix" in
6579 '')     d_vendorarch="$undef"
6580         vendorarch=''
6581         vendorarchexp=''
6582         ;;
6583 *)      d_vendorarch="$define"
6584         : determine where vendor-supplied architecture-dependent libraries go.
6585         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6586         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6587         : vendorlib may have an optional trailing /share.
6588         case "$vendorarch" in
6589         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6590                 dflt="$dflt/$archname"
6591                 ;;
6592         *)      dflt="$vendorarch" ;;
6593         esac
6594         fn=d~+
6595         rp='Pathname for vendor-supplied architecture-dependent files?'
6596         . ./getfile
6597         vendorarch="$ans"
6598         vendorarchexp="$ansexp"
6599         ;;
6600 esac
6601 : Change installation prefix, if necessary.
6602 if $test X"$prefix" != X"$installprefix"; then
6603         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6604 else
6605         installvendorarch="$vendorarchexp"
6606 fi
6607
6608 : Final catch-all directories to search
6609 $cat <<EOM
6610
6611 Lastly, you can have perl look in other directories for extensions and
6612 modules in addition to those already specified.
6613 These directories will be searched after 
6614         $sitearch 
6615         $sitelib 
6616 EOM
6617 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6618 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6619 echo ' '
6620 case "$otherlibdirs" in
6621 ''|' ') dflt='none' ;;
6622 *)      dflt="$otherlibdirs" ;;
6623 esac
6624 $cat <<EOM
6625 Enter a colon-separated set of extra paths to include in perl's @INC
6626 search path, or enter 'none' for no extra paths.
6627
6628 EOM
6629
6630 rp='Colon-separated list of additional directories for perl to search?'
6631 . ./myread
6632 case "$ans" in
6633 ' '|''|none)    otherlibdirs=' ' ;;     
6634 *)      otherlibdirs="$ans" ;;
6635 esac
6636 case "$otherlibdirs" in
6637 ' ') val=$undef ;;
6638 *)      val=$define ;;
6639 esac
6640 set d_perl_otherlibdirs
6641 eval $setvar
6642
6643 : Cruising for prototypes
6644 echo " "
6645 echo "Checking out function prototypes..." >&4
6646 $cat >prototype.c <<EOCP
6647 #$i_stdlib I_STDLIB
6648 #ifdef I_STDLIB
6649 #include <stdlib.h>
6650 #endif
6651 int main(int argc, char *argv[]) {
6652         exit(0);}
6653 EOCP
6654 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6655         echo "Your C compiler appears to support function prototypes."
6656         val="$define"
6657 else
6658         echo "Your C compiler doesn't seem to understand function prototypes."
6659         val="$undef"
6660 fi
6661 set prototype
6662 eval $setvar
6663 $rm -f prototype*
6664
6665 case "$prototype" in
6666 "$define") ;;
6667 *)      ansi2knr='ansi2knr'
6668         echo " "
6669         cat <<EOM >&4
6670
6671 $me:  FATAL ERROR:
6672 This version of $package can only be compiled by a compiler that 
6673 understands function prototypes.  Unfortunately, your C compiler 
6674         $cc $ccflags
6675 doesn't seem to understand them.  Sorry about that.
6676
6677 If GNU cc is available for your system, perhaps you could try that instead.  
6678
6679 Eventually, we hope to support building Perl with pre-ANSI compilers.
6680 If you would like to help in that effort, please contact <perlbug@perl.org>.
6681
6682 Aborting Configure now.
6683 EOM
6684         exit 2
6685         ;;
6686 esac
6687
6688 : determine where public executables go
6689 echo " "
6690 set dflt bin bin
6691 eval $prefixit
6692 fn=d~
6693 rp='Pathname where the public executables will reside?'
6694 . ./getfile
6695 if $test "X$ansexp" != "X$binexp"; then
6696         installbin=''
6697 fi
6698 bin="$ans"
6699 binexp="$ansexp"
6700 : Change installation prefix, if necessary.
6701 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6702 if $test X"$prefix" != X"$installprefix"; then
6703         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6704 else
6705         installbin="$binexp"
6706 fi
6707
6708 echo " "
6709 case "$extras" in
6710 '') dflt='n';;
6711 *) dflt='y';;
6712 esac
6713 cat <<EOM
6714 Perl can be built with extra modules or bundles of modules which
6715 will be fetched from the CPAN and installed alongside Perl.
6716
6717 Notice that you will need access to the CPAN; either via the Internet,
6718 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6719 be asked later to configure the CPAN.pm module which will in turn do
6720 the installation of the rest of the extra modules or bundles.)
6721
6722 Notice also that if the modules require any external software such as
6723 libraries and headers (the libz library and the zlib.h header for the
6724 Compress::Zlib module, for example) you MUST have any such software
6725 already installed, this configuration process will NOT install such
6726 things for you.
6727
6728 If this doesn't make any sense to you, just accept the default '$dflt'.
6729 EOM
6730 rp='Install any extra modules (y or n)?'
6731 . ./myread
6732 case "$ans" in
6733 y|Y)
6734         cat <<EOM
6735
6736 Please list any extra modules or bundles to be installed from CPAN,
6737 with spaces between the names.  The names can be in any format the
6738 'install' command of CPAN.pm will understand.  (Answer 'none',
6739 without the quotes, to install no extra modules or bundles.)
6740 EOM
6741         rp='Extras?'
6742         dflt="$extras"
6743         . ./myread
6744         extras="$ans"
6745 esac
6746 case "$extras" in
6747 ''|'none')
6748         val=''
6749         $rm -f ../extras.lst
6750         ;;
6751 *)      echo "(Saving the list of extras for later...)"
6752         echo "$extras" > ../extras.lst
6753         val="'$extras'"
6754         ;;
6755 esac
6756 set extras
6757 eval $setvar
6758 echo " "
6759
6760 : determine where html pages for programs go
6761 set html1dir html1dir none
6762 eval $prefixit
6763 $cat <<EOM
6764
6765 If you wish to install html files for programs in $spackage, indicate 
6766 the appropriate directory here.  To skip installing html files,
6767 answer "none".
6768 EOM
6769 case "$html1dir" in
6770 ''|none|$undef|' ') dflt=none ;;
6771 *) dflt=$html1dir ;;
6772 esac
6773 fn=dn+~
6774 rp="Directory for the main $spackage html pages?"
6775 . ./getfile
6776 html1dir="$ans"
6777 html1direxp="$ansexp"
6778 : Use ' ' for none so value is preserved next time through Configure
6779 $test X"$html1dir" = "X" && html1dir=' '
6780 : Change installation prefix, if necessary.
6781 if $test X"$prefix" != X"$installprefix"; then
6782         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6783 else
6784         installhtml1dir="$html1direxp"
6785 fi
6786
6787 : determine where html pages for libraries and modules go
6788 set html3dir html3dir none
6789 eval $prefixit
6790 $cat <<EOM
6791
6792 If you wish to install html files for modules associated with $spackage,
6793 indicate the appropriate directory here.  To skip installing html files,
6794 answer "none".
6795 EOM
6796 : There is no obvious default.  If they have specified html1dir, then
6797 : try to key off that, possibly changing .../html1 into .../html3.
6798 case "$html3dir" in
6799 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6800 *) dflt=$html3dir ;;
6801 esac
6802 fn=dn+~
6803 rp="Directory for the $spackage module html pages?"
6804 . ./getfile
6805 html3dir="$ans"
6806 html3direxp="$ansexp"
6807 : Use ' ' for none so value is preserved next time through Configure
6808 $test X"$html3dir" = "X" && html3dir=' '
6809 : Change installation prefix, if necessary.
6810 if $test X"$prefix" != X"$installprefix"; then
6811         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6812 else
6813         installhtml3dir="$html3direxp"
6814 fi
6815
6816 : Find perl5.005 or later.
6817 echo "Looking for a previously installed perl5.005 or later... "
6818 case "$perl5" in
6819 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6820                 : Check if this perl is recent and can load a simple module
6821                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6822                         perl5=$tdir/perl
6823                         break;
6824                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6825                         perl5=$tdir/perl5
6826                         break;
6827                 fi
6828         done
6829         ;;
6830 *)      perl5="$perl5"
6831         ;;
6832 esac
6833 case "$perl5" in
6834 '')     echo "None found.  That's ok.";;
6835 *)      echo "Using $perl5." ;;
6836 esac
6837
6838 : Determine list of previous versions to include in @INC
6839 $cat > getverlist <<EOPL
6840 #!$perl5 -w
6841 use File::Basename;
6842 \$api_versionstring = "$api_versionstring";
6843 \$version = "$version";
6844 \$stem = "$sitelib_stem";
6845 \$archname = "$archname";
6846 EOPL
6847         $cat >> getverlist <<'EOPL'
6848 # Can't have leading @ because metaconfig interprets it as a command!
6849 ;@inc_version_list=();
6850 # XXX Redo to do opendir/readdir? 
6851 if (-d $stem) {
6852     chdir($stem);
6853     ;@candidates = glob("5.*");
6854 }
6855 else {
6856     ;@candidates = ();
6857 }
6858
6859 # XXX ToDo:  These comparisons must be reworked when two-digit
6860 # subversions come along, so that 5.7.10 compares as greater than
6861 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6862 # widespread that we can use the built-in version vectors rather
6863 # than reinventing them here.  For 5.6.0, however, we must
6864 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6865 foreach $d (@candidates) {
6866     if ($d lt $version) {
6867         if ($d ge $api_versionstring) {
6868             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6869         }
6870         elsif ($d ge "5.005") {
6871             unshift(@inc_version_list, grep { -d } $d);
6872         }
6873     }
6874     else {
6875         # Skip newer version.  I.e. don't look in
6876         # 5.7.0 if we're installing 5.6.1.
6877     }
6878 }
6879
6880 if (@inc_version_list) {
6881     print join(' ', @inc_version_list);
6882 }
6883 else {
6884     # Blank space to preserve value for next Configure run.
6885     print " ";
6886 }
6887 EOPL
6888 chmod +x getverlist
6889 case "$inc_version_list" in
6890 '')     if test -x "$perl5$exe_ext"; then
6891                 dflt=`$perl5 getverlist`
6892         else
6893                 dflt='none'
6894         fi
6895         ;;
6896 $undef) dflt='none' ;;
6897 *)  eval dflt=\"$inc_version_list\" ;;
6898 esac
6899 case "$dflt" in
6900 ''|' ') dflt=none ;;
6901 esac
6902 case "$dflt" in
6903 5.005) dflt=none ;;
6904 esac
6905 $cat <<EOM
6906
6907 In order to ease the process of upgrading, this version of perl 
6908 can be configured to use modules built and installed with earlier 
6909 versions of perl that were installed under $prefix.  Specify here
6910 the list of earlier versions that this version of perl should check.
6911 If Configure detected no earlier versions of perl installed under
6912 $prefix, then the list will be empty.  Answer 'none' to tell perl
6913 to not search earlier versions.
6914
6915 The default should almost always be sensible, so if you're not sure,
6916 just accept the default.
6917 EOM
6918
6919 rp='List of earlier versions to include in @INC?'
6920 . ./myread
6921 case "$ans" in
6922 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6923 *) inc_version_list="$ans" ;;
6924 esac
6925 case "$inc_version_list" in
6926 ''|' ') 
6927         inc_version_list_init='0';;
6928 *)      inc_version_list_init=`echo $inc_version_list |
6929                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6930         ;;
6931 esac
6932 $rm -f getverlist
6933
6934 : determine whether to install perl also as /usr/bin/perl
6935
6936 echo " "
6937 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6938         $cat <<EOM
6939 Many scripts expect perl to be installed as /usr/bin/perl.
6940
6941 If you want to, I can install the perl you are about to compile
6942 as /usr/bin/perl (in addition to $bin/perl).
6943 EOM
6944         if test -f /usr/bin/perl; then
6945             $cat <<EOM
6946
6947 However, please note that because you already have a /usr/bin/perl,
6948 overwriting that with a new Perl would very probably cause problems.
6949 Therefore I'm assuming you don't want to do that (unless you insist).
6950
6951 EOM
6952             case "$installusrbinperl" in
6953             "$define"|[yY]*)    dflt='y';;
6954             *)                  dflt='n';;
6955             esac
6956         else
6957             $cat <<EOM
6958
6959 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6960
6961 EOM
6962             case "$installusrbinperl" in
6963             "$undef"|[nN]*)     dflt='n';;
6964             *)                  dflt='y';;
6965             esac
6966         fi
6967         rp="Do you want to install perl as /usr/bin/perl?"
6968         . ./myread
6969         case "$ans" in
6970         [yY]*)  val="$define";;
6971         *)      val="$undef" ;;
6972         esac
6973 else
6974         val="$undef"
6975 fi
6976 set installusrbinperl
6977 eval $setvar
6978
6979 echo " "
6980 echo "Checking for GNU C Library..." >&4
6981 cat >try.c <<'EOCP'
6982 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6983    alone are insufficient to distinguish different versions, such as
6984    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6985    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6986 */
6987 #include <stdio.h>
6988 int main(void)
6989 {
6990 #ifdef __GLIBC__
6991 #   ifdef __GLIBC_MINOR__
6992 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6993 #           include <gnu/libc-version.h>
6994             printf("%s\n",  gnu_get_libc_version());
6995 #       else
6996             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6997 #       endif
6998 #   else
6999         printf("%d\n",  __GLIBC__);
7000 #   endif
7001     return 0;
7002 #else
7003     return 1;
7004 #endif
7005 }
7006 EOCP
7007 set try
7008 if eval $compile_ok && $run ./try > glibc.ver; then
7009         val="$define"
7010         gnulibc_version=`$cat glibc.ver`
7011         echo "You are using the GNU C Library version $gnulibc_version"
7012 else
7013         val="$undef"
7014         gnulibc_version=''
7015         echo "You are not using the GNU C Library"
7016 fi
7017 $rm -f try try.* glibc.ver
7018 set d_gnulibc
7019 eval $setvar
7020
7021 : see if nm is to be used to determine whether a symbol is defined or not
7022 case "$usenm" in
7023 '')
7024         dflt=''
7025         case "$d_gnulibc" in
7026         "$define")
7027                 echo " "
7028                 echo "nm probably won't work on the GNU C Library." >&4
7029                 dflt=n
7030                 ;;
7031         esac
7032         case "$dflt" in
7033         '') 
7034                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7035                         echo " "
7036                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7037                         echo "'nm' won't be sufficient on this sytem." >&4
7038                         dflt=n
7039                 fi
7040                 ;;
7041         esac
7042         case "$dflt" in
7043         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7044                 if $test $dflt -gt 20; then
7045                         dflt=y
7046                 else
7047                         dflt=n
7048                 fi
7049                 ;;
7050         esac
7051         ;;
7052 *)
7053         case "$usenm" in
7054         true|$define) dflt=y;;
7055         *) dflt=n;;
7056         esac
7057         ;;
7058 esac
7059 $cat <<EOM
7060
7061 I can use $nm to extract the symbols from your C libraries. This
7062 is a time consuming task which may generate huge output on the disk (up
7063 to 3 megabytes) but that should make the symbols extraction faster. The
7064 alternative is to skip the 'nm' extraction part and to compile a small
7065 test program instead to determine whether each symbol is present. If
7066 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7067 this may be the best solution.
7068
7069 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7070
7071 EOM
7072 rp="Shall I use $nm to extract C symbols from the libraries?"
7073 . ./myread
7074 case "$ans" in
7075 [Nn]*) usenm=false;;
7076 *) usenm=true;;
7077 esac
7078
7079 runnm=$usenm
7080 case "$reuseval" in
7081 true) runnm=false;;
7082 esac
7083
7084 : nm options which may be necessary
7085 case "$nm_opt" in
7086 '') if $test -f /mach_boot; then
7087                 nm_opt=''       # Mach
7088         elif $test -d /usr/ccs/lib; then
7089                 nm_opt='-p'     # Solaris (and SunOS?)
7090         elif $test -f /dgux; then
7091                 nm_opt='-p'     # DG-UX
7092         elif $test -f /lib64/rld; then
7093                 nm_opt='-p'     # 64-bit Irix
7094         else
7095                 nm_opt=''
7096         fi;;
7097 esac
7098
7099 : nm options which may be necessary for shared libraries but illegal
7100 : for archive libraries.  Thank you, Linux.
7101 case "$nm_so_opt" in
7102 '')     case "$myuname" in
7103         *linux*)
7104                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7105                         nm_so_opt='--dynamic'
7106                 fi
7107                 ;;
7108         esac
7109         ;;
7110 esac
7111
7112 case "$runnm" in
7113 true)
7114 : get list of predefined functions in a handy place
7115 echo " "
7116 case "$libc" in
7117 '') libc=unknown
7118         case "$libs" in
7119         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7120         esac
7121         ;;
7122 esac
7123 case "$libs" in
7124 '') ;;
7125 *)  for thislib in $libs; do
7126         case "$thislib" in
7127         -lc|-lc_s)
7128                 : Handle C library specially below.
7129                 ;;
7130         -l*)
7131                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7132                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7133                         :
7134                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7135                         :
7136                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7137                         :
7138                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7139                         :
7140                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7141                         :
7142                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7143                         :
7144                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7145                         :
7146                 else
7147                         try=''
7148                 fi
7149                 libnames="$libnames $try"
7150                 ;;
7151         *) libnames="$libnames $thislib" ;;
7152         esac
7153         done
7154         ;;
7155 esac
7156 xxx=normal
7157 case "$libc" in
7158 unknown)
7159         set /lib/libc.$so
7160         for xxx in $libpth; do
7161                 $test -r $1 || set $xxx/libc.$so
7162                 : The messy sed command sorts on library version numbers.
7163                 $test -r $1 || \
7164                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7165                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7166                                 h
7167                                 s/[0-9][0-9]*/0000&/g
7168                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7169                                 G
7170                                 s/\n/ /' | \
7171                          $sort | $sed -e 's/^.* //'`
7172                 eval set \$$#
7173         done
7174         $test -r $1 || set /usr/ccs/lib/libc.$so
7175         $test -r $1 || set /lib/libsys_s$_a
7176         ;;
7177 *)
7178         set blurfl
7179         ;;
7180 esac
7181 if $test -r "$1"; then
7182         echo "Your (shared) C library seems to be in $1."
7183         libc="$1"
7184 elif $test -r /lib/libc && $test -r /lib/clib; then
7185         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7186         xxx=apollo
7187         libc='/lib/clib /lib/libc'
7188         if $test -r /lib/syslib; then
7189                 echo "(Your math library is in /lib/syslib.)"
7190                 libc="$libc /lib/syslib"
7191         fi
7192 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7193         echo "Your C library seems to be in $libc, as you said before."
7194 elif $test -r $incpath/usr/lib/libc$_a; then
7195         libc=$incpath/usr/lib/libc$_a;
7196         echo "Your C library seems to be in $libc.  That's fine."
7197 elif $test -r /lib/libc$_a; then
7198         libc=/lib/libc$_a;
7199         echo "Your C library seems to be in $libc.  You're normal."
7200 else
7201         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7202                 :
7203         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7204                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7205         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7206                 :
7207         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7208                 :
7209         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7210                 :
7211         else
7212                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7213         fi
7214         if $test -r "$tans"; then
7215                 echo "Your C library seems to be in $tans, of all places."
7216                 libc=$tans
7217         else
7218                 libc='blurfl'
7219         fi
7220 fi
7221 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7222         dflt="$libc"
7223         cat <<EOM
7224
7225 If the guess above is wrong (which it might be if you're using a strange
7226 compiler, or your machine supports multiple models), you can override it here.
7227
7228 EOM
7229 else
7230         dflt=''
7231         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7232         cat >&4 <<EOM
7233 I can't seem to find your C library.  I've looked in the following places:
7234
7235 EOM
7236         $sed 's/^/      /' libpath
7237         cat <<EOM
7238
7239 None of these seems to contain your C library. I need to get its name...
7240
7241 EOM
7242 fi
7243 fn=f
7244 rp='Where is your C library?'
7245 . ./getfile
7246 libc="$ans"
7247
7248 echo " "
7249 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7250 set X `cat libnames`
7251 shift
7252 xxx=files
7253 case $# in 1) xxx=file; esac
7254 echo "Extracting names from the following $xxx for later perusal:" >&4
7255 echo " "
7256 $sed 's/^/      /' libnames >&4
7257 echo " "
7258 $echo $n "This may take a while...$c" >&4
7259
7260 for file in $*; do
7261         case $file in
7262         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7263         *) $nm $nm_opt $file 2>/dev/null;;
7264         esac
7265 done >libc.tmp
7266
7267 $echo $n ".$c"
7268 $grep fprintf libc.tmp > libc.ptf
7269 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7270 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7271 xxx='[ADTSIW]'
7272 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7273         eval $xscan;\
7274         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7275                 eval $xrun
7276 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7277         eval $xscan;\
7278         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7279                 eval $xrun
7280 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7281         eval $xscan;\
7282         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7283                 eval $xrun
7284 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7285         eval $xscan;\
7286         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7287                 eval $xrun
7288 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7289         eval $xscan;\
7290         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7291                 eval $xrun
7292 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7293         eval $xscan;\
7294         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7295                 eval $xrun
7296 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7297                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7298         eval $xscan;\
7299         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7300                 eval $xrun
7301 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7302         eval $xscan;\
7303         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7304                 eval $xrun
7305 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7306         eval $xscan;\
7307         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7308                 eval $xrun
7309 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7310         eval $xscan;\
7311         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7312                 eval $xrun
7313 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7314         eval $xscan;\
7315         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7316                 eval $xrun
7317 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7318         eval $xscan;\
7319         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7320                 eval $xrun
7321 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7322         eval $xscan;\
7323         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7324                 eval $xrun
7325 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7326         eval $xscan;\
7327         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7328                 eval $xrun
7329 else
7330         $nm -p $* 2>/dev/null >libc.tmp
7331         $grep fprintf libc.tmp > libc.ptf
7332         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7333                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7334         then
7335                 nm_opt='-p'
7336                 eval $xrun
7337         else
7338                 echo " "
7339                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7340                 com=''
7341                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7342                         for thisname in $libnames $libc; do
7343                                 $ar t $thisname >>libc.tmp
7344                         done
7345                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7346                         echo "Ok." >&4
7347                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7348                         # Repeat libc to extract forwarders to DLL entries too
7349                         for thisname in $libnames $libc; do
7350                                 $ar tv $thisname >>libc.tmp
7351                                 # Revision 50 of EMX has bug in $ar.
7352                                 # it will not extract forwarders to DLL entries
7353                                 # Use emximp which will extract exactly them.
7354                                 emximp -o tmp.imp $thisname \
7355                                     2>/dev/null && \
7356                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7357                                     < tmp.imp >>libc.tmp
7358                                 $rm tmp.imp
7359                         done
7360                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7361                         echo "Ok." >&4
7362                 else
7363                         echo "$ar didn't seem to work right." >&4
7364                         echo "Maybe this is a Cray...trying bld instead..." >&4
7365                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7366                         then
7367                                 for thisname in $libnames; do
7368                                         bld t $libnames | \
7369                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7370                                         $ar t $thisname >>libc.tmp
7371                                 done
7372                                 echo "Ok." >&4
7373                         else
7374                                 echo "That didn't work either.  Giving up." >&4
7375                                 exit 1
7376                         fi
7377                 fi
7378         fi
7379 fi
7380 nm_extract="$com"
7381 case "$PASE" in
7382 define)
7383     echo " "
7384     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7385     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7386     ;;
7387 *)  if $test -f /lib/syscalls.exp; then
7388         echo " "
7389         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7390         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7391     fi
7392     ;;
7393 esac
7394 ;;
7395 esac
7396 $rm -f libnames libpath
7397
7398 : see if dld is available
7399 set dld.h i_dld
7400 eval $inhdr
7401
7402 : is a C symbol defined?
7403 csym='tlook=$1;
7404 case "$3" in
7405 -v) tf=libc.tmp; tdc="";;
7406 -a) tf=libc.tmp; tdc="[]";;
7407 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7408 esac;
7409 tx=yes;
7410 case "$reuseval-$4" in
7411 true-) ;;
7412 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7413 esac;
7414 case "$tx" in
7415 yes)
7416         tval=false;
7417         if $test "$runnm" = true; then
7418                 if $contains $tlook $tf >/dev/null 2>&1; then
7419                         tval=true;
7420                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7421                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7422                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7423                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7424                         $rm -f try$_exe try.c core core.* try.core;
7425                 fi;
7426         else
7427                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7428                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7429                 $rm -f try$_exe try.c;
7430         fi;
7431         ;;
7432 *)
7433         case "$tval" in
7434         $define) tval=true;;
7435         *) tval=false;;
7436         esac;
7437         ;;
7438 esac;
7439 eval "$2=$tval"'
7440
7441 : define an is-in-libc? function
7442 inlibc='echo " "; td=$define; tu=$undef;
7443 sym=$1; var=$2; eval "was=\$$2";
7444 tx=yes;
7445 case "$reuseval$was" in
7446 true) ;;
7447 true*) tx=no;;
7448 esac;
7449 case "$tx" in
7450 yes)
7451         set $sym tres -f;
7452         eval $csym;
7453         case "$tres" in
7454         true)
7455                 echo "$sym() found." >&4;
7456                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7457         *)
7458                 echo "$sym() NOT found." >&4;
7459                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7460         esac;;
7461 *)
7462         case "$was" in
7463         $define) echo "$sym() found." >&4;;
7464         *) echo "$sym() NOT found." >&4;;
7465         esac;;
7466 esac'
7467
7468 : see if dlopen exists
7469 xxx_runnm="$runnm"
7470 runnm=false
7471 set dlopen d_dlopen
7472 eval $inlibc
7473 runnm="$xxx_runnm"
7474
7475 : determine which dynamic loading, if any, to compile in
7476 echo " "
7477 dldir="ext/DynaLoader"
7478 case "$usedl" in
7479 $define|y|true)
7480         dflt='y'
7481         usedl="$define"
7482         ;;
7483 $undef|n|false)
7484         dflt='n'
7485         usedl="$undef"
7486         ;;
7487 *) 
7488         dflt='n'
7489         case "$d_dlopen" in
7490             $define) dflt='y' ;;
7491         esac
7492         case "$i_dld" in
7493             $define) dflt='y' ;;
7494         esac
7495         : Does a dl_xxx.xs file exist for this operating system
7496         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7497         ;;
7498 esac
7499 rp="Do you wish to use dynamic loading?"
7500 . ./myread
7501 usedl="$ans"
7502 case "$ans" in
7503 y*) usedl="$define"
7504         case "$dlsrc" in
7505         '')
7506                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7507                         dflt="$dldir/dl_${osname}.xs"
7508                 elif $test "$d_dlopen" = "$define" ; then
7509                         dflt="$dldir/dl_dlopen.xs"
7510                 elif $test "$i_dld" = "$define" ; then
7511                         dflt="$dldir/dl_dld.xs"
7512                 else
7513                         dflt=''
7514                 fi
7515                 ;;
7516         *)      dflt="$dldir/$dlsrc"
7517                 ;;
7518         esac
7519     echo "The following dynamic loading files are available:"
7520         : Can not go over to $dldir because getfile has path hard-coded in.
7521         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7522         rp="Source file to use for dynamic loading"
7523         fn="fne"
7524         gfpth="$src"
7525         . ./getfile
7526         usedl="$define"
7527         : emulate basename
7528         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7529
7530         $cat << EOM
7531
7532 Some systems may require passing special flags to $cc -c to
7533 compile modules that will be used to create a shared library.
7534 To use no flags, say "none".
7535
7536 EOM
7537     case "$cccdlflags" in
7538     '') case "$gccversion" in
7539                 '') case "$osname" in
7540                         hpux)   dflt='+z' ;;
7541                         next)   dflt='none' ;;
7542                         irix*)  dflt='-KPIC' ;;
7543                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7544                         sunos)  dflt='-pic' ;;
7545                         *)      dflt='none' ;;
7546                     esac
7547                         ;;
7548                 *)  case "$osname" in
7549                         darwin) dflt='none' ;;
7550                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7551                         *)      dflt='-fpic' ;;
7552                     esac ;;
7553             esac ;;
7554         ' ') dflt='none' ;;
7555     *)  dflt="$cccdlflags" ;;
7556     esac
7557     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7558     . ./myread
7559     case "$ans" in
7560     none) cccdlflags=' ' ;;
7561     *) cccdlflags="$ans" ;;
7562     esac
7563
7564     cat << EOM
7565
7566 Some systems use ld to create libraries that can be dynamically loaded,
7567 while other systems (such as those using ELF) use $cc.
7568
7569 EOM
7570         case "$ld" in
7571         '')     $cat >try.c <<EOM
7572 /* Test for whether ELF binaries are produced */
7573 #include <fcntl.h>
7574 #$i_stdlib I_STDLIB
7575 #ifdef I_STDLIB
7576 #include <stdlib.h>
7577 #endif
7578 int main() {
7579         char b[4];
7580         int i = open("a.out",O_RDONLY);
7581         if(i == -1) 
7582                 exit(1); /* fail */
7583         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7584                 exit(0); /* succeed (yes, it's ELF) */
7585         else
7586                 exit(1); /* fail */
7587 }
7588 EOM
7589                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7590                         cat <<EOM
7591 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7592 EOM
7593                         dflt="$cc"
7594                 else
7595                         echo "I'll use ld to build dynamic libraries."
7596                         dflt='ld'
7597                 fi
7598                 rm -f try.c a.out
7599                 ;;
7600         *)      dflt="$ld"
7601                 ;;
7602         esac
7603
7604     rp="What command should be used to create dynamic libraries?"
7605     . ./myread
7606         ld="$ans"
7607
7608     cat << EOM
7609
7610 Some systems may require passing special flags to $ld to create a
7611 library that can be dynamically loaded.  If your ld flags include
7612 -L/other/path options to locate libraries outside your loader's normal
7613 search path, you may need to specify those -L options here as well.  To
7614 use no flags, say "none".
7615
7616 EOM
7617     case "$lddlflags" in
7618     '') case "$osname" in
7619                         beos) dflt='-nostart' ;;
7620                         hpux) dflt='-b';
7621                               case "$gccversion" in
7622                               '') dflt="$dflt +vnocompatwarnings" ;;
7623                               esac
7624                               ;;        
7625                         linux|irix*)    dflt='-shared' ;;
7626                         next)  dflt='none' ;;
7627                         solaris) dflt='-G' ;;
7628                         sunos) dflt='-assert nodefinitions' ;;
7629                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7630                 *)     dflt='none' ;;
7631                         esac
7632                         ;;
7633     *) dflt="$lddlflags" ;;
7634     esac
7635
7636         : Try to guess additional flags to pick up local libraries.
7637         : Be careful not to append to a plain 'none'
7638         case "$dflt" in
7639         none) dflt='' ;;
7640         esac
7641         for thisflag in $ldflags; do
7642                 case "$thisflag" in
7643                 -L*|-R*|-Wl,-R*)
7644                         case " $dflt " in
7645                         *" $thisflag "*) ;;
7646                         *) dflt="$dflt $thisflag" ;;
7647                         esac
7648                         ;;
7649                 esac
7650         done
7651
7652         case "$dflt" in
7653         ''|' ') dflt='none' ;;
7654         esac
7655
7656     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7657     . ./myread
7658     case "$ans" in
7659     none) lddlflags=' ' ;;
7660     *) lddlflags="$ans" ;;
7661     esac
7662
7663         cat <<EOM
7664
7665 Some systems may require passing special flags to $cc to indicate that
7666 the resulting executable will use dynamic linking.  To use no flags,
7667 say "none".
7668
7669 EOM
7670     case "$ccdlflags" in
7671     '') case "$osname" in
7672             linux|hpux) dflt='-Wl,-E' ;;
7673             next|sunos) dflt='none' ;;
7674             *)          dflt='none' ;;
7675             esac ;;
7676     ' ')  dflt='none' ;;
7677     *)  dflt="$ccdlflags" ;;
7678     esac
7679     rp="Any special flags to pass to $cc to use dynamic linking?"
7680     . ./myread
7681     case "$ans" in
7682     none) ccdlflags=' ' ;;
7683     *) ccdlflags="$ans" ;;
7684     esac
7685     ;;
7686 *)  usedl="$undef"
7687         ld='ld'
7688     dlsrc='dl_none.xs'
7689     lddlflags=''
7690     ccdlflags=''
7691     ;;
7692 esac
7693
7694 also=''
7695 case "$usedl" in
7696 $undef)
7697         # No dynamic loading being used, so don't bother even to prompt.
7698         useshrplib='false'
7699         ;;
7700 *)      case "$useshrplib" in
7701         '')     case "$osname" in
7702                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7703                         dflt=y
7704                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7705                         ;;
7706                 next*)
7707                         case "$osvers" in
7708                         4*)     dflt=y
7709                                 also='Building a shared libperl is needed for MAB support.'
7710                                 ;;
7711                         *)      dflt=n
7712                                 ;;
7713                         esac
7714                         ;;
7715                 *)      dflt=n
7716                         ;;
7717                 esac
7718                 ;;
7719         $define|true|[Yy]*)
7720                 dflt=y
7721                 ;;
7722         *)      dflt=n
7723                 ;;
7724         esac
7725         $cat << EOM
7726
7727 The perl executable is normally obtained by linking perlmain.c with
7728 libperl${_a}, any static extensions (usually just DynaLoader), and
7729 any other libraries needed on this system (such as -lm, etc.).  Since
7730 your system supports dynamic loading, it is probably possible to build
7731 a shared libperl.$so.  If you will have more than one executable linked
7732 to libperl.$so, this will significantly reduce the size of each
7733 executable, but it may have a noticeable affect on performance.  The
7734 default is probably sensible for your system.
7735 $also
7736
7737 EOM
7738         rp="Build a shared libperl.$so (y/n)"
7739         . ./myread
7740         case "$ans" in
7741         true|$define|[Yy]*)
7742                 useshrplib='true'  ;;
7743         *)      useshrplib='false' ;;
7744         esac
7745         ;;
7746 esac
7747
7748 case "$useshrplib" in
7749 true)
7750         case "$libperl" in
7751         '')
7752                 # Figure out a good name for libperl.so.  Since it gets stored in
7753                 # a version-specific architecture-dependent library, the version
7754                 # number isn't really that important, except for making cc/ld happy.
7755                 #
7756                 # A name such as libperl.so.3.1
7757                 majmin="libperl.$so.$patchlevel.$subversion"
7758                 # A name such as libperl.so.301
7759                 majonly=`echo $patchlevel $subversion |
7760                         $awk '{printf "%d%02d", $1, $2}'`
7761                 majonly=libperl.$so.$majonly
7762                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7763                 # rely on figuring it out from the naming of libc.
7764                 case "${osname}${osvers}" in
7765                 next4*)
7766                         dflt=libperl.5.$so
7767                         # XXX How handle the --version stuff for MAB?
7768                         ;;
7769                 linux*)  # ld won't link with a bare -lperl otherwise.
7770                         dflt=libperl.$so
7771                         ;;
7772                 cygwin*) # ld links against an importlib
7773                         dflt=libperl$lib_ext
7774                         ;;
7775                 *)      # Try to guess based on whether libc has major.minor.
7776                         case "$libc" in
7777                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7778                         *libc.$so.[0-9]*) dflt=$majonly ;;
7779                         *)      dflt=libperl.$so ;;
7780                         esac
7781                         ;;
7782                 esac
7783                 ;;
7784         *)      dflt=$libperl
7785                 ;;
7786         esac
7787         cat << EOM
7788
7789 I need to select a good name for the shared libperl.  If your system uses
7790 library names with major and minor numbers, then you might want something
7791 like $majmin.  Alternatively, if your system uses a single version
7792 number for shared libraries, then you might want to use $majonly.
7793 Or, your system might be quite happy with a simple libperl.$so.
7794
7795 Since the shared libperl will get installed into a version-specific
7796 architecture-dependent directory, the version number of the shared perl
7797 library probably isn't important, so the default should be o.k.
7798
7799 EOM
7800         rp='What name do you want to give to the shared libperl?'
7801         . ./myread
7802         libperl=$ans
7803         echo "Ok, I'll use $libperl"
7804         ;;
7805 *)
7806         libperl="libperl${_a}"
7807         ;;
7808 esac
7809
7810 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7811 case "$shrpdir" in
7812 '') ;;
7813 *)      $cat >&4 <<EOM
7814 WARNING:  Use of the shrpdir variable for the installation location of
7815 the shared $libperl is not supported.  It was never documented and
7816 will not work in this version.  Let me (perlbug@perl.org)
7817 know of any problems this may cause.
7818
7819 EOM
7820         case "$shrpdir" in
7821         "$archlibexp/CORE")
7822                 $cat >&4 <<EOM
7823 But your current setting of $shrpdir is
7824 the default anyway, so it's harmless.
7825 EOM
7826                 ;;
7827         *)
7828                 $cat >&4 <<EOM
7829 Further, your current attempted setting of $shrpdir
7830 conflicts with the value of $archlibexp/CORE
7831 that installperl will use.
7832 EOM
7833                 ;;
7834         esac
7835         ;;
7836 esac
7837
7838 # How will the perl executable find the installed shared $libperl?
7839 # Add $xxx to ccdlflags.
7840 # If we can't figure out a command-line option, use $shrpenv to
7841 # set env LD_RUN_PATH.  The main perl makefile uses this.
7842 shrpdir=$archlibexp/CORE
7843 xxx=''
7844 tmp_shrpenv=''
7845 if "$useshrplib"; then
7846     case "$osname" in 
7847         aix)
7848                 # We'll set it in Makefile.SH...
7849                 ;;
7850         solaris)
7851                 xxx="-R $shrpdir"
7852                 ;;
7853         freebsd|netbsd|openbsd)
7854                 xxx="-Wl,-R$shrpdir"
7855                 ;;
7856         bsdos|linux|irix*|dec_osf)
7857                 xxx="-Wl,-rpath,$shrpdir"
7858                 ;;
7859         next)
7860                 # next doesn't like the default...
7861                 ;;
7862         beos)
7863                 # beos doesn't like the default, either.
7864                 ;;
7865         hpux*)
7866                 # hpux doesn't like the default, either.
7867                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7868                 ;;
7869         *)
7870                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7871                 ;;
7872         esac
7873         case "$xxx" in
7874         '') ;;
7875         *)      
7876                 # Only add $xxx if it isn't already in ccdlflags.
7877                 case " $ccdlflags " in
7878                 *" $xxx "*)     ;;
7879                 *)      ccdlflags="$ccdlflags $xxx"
7880                         cat <<EOM >&4
7881
7882 Adding $xxx to the flags
7883 passed to $ld so that the perl executable will find the 
7884 installed shared $libperl.
7885
7886 EOM
7887                         ;;
7888                 esac
7889                 ;;
7890         esac
7891 fi
7892 # Fix ccdlflags in AIX for building external extensions.
7893 # (For building Perl itself bare -bE:perl.exp is needed,
7894 #  Makefile.SH takes care of this.)
7895 case "$osname" in
7896 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7897 esac
7898 # Respect a hint or command-line value.
7899 case "$shrpenv" in
7900 '') shrpenv="$tmp_shrpenv" ;;
7901 esac
7902 case "$ldlibpthname" in
7903 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7904 none)   ldlibpthname='' ;;
7905 esac
7906
7907 : determine where manual pages are on this system
7908 echo " "
7909 case "$sysman" in
7910 '') 
7911         syspath='/usr/share/man/man1 /usr/man/man1'
7912         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7913         syspath="$syspath /usr/man/u_man/man1"
7914         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7915         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7916         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7917         sysman=`./loc . /usr/man/man1 $syspath`
7918         ;;
7919 esac
7920 if $test -d "$sysman"; then
7921         echo "System manual is in $sysman." >&4
7922 else
7923         echo "Could not find manual pages in source form." >&4
7924 fi
7925
7926 : determine where manual pages go
7927 set man1dir man1dir none
7928 eval $prefixit
7929 $cat <<EOM
7930
7931 $spackage has manual pages available in source form.
7932 EOM
7933 case "$nroff" in
7934 nroff)
7935         echo "However, you don't have nroff, so they're probably useless to you."
7936         case "$man1dir" in
7937         '') man1dir="none";;
7938         esac;;
7939 esac
7940 echo "If you don't want the manual sources installed, answer 'none'."
7941 case "$man1dir" in
7942 ' ') dflt=none
7943         ;;
7944 '')
7945         lookpath="$prefixexp/share/man/man1"
7946         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7947         lookpath="$lookpath $prefixexp/man/p_man/man1"
7948         lookpath="$lookpath $prefixexp/man/u_man/man1"
7949         lookpath="$lookpath $prefixexp/man/man.1"
7950         case "$sysman" in
7951         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7952         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7953         esac
7954         set dflt
7955         eval $prefixup
7956         ;;
7957 *)  dflt="$man1dir"
7958         ;;
7959 esac
7960 echo " "
7961 fn=dn+~
7962 rp="Where do the main $spackage manual pages (source) go?"
7963 . ./getfile
7964 if $test "X$man1direxp" != "X$ansexp"; then
7965         installman1dir=''
7966 fi
7967 man1dir="$ans"
7968 man1direxp="$ansexp"
7969 case "$man1dir" in
7970 '')     man1dir=' '
7971         installman1dir='';;
7972 esac
7973
7974 : Change installation prefix, if necessary.
7975 if $test X"$prefix" != X"$installprefix"; then
7976         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7977 else
7978         installman1dir="$man1direxp"
7979 fi
7980
7981 : What suffix to use on installed man pages
7982
7983 case "$man1dir" in
7984 ' ')
7985         man1ext='0'
7986         ;;
7987 *)
7988         rp="What suffix should be used for the main $spackage man pages?"
7989         case "$man1ext" in
7990         '')     case "$man1dir" in
7991                 *1)  dflt=1 ;;
7992                 *1p) dflt=1p ;;
7993                 *1pm) dflt=1pm ;;
7994                 *l) dflt=l;;
7995                 *n) dflt=n;;
7996                 *o) dflt=o;;
7997                 *p) dflt=p;;
7998                 *C) dflt=C;;
7999                 *L) dflt=L;;
8000                 *L1) dflt=L1;;
8001                 *) dflt=1;;
8002                 esac
8003                 ;;
8004         *)      dflt="$man1ext";;
8005         esac
8006         . ./myread
8007         man1ext="$ans"
8008         ;;
8009 esac
8010
8011 : see if we can have long filenames
8012 echo " "
8013 first=123456789abcdef
8014 $rm -f $first
8015 if (echo hi >$first) 2>/dev/null; then
8016         if $test -f 123456789abcde; then
8017                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8018                 val="$undef"
8019         else
8020                 echo 'You can have filenames longer than 14 characters.'>&4
8021                 val="$define"
8022         fi
8023 else
8024         $cat <<'EOM'
8025 You can't have filenames longer than 14 chars.
8026 You can't even think about them!
8027 EOM
8028         val="$undef"
8029 fi 
8030 set d_flexfnam
8031 eval $setvar
8032 $rm -rf 123456789abcde*
8033
8034 : determine where library module manual pages go
8035 set man3dir man3dir none
8036 eval $prefixit
8037 $cat <<EOM
8038
8039 $spackage has manual pages for many of the library modules.
8040 EOM
8041
8042 case "$nroff" in
8043 nroff)
8044         $cat <<'EOM'
8045 However, you don't have nroff, so they're probably useless to you.
8046 EOM
8047         case "$man3dir" in
8048         '') man3dir="none";;
8049         esac;;
8050 esac
8051
8052 case "$d_flexfnam" in
8053 undef)
8054         $cat <<'EOM'
8055 However, your system can't handle the long file names like File::Basename.3. 
8056 EOM
8057         case "$man3dir" in
8058         '') man3dir="none";;
8059         esac;;
8060 esac
8061
8062 echo "If you don't want the manual sources installed, answer 'none'."
8063 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8064 case "$man3dir" in
8065 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8066         if $test -d "$privlib/man/man3"; then
8067                 cat <<EOM >&4
8068
8069 WARNING:  Previous versions of perl installed man3 pages into
8070 $privlib/man/man3.  This version will suggest a 
8071 new default of $dflt.  
8072 EOM
8073                 tdflt=$dflt
8074                 dflt='n'
8075                 rp='Do you wish to preserve the old behavior?(y/n)'
8076                 . ./myread
8077                 case "$ans" in
8078                 y*) dflt="$privlib/man/man3" ;;
8079                 *)  dflt=$tdflt ;;
8080                 esac
8081     fi
8082         ;;
8083 *)      dflt="$man3dir" ;;
8084 esac
8085 case "$dflt" in
8086 ' ') dflt=none ;;
8087 esac
8088 echo " "
8089 fn=dn+~
8090 rp="Where do the $package library man pages (source) go?"
8091 . ./getfile
8092 man3dir="$ans"
8093 man3direxp="$ansexp"
8094 case "$man3dir" in
8095 '')     man3dir=' '
8096         installman3dir='';;
8097 esac
8098
8099 : Change installation prefix, if necessary.
8100 if $test X"$prefix" != X"$installprefix"; then
8101         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8102 else
8103         installman3dir="$man3direxp"
8104 fi
8105
8106 : What suffix to use on installed man pages
8107 case "$man3dir" in
8108 ' ')
8109         man3ext='0'
8110         ;;
8111 *)
8112         rp="What suffix should be used for the $package library man pages?"
8113         case "$man3ext" in
8114         '')     case "$man3dir" in
8115                 *3)  dflt=3 ;;
8116                 *3p) dflt=3p ;;
8117                 *3pm) dflt=3pm ;;
8118                 *l) dflt=l;;
8119                 *n) dflt=n;;
8120                 *o) dflt=o;;
8121                 *p) dflt=p;;
8122                 *C) dflt=C;;
8123                 *L) dflt=L;;
8124                 *L3) dflt=L3;;
8125                 *) dflt=3;;
8126                 esac
8127                 ;;
8128         *)      dflt="$man3ext";;
8129         esac
8130         . ./myread
8131         man3ext="$ans"
8132         ;;
8133 esac
8134
8135 : see if we have to deal with yellow pages, now NIS.
8136 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8137         if $test -f /usr/etc/nibindd; then
8138                 echo " "
8139                 echo "I'm fairly confident you're on a NeXT."
8140                 echo " "
8141                 rp='Do you get the hosts file via NetInfo?'
8142                 dflt=y
8143                 case "$hostcat" in
8144                 nidump*) ;;
8145                 '') ;;
8146                 *) dflt=n;;
8147                 esac
8148                 . ./myread
8149                 case "$ans" in
8150                 y*) hostcat='nidump hosts .';;
8151                 *)      case "$hostcat" in
8152                         nidump*) hostcat='';;
8153                         esac
8154                         ;;
8155                 esac
8156         fi
8157         case "$hostcat" in
8158         nidump*) ;;
8159         *)
8160                 case "$hostcat" in
8161                 *ypcat*) dflt=y;;
8162                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8163                                 dflt=y
8164                         else
8165                                 dflt=n
8166                         fi;;
8167                 *) dflt=n;;
8168                 esac
8169                 echo " "
8170                 rp='Are you getting the hosts file via yellow pages?'
8171                 . ./myread
8172                 case "$ans" in
8173                 y*) hostcat='ypcat hosts';;
8174                 *) hostcat='cat /etc/hosts';;
8175                 esac
8176                 ;;
8177         esac
8178 fi
8179 case "$hostcat" in
8180 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8181 esac
8182 case "$groupcat" in
8183 '') test -f /etc/group && groupcat='cat /etc/group';;
8184 esac
8185 case "$passcat" in
8186 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8187 esac
8188
8189 : now get the host name
8190 echo " "
8191 echo "Figuring out host name..." >&4
8192 case "$myhostname" in
8193 '') cont=true
8194         echo 'Maybe "hostname" will work...'
8195         if tans=`sh -c hostname 2>&1` ; then
8196                 myhostname=$tans
8197                 phostname=hostname
8198                 cont=''
8199         fi
8200         ;;
8201 *) cont='';;
8202 esac
8203 if $test "$cont"; then
8204         if ./xenix; then
8205                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8206                 if tans=`cat /etc/systemid 2>&1` ; then
8207                         myhostname=$tans
8208                         phostname='cat /etc/systemid'
8209                         echo "Whadyaknow.  Xenix always was a bit strange..."
8210                         cont=''
8211                 fi
8212         elif $test -r /etc/systemid; then
8213                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8214         fi
8215 fi
8216 if $test "$cont"; then
8217         echo 'No, maybe "uuname -l" will work...'
8218         if tans=`sh -c 'uuname -l' 2>&1` ; then
8219                 myhostname=$tans
8220                 phostname='uuname -l'
8221         else
8222                 echo 'Strange.  Maybe "uname -n" will work...'
8223                 if tans=`sh -c 'uname -n' 2>&1` ; then
8224                         myhostname=$tans
8225                         phostname='uname -n'
8226                 else
8227                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8228                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8229                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8230                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8231                         else
8232                                 case "$myhostname" in
8233                                 '') echo "Does this machine have an identity crisis or something?"
8234                                         phostname='';;
8235                                 *)
8236                                         echo "Well, you said $myhostname before..."
8237                                         phostname='echo $myhostname';;
8238                                 esac
8239                         fi
8240                 fi
8241         fi
8242 fi
8243 case "$myhostname" in
8244 '') myhostname=noname ;;
8245 esac
8246 : you do not want to know about this
8247 set $myhostname
8248 myhostname=$1
8249
8250 : verify guess
8251 if $test "$myhostname" ; then
8252         dflt=y
8253         rp='Your host name appears to be "'$myhostname'".'" Right?"
8254         . ./myread
8255         case "$ans" in
8256         y*) ;;
8257         *) myhostname='';;
8258         esac
8259 fi
8260
8261 : bad guess or no guess
8262 while $test "X$myhostname" = X ; do
8263         dflt=''
8264         rp="Please type the (one word) name of your host:"
8265         . ./myread
8266         myhostname="$ans"
8267 done
8268
8269 : translate upper to lower if necessary
8270 case "$myhostname" in
8271 *[A-Z]*)
8272         echo "(Normalizing case in your host name)"
8273         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8274         ;;
8275 esac
8276
8277 case "$myhostname" in
8278 *.*)
8279         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8280         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8281         echo "(Trimming domain name from host name--host name is now $myhostname)"
8282         ;;
8283 *) case "$mydomain" in
8284         '')
8285                 {
8286                         test "X$hostcat" = "Xypcat hosts" &&
8287                         ypmatch "$myhostname" hosts 2>/dev/null |\
8288                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8289                         $test -s hosts
8290                 } || {
8291                         test "X$hostcat" != "X" &&
8292                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8293                                         /[       ]$myhostname[  . ]/p" > hosts
8294                 }
8295                 tmp_re="[       . ]"
8296                 if $test -f hosts; then
8297                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8298                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8299                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8300                                 hosts | $sort | $uniq | \
8301                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8302                         case `$echo X$dflt` in
8303                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8304                                 dflt=.
8305                                 ;;
8306                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8307                                 ;;
8308                         esac
8309                 else
8310                         echo "(I cannot locate a hosts database anywhere)"
8311                         dflt=.
8312                 fi
8313                 case "$dflt" in
8314                 .)
8315                         tans=`./loc resolv.conf X /etc /usr/etc`
8316                         if $test -f "$tans"; then
8317                                 echo "(Attempting domain name extraction from $tans)"
8318                                 dflt=.`$sed -n -e 's/   / /g' \
8319                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8320                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8321                                 case "$dflt" in
8322                                 .) dflt=.`$sed -n -e 's/        / /g' \
8323                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8324                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8325                                         ;;
8326                                 esac
8327                         fi
8328                         ;;
8329                 esac
8330                 case "$dflt" in
8331                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8332                         dflt=.`sh -c domainname 2>/dev/null`
8333                         case "$dflt" in
8334                         '') dflt='.';;
8335                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8336                         esac
8337                         ;;
8338                 esac
8339                 case "$dflt$osname" in
8340                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8341                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8342                         ;;
8343                 esac
8344                 case "$dflt" in
8345                 .) echo "(Lost all hope -- silly guess then)"
8346                         dflt='.nonet'
8347                         ;;
8348                 esac
8349                 $rm -f hosts
8350                 ;;
8351         *) dflt="$mydomain";;
8352         esac;;
8353 esac
8354 echo " "
8355 rp="What is your domain name?"
8356 . ./myread
8357 tans="$ans"
8358 case "$ans" in
8359 '') ;;
8360 .*) ;;
8361 *) tans=".$tans";;
8362 esac
8363 mydomain="$tans"
8364
8365 : translate upper to lower if necessary
8366 case "$mydomain" in
8367 *[A-Z]*)
8368         echo "(Normalizing case in your domain name)"
8369         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8370         ;;
8371 esac
8372
8373 : a little sanity check here
8374 case "$phostname" in
8375 '') ;;
8376 *)
8377         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8378         $myhostname$mydomain|$myhostname) ;;
8379         *)
8380                 case "$phostname" in
8381                 sed*)
8382                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8383                         ;;
8384                 *)
8385                         echo "(That doesn't agree with your $phostname command, by the way.)"
8386                         ;;
8387                 esac
8388         ;;
8389         esac
8390         ;;
8391 esac
8392
8393 $cat <<EOM
8394
8395 I need to get your e-mail address in Internet format if possible, i.e.
8396 something like user@host.domain. Please answer accurately since I have
8397 no easy means to double check it. The default value provided below
8398 is most probably close to reality but may not be valid from outside
8399 your organization...
8400
8401 EOM
8402 cont=x
8403 while test "$cont"; do
8404         case "$cf_email" in
8405         '') dflt="$cf_by@$myhostname$mydomain";;
8406         *) dflt="$cf_email";;
8407         esac
8408         rp='What is your e-mail address?'
8409         . ./myread
8410         cf_email="$ans"
8411         case "$cf_email" in
8412         *@*.*) cont='' ;;
8413         *)
8414                 rp='Address does not look like an Internet one.  Use it anyway?'
8415                 case "$fastread" in
8416                 yes) dflt=y ;;
8417                 *) dflt=n ;;
8418                 esac
8419                 . ./myread
8420                 case "$ans" in
8421                 y*) cont='' ;;
8422                 *) echo " " ;;
8423                 esac
8424                 ;;
8425         esac
8426 done
8427
8428 $cat <<EOM
8429
8430 If you or somebody else will be maintaining perl at your site, please
8431 fill in the correct e-mail address here so that they may be contacted
8432 if necessary. Currently, the "perlbug" program included with perl
8433 will send mail to this address in addition to perlbug@perl.org. You may
8434 enter "none" for no administrator.
8435
8436 EOM
8437 case "$perladmin" in
8438 '') dflt="$cf_email";;
8439 *) dflt="$perladmin";;
8440 esac
8441 rp='Perl administrator e-mail address'
8442 . ./myread
8443 perladmin="$ans"
8444
8445 : determine whether to only install version-specific parts.
8446 echo " "
8447 $cat <<EOM
8448 Do you want to install only the version-specific parts of the perl
8449 distribution?  Usually you do *not* want to do this.
8450 EOM
8451 case "$versiononly" in
8452 "$define"|[Yy]*|true) dflt='y' ;;
8453 *) dflt='n';
8454 esac
8455 rp="Do you want to install only the version-specific parts of perl?"
8456 . ./myread
8457 case "$ans" in
8458 [yY]*)  val="$define";;
8459 *)      val="$undef" ;;
8460 esac
8461 set versiononly
8462 eval $setvar
8463
8464 case "$versiononly" in
8465 "$define") inc_version_list=''
8466            inc_version_list_init=0
8467            ;;
8468 esac
8469
8470 : figure out how to guarantee perl startup
8471 case "$startperl" in
8472 '')
8473         case "$sharpbang" in
8474         *!)
8475                 $cat <<EOH
8476
8477 I can use the #! construct to start perl on your system. This will
8478 make startup of perl scripts faster, but may cause problems if you
8479 want to share those scripts and perl is not in a standard place
8480 ($binexp/perl) on all your platforms. The alternative is to force
8481 a shell by starting the script with a single ':' character.
8482
8483 EOH
8484                 case "$versiononly" in
8485                 "$define")      dflt="$binexp/perl$version";;  
8486                 *)              dflt="$binexp/perl";;
8487                 esac
8488                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8489                 . ./myread
8490                 case "$ans" in
8491                 none)   startperl=": # use perl";;
8492                 *)      startperl="#!$ans"
8493                         if $test 30 -lt `echo "$ans" | wc -c`; then
8494                                 $cat >&4 <<EOM
8495
8496 WARNING:  Some systems limit the #! command to 32 characters.
8497 If you experience difficulty running Perl scripts with #!, try
8498 installing Perl in a directory with a shorter pathname.
8499
8500 EOM
8501                         fi ;;
8502                 esac
8503                 ;;
8504         *) startperl=": # use perl"
8505                 ;;
8506         esac
8507         ;;
8508 esac
8509 echo "I'll use $startperl to start perl scripts."
8510
8511 : figure best path for perl in scripts
8512 case "$perlpath" in
8513 '')
8514         case "$versiononly" in
8515         "$define")      perlpath="$binexp/perl$version";;
8516         *)              perlpath="$binexp/perl";;
8517         esac
8518         case "$startperl" in
8519         *!*) ;;
8520         *)
8521                 $cat <<EOH
8522
8523 I will use the "eval 'exec'" idiom to start Perl on your system.
8524 I can use the full path of your Perl binary for this purpose, but
8525 doing so may cause problems if you want to share those scripts and
8526 Perl is not always in a standard place ($binexp/perl).
8527
8528 EOH
8529                 dflt="$binexp/perl"
8530                 rp="What path shall I use in \"eval 'exec'\"?"
8531                 . ./myread
8532                 perlpath="$ans"
8533                 ;;
8534         esac
8535         ;;
8536 esac
8537 case "$startperl" in
8538 *!*)    ;;
8539 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8540 esac
8541
8542 : determine where public executable scripts go
8543 set scriptdir scriptdir
8544 eval $prefixit
8545 case "$scriptdir" in
8546 '')
8547         dflt="$bin"
8548         : guess some guesses
8549         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8550         $test -d /usr/share/bin     && dflt=/usr/share/bin
8551         $test -d /usr/local/script  && dflt=/usr/local/script
8552         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8553         $test -d $prefixexp/script  && dflt=$prefixexp/script
8554         set dflt
8555         eval $prefixup
8556         ;;
8557 *)  dflt="$scriptdir"
8558         ;;
8559 esac
8560 $cat <<EOM
8561  
8562 Some installations have a separate directory just for executable scripts so
8563 that they can mount it across multiple architectures but keep the scripts in
8564 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8565 Or you might just lump your scripts in with all your other executables.
8566  
8567 EOM
8568 fn=d~
8569 rp='Where do you keep publicly executable scripts?'
8570 . ./getfile
8571 if $test "X$ansexp" != "X$scriptdirexp"; then
8572         installscript=''
8573 fi
8574 scriptdir="$ans"
8575 scriptdirexp="$ansexp"
8576 : Change installation prefix, if necessary.
8577 if $test X"$prefix" != X"$installprefix"; then
8578         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8579 else
8580         installscript="$scriptdirexp"
8581 fi
8582
8583 : determine where add-on public executables go
8584 case "$sitebin" in
8585 '')     dflt=$siteprefix/bin ;;
8586 *)      dflt=$sitebin ;;
8587 esac
8588 fn=d~
8589 rp='Pathname where the add-on public executables should be installed?'
8590 . ./getfile
8591 sitebin="$ans"
8592 sitebinexp="$ansexp"
8593 : Change installation prefix, if necessary.
8594 if $test X"$prefix" != X"$installprefix"; then
8595         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8596 else
8597         installsitebin="$sitebinexp"
8598 fi
8599
8600 : determine where add-on html pages go
8601 : There is no standard location, so try to copy the previously-selected
8602 : directory structure for the core html pages.
8603 case "$sitehtml1dir" in
8604 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8605 *)     dflt=$sitehtml1dir ;;
8606 esac
8607 case "$dflt" in
8608 ''|' ') dflt=none ;;
8609 esac
8610 fn=dn+~
8611 rp='Pathname where the site-specific html pages should be installed?'
8612 . ./getfile
8613 sitehtml1dir="$ans"
8614 sitehtml1direxp="$ansexp"
8615 : Change installation prefix, if necessary.
8616 if $test X"$prefix" != X"$installprefix"; then
8617         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8618 else
8619         installsitehtml1dir="$sitehtml1direxp"
8620 fi
8621
8622 : determine where add-on library html pages go
8623 : There is no standard location, so try to copy the previously-selected
8624 : directory structure for the core html pages.
8625 case "$sitehtml3dir" in
8626 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8627 *)     dflt=$sitehtml3dir ;;
8628 esac
8629 case "$dflt" in
8630 ''|' ') dflt=none ;;
8631 esac
8632 fn=dn+~
8633 rp='Pathname where the site-specific library html pages should be installed?'
8634 . ./getfile
8635 sitehtml3dir="$ans"
8636 sitehtml3direxp="$ansexp"
8637 : Change installation prefix, if necessary.
8638 if $test X"$prefix" != X"$installprefix"; then
8639         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8640 else
8641         installsitehtml3dir="$sitehtml3direxp"
8642 fi
8643
8644 : determine where add-on manual pages go
8645 case "$siteman1dir" in
8646 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8647 *)      dflt=$siteman1dir ;;
8648 esac
8649 case "$dflt" in
8650 ''|' ') dflt=none ;;
8651 esac
8652 fn=dn+~
8653 rp='Pathname where the site-specific manual pages should be installed?'
8654 . ./getfile
8655 siteman1dir="$ans"
8656 siteman1direxp="$ansexp"
8657 : Change installation prefix, if necessary.
8658 if $test X"$prefix" != X"$installprefix"; then
8659         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8660 else
8661         installsiteman1dir="$siteman1direxp"
8662 fi
8663
8664 : determine where add-on library man pages go
8665 case "$siteman3dir" in
8666 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8667 *)      dflt=$siteman3dir ;;
8668 esac
8669 case "$dflt" in
8670 ''|' ') dflt=none ;;
8671 esac
8672 fn=dn+~
8673 rp='Pathname where the site-specific library manual pages should be installed?'
8674 . ./getfile
8675 siteman3dir="$ans"
8676 siteman3direxp="$ansexp"
8677 : Change installation prefix, if necessary.
8678 if $test X"$prefix" != X"$installprefix"; then
8679         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8680 else
8681         installsiteman3dir="$siteman3direxp"
8682 fi
8683
8684 : determine where add-on public executable scripts go
8685 case "$sitescript" in
8686 '')     dflt=$siteprefix/script
8687         $test -d $dflt || dflt=$sitebin ;;
8688 *)  dflt="$sitescript" ;;
8689 esac
8690 fn=d~+
8691 rp='Pathname where add-on public executable scripts should be installed?'
8692 . ./getfile
8693 sitescript="$ans"
8694 sitescriptexp="$ansexp"
8695 : Change installation prefix, if necessary.
8696 if $test X"$prefix" != X"$installprefix"; then
8697         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8698 else
8699         installsitescript="$sitescriptexp"
8700 fi
8701
8702 case "$usefaststdio" in
8703 $define|true|[yY]*|'')
8704         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8705         case "$xversion" in
8706         [68])   dflt='y' ;;
8707         *)      dflt='n' ;;
8708         esac
8709         ;;
8710 *) dflt='n';;
8711 esac
8712 cat <<EOM
8713
8714 Perl can be built to use 'fast stdio', which means using the stdio
8715 library but also directly manipulating the stdio buffers to enable
8716 faster I/O.  Using stdio is better for backward compatibility (especially
8717 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8718 interface has been preferred instead of stdio.
8719
8720 If this doesn't make any sense to you, just accept the default '$dflt'.
8721 EOM
8722 rp='Use the "fast stdio" if available?'
8723 . ./myread
8724 case "$ans" in
8725 y|Y)    val="$define" ;;     
8726 *)      val="$undef" ;;
8727 esac
8728 set usefaststdio
8729 eval $setvar
8730
8731
8732 : define an is-a-typedef? function
8733 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8734 case "$inclist" in
8735 "") inclist="sys/types.h";;
8736 esac;
8737 eval "varval=\$$var";
8738 case "$varval" in
8739 "")
8740         $rm -f temp.c;
8741         for inc in $inclist; do
8742                 echo "#include <$inc>" >>temp.c;
8743         done;
8744         echo "#ifdef $type" >> temp.c;
8745         echo "printf(\"We have $type\");" >> temp.c;
8746         echo "#endif" >> temp.c;
8747         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8748         if $contains $type temp.E >/dev/null 2>&1; then
8749                 eval "$var=\$type";
8750         else
8751                 eval "$var=\$def";
8752         fi;
8753         $rm -f temp.?;;
8754 *) eval "$var=\$varval";;
8755 esac'
8756
8757 : define an is-a-typedef? function that prompts if the type is not available.
8758 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8759 case "$inclist" in
8760 "") inclist="sys/types.h";;
8761 esac;
8762 eval "varval=\$$var";
8763 case "$varval" in
8764 "")
8765         $rm -f temp.c;
8766         for inc in $inclist; do
8767                 echo "#include <$inc>" >>temp.c;
8768         done;
8769         echo "#ifdef $type" >> temp.c;
8770         echo "printf(\"We have $type\");" >> temp.c;
8771         echo "#endif" >> temp.c;
8772         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8773         echo " " ;
8774         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8775         if $contains $type temp.E >/dev/null 2>&1; then
8776                 echo "$type found." >&4;
8777                 eval "$var=\$type";
8778         else
8779                 echo "$type NOT found." >&4;
8780                 dflt="$def";
8781                 . ./myread ;
8782                 eval "$var=\$ans";
8783         fi;
8784         $rm -f temp.?;;
8785 *) eval "$var=\$varval";;
8786 esac'
8787
8788 : see what type lseek is declared as in the kernel
8789 rp="What is the type used for lseek's offset on this system?"
8790 set off_t lseektype long stdio.h sys/types.h
8791 eval $typedef_ask
8792
8793 echo " "
8794 echo "Checking to see how big your file offsets are..." >&4
8795 $cat >try.c <<EOCP
8796 #include <sys/types.h>
8797 #include <stdio.h>
8798 int main()
8799 {
8800     printf("%d\n", (int)sizeof($lseektype));
8801     return(0); 
8802 }
8803 EOCP
8804 set try
8805 if eval $compile_ok; then
8806         lseeksize=`$run ./try`
8807         echo "Your file offsets are $lseeksize bytes long."
8808 else
8809         dflt=$longsize
8810         echo " "
8811         echo "(I can't seem to compile the test program.  Guessing...)"
8812         rp="What is the size of your file offsets (in bytes)?"
8813         . ./myread
8814         lseeksize="$ans"
8815 fi
8816 $rm -f try.c try
8817
8818 : see what type file positions are declared as in the library
8819 rp="What is the type for file position used by fsetpos()?"
8820 set fpos_t fpostype long stdio.h sys/types.h
8821 eval $typedef_ask
8822
8823 echo " "
8824 case "$fpostype" in
8825 *_t) zzz="$fpostype"    ;;
8826 *)   zzz="fpos_t"       ;;
8827 esac
8828 echo "Checking the size of $zzz..." >&4 
8829 cat > try.c <<EOCP
8830 #include <sys/types.h>
8831 #include <stdio.h>
8832 #$i_stdlib I_STDLIB
8833 #ifdef I_STDLIB
8834 #include <stdlib.h>
8835 #endif
8836 int main() {
8837     printf("%d\n", (int)sizeof($fpostype));
8838     exit(0);
8839 }
8840 EOCP
8841 set try
8842 if eval $compile_ok; then
8843         yyy=`$run ./try`
8844         case "$yyy" in
8845         '')     fpossize=4
8846                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8847                 ;;
8848         *)      fpossize=$yyy
8849                 echo "Your $zzz is $fpossize bytes long."
8850                 ;;
8851         esac
8852 else
8853         dflt="$longsize"
8854         echo " " >&4
8855         echo "(I can't compile the test program.  Guessing...)" >&4
8856         rp="What is the size of your file positions (in bytes)?"
8857         . ./myread
8858         fpossize="$ans"
8859 fi
8860
8861 # Backward compatibility (uselfs is deprecated).
8862 case "$uselfs" in
8863 "$define"|true|[yY]*)
8864         cat <<EOM >&4
8865
8866 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8867 EOM
8868         uselargefiles="$define"
8869         ;;
8870 esac                          
8871
8872 case "$lseeksize:$fpossize" in
8873 8:8) cat <<EOM
8874
8875 You can have files larger than 2 gigabytes.
8876 EOM
8877    val="$define" ;;
8878 *)    case "$uselargefiles" in
8879    "$undef"|false|[nN]*) dflt='n' ;;
8880    *)   dflt='y' ;;
8881    esac
8882    cat <<EOM
8883
8884 Perl can be built to understand large files (files larger than 2 gigabytes)
8885 on some systems.  To do so, Configure can be run with -Duselargefiles.
8886
8887 If this doesn't make any sense to you, just accept the default '$dflt'.
8888 EOM
8889    rp='Try to understand large files, if available?'
8890    . ./myread
8891    case "$ans" in
8892    y|Y)         val="$define" ;;
8893    *)           val="$undef"  ;;
8894    esac
8895    ;;
8896 esac
8897 set uselargefiles
8898 eval $setvar
8899 : Look for a hint-file generated 'call-back-unit'.  If the
8900 : user has specified that a large files perl is to be built,
8901 : we may need to set or change some other defaults.
8902 if $test -f uselargefiles.cbu; then
8903         echo "Your platform has some specific hints regarding large file builds, using them..."
8904         . ./uselargefiles.cbu
8905 fi
8906 case "$uselargefiles" in
8907 "$define")
8908         if $test -f uselargefiles.cbu; then
8909                 echo " "
8910                 echo "Rechecking to see how big your file offsets are..." >&4
8911                 $cat >try.c <<EOCP
8912 #include <sys/types.h>
8913 #include <stdio.h>
8914 int main()
8915 {
8916     printf("%d\n", (int)sizeof($lseektype));
8917     return(0); 
8918 }
8919 EOCP
8920                 set try
8921                 if eval $compile_ok; then
8922                         lseeksize=`$run ./try`
8923                         $echo "Your file offsets are now $lseeksize bytes long."
8924                 else
8925                         dflt="$lseeksize"
8926                         echo " "
8927                         echo "(I can't seem to compile the test program.  Guessing...)"
8928                         rp="What is the size of your file offsets (in bytes)?"
8929                         . ./myread
8930                         lseeksize="$ans"
8931                 fi
8932                 case "$fpostype" in
8933                 *_t) zzz="$fpostype"    ;;
8934                 *)   zzz="fpos_t"       ;;
8935                 esac
8936                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8937                 $cat > try.c <<EOCP
8938 #include <sys/types.h>
8939 #include <stdio.h>
8940 #$i_stdlib I_STDLIB
8941 #ifdef I_STDLIB
8942 #include <stdlib.h>
8943 #endif
8944 int main() {
8945     printf("%d\n", (int)sizeof($fpostype));
8946     return(0);
8947 }
8948 EOCP
8949                 set try
8950                 if eval $compile_ok; then
8951                         yyy=`$run ./try`
8952                         dflt="$lseeksize"
8953                         case "$yyy" in
8954                         '')     echo " "
8955                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8956                                 ;;
8957                         *)      fpossize=$yyy
8958                                 echo " $fpossize bytes." >&4
8959                                 ;;
8960                         esac
8961                 else
8962                         dflt="$fpossize"
8963                         echo " "
8964                         echo "(I can't compile the test program.  Guessing...)" >&4
8965                         rp="What is the size of your file positions (in bytes)?"
8966                         . ./myread
8967                         fpossize="$ans"
8968                 fi
8969                 $rm -f try.c try
8970         fi
8971         ;;
8972 esac
8973
8974 case "$vendorprefix" in
8975 '')     d_vendorbin="$undef"
8976         vendorbin=''
8977         vendorbinexp=''
8978         ;;
8979 *)      d_vendorbin="$define"
8980         : determine where vendor-supplied executables go.
8981         case "$vendorbin" in
8982         '') dflt=$vendorprefix/bin ;;
8983         *)      dflt="$vendorbin" ;;
8984         esac
8985         fn=d~+
8986         rp='Pathname for the vendor-supplied executables directory?'
8987         . ./getfile
8988         vendorbin="$ans"
8989         vendorbinexp="$ansexp"
8990         ;;
8991 esac
8992 : Change installation prefix, if necessary.
8993 if $test X"$prefix" != X"$installprefix"; then
8994         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8995 else
8996         installvendorbin="$vendorbinexp"
8997 fi
8998
8999 case "$vendorprefix" in
9000 '')     vendorhtml1dir=''
9001         vendorhtml1direxp=''
9002         ;;
9003 *)      : determine where vendor-supplied html pages go.
9004         : There is no standard location, so try to copy the previously-selected
9005         : directory structure for the core html pages.
9006         : XXX Better default suggestions would be welcome.
9007         case "$vendorhtml1dir" in
9008         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9009         *)      dflt=$vendorhtml1dir ;;
9010         esac
9011         case "$dflt" in
9012         ''|' ') dflt=none ;;
9013         esac
9014         fn=dn+~
9015         rp='Pathname for the vendor-supplied html pages?'
9016         . ./getfile
9017         vendorhtml1dir="$ans"
9018         vendorhtml1direxp="$ansexp"
9019         ;;
9020 esac
9021 : Use ' ' for none so value is preserved next time through Configure
9022 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9023 : Change installation prefix, if necessary.
9024 if $test X"$prefix" != X"$installprefix"; then
9025         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9026 else
9027         installvendorhtml1dir="$vendorhtml1direxp"
9028 fi
9029
9030 case "$vendorprefix" in
9031 '')     vendorhtml3dir=''
9032         vendorhtml3direxp=''
9033         ;;
9034 *)      : determine where vendor-supplied module html pages go.
9035         : There is no standard location, so try to copy the previously-selected
9036         : directory structure for the core html pages.
9037         : XXX Better default suggestions would be welcome.
9038         case "$vendorhtml3dir" in
9039         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9040         *)      dflt=$vendorhtml3dir ;;
9041         esac
9042         case "$dflt" in
9043         ''|' ') dflt=none ;;
9044         esac
9045         fn=dn+~
9046         rp='Pathname for the vendor-supplied html pages?'
9047         . ./getfile
9048         vendorhtml3dir="$ans"
9049         vendorhtml3direxp="$ansexp"
9050         ;;
9051 esac
9052 : Use ' ' for none so value is preserved next time through Configure
9053 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9054 : Change installation prefix, if necessary.
9055 if $test X"$prefix" != X"$installprefix"; then
9056         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9057 else
9058         installvendorhtml3dir="$vendorhtml3direxp"
9059 fi
9060
9061 case "$vendorprefix" in
9062 '')     vendorman1dir=''
9063         vendorman1direxp=''
9064         ;;
9065 *)      : determine where vendor-supplied manual pages go.
9066         case "$vendorman1dir" in
9067         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9068         *)      dflt=$vendorman1dir ;;
9069         esac
9070         case "$dflt" in
9071         ''|' ') dflt=none ;;
9072         esac
9073         fn=nd~+
9074         rp='Pathname for the vendor-supplied manual section 1 pages?'
9075         . ./getfile
9076         vendorman1dir="$ans"
9077         vendorman1direxp="$ansexp"
9078         ;;
9079 esac
9080 : Use ' ' for none so value is preserved next time through Configure
9081 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9082 : Change installation prefix, if necessary.
9083 if $test X"$prefix" != X"$installprefix"; then
9084         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9085 else
9086         installvendorman1dir="$vendorman1direxp"
9087 fi
9088
9089 case "$vendorprefix" in
9090 '')     vendorman3dir=''
9091         vendorman3direxp=''
9092         ;;
9093 *)      : determine where vendor-supplied module manual pages go.
9094         case "$vendorman3dir" in
9095         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9096         *)      dflt=$vendorman3dir ;;
9097         esac
9098         case "$dflt" in
9099         ''|' ') dflt=none ;;
9100         esac
9101         fn=nd~+
9102         rp='Pathname for the vendor-supplied manual section 3 pages?'
9103         . ./getfile
9104         vendorman3dir="$ans"
9105         vendorman3direxp="$ansexp"
9106         ;;
9107 esac
9108 : Use ' ' for none so value is preserved next time through Configure
9109 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9110 : Change installation prefix, if necessary.
9111 if $test X"$prefix" != X"$installprefix"; then
9112         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9113 else
9114         installvendorman3dir="$vendorman3direxp"
9115 fi
9116
9117 case "$vendorprefix" in
9118 '')     d_vendorscript="$undef"
9119         vendorscript=''
9120         vendorscriptexp=''
9121         ;;
9122 *)      d_vendorscript="$define"
9123         : determine where vendor-supplied scripts go.
9124         case "$vendorscript" in
9125         '')     dflt=$vendorprefix/script
9126                 $test -d $dflt || dflt=$vendorbin ;;
9127         *)  dflt="$vendorscript" ;;
9128         esac
9129         $cat <<EOM
9130
9131 The installation process will create a directory for 
9132 vendor-supplied scripts.
9133
9134 EOM
9135         fn=d~+
9136         rp='Pathname for the vendor-supplied scripts directory?'
9137         . ./getfile
9138         vendorscript="$ans"
9139         vendorscriptexp="$ansexp"
9140         ;;
9141 esac
9142 : Change installation prefix, if necessary.
9143 if $test X"$prefix" != X"$installprefix"; then
9144         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9145 else
9146         installvendorscript="$vendorscriptexp"
9147 fi
9148
9149 : see if qgcvt exists
9150 set qgcvt d_qgcvt
9151 eval $inlibc
9152
9153 echo " "
9154
9155 if $test X"$d_longdbl" = X"$define"; then
9156
9157 echo "Checking how to print long doubles..." >&4
9158
9159 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9160         $cat >try.c <<'EOCP'
9161 #include <sys/types.h>
9162 #include <stdio.h>
9163 int main() {
9164   double d = 123.456;
9165   printf("%.3f\n", d);
9166 }
9167 EOCP
9168         set try
9169         if eval $compile; then
9170                 yyy=`$run ./try`
9171                 case "$yyy" in
9172                 123.456)
9173                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9174                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9175                         echo "We will use %f."
9176                         ;;
9177                 esac
9178         fi
9179 fi
9180
9181 if $test X"$sPRIfldbl" = X; then
9182         $cat >try.c <<'EOCP'
9183 #include <sys/types.h>
9184 #include <stdio.h>
9185 int main() {
9186   long double d = 123.456;
9187   printf("%.3Lf\n", d);
9188 }
9189 EOCP
9190         set try
9191         if eval $compile; then
9192                 yyy=`$run ./try`
9193                 case "$yyy" in
9194                 123.456)
9195                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9196                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9197                         echo "We will use %Lf."
9198                         ;;
9199                 esac
9200         fi
9201 fi
9202
9203 if $test X"$sPRIfldbl" = X; then
9204         $cat >try.c <<'EOCP'
9205 #include <sys/types.h>
9206 #include <stdio.h>
9207 int main() {
9208   long double d = 123.456;
9209   printf("%.3llf\n", d);
9210 }
9211 EOCP
9212         set try
9213         if eval $compile; then
9214                 yyy=`$run ./try`
9215                 case "$yyy" in
9216                 123.456)
9217                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9218                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9219                         echo "We will use %llf."
9220                         ;;
9221                 esac
9222         fi
9223 fi
9224
9225 if $test X"$sPRIfldbl" = X; then
9226         $cat >try.c <<'EOCP'
9227 #include <sys/types.h>
9228 #include <stdio.h>
9229 int main() {
9230   long double d = 123.456;
9231   printf("%.3lf\n", d);
9232 }
9233 EOCP
9234         set try
9235         if eval $compile; then
9236                 yyy=`$run ./try`
9237                 case "$yyy" in
9238                 123.456)
9239                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9240                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9241                         echo "We will use %lf."
9242                         ;;
9243                 esac
9244         fi
9245 fi
9246
9247 if $test X"$sPRIfldbl" = X; then
9248         echo "Cannot figure out how to print long doubles." >&4
9249 else
9250         sSCNfldbl=$sPRIfldbl    # expect consistency
9251 fi
9252
9253 $rm -f try try.*
9254
9255 fi # d_longdbl
9256
9257 case "$sPRIfldbl" in
9258 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9259         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9260         d_SCNfldbl="$undef";
9261         ;;
9262 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9263         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9264         d_SCNfldbl="$define";
9265         ;;
9266 esac
9267
9268 : Check how to convert floats to strings.
9269
9270 if test "X$d_Gconvert" = X; then
9271
9272 echo " "
9273 echo "Checking for an efficient way to convert floats to strings."
9274 echo " " > try.c
9275 case "$uselongdouble" in
9276 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9277 esac
9278 case "$d_longdbl" in
9279 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9280 esac
9281 case "$d_PRIgldbl" in
9282 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9283 esac
9284 $cat >>try.c <<EOP
9285 #ifdef TRY_gconvert
9286 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9287 char *myname = "gconvert";
9288 #endif
9289 #ifdef TRY_gcvt
9290 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9291 char *myname = "gcvt";
9292 #endif
9293 #ifdef TRY_qgcvt
9294 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9295 char *myname = "qgcvt";
9296 #define DOUBLETYPE long double
9297 #endif
9298 #ifdef TRY_sprintf
9299 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9300 #ifdef HAS_PRIgldbl
9301 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9302 #else
9303 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9304 #endif
9305 #else
9306 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9307 #endif
9308 char *myname = "sprintf";
9309 #endif
9310
9311 #ifndef DOUBLETYPE
9312 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9313 #define DOUBLETYPE long double
9314 #else
9315 #define DOUBLETYPE double
9316 #endif
9317 #endif
9318
9319 #include <stdio.h>
9320
9321 #define I_STDLIB $i_stdlib
9322 #ifdef I_STDLIB
9323 #include <stdlib.h>
9324 #endif
9325
9326 int
9327 checkit(expect, got)
9328 char *expect;
9329 char *got;
9330 {
9331     if (strcmp(expect, got)) {
9332                 printf("%s oddity:  Expected %s, got %s\n",
9333                         myname, expect, got);
9334                 exit(1);
9335         }
9336 }
9337
9338 int main()
9339
9340         char buf[64]; 
9341         buf[63] = '\0';
9342
9343         /* This must be 1st test on (which?) platform */
9344         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9345         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9346         checkit("0.1", buf);
9347
9348         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9349         checkit("0.01", buf);
9350
9351         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9352         checkit("0.001", buf);
9353
9354         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9355         checkit("0.0001", buf);
9356
9357         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9358         if (strlen(buf) > 5)
9359             checkit("9e-005", buf); /* for Microsoft ?? */
9360         else
9361             checkit("9e-05", buf);
9362
9363         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9364         checkit("1", buf);
9365
9366         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9367         checkit("1.1", buf);
9368
9369         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9370         checkit("1.01", buf);
9371
9372         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9373         checkit("1.001", buf);
9374
9375         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9376         checkit("1.0001", buf);
9377
9378         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9379         checkit("1.00001", buf);
9380
9381         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9382         checkit("1.000001", buf);
9383
9384         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9385         checkit("0", buf);
9386
9387         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9388         checkit("-1", buf);
9389
9390         /* Some Linux gcvt's give 1.e+5 here. */
9391         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9392         checkit("100000", buf);
9393         
9394         /* Some Linux gcvt's give -1.e+5 here. */
9395         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9396         checkit("-100000", buf);
9397
9398         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9399         checkit("123.456", buf);
9400
9401         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9402         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9403         /* 34 should be enough to scare even long double
9404          * places into using the e notation. */
9405         if (strlen(buf) > 5)
9406             checkit("1e+034", buf); /* for Microsoft */
9407         else
9408             checkit("1e+34", buf);
9409
9410         /* For Perl, if you add additional tests here, also add them to
9411          * t/base/num.t for benefit of platforms not using Configure or
9412          * overriding d_Gconvert */
9413
9414         exit(0);
9415 }
9416 EOP
9417 : first add preferred functions to our list
9418 xxx_list=""
9419 for xxx_convert in $gconvert_preference; do
9420     case $xxx_convert in
9421     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9422     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9423     esac 
9424 done
9425 : then add any others
9426 for xxx_convert in gconvert gcvt sprintf; do
9427     case "$xxx_list" in
9428     *$xxx_convert*) ;;
9429     *) xxx_list="$xxx_list $xxx_convert" ;;
9430     esac 
9431 done
9432
9433 case "$d_longdbl$uselongdouble" in
9434 "$define$define")
9435     : again, add prefered functions to our list first
9436     xxx_ld_list=""
9437     for xxx_convert in $gconvert_ld_preference; do
9438         case $xxx_convert in
9439         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9440         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9441         esac
9442     done
9443     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9444     for xxx_convert in qgcvt sprintf $xxx_list; do
9445         case "$xxx_ld_list" in
9446         $xxx_convert*|*" $xxx_convert"*) ;;
9447         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9448         esac
9449     done
9450     : if sprintf cannot do long doubles, move it to the end
9451     if test "$d_PRIgldbl" != "$define"; then
9452         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9453     fi
9454     : if no qgcvt, remove it
9455     if test "$d_qgcvt" != "$define"; then
9456         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9457     fi
9458     : use the ld_list
9459     xxx_list="$xxx_ld_list"
9460     ;;
9461 esac
9462
9463 for xxx_convert in $xxx_list; do
9464         echo "Trying $xxx_convert..."
9465         $rm -f try try$_o
9466         set try -DTRY_$xxx_convert
9467         if eval $compile; then
9468                 echo "$xxx_convert() found." >&4
9469                 if $run ./try; then
9470                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9471                         break;
9472                 else
9473                         echo "...But $xxx_convert didn't work as I expected."
9474                         xxx_convert=''
9475                 fi
9476         else
9477                 echo "$xxx_convert NOT found." >&4
9478         fi
9479 done
9480
9481 if test X$xxx_convert = X; then
9482     echo "*** WHOA THERE!!! ***" >&4
9483     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9484     xxx_convert=sprintf
9485 fi
9486
9487 case "$xxx_convert" in
9488 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9489 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9490 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9491 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9492    "$define$define$define")
9493       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9494    "$define$define$undef")
9495       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9496    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9497    esac
9498    ;;  
9499 esac
9500
9501 fi
9502
9503 : see if _fwalk exists
9504 set fwalk d__fwalk
9505 eval $inlibc
9506
9507 : Initialize h_fcntl
9508 h_fcntl=false
9509
9510 : Initialize h_sysfile
9511 h_sysfile=false
9512
9513 : access call always available on UNIX
9514 set access d_access
9515 eval $inlibc
9516
9517 : locate the flags for 'access()'
9518 case "$d_access" in
9519 "$define")
9520         echo " "
9521         $cat >access.c <<EOCP
9522 #include <sys/types.h>
9523 #ifdef I_FCNTL
9524 #include <fcntl.h>
9525 #endif
9526 #ifdef I_SYS_FILE
9527 #include <sys/file.h>
9528 #endif
9529 #ifdef I_UNISTD
9530 #include <unistd.h>
9531 #endif
9532 #$i_stdlib I_STDLIB
9533 #ifdef I_STDLIB
9534 #include <stdlib.h>
9535 #endif
9536 int main() {
9537         exit(R_OK);
9538 }
9539 EOCP
9540         : check sys/file.h first, no particular reason here
9541         if $test `./findhdr sys/file.h` && \
9542                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9543                 h_sysfile=true;
9544                 echo "<sys/file.h> defines the *_OK access constants." >&4
9545         elif $test `./findhdr fcntl.h` && \
9546                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9547                 h_fcntl=true;
9548                 echo "<fcntl.h> defines the *_OK access constants." >&4
9549         elif $test `./findhdr unistd.h` && \
9550                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9551                 echo "<unistd.h> defines the *_OK access constants." >&4
9552         else
9553                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9554         fi
9555         ;;
9556 esac
9557 $rm -f access*
9558
9559 : see if accessx exists
9560 set accessx d_accessx
9561 eval $inlibc
9562
9563 : see if aintl exists
9564 set aintl d_aintl
9565 eval $inlibc
9566
9567 : see if alarm exists
9568 set alarm d_alarm
9569 eval $inlibc
9570
9571 : see if POSIX threads are available
9572 set pthread.h i_pthread
9573 eval $inhdr
9574
9575 : define a fucntion to check prototypes
9576 $cat > protochk <<EOSH
9577 $startsh
9578 cc="$cc"
9579 optimize="$optimize"
9580 ccflags="$ccflags"
9581 prototype="$prototype"
9582 define="$define"
9583 rm=$rm
9584 usethreads=$usethreads
9585 i_pthread=$i_pthread
9586 pthread_h_first=$pthread_h_first
9587 EOSH
9588
9589 $cat >> protochk <<'EOSH'
9590
9591 $rm -f try.c
9592 foo="$1"
9593 shift
9594 while test $# -ge 2; do
9595         case "$1" in
9596                 $define) echo "#include <$2>" >> try.c ;;
9597                 literal) echo "$2" >> try.c ;;
9598         esac
9599     # Extra magic for the benefit of systems that need pthread.h
9600     # to be included early to correctly detect threadsafe functions.
9601     # Such functions must guarantee themselves, though, that the usethreads
9602     # and i_pthread have been defined, before calling protochk.
9603     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9604         echo "#include <pthread.h>" >> try.c
9605         pthread_h_done=yes
9606     fi
9607     shift 2
9608 done
9609 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9610 cat >> try.c <<'EOCP'
9611 #ifdef CAN_PROTOTYPE
9612 #define _(args) args
9613 #else
9614 #define _(args) ()
9615 #endif
9616 EOCP
9617 echo "$foo" >> try.c
9618 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9619 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9620 status=$?
9621 $rm -f try.[co]
9622 exit $status
9623 EOSH
9624 chmod +x protochk
9625 $eunicefix protochk
9626
9627 hasproto='varname=$1; func=$2; shift; shift;
9628 while $test $# -ge 2; do
9629         case "$1" in
9630         $define) echo "#include <$2>";;
9631         esac ;
9632     shift 2;
9633 done > try.c;
9634 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9635 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9636         echo "$func() prototype found.";
9637         val="$define";
9638 else
9639         echo "$func() prototype NOT found.";
9640         val="$undef";
9641 fi;
9642 set $varname;
9643 eval $setvar;
9644 $rm -f try.c tryout.c'
9645
9646 : see if sys/types.h has to be included
9647 set sys/types.h i_systypes
9648 eval $inhdr
9649
9650 : see if sys/select.h has to be included
9651 set sys/select.h i_sysselct
9652 eval $inhdr
9653
9654 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9655 while $test $# -ge 2; do
9656         case "$1" in
9657         $define) echo "#include <$2>";;
9658         esac ;
9659     shift 2;
9660 done > try.c;
9661 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9662 set try;
9663 if eval $compile; then
9664         val="$define";
9665 else
9666         val="$undef";
9667 fi;
9668 set $varname;
9669 eval $setvar;
9670 $rm -f try.c try.o'
9671
9672 : see if we should include time.h, sys/time.h, or both
9673 echo " "
9674 if test "X$timeincl" = X; then
9675         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9676         $echo $n "I'm now running the test program...$c"
9677         $cat >try.c <<EOCP
9678 #include <sys/types.h>
9679 #ifdef I_TIME
9680 #include <time.h>
9681 #endif
9682 #ifdef I_SYSTIME
9683 #ifdef SYSTIMEKERNEL
9684 #define KERNEL
9685 #endif
9686 #include <sys/time.h>
9687 #endif
9688 #ifdef I_SYSSELECT
9689 #include <sys/select.h>
9690 #endif
9691 #$i_stdlib I_STDLIB
9692 #ifdef I_STDLIB
9693 #include <stdlib.h>
9694 #endif
9695 int main()
9696 {
9697         struct tm foo;
9698 #ifdef S_TIMEVAL
9699         struct timeval bar;
9700 #endif
9701 #ifdef S_TIMEZONE
9702         struct timezone tzp;
9703 #endif
9704         if (foo.tm_sec == foo.tm_sec)
9705                 exit(0);
9706 #ifdef S_TIMEVAL
9707         if (bar.tv_sec == bar.tv_sec)
9708                 exit(0);
9709 #endif
9710         exit(1);
9711 }
9712 EOCP
9713         flags=''
9714         for s_timezone in '-DS_TIMEZONE' ''; do
9715         sysselect=''
9716         for s_timeval in '-DS_TIMEVAL' ''; do
9717         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9718         for i_time in '' '-DI_TIME'; do
9719         for i_systime in '-DI_SYSTIME' ''; do
9720                 case "$flags" in
9721                 '') $echo $n ".$c"
9722                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9723                         if eval $compile; then
9724                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9725                                 shift
9726                                 flags="$*"
9727                                 echo " "
9728                                 $echo $n "Succeeded with $flags$c"
9729                         fi
9730                         ;;
9731                 esac
9732         done
9733         done
9734         done
9735         done
9736         done
9737         timeincl=''
9738         echo " "
9739         case "$flags" in
9740         *SYSTIMEKERNEL*) i_systimek="$define"
9741                 timeincl=`./findhdr sys/time.h`
9742                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9743         *) i_systimek="$undef";;
9744         esac
9745         case "$flags" in
9746         *I_TIME*) i_time="$define"
9747                 timeincl=`./findhdr time.h`" $timeincl"
9748                 echo "We'll include <time.h>." >&4;;
9749         *) i_time="$undef";;
9750         esac
9751         case "$flags" in
9752         *I_SYSTIME*) i_systime="$define"
9753                 timeincl=`./findhdr sys/time.h`" $timeincl"
9754                 echo "We'll include <sys/time.h>." >&4;;
9755         *) i_systime="$undef";;
9756         esac
9757         $rm -f try.c try
9758 fi
9759 : see if struct tm knows about tm_zone
9760 case "$i_systime$i_time" in
9761 *$define*) 
9762         echo " "
9763         echo "Checking to see if your struct tm has tm_zone field..." >&4
9764         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9765         eval $hasfield
9766         ;;
9767 *)      val="$undef"
9768         set d_tm_tm_zone
9769         eval $setvar
9770         ;;
9771 esac
9772 case "$d_tm_tm_zone" in
9773 "$define")      echo "Yes, it does."   ;;
9774 *)              echo "No, it doesn't." ;;
9775 esac
9776 : see if struct tm knows about tm_gmtoff
9777 case "$i_systime$i_time" in
9778 *$define*) 
9779         echo " "
9780         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9781         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9782         eval $hasfield
9783         ;;
9784 *)      val="$undef"
9785         set d_tm_tm_gmtoff
9786         eval $setvar
9787         ;;
9788 esac
9789 case "$d_tm_tm_gmtoff" in
9790 "$define")      echo "Yes, it does."   ;;
9791 *)              echo "No, it doesn't." ;;
9792 esac
9793
9794 : see if asctime_r exists
9795 set asctime_r d_asctime_r
9796 eval $inlibc
9797 case "$d_asctime_r" in
9798 "$define")
9799         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9800         case "$d_asctime_r_proto:$usethreads" in
9801         ":define")      d_asctime_r_proto=define
9802                 set d_asctime_r_proto asctime_r $hdrs
9803                 eval $hasproto ;;
9804         *)      ;;
9805         esac
9806         case "$d_asctime_r_proto" in
9807         define)
9808         case "$asctime_r_proto" in
9809         ''|0) try='char* asctime_r(const struct tm*, char*);'
9810         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9811         esac
9812         case "$asctime_r_proto" in
9813         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9814         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9815         esac
9816         case "$asctime_r_proto" in
9817         ''|0) try='int asctime_r(const struct tm*, char*);'
9818         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9819         esac
9820         case "$asctime_r_proto" in
9821         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9822         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9823         esac
9824         case "$asctime_r_proto" in
9825         ''|0)   d_asctime_r=undef
9826                 asctime_r_proto=0
9827                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9828         * )     case "$asctime_r_proto" in
9829                 REENTRANT_PROTO*) ;;
9830                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9831                 esac
9832                 echo "Prototype: $try" ;;
9833         esac
9834         ;;
9835         *)      case "$usethreads" in
9836                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9837                 esac
9838                 d_asctime_r=undef
9839                 asctime_r_proto=0
9840                 ;;
9841         esac
9842         ;;
9843 *)      asctime_r_proto=0
9844         ;;
9845 esac
9846
9847 : see if atolf exists
9848 set atolf d_atolf
9849 eval $inlibc
9850
9851 : see if atoll exists
9852 set atoll d_atoll
9853 eval $inlibc
9854
9855 : Look for GNU-cc style attribute checking
9856 echo " "
9857 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9858 $cat >attrib.c <<'EOCP'
9859 #include <stdio.h>
9860 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9861 EOCP
9862 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9863         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9864                 echo "Your C compiler doesn't fully support __attribute__."
9865                 val="$undef"
9866         else
9867                 echo "Your C compiler supports __attribute__."
9868                 val="$define"
9869         fi
9870 else
9871         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9872         val="$undef"
9873 fi
9874 set d_attribut
9875 eval $setvar
9876 $rm -f attrib*
9877
9878 : see if bcmp exists
9879 set bcmp d_bcmp
9880 eval $inlibc
9881
9882 : see if bcopy exists
9883 set bcopy d_bcopy
9884 eval $inlibc
9885
9886 : see if this is a unistd.h system
9887 set unistd.h i_unistd
9888 eval $inhdr
9889
9890 : see if getpgrp exists
9891 set getpgrp d_getpgrp
9892 eval $inlibc
9893
9894 case "$d_getpgrp" in
9895 "$define")
9896         echo " "
9897         echo "Checking to see which flavor of getpgrp is in use..."
9898         $cat >try.c <<EOP
9899 #$i_unistd I_UNISTD
9900 #include <sys/types.h>
9901 #ifdef I_UNISTD
9902 #  include <unistd.h>
9903 #endif
9904 #$i_stdlib I_STDLIB
9905 #ifdef I_STDLIB
9906 #include <stdlib.h>
9907 #endif
9908 int main()
9909 {
9910         if (getuid() == 0) {
9911                 printf("(I see you are running Configure as super-user...)\n");
9912                 setuid(1);
9913         }
9914 #ifdef TRY_BSD_PGRP
9915         if (getpgrp(1) == 0)
9916                 exit(0);
9917 #else
9918         if (getpgrp() > 0)
9919                 exit(0);
9920 #endif
9921         exit(1);
9922 }
9923 EOP
9924         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9925                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9926                 val="$define"
9927         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9928                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9929                 val="$undef"
9930         else
9931                 echo "I can't seem to compile and run the test program."
9932                 if ./usg; then
9933                         xxx="a USG one, i.e. you use getpgrp()."
9934                 else
9935                         # SVR4 systems can appear rather BSD-ish.
9936                         case "$i_unistd" in
9937                         $undef)
9938                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9939                                 val="$define"
9940                                 ;;
9941                         $define)
9942                                 xxx="probably a USG one, i.e. you use getpgrp()."
9943                                 val="$undef"
9944                                 ;;
9945                         esac
9946                 fi
9947                 echo "Assuming your getpgrp is $xxx" >&4
9948         fi
9949         ;;
9950 *) val="$undef";;
9951 esac
9952 set d_bsdgetpgrp
9953 eval $setvar
9954 $rm -f try try.*
9955
9956 : see if setpgrp exists
9957 set setpgrp d_setpgrp
9958 eval $inlibc
9959
9960 case "$d_setpgrp" in
9961 "$define")
9962         echo " "
9963         echo "Checking to see which flavor of setpgrp is in use..."
9964         $cat >try.c <<EOP
9965 #$i_unistd I_UNISTD
9966 #include <sys/types.h>
9967 #ifdef I_UNISTD
9968 #  include <unistd.h>
9969 #endif
9970 #$i_stdlib I_STDLIB
9971 #ifdef I_STDLIB
9972 #include <stdlib.h>
9973 #endif
9974 int main()
9975 {
9976         if (getuid() == 0) {
9977                 printf("(I see you are running Configure as super-user...)\n");
9978                 setuid(1);
9979         }
9980 #ifdef TRY_BSD_PGRP
9981         if (-1 == setpgrp(1, 1))
9982                 exit(0);
9983 #else
9984         if (setpgrp() != -1)
9985                 exit(0);
9986 #endif
9987         exit(1);
9988 }
9989 EOP
9990         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9991                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9992                 val="$define"
9993         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9994                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9995                 val="$undef"
9996         else
9997                 echo "(I can't seem to compile and run the test program.)"
9998                 if ./usg; then
9999                         xxx="a USG one, i.e. you use setpgrp()."
10000                 else
10001                         # SVR4 systems can appear rather BSD-ish.
10002                         case "$i_unistd" in
10003                         $undef)
10004                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10005                                 val="$define"
10006                                 ;;
10007                         $define)
10008                                 xxx="probably a USG one, i.e. you use setpgrp()."
10009                                 val="$undef"
10010                                 ;;
10011                         esac
10012                 fi
10013                 echo "Assuming your setpgrp is $xxx" >&4
10014         fi
10015         ;;
10016 *) val="$undef";;
10017 esac
10018 set d_bsdsetpgrp
10019 eval $setvar
10020 $rm -f try try.*
10021 : see if bzero exists
10022 set bzero d_bzero
10023 eval $inlibc
10024
10025 : see if signal is declared as pointer to function returning int or void
10026 echo " "
10027 xxx=`./findhdr signal.h`
10028 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10029 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10030         echo "You have int (*signal())() instead of void." >&4
10031         val="$undef"
10032 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10033         echo "You have void (*signal())()." >&4
10034         val="$define"
10035 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10036         echo "You have int (*signal())() instead of void." >&4
10037         val="$undef"
10038 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10039         echo "You have void (*signal())()." >&4
10040         val="$define"
10041 else
10042         case "$d_voidsig" in
10043         '')
10044         echo "I can't determine whether signal handler returns void or int..." >&4
10045                 dflt=void
10046                 rp="What type does your signal handler return?"
10047                 . ./myread
10048                 case "$ans" in
10049                 v*) val="$define";;
10050                 *) val="$undef";;
10051                 esac;;
10052         "$define")
10053                 echo "As you already told me, signal handler returns void." >&4
10054                 val="$define"
10055                 ;;
10056         *)      echo "As you already told me, signal handler returns int." >&4
10057                 val="$undef"
10058                 ;;
10059         esac
10060 fi
10061 set d_voidsig
10062 eval $setvar
10063 case "$d_voidsig" in
10064 "$define") signal_t="void";;
10065 *) signal_t="int";;
10066 esac
10067 $rm -f $$.tmp
10068
10069 : check for ability to cast large floats to 32-bit ints.
10070 echo " "
10071 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10072 if $test "$intsize" -ge 4; then
10073         xxx=int
10074 else
10075         xxx=long
10076 fi
10077 $cat >try.c <<EOCP
10078 #include <stdio.h>
10079 #$i_stdlib I_STDLIB
10080 #ifdef I_STDLIB
10081 #include <stdlib.h>
10082 #endif
10083 #include <sys/types.h>
10084 #include <signal.h>
10085 $signal_t blech(s) int s; { exit(3); }
10086 int main()
10087 {
10088         $xxx i32;
10089         double f, g;
10090         int result = 0;
10091         char str[16];
10092         signal(SIGFPE, blech);
10093
10094         /* Don't let compiler optimize the test away.  Store the number 
10095            in a writable string for gcc to pass to sscanf under HP/UX.
10096         */
10097         sprintf(str, "2147483647");
10098         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10099         g = 10 * f;
10100         i32  = ($xxx) g;
10101
10102         /* x86 processors will probably give 0x8000 0000, which is a
10103            sign change.  We don't want that.  We want to mimic SPARC
10104            behavior here, which is to preserve the sign and give
10105            back 0x7fff ffff.
10106         */
10107         if (i32 != ($xxx) f)
10108                 result |= 1;
10109         exit(result);
10110 }
10111 EOCP
10112 set try
10113 if eval $compile_ok; then
10114         $run ./try
10115         yyy=$?
10116 else
10117         echo "(I can't seem to compile the test program--assuming it can't)"
10118         yyy=1
10119 fi
10120 case "$yyy" in
10121 0)      val="$define"
10122         echo "Yup, it can."
10123         ;;
10124 *)      val="$undef"
10125         echo "Nope, it can't."
10126         ;;
10127 esac
10128 set d_casti32
10129 eval $setvar
10130 $rm -f try try.*
10131
10132 : check for ability to cast negative floats to unsigned
10133 echo " "
10134 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10135 $cat >try.c <<EOCP
10136 #include <stdio.h>
10137 #$i_stdlib I_STDLIB
10138 #ifdef I_STDLIB
10139 #include <stdlib.h>
10140 #endif
10141 #include <sys/types.h>
10142 #include <signal.h>
10143 $signal_t blech(s) int s; { exit(7); }
10144 $signal_t blech_in_list(s) int s; { exit(4); }
10145 unsigned long dummy_long(p) unsigned long p; { return p; }
10146 unsigned int dummy_int(p) unsigned int p; { return p; }
10147 unsigned short dummy_short(p) unsigned short p; { return p; }
10148 int main()
10149 {
10150         double f;
10151         unsigned long along;
10152         unsigned int aint;
10153         unsigned short ashort;
10154         int result = 0;
10155         char str[16];
10156         
10157         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10158            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10159            optimized the whole file away
10160         */
10161         /* Store the number in a writable string for gcc to pass to 
10162            sscanf under HP/UX.
10163         */
10164         sprintf(str, "-123");
10165         sscanf(str, "%lf", &f);  /* f = -123.; */
10166
10167         signal(SIGFPE, blech);
10168         along = (unsigned long)f;
10169         aint = (unsigned int)f;
10170         ashort = (unsigned short)f;
10171         if (along != (unsigned long)-123)
10172                 result |= 1;
10173         if (aint != (unsigned int)-123)
10174                 result |= 1;
10175         if (ashort != (unsigned short)-123)
10176                 result |= 1;
10177         sprintf(str, "1073741824.");
10178         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10179         f = f + f;
10180         along = 0;
10181         along = (unsigned long)f;
10182         if (along != 0x80000000)
10183                 result |= 2;
10184         f -= 1.;
10185         along = 0;
10186         along = (unsigned long)f;
10187         if (along != 0x7fffffff)
10188                 result |= 1;
10189         f += 2.;
10190         along = 0;
10191         along = (unsigned long)f;
10192         if (along != 0x80000001)
10193                 result |= 2;
10194         if (result)
10195                 exit(result);
10196         signal(SIGFPE, blech_in_list);
10197         sprintf(str, "123.");
10198         sscanf(str, "%lf", &f);  /* f = 123.; */
10199         along = dummy_long((unsigned long)f);
10200         aint = dummy_int((unsigned int)f);
10201         ashort = dummy_short((unsigned short)f);
10202         if (along != (unsigned long)123)
10203                 result |= 4;
10204         if (aint != (unsigned int)123)
10205                 result |= 4;
10206         if (ashort != (unsigned short)123)
10207                 result |= 4;
10208         exit(result);
10209
10210 }
10211 EOCP
10212 set try
10213 if eval $compile_ok; then
10214         $run ./try
10215         castflags=$?
10216 else
10217         echo "(I can't seem to compile the test program--assuming it can't)"
10218         castflags=7
10219 fi
10220 case "$castflags" in
10221 0)      val="$define"
10222         echo "Yup, it can."
10223         ;;
10224 *)      val="$undef"
10225         echo "Nope, it can't."
10226         ;;
10227 esac
10228 set d_castneg
10229 eval $setvar
10230 $rm -f try.*
10231
10232 : see if vprintf exists
10233 echo " "
10234 if set vprintf val -f d_vprintf; eval $csym; $val; then
10235         echo 'vprintf() found.' >&4
10236         val="$define"
10237         $cat >try.c <<EOF
10238 #include <varargs.h>
10239 #$i_stdlib I_STDLIB
10240 #ifdef I_STDLIB
10241 #include <stdlib.h>
10242 #endif
10243
10244 int main() { xxx("foo"); }
10245
10246 xxx(va_alist)
10247 va_dcl
10248 {
10249         va_list args;
10250         char buf[10];
10251
10252         va_start(args);
10253         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10254 }
10255 EOF
10256         set try
10257         if eval $compile && $run ./try; then
10258                 echo "Your vsprintf() returns (int)." >&4
10259                 val2="$undef"
10260         else
10261                 echo "Your vsprintf() returns (char*)." >&4
10262                 val2="$define"
10263         fi
10264 else
10265         echo 'vprintf() NOT found.' >&4
10266                 val="$undef"
10267                 val2="$undef"
10268 fi
10269 $rm -f try try.*
10270 set d_vprintf
10271 eval $setvar
10272 val=$val2
10273 set d_charvspr
10274 eval $setvar
10275
10276 : see if chown exists
10277 set chown d_chown
10278 eval $inlibc
10279
10280 : see if chroot exists
10281 set chroot d_chroot
10282 eval $inlibc
10283
10284 : see if chsize exists
10285 set chsize d_chsize
10286 eval $inlibc
10287
10288 : see if class exists
10289 set class d_class
10290 eval $inlibc
10291
10292 hasstruct='varname=$1; struct=$2; shift; shift;
10293 while $test $# -ge 2; do
10294         case "$1" in
10295         $define) echo "#include <$2>";;
10296         esac ;
10297     shift 2;
10298 done > try.c;
10299 echo "int main () { struct $struct foo; }" >> try.c;
10300 set try;
10301 if eval $compile; then
10302         val="$define";
10303 else
10304         val="$undef";
10305 fi;
10306 set $varname;
10307 eval $setvar;
10308 $rm -f try.c try.o'
10309
10310 socketlib=''
10311 sockethdr=''
10312 : see whether socket exists
10313 echo " "
10314 $echo $n "Hmm... $c" >&4
10315 if set socket val -f d_socket; eval $csym; $val; then
10316         echo "Looks like you have Berkeley networking support." >&4
10317         d_socket="$define"
10318         if set setsockopt val -f; eval $csym; $val; then
10319                 d_oldsock="$undef"
10320         else
10321                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10322                 d_oldsock="$define"
10323         fi
10324 else
10325         if $contains socklib libc.list >/dev/null 2>&1; then
10326                 echo "Looks like you have Berkeley networking support." >&4
10327                 d_socket="$define"
10328                 : we will have to assume that it supports the 4.2 BSD interface
10329                 d_oldsock="$undef"
10330         else
10331                 echo "You don't have Berkeley networking in libc$_a..." >&4
10332                 if test "X$d_socket" = "X$define"; then
10333                    echo "...but you seem to believe that you have sockets." >&4
10334                 else
10335                         for net in net socket
10336                         do
10337                                 if test -f /usr/lib/lib$net$_a; then
10338                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10339                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10340                                         if $contains socket libc.list >/dev/null 2>&1; then
10341                                                 d_socket="$define"
10342                                                 socketlib="-l$net"
10343                                                 case "$net" in
10344                                                 net)
10345                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10346                                                         sockethdr="-I/usr/netinclude"
10347                                                         ;;
10348                                                 esac
10349                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10350                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10351                                                         d_oldsock="$undef"
10352                                                 else
10353                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10354                                                         d_oldsock="$define"
10355                                                 fi
10356                                                 break
10357                                         fi
10358                                 fi
10359                         done
10360                         if test "X$d_socket" != "X$define"; then
10361                            echo "or anywhere else I see." >&4
10362                            d_socket="$undef"
10363                            d_oldsock="$undef"
10364                         fi
10365                 fi
10366         fi
10367 fi
10368
10369 : see if socketpair exists
10370 set socketpair d_sockpair
10371 eval $inlibc
10372
10373
10374 echo " "
10375 echo "Checking the availability of certain socket constants..." >&4
10376 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10377         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10378         $cat >try.c <<EOF
10379 #include <sys/types.h>
10380 #include <sys/socket.h>
10381 int main() {
10382     int i = $ENUM;
10383 }
10384 EOF
10385         val="$undef"
10386         set try; if eval $compile; then
10387                 val="$define"
10388         fi
10389         set d_${enum}; eval $setvar
10390         $rm -f try.c try
10391 done
10392
10393 : see if this is a sys/uio.h system
10394 set sys/uio.h i_sysuio
10395 eval $inhdr
10396
10397
10398 echo " "
10399 echo "Checking to see if your system supports struct cmsghdr..." >&4
10400 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10401 eval $hasstruct
10402 case "$d_cmsghdr_s" in
10403 "$define")      echo "Yes, it does."   ;;
10404 *)              echo "No, it doesn't." ;;
10405 esac
10406
10407
10408 : check for const keyword
10409 echo " "
10410 echo 'Checking to see if your C compiler knows about "const"...' >&4
10411 $cat >const.c <<'EOCP'
10412 typedef struct spug { int drokk; } spug;
10413 int main()
10414 {
10415         const char *foo;
10416         const spug y;
10417 }
10418 EOCP
10419 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10420         val="$define"
10421         echo "Yup, it does."
10422 else
10423         val="$undef"
10424         echo "Nope, it doesn't."
10425 fi
10426 set d_const
10427 eval $setvar
10428
10429 : see if copysignl exists
10430 set copysignl d_copysignl
10431 eval $inlibc
10432
10433 : see if crypt exists
10434 echo " "
10435 set crypt d_crypt
10436 eval $inlibc
10437 case "$d_crypt" in
10438 $define) cryptlib='' ;;
10439 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10440                 echo 'crypt() found.' >&4
10441                 val="$define"
10442                 cryptlib=''
10443         else
10444                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10445                 if $test -z "$cryptlib"; then
10446                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10447                 else
10448                         cryptlib=-lcrypt
10449                 fi
10450                 if $test -z "$cryptlib"; then
10451                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10452                 else
10453                         cryptlib=-lcrypt
10454                 fi
10455                 if $test -z "$cryptlib"; then
10456                         cryptlib=`./loc libcrypt$_a "" $libpth`
10457                 else
10458                         cryptlib=-lcrypt
10459                 fi
10460                 if $test -z "$cryptlib"; then
10461                         echo 'crypt() NOT found.' >&4
10462                         val="$undef"
10463                 else
10464                         val="$define"
10465                 fi
10466         fi
10467         set d_crypt
10468         eval $setvar
10469         ;;
10470 esac
10471
10472 : see if this is a crypt.h system
10473 set crypt.h i_crypt
10474 eval $inhdr
10475
10476 : see if crypt_r exists
10477 set crypt_r d_crypt_r
10478 eval $inlibc
10479 case "$d_crypt_r" in
10480 "$define")
10481         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10482         case "$d_crypt_r_proto:$usethreads" in
10483         ":define")      d_crypt_r_proto=define
10484                 set d_crypt_r_proto crypt_r $hdrs
10485                 eval $hasproto ;;
10486         *)      ;;
10487         esac
10488         case "$d_crypt_r_proto" in
10489         define)
10490         case "$crypt_r_proto" in
10491         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10492         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10493         esac
10494         case "$crypt_r_proto" in
10495         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10496         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10497         esac
10498         case "$crypt_r_proto" in
10499         ''|0)   d_crypt_r=undef
10500                 crypt_r_proto=0
10501                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10502         * )     case "$crypt_r_proto" in
10503                 REENTRANT_PROTO*) ;;
10504                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10505                 esac
10506                 echo "Prototype: $try" ;;
10507         esac
10508         ;;
10509         *)      case "$usethreads" in
10510                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10511                 esac
10512                 d_crypt_r=undef
10513                 crypt_r_proto=0
10514                 ;;
10515         esac
10516         ;;
10517 *)      crypt_r_proto=0
10518         ;;
10519 esac
10520
10521 : get csh whereabouts
10522 case "$csh" in
10523 'csh') val="$undef" ;;
10524 *) val="$define" ;;
10525 esac
10526 set d_csh
10527 eval $setvar
10528 : Respect a hint or command line value for full_csh.
10529 case "$full_csh" in
10530 '') full_csh=$csh ;;
10531 esac
10532
10533 : see if ctermid_r exists
10534 set ctermid_r d_ctermid_r
10535 eval $inlibc
10536 case "$d_ctermid_r" in
10537 "$define")
10538         hdrs="$i_systypes sys/types.h define stdio.h "
10539         case "$d_ctermid_r_proto:$usethreads" in
10540         ":define")      d_ctermid_r_proto=define
10541                 set d_ctermid_r_proto ctermid_r $hdrs
10542                 eval $hasproto ;;
10543         *)      ;;
10544         esac
10545         case "$d_ctermid_r_proto" in
10546         define)
10547         case "$ctermid_r_proto" in
10548         ''|0) try='char* ctermid_r(char*);'
10549         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10550         esac
10551         case "$ctermid_r_proto" in
10552         ''|0)   d_ctermid_r=undef
10553                 ctermid_r_proto=0
10554                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10555         * )     case "$ctermid_r_proto" in
10556                 REENTRANT_PROTO*) ;;
10557                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10558                 esac
10559                 echo "Prototype: $try" ;;
10560         esac
10561         ;;
10562         *)      case "$usethreads" in
10563                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10564                 esac
10565                 d_ctermid_r=undef
10566                 ctermid_r_proto=0
10567                 ;;
10568         esac
10569         ;;
10570 *)      ctermid_r_proto=0
10571         ;;
10572 esac
10573
10574 : see if ctime_r exists
10575 set ctime_r d_ctime_r
10576 eval $inlibc
10577 case "$d_ctime_r" in
10578 "$define")
10579         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10580         case "$d_ctime_r_proto:$usethreads" in
10581         ":define")      d_ctime_r_proto=define
10582                 set d_ctime_r_proto ctime_r $hdrs
10583                 eval $hasproto ;;
10584         *)      ;;
10585         esac
10586         case "$d_ctime_r_proto" in
10587         define)
10588         case "$ctime_r_proto" in
10589         ''|0) try='char* ctime_r(const time_t*, char*);'
10590         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10591         esac
10592         case "$ctime_r_proto" in
10593         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10594         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10595         esac
10596         case "$ctime_r_proto" in
10597         ''|0) try='int ctime_r(const time_t*, char*);'
10598         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10599         esac
10600         case "$ctime_r_proto" in
10601         ''|0) try='int ctime_r(const time_t*, char*, int);'
10602         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10603         esac
10604         case "$ctime_r_proto" in
10605         ''|0)   d_ctime_r=undef
10606                 ctime_r_proto=0
10607                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10608         * )     case "$ctime_r_proto" in
10609                 REENTRANT_PROTO*) ;;
10610                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10611                 esac
10612                 echo "Prototype: $try" ;;
10613         esac
10614         ;;
10615         *)      case "$usethreads" in
10616                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10617                 esac
10618                 d_ctime_r=undef
10619                 ctime_r_proto=0
10620                 ;;
10621         esac
10622         ;;
10623 *)      ctime_r_proto=0
10624         ;;
10625 esac
10626
10627 : see if cuserid exists
10628 set cuserid d_cuserid
10629 eval $inlibc
10630
10631 : see if this is a limits.h system
10632 set limits.h i_limits
10633 eval $inhdr
10634
10635 : see if this is a float.h system
10636 set float.h i_float
10637 eval $inhdr
10638
10639 : See if number of significant digits in a double precision number is known
10640 echo " "
10641 $cat >dbl_dig.c <<EOM
10642 #$i_limits I_LIMITS
10643 #$i_float I_FLOAT
10644 #ifdef I_LIMITS
10645 #include <limits.h>
10646 #endif
10647 #ifdef I_FLOAT
10648 #include <float.h>
10649 #endif
10650 #ifdef DBL_DIG
10651 printf("Contains DBL_DIG");
10652 #endif
10653 EOM
10654 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10655 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10656         echo "DBL_DIG found." >&4
10657         val="$define"
10658 else
10659         echo "DBL_DIG NOT found." >&4
10660         val="$undef"
10661 fi
10662 $rm -f dbl_dig.?
10663 set d_dbl_dig
10664 eval $setvar
10665
10666 : see if dbm.h is available
10667 : see if dbmclose exists
10668 set dbmclose d_dbmclose
10669 eval $inlibc
10670
10671 case "$d_dbmclose" in
10672 $define)
10673         set dbm.h i_dbm
10674         eval $inhdr
10675         case "$i_dbm" in
10676         $define)
10677                 val="$undef"
10678                 set i_rpcsvcdbm
10679                 eval $setvar
10680                 ;;
10681         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10682                 eval $inhdr
10683                 ;;
10684         esac
10685         ;;
10686 *)      echo "We won't be including <dbm.h>"
10687         val="$undef"
10688         set i_dbm
10689         eval $setvar
10690         val="$undef"
10691         set i_rpcsvcdbm
10692         eval $setvar
10693         ;;
10694 esac
10695
10696 : see if prototype for dbminit is available
10697 echo " "
10698 set d_dbminitproto dbminit $i_dbm dbm.h
10699 eval $hasproto
10700
10701 : see if difftime exists
10702 set difftime d_difftime
10703 eval $inlibc
10704
10705 : see if this is a dirent system
10706 echo " "
10707 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10708         val="$define"
10709         echo "<dirent.h> found." >&4
10710 else
10711         val="$undef"
10712         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10713                 echo "<sys/dir.h> found." >&4
10714                 echo " "
10715         else
10716                 xinc=`./findhdr sys/ndir.h`
10717         fi
10718         echo "<dirent.h> NOT found." >&4
10719 fi
10720 set i_dirent
10721 eval $setvar
10722
10723 : Look for type of directory structure.
10724 echo " "
10725 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10726
10727 case "$direntrytype" in
10728 ''|' ')
10729         case "$i_dirent" in
10730         $define) guess1='struct dirent' ;;
10731         *) guess1='struct direct'  ;;
10732         esac
10733         ;;
10734 *)      guess1="$direntrytype"
10735         ;;
10736 esac
10737
10738 case "$guess1" in
10739 'struct dirent') guess2='struct direct' ;;
10740 *) guess2='struct dirent' ;;
10741 esac
10742                 
10743 if $contains "$guess1" try.c >/dev/null 2>&1; then
10744         direntrytype="$guess1"
10745         echo "Your directory entries are $direntrytype." >&4
10746 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10747         direntrytype="$guess2"
10748         echo "Your directory entries seem to be $direntrytype." >&4
10749 else
10750         echo "I don't recognize your system's directory entries." >&4
10751         rp="What type is used for directory entries on this system?"
10752         dflt="$guess1"
10753         . ./myread
10754         direntrytype="$ans"
10755 fi
10756 $rm -f try.c
10757
10758
10759 : see if the directory entry stores field length
10760 echo " "
10761 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10762 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10763         echo "Good, your directory entry keeps length information in d_namlen." >&4
10764         val="$define"
10765 else
10766         echo "Your directory entry does not know about the d_namlen field." >&4
10767         val="$undef"
10768 fi
10769 set d_dirnamlen
10770 eval $setvar
10771 $rm -f try.c
10772
10773 : see if this is an sysdir system
10774 set sys/dir.h i_sysdir
10775 eval $inhdr
10776
10777 : see if this is an sysndir system
10778 set sys/ndir.h i_sysndir
10779 eval $inhdr
10780
10781 : Look for dirfd
10782 echo " "
10783 $cat >dirfd.c <<EOM
10784 #include <stdio.h>
10785 #$i_stdlib I_STDLIB
10786 #ifdef I_STDLIB
10787 #include <stdlib.h>
10788 #endif
10789 #$i_dirent I_DIRENT             /**/
10790 #$i_sysdir I_SYS_DIR            /**/
10791 #$i_sysndir I_SYS_NDIR          /**/
10792 #$i_systypes I_SYS_TYPES        /**/
10793 #if defined(I_SYS_TYPES)
10794 #include <sys/types.h>
10795 #endif
10796 #if defined(I_DIRENT)
10797 #include <dirent.h>
10798 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10799 #include <sys/dir.h>
10800 #endif
10801 #else
10802 #ifdef I_SYS_NDIR
10803 #include <sys/ndir.h>
10804 #else
10805 #ifdef I_SYS_DIR
10806 #ifdef hp9000s500
10807 #include <ndir.h>       /* may be wrong in the future */
10808 #else
10809 #include <sys/dir.h>
10810 #endif
10811 #endif
10812 #endif
10813 #endif 
10814 int main() {
10815         DIR *dirp = opendir(".");
10816         if (dirfd(dirp) >= 0)
10817                 exit(0);
10818         else
10819                 exit(1);
10820 }
10821 EOM
10822 set dirfd
10823 if eval $compile; then
10824         val="$define"
10825 fi
10826 case "$val" in
10827 $define)        echo "dirfd() found." >&4       ;;
10828 *)              echo "dirfd() NOT found." >&4   ;;
10829 esac
10830 set d_dirfd
10831 eval $setvar
10832 $rm -f dirfd*
10833
10834 : see if dlerror exists
10835 xxx_runnm="$runnm"
10836 runnm=false
10837 set dlerror d_dlerror
10838 eval $inlibc
10839 runnm="$xxx_runnm"
10840
10841 : see if dlfcn is available
10842 set dlfcn.h i_dlfcn
10843 eval $inhdr
10844
10845 case "$usedl" in
10846 $define|y|true)
10847         $cat << EOM
10848
10849 On a few systems, the dynamically loaded modules that perl generates and uses
10850 will need a different extension than shared libs. The default will probably
10851 be appropriate.
10852
10853 EOM
10854         case "$dlext" in
10855         '')     dflt="$so" ;;
10856         *)      dflt="$dlext" ;;
10857         esac
10858         rp='What is the extension of dynamically loaded modules'
10859         . ./myread
10860         dlext="$ans"
10861         ;;
10862 *)
10863         dlext="none"
10864         ;;
10865 esac
10866
10867 : Check if dlsym need a leading underscore
10868 echo " "
10869 val="$undef"
10870
10871 case "$dlsrc" in
10872 dl_dlopen.xs)
10873         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10874         $cat >dyna.c <<'EOM'
10875 fred () { }
10876 EOM
10877
10878 $cat >fred.c<<EOM
10879
10880 #include <stdio.h>
10881 #$i_stdlib I_STDLIB
10882 #ifdef I_STDLIB
10883 #include <stdlib.h>
10884 #endif
10885 #$i_dlfcn I_DLFCN
10886 #ifdef I_DLFCN
10887 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10888 #else
10889 #include <sys/types.h>
10890 #include <nlist.h>
10891 #include <link.h>
10892 #endif
10893
10894 extern int fred() ;
10895
10896 int main()
10897 {
10898     void * handle ;
10899     void * symbol ;
10900 #ifndef RTLD_LAZY
10901     int mode = 1 ;
10902 #else
10903     int mode = RTLD_LAZY ;
10904 #endif
10905     handle = dlopen("./dyna.$dlext", mode) ;
10906     if (handle == NULL) {
10907         printf ("1\n") ;
10908         fflush (stdout) ;
10909         exit(0);
10910     }
10911     symbol = dlsym(handle, "fred") ;
10912     if (symbol == NULL) {
10913         /* try putting a leading underscore */
10914         symbol = dlsym(handle, "_fred") ;
10915         if (symbol == NULL) {
10916             printf ("2\n") ;
10917             fflush (stdout) ;
10918             exit(0);
10919         }
10920         printf ("3\n") ;
10921     }
10922     else
10923         printf ("4\n") ;
10924     fflush (stdout) ;
10925     exit(0);
10926 }
10927 EOM
10928         : Call the object file tmp-dyna.o in case dlext=o.
10929         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10930                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10931                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10932                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10933                 xxx=`$run ./fred`
10934                 case $xxx in
10935                 1)      echo "Test program failed using dlopen." >&4
10936                         echo "Perhaps you should not use dynamic loading." >&4;;
10937                 2)      echo "Test program failed using dlsym." >&4
10938                         echo "Perhaps you should not use dynamic loading." >&4;;
10939                 3)      echo "dlsym needs a leading underscore" >&4
10940                         val="$define" ;;
10941                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10942                 esac
10943         else
10944                 echo "I can't compile and run the test program." >&4
10945                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10946         fi
10947         ;;
10948 esac
10949                 
10950 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10951
10952 set d_dlsymun
10953 eval $setvar
10954
10955 : see if drand48_r exists
10956 set drand48_r d_drand48_r
10957 eval $inlibc
10958 case "$d_drand48_r" in
10959 "$define")
10960         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10961         case "$d_drand48_r_proto:$usethreads" in
10962         ":define")      d_drand48_r_proto=define
10963                 set d_drand48_r_proto drand48_r $hdrs
10964                 eval $hasproto ;;
10965         *)      ;;
10966         esac
10967         case "$d_drand48_r_proto" in
10968         define)
10969         case "$drand48_r_proto" in
10970         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10971         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10972         esac
10973         case "$drand48_r_proto" in
10974         ''|0)   d_drand48_r=undef
10975                 drand48_r_proto=0
10976                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10977         * )     case "$drand48_r_proto" in
10978                 REENTRANT_PROTO*) ;;
10979                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10980                 esac
10981                 echo "Prototype: $try" ;;
10982         esac
10983         ;;
10984         *)      case "$usethreads" in
10985                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10986                 esac
10987                 d_drand48_r=undef
10988                 drand48_r_proto=0
10989                 ;;
10990         esac
10991         ;;
10992 *)      drand48_r_proto=0
10993         ;;
10994 esac
10995
10996 : see if prototype for drand48 is available
10997 echo " "
10998 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10999 eval $hasproto
11000
11001 : see if dup2 exists
11002 set dup2 d_dup2
11003 eval $inlibc
11004
11005 : see if eaccess exists
11006 set eaccess d_eaccess
11007 eval $inlibc
11008
11009 : see if endgrent exists
11010 set endgrent d_endgrent
11011 eval $inlibc
11012
11013 : see if this is an grp system
11014 set grp.h i_grp
11015 eval $inhdr
11016
11017 case "$i_grp" in
11018 $define)
11019         xxx=`./findhdr grp.h`
11020         $cppstdin $cppflags $cppminus < $xxx >$$.h
11021
11022         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11023                 val="$define"
11024         else
11025                 val="$undef"
11026         fi
11027         set d_grpasswd
11028         eval $setvar
11029
11030         $rm -f $$.h
11031         ;;
11032 *)
11033         val="$undef";
11034         set d_grpasswd; eval $setvar
11035         ;;
11036 esac
11037
11038 : see if endgrent_r exists
11039 set endgrent_r d_endgrent_r
11040 eval $inlibc
11041 case "$d_endgrent_r" in
11042 "$define")
11043         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11044         case "$d_endgrent_r_proto:$usethreads" in
11045         ":define")      d_endgrent_r_proto=define
11046                 set d_endgrent_r_proto endgrent_r $hdrs
11047                 eval $hasproto ;;
11048         *)      ;;
11049         esac
11050         case "$d_endgrent_r_proto" in
11051         define)
11052         case "$endgrent_r_proto" in
11053         ''|0) try='int endgrent_r(FILE**);'
11054         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11055         esac
11056         case "$endgrent_r_proto" in
11057         ''|0) try='void endgrent_r(FILE**);'
11058         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11059         esac
11060         case "$endgrent_r_proto" in
11061         ''|0)   d_endgrent_r=undef
11062                 endgrent_r_proto=0
11063                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11064         * )     case "$endgrent_r_proto" in
11065                 REENTRANT_PROTO*) ;;
11066                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11067                 esac
11068                 echo "Prototype: $try" ;;
11069         esac
11070         ;;
11071         *)      case "$usethreads" in
11072                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11073                 esac
11074                 d_endgrent_r=undef
11075                 endgrent_r_proto=0
11076                 ;;
11077         esac
11078         ;;
11079 *)      endgrent_r_proto=0
11080         ;;
11081 esac
11082
11083 : see if endhostent exists
11084 set endhostent d_endhent
11085 eval $inlibc
11086
11087 : see if this is a netdb.h system
11088 set netdb.h i_netdb
11089 eval $inhdr
11090
11091 : see if endhostent_r exists
11092 set endhostent_r d_endhostent_r
11093 eval $inlibc
11094 case "$d_endhostent_r" in
11095 "$define")
11096         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11097         case "$d_endhostent_r_proto:$usethreads" in
11098         ":define")      d_endhostent_r_proto=define
11099                 set d_endhostent_r_proto endhostent_r $hdrs
11100                 eval $hasproto ;;
11101         *)      ;;
11102         esac
11103         case "$d_endhostent_r_proto" in
11104         define)
11105         case "$endhostent_r_proto" in
11106         ''|0) try='int endhostent_r(struct hostent_data*);'
11107         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11108         esac
11109         case "$endhostent_r_proto" in
11110         ''|0) try='void endhostent_r(struct hostent_data*);'
11111         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11112         esac
11113         case "$endhostent_r_proto" in
11114         ''|0)   d_endhostent_r=undef
11115                 endhostent_r_proto=0
11116                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11117         * )     case "$endhostent_r_proto" in
11118                 REENTRANT_PROTO*) ;;
11119                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11120                 esac
11121                 echo "Prototype: $try" ;;
11122         esac
11123         ;;
11124         *)      case "$usethreads" in
11125                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11126                 esac
11127                 d_endhostent_r=undef
11128                 endhostent_r_proto=0
11129                 ;;
11130         esac
11131         ;;
11132 *)      endhostent_r_proto=0
11133         ;;
11134 esac
11135
11136 : see if endnetent exists
11137 set endnetent d_endnent
11138 eval $inlibc
11139
11140 : see if endnetent_r exists
11141 set endnetent_r d_endnetent_r
11142 eval $inlibc
11143 case "$d_endnetent_r" in
11144 "$define")
11145         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11146         case "$d_endnetent_r_proto:$usethreads" in
11147         ":define")      d_endnetent_r_proto=define
11148                 set d_endnetent_r_proto endnetent_r $hdrs
11149                 eval $hasproto ;;
11150         *)      ;;
11151         esac
11152         case "$d_endnetent_r_proto" in
11153         define)
11154         case "$endnetent_r_proto" in
11155         ''|0) try='int endnetent_r(struct netent_data*);'
11156         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11157         esac
11158         case "$endnetent_r_proto" in
11159         ''|0) try='void endnetent_r(struct netent_data*);'
11160         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11161         esac
11162         case "$endnetent_r_proto" in
11163         ''|0)   d_endnetent_r=undef
11164                 endnetent_r_proto=0
11165                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11166         * )     case "$endnetent_r_proto" in
11167                 REENTRANT_PROTO*) ;;
11168                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11169                 esac
11170                 echo "Prototype: $try" ;;
11171         esac
11172         ;;
11173         *)      case "$usethreads" in
11174                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11175                 esac
11176                 d_endnetent_r=undef
11177                 endnetent_r_proto=0
11178                 ;;
11179         esac
11180         ;;
11181 *)      endnetent_r_proto=0
11182         ;;
11183 esac
11184
11185 : see if endprotoent exists
11186 set endprotoent d_endpent
11187 eval $inlibc
11188
11189 : see if endprotoent_r exists
11190 set endprotoent_r d_endprotoent_r
11191 eval $inlibc
11192 case "$d_endprotoent_r" in
11193 "$define")
11194         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11195         case "$d_endprotoent_r_proto:$usethreads" in
11196         ":define")      d_endprotoent_r_proto=define
11197                 set d_endprotoent_r_proto endprotoent_r $hdrs
11198                 eval $hasproto ;;
11199         *)      ;;
11200         esac
11201         case "$d_endprotoent_r_proto" in
11202         define)
11203         case "$endprotoent_r_proto" in
11204         ''|0) try='int endprotoent_r(struct protoent_data*);'
11205         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11206         esac
11207         case "$endprotoent_r_proto" in
11208         ''|0) try='void endprotoent_r(struct protoent_data*);'
11209         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11210         esac
11211         case "$endprotoent_r_proto" in
11212         ''|0)   d_endprotoent_r=undef
11213                 endprotoent_r_proto=0
11214                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11215         * )     case "$endprotoent_r_proto" in
11216                 REENTRANT_PROTO*) ;;
11217                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11218                 esac
11219                 echo "Prototype: $try" ;;
11220         esac
11221         ;;
11222         *)      case "$usethreads" in
11223                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11224                 esac
11225                 d_endprotoent_r=undef
11226                 endprotoent_r_proto=0
11227                 ;;
11228         esac
11229         ;;
11230 *)      endprotoent_r_proto=0
11231         ;;
11232 esac
11233
11234 : see if endpwent exists
11235 set endpwent d_endpwent
11236 eval $inlibc
11237
11238 : see if this is a pwd.h system
11239 set pwd.h i_pwd
11240 eval $inhdr
11241
11242 case "$i_pwd" in
11243 $define)
11244         xxx=`./findhdr pwd.h`
11245         $cppstdin $cppflags $cppminus < $xxx >$$.h
11246
11247         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11248                 val="$define"
11249         else
11250                 val="$undef"
11251         fi
11252         set d_pwquota
11253         eval $setvar
11254
11255         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11256                 val="$define"
11257         else
11258                 val="$undef"
11259         fi
11260         set d_pwage
11261         eval $setvar
11262
11263         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11264                 val="$define"
11265         else
11266                 val="$undef"
11267         fi
11268         set d_pwchange
11269         eval $setvar
11270
11271         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11272                 val="$define"
11273         else
11274                 val="$undef"
11275         fi
11276         set d_pwclass
11277         eval $setvar
11278
11279         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11280                 val="$define"
11281         else
11282                 val="$undef"
11283         fi
11284         set d_pwexpire
11285         eval $setvar
11286
11287         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11288                 val="$define"
11289         else
11290                 val="$undef"
11291         fi
11292         set d_pwcomment
11293         eval $setvar
11294
11295         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11296                 val="$define"
11297         else
11298                 val="$undef"
11299         fi
11300         set d_pwgecos
11301         eval $setvar
11302
11303         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11304                 val="$define"
11305         else
11306                 val="$undef"
11307         fi
11308         set d_pwpasswd
11309         eval $setvar
11310
11311         $rm -f $$.h
11312         ;;
11313 *)
11314         val="$undef"; 
11315         set d_pwquota; eval $setvar
11316         set d_pwage; eval $setvar
11317         set d_pwchange; eval $setvar
11318         set d_pwclass; eval $setvar
11319         set d_pwexpire; eval $setvar
11320         set d_pwcomment; eval $setvar
11321         set d_pwgecos; eval $setvar
11322         set d_pwpasswd; eval $setvar
11323         ;;
11324 esac
11325
11326 : see if endpwent_r exists
11327 set endpwent_r d_endpwent_r
11328 eval $inlibc
11329 case "$d_endpwent_r" in
11330 "$define")
11331         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11332         case "$d_endpwent_r_proto:$usethreads" in
11333         ":define")      d_endpwent_r_proto=define
11334                 set d_endpwent_r_proto endpwent_r $hdrs
11335                 eval $hasproto ;;
11336         *)      ;;
11337         esac
11338         case "$d_endpwent_r_proto" in
11339         define)
11340         case "$endpwent_r_proto" in
11341         ''|0) try='int endpwent_r(FILE**);'
11342         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11343         esac
11344         case "$endpwent_r_proto" in
11345         ''|0) try='void endpwent_r(FILE**);'
11346         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11347         esac
11348         case "$endpwent_r_proto" in
11349         ''|0)   d_endpwent_r=undef
11350                 endpwent_r_proto=0
11351                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11352         * )     case "$endpwent_r_proto" in
11353                 REENTRANT_PROTO*) ;;
11354                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11355                 esac
11356                 echo "Prototype: $try" ;;
11357         esac
11358         ;;
11359         *)      case "$usethreads" in
11360                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11361                 esac
11362                 d_endpwent_r=undef
11363                 endpwent_r_proto=0
11364                 ;;
11365         esac
11366         ;;
11367 *)      endpwent_r_proto=0
11368         ;;
11369 esac
11370
11371 : see if endservent exists
11372 set endservent d_endsent
11373 eval $inlibc
11374
11375 : see if endservent_r exists
11376 set endservent_r d_endservent_r
11377 eval $inlibc
11378 case "$d_endservent_r" in
11379 "$define")
11380         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11381         case "$d_endservent_r_proto:$usethreads" in
11382         ":define")      d_endservent_r_proto=define
11383                 set d_endservent_r_proto endservent_r $hdrs
11384                 eval $hasproto ;;
11385         *)      ;;
11386         esac
11387         case "$d_endservent_r_proto" in
11388         define)
11389         case "$endservent_r_proto" in
11390         ''|0) try='int endservent_r(struct servent_data*);'
11391         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11392         esac
11393         case "$endservent_r_proto" in
11394         ''|0) try='void endservent_r(struct servent_data*);'
11395         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11396         esac
11397         case "$endservent_r_proto" in
11398         ''|0)   d_endservent_r=undef
11399                 endservent_r_proto=0
11400                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11401         * )     case "$endservent_r_proto" in
11402                 REENTRANT_PROTO*) ;;
11403                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11404                 esac
11405                 echo "Prototype: $try" ;;
11406         esac
11407         ;;
11408         *)      case "$usethreads" in
11409                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11410                 esac
11411                 d_endservent_r=undef
11412                 endservent_r_proto=0
11413                 ;;
11414         esac
11415         ;;
11416 *)      endservent_r_proto=0
11417         ;;
11418 esac
11419
11420 : Locate the flags for 'open()'
11421 echo " "
11422 $cat >try.c <<EOCP
11423 #include <sys/types.h>
11424 #ifdef I_FCNTL
11425 #include <fcntl.h>
11426 #endif
11427 #ifdef I_SYS_FILE
11428 #include <sys/file.h>
11429 #endif
11430 #$i_stdlib I_STDLIB
11431 #ifdef I_STDLIB
11432 #include <stdlib.h>
11433 #endif
11434 int main() {
11435         if(O_RDONLY);
11436 #ifdef O_TRUNC
11437         exit(0);
11438 #else
11439         exit(1);
11440 #endif
11441 }
11442 EOCP
11443 : check sys/file.h first to get FREAD on Sun
11444 if $test `./findhdr sys/file.h` && \
11445                 set try -DI_SYS_FILE && eval $compile; then
11446         h_sysfile=true;
11447         echo "<sys/file.h> defines the O_* constants..." >&4
11448         if $run ./try; then
11449                 echo "and you have the 3 argument form of open()." >&4
11450                 val="$define"
11451         else
11452                 echo "but not the 3 argument form of open().  Oh, well." >&4
11453                 val="$undef"
11454         fi
11455 elif $test `./findhdr fcntl.h` && \
11456                 set try -DI_FCNTL && eval $compile; then
11457         h_fcntl=true;
11458         echo "<fcntl.h> defines the O_* constants..." >&4
11459         if $run ./try; then
11460                 echo "and you have the 3 argument form of open()." >&4
11461                 val="$define"
11462         else
11463                 echo "but not the 3 argument form of open().  Oh, well." >&4
11464                 val="$undef"
11465         fi
11466 else
11467         val="$undef"
11468         echo "I can't find the O_* constant definitions!  You got problems." >&4
11469 fi
11470 set d_open3
11471 eval $setvar
11472 $rm -f try try.*
11473
11474 : see which of string.h or strings.h is needed
11475 echo " "
11476 strings=`./findhdr string.h`
11477 if $test "$strings" && $test -r "$strings"; then
11478         echo "Using <string.h> instead of <strings.h>." >&4
11479         val="$define"
11480 else
11481         val="$undef"
11482         strings=`./findhdr strings.h`
11483         if $test "$strings" && $test -r "$strings"; then
11484                 echo "Using <strings.h> instead of <string.h>." >&4
11485         else
11486                 echo "No string header found -- You'll surely have problems." >&4
11487         fi
11488 fi
11489 set i_string
11490 eval $setvar
11491 case "$i_string" in
11492 "$undef") strings=`./findhdr strings.h`;;
11493 *)        strings=`./findhdr string.h`;;
11494 esac
11495
11496 : see if this is a sys/file.h system
11497 val=''
11498 set sys/file.h val
11499 eval $inhdr
11500
11501 : do we need to include sys/file.h ?
11502 case "$val" in
11503 "$define")
11504         echo " "
11505         if $h_sysfile; then
11506                 val="$define"
11507                 echo "We'll be including <sys/file.h>." >&4
11508         else
11509                 val="$undef"
11510                 echo "We won't be including <sys/file.h>." >&4
11511         fi
11512         ;;
11513 *)
11514         h_sysfile=false
11515         ;;
11516 esac
11517 set i_sysfile
11518 eval $setvar
11519
11520 : see if fcntl.h is there
11521 val=''
11522 set fcntl.h val
11523 eval $inhdr
11524
11525 : see if we can include fcntl.h
11526 case "$val" in
11527 "$define")
11528         echo " "
11529         if $h_fcntl; then
11530                 val="$define"
11531                 echo "We'll be including <fcntl.h>." >&4
11532         else
11533                 val="$undef"
11534                 if $h_sysfile; then
11535         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11536                 else
11537                         echo "We won't be including <fcntl.h>." >&4
11538                 fi
11539         fi
11540         ;;
11541 *)
11542         h_fcntl=false
11543         val="$undef"
11544         ;;
11545 esac
11546 set i_fcntl
11547 eval $setvar
11548
11549 : check for non-blocking I/O stuff
11550 case "$h_sysfile" in
11551 true) echo "#include <sys/file.h>" > head.c;;
11552 *)
11553        case "$h_fcntl" in
11554        true) echo "#include <fcntl.h>" > head.c;;
11555        *) echo "#include <sys/fcntl.h>" > head.c;;
11556        esac
11557        ;;
11558 esac
11559 echo " "
11560 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11561 case "$o_nonblock" in
11562 '')
11563         $cat head.c > try.c
11564         $cat >>try.c <<EOCP
11565 #include <stdio.h>
11566 #$i_stdlib I_STDLIB
11567 #ifdef I_STDLIB
11568 #include <stdlib.h>
11569 #endif
11570 #$i_fcntl I_FCNTL
11571 #ifdef I_FCNTL
11572 #include <fcntl.h>
11573 #endif
11574 int main() {
11575 #ifdef O_NONBLOCK
11576         printf("O_NONBLOCK\n");
11577         exit(0);
11578 #endif
11579 #ifdef O_NDELAY
11580         printf("O_NDELAY\n");
11581         exit(0);
11582 #endif
11583 #ifdef FNDELAY
11584         printf("FNDELAY\n");
11585         exit(0);
11586 #endif
11587         exit(0);
11588 }
11589 EOCP
11590         set try
11591         if eval $compile_ok; then
11592                 o_nonblock=`$run ./try`
11593                 case "$o_nonblock" in
11594                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11595                 *) echo "Seems like we can use $o_nonblock.";;
11596                 esac
11597         else
11598                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11599         fi
11600         ;;
11601 *) echo "Using $hint value $o_nonblock.";;
11602 esac
11603 $rm -f try try.* .out core
11604
11605 echo " "
11606 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11607 case "$eagain" in
11608 '')
11609         $cat head.c > try.c
11610         $cat >>try.c <<EOCP
11611 #include <errno.h>
11612 #include <sys/types.h>
11613 #include <signal.h>
11614 #include <stdio.h> 
11615 #$i_stdlib I_STDLIB
11616 #ifdef I_STDLIB
11617 #include <stdlib.h>
11618 #endif
11619 #$i_fcntl I_FCNTL
11620 #ifdef I_FCNTL
11621 #include <fcntl.h>
11622 #endif
11623 #define MY_O_NONBLOCK $o_nonblock
11624 #ifndef errno  /* XXX need better Configure test */
11625 extern int errno;
11626 #endif
11627 #$i_unistd I_UNISTD
11628 #ifdef I_UNISTD
11629 #include <unistd.h>
11630 #endif
11631 #$i_string I_STRING
11632 #ifdef I_STRING
11633 #include <string.h>
11634 #else
11635 #include <strings.h>
11636 #endif
11637 $signal_t blech(x) int x; { exit(3); }
11638 EOCP
11639         $cat >> try.c <<'EOCP'
11640 int main()
11641 {
11642         int pd[2];
11643         int pu[2];
11644         char buf[1];
11645         char string[100];
11646
11647         pipe(pd);       /* Down: child -> parent */
11648         pipe(pu);       /* Up: parent -> child */
11649         if (0 != fork()) {
11650                 int ret;
11651                 close(pd[1]);   /* Parent reads from pd[0] */
11652                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11653 #ifdef F_SETFL
11654                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11655                         exit(1);
11656 #else
11657                 exit(4);
11658 #endif
11659                 signal(SIGALRM, blech);
11660                 alarm(5);
11661                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11662                         exit(2);
11663                 sprintf(string, "%d\n", ret);
11664                 write(2, string, strlen(string));
11665                 alarm(0);
11666 #ifdef EAGAIN
11667                 if (errno == EAGAIN) {
11668                         printf("EAGAIN\n");
11669                         goto ok;
11670                 }
11671 #endif
11672 #ifdef EWOULDBLOCK
11673                 if (errno == EWOULDBLOCK)
11674                         printf("EWOULDBLOCK\n");
11675 #endif
11676         ok:
11677                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11678                 sleep(2);                               /* Give it time to close our pipe */
11679                 alarm(5);
11680                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11681                 alarm(0);
11682                 sprintf(string, "%d\n", ret);
11683                 write(4, string, strlen(string));
11684                 exit(0);
11685         }
11686
11687         close(pd[0]);                   /* We write to pd[1] */
11688         close(pu[1]);                   /* We read from pu[0] */
11689         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11690         close(pd[1]);                   /* Pipe pd is now fully closed! */
11691         exit(0);                                /* Bye bye, thank you for playing! */
11692 }
11693 EOCP
11694         set try
11695         if eval $compile_ok; then
11696                 echo "$startsh" >mtry
11697                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11698                 chmod +x mtry
11699                 ./mtry >/dev/null 2>&1
11700                 case $? in
11701                 0) eagain=`$cat try.out`;;
11702                 1) echo "Could not perform non-blocking setting!";;
11703                 2) echo "I did a successful read() for something that was not there!";;
11704                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11705                 4) echo "Could not find F_SETFL!";;
11706                 *) echo "Something terribly wrong happened during testing.";;
11707                 esac
11708                 rd_nodata=`$cat try.ret`
11709                 echo "A read() system call with no data present returns $rd_nodata."
11710                 case "$rd_nodata" in
11711                 0|-1) ;;
11712                 *)
11713                         echo "(That's peculiar, fixing that to be -1.)"
11714                         rd_nodata=-1
11715                         ;;
11716                 esac
11717                 case "$eagain" in
11718                 '')
11719                         echo "Forcing errno EAGAIN on read() with no data available."
11720                         eagain=EAGAIN
11721                         ;;
11722                 *)
11723                         echo "Your read() sets errno to $eagain when no data is available."
11724                         ;;
11725                 esac
11726                 status=`$cat try.err`
11727                 case "$status" in
11728                 0) echo "And it correctly returns 0 to signal EOF.";;
11729                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11730                 *) echo "However, your read() returns '$status' on EOF??";;
11731                 esac
11732                 val="$define"
11733                 if test "$status" = "$rd_nodata"; then
11734                         echo "WARNING: you can't distinguish between EOF and no data!"
11735                         val="$undef"
11736                 fi
11737         else
11738                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11739                 eagain=EAGAIN
11740         fi
11741         set d_eofnblk
11742         eval $setvar
11743         ;;
11744 *)
11745         echo "Using $hint value $eagain."
11746         echo "Your read() returns $rd_nodata when no data is present."
11747         case "$d_eofnblk" in
11748         "$define") echo "And you can see EOF because read() returns 0.";;
11749         "$undef") echo "But you can't see EOF status from read() returned value.";;
11750         *)
11751                 echo "(Assuming you can't see EOF status from read anyway.)"
11752                 d_eofnblk=$undef
11753                 ;;
11754         esac
11755         ;;
11756 esac
11757 $rm -f try try.* .out core head.c mtry
11758
11759 : see if _ptr and _cnt from stdio act std
11760 echo " "
11761
11762 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11763         echo "(Looks like you have stdio.h from BSD.)"
11764         case "$stdio_ptr" in
11765         '') stdio_ptr='((fp)->_p)'
11766                 ptr_lval=$define
11767                 ;;
11768         *)      ptr_lval=$d_stdio_ptr_lval;;
11769         esac
11770         case "$stdio_cnt" in
11771         '') stdio_cnt='((fp)->_r)'
11772                 cnt_lval=$define
11773                 ;;
11774         *)      cnt_lval=$d_stdio_cnt_lval;;
11775         esac
11776         case "$stdio_base" in
11777         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11778         esac
11779         case "$stdio_bufsiz" in
11780         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11781         esac
11782 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11783         echo "(Looks like you have stdio.h from Linux.)"
11784         case "$stdio_ptr" in
11785         '') stdio_ptr='((fp)->_IO_read_ptr)'
11786                 ptr_lval=$define
11787                 ;;
11788         *)      ptr_lval=$d_stdio_ptr_lval;;
11789         esac
11790         case "$stdio_cnt" in
11791         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11792                 cnt_lval=$undef
11793                 ;;
11794         *)      cnt_lval=$d_stdio_cnt_lval;;
11795         esac
11796         case "$stdio_base" in
11797         '') stdio_base='((fp)->_IO_read_base)';;
11798         esac
11799         case "$stdio_bufsiz" in
11800         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11801         esac
11802 else
11803         case "$stdio_ptr" in
11804         '') stdio_ptr='((fp)->_ptr)'
11805                 ptr_lval=$define
11806                 ;;
11807         *)      ptr_lval=$d_stdio_ptr_lval;;
11808         esac
11809         case "$stdio_cnt" in
11810         '') stdio_cnt='((fp)->_cnt)'
11811                 cnt_lval=$define
11812                 ;;
11813         *)      cnt_lval=$d_stdio_cnt_lval;;
11814         esac
11815         case "$stdio_base" in
11816         '') stdio_base='((fp)->_base)';;
11817         esac
11818         case "$stdio_bufsiz" in
11819         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11820         esac
11821 fi
11822
11823 : test whether _ptr and _cnt really work
11824 echo "Checking how std your stdio is..." >&4
11825 $cat >try.c <<EOP
11826 #include <stdio.h>
11827 #$i_stdlib I_STDLIB
11828 #ifdef I_STDLIB
11829 #include <stdlib.h>
11830 #endif
11831 #define FILE_ptr(fp)    $stdio_ptr
11832 #define FILE_cnt(fp)    $stdio_cnt
11833 int main() {
11834         FILE *fp = fopen("try.c", "r");
11835         char c = getc(fp);
11836         if (
11837                 18 <= FILE_cnt(fp) &&
11838                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11839         )
11840                 exit(0);
11841         exit(1);
11842 }
11843 EOP
11844 val="$undef"
11845 set try
11846 if eval $compile && $to try.c; then
11847         if $run ./try; then
11848                 echo "Your stdio acts pretty std."
11849                 val="$define"
11850         else
11851                 echo "Your stdio isn't very std."
11852         fi
11853 else
11854         echo "Your stdio doesn't appear very std."
11855 fi
11856 $rm -f try.c try
11857
11858 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11859 # direct buffer manipulation no longer works.  The Configure tests
11860 # should be changed to correctly detect this, but until then,
11861 # the following check should at least let perl compile and run.
11862 # (This quick fix should be updated before 5.8.1.)
11863 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11864 # A. Dougherty, June 3, 2002.
11865 case "$d_gnulibc" in
11866 $define)
11867         case "$gnulibc_version" in
11868         2.[01]*)  ;;
11869         2.2) ;;
11870         2.2.[0-9]) ;;
11871         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11872                 val="$undef"
11873                 ;;
11874         esac
11875         ;;
11876 esac
11877 set d_stdstdio
11878 eval $setvar
11879
11880 : Can _ptr be used as an lvalue?
11881 case "$d_stdstdio$ptr_lval" in
11882 $define$define) val=$define ;;
11883 *) val=$undef ;;
11884 esac
11885 set d_stdio_ptr_lval
11886 eval $setvar
11887
11888 : Can _cnt be used as an lvalue?
11889 case "$d_stdstdio$cnt_lval" in
11890 $define$define) val=$define ;;
11891 *) val=$undef ;;
11892 esac
11893 set d_stdio_cnt_lval
11894 eval $setvar
11895
11896
11897 : test whether setting _ptr sets _cnt as a side effect
11898 d_stdio_ptr_lval_sets_cnt="$undef"
11899 d_stdio_ptr_lval_nochange_cnt="$undef"
11900 case "$d_stdio_ptr_lval$d_stdstdio" in
11901 $define$define)
11902         echo "Checking to see what happens if we set the stdio ptr..." >&4
11903 $cat >try.c <<EOP
11904 #include <stdio.h>
11905 /* Can we scream? */
11906 /* Eat dust sed :-) */
11907 /* In the buffer space, no one can hear you scream. */
11908 #$i_stdlib I_STDLIB
11909 #ifdef I_STDLIB
11910 #include <stdlib.h>
11911 #endif
11912 #define FILE_ptr(fp)    $stdio_ptr
11913 #define FILE_cnt(fp)    $stdio_cnt
11914 #include <sys/types.h>
11915 int main() {
11916         FILE *fp = fopen("try.c", "r");
11917         int c;
11918         char *ptr;
11919         size_t cnt;
11920         if (!fp) {
11921             puts("Fail even to read");
11922             exit(1);
11923         }
11924         c = getc(fp); /* Read away the first # */
11925         if (c == EOF) {
11926             puts("Fail even to read");
11927             exit(1);
11928         }
11929         if (!(
11930                 18 <= FILE_cnt(fp) &&
11931                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11932         )) {
11933                 puts("Fail even to read");
11934                 exit (1);
11935         }
11936         ptr = (char*) FILE_ptr(fp);
11937         cnt = (size_t)FILE_cnt(fp);
11938
11939         FILE_ptr(fp) += 42;
11940
11941         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11942                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11943                 exit (1);
11944         }
11945         if (FILE_cnt(fp) <= 20) {
11946                 printf ("Fail (<20 chars to test)");
11947                 exit (1);
11948         }
11949         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11950                 puts("Fail compare");
11951                 exit (1);
11952         }
11953         if (cnt == FILE_cnt(fp)) {
11954                 puts("Pass_unchanged");
11955                 exit (0);
11956         }       
11957         if (FILE_cnt(fp) == (cnt - 42)) {
11958                 puts("Pass_changed");
11959                 exit (0);
11960         }
11961         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11962         return 1;
11963
11964 }
11965 EOP
11966         set try
11967         if eval $compile && $to try.c; then
11968                 case `$run ./try` in
11969                 Pass_changed)
11970                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11971                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11972                 Pass_unchanged)
11973                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11974                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11975                 Fail*)
11976                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11977                 *)
11978                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11979         esac
11980         else
11981                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11982         fi
11983         $rm -f try.c try
11984         ;;
11985 esac
11986
11987 : see if _base is also standard
11988 val="$undef"
11989 case "$d_stdstdio" in
11990 $define)
11991         $cat >try.c <<EOP
11992 #include <stdio.h>
11993 #$i_stdlib I_STDLIB
11994 #ifdef I_STDLIB
11995 #include <stdlib.h>
11996 #endif
11997 #define FILE_base(fp)   $stdio_base
11998 #define FILE_bufsiz(fp) $stdio_bufsiz
11999 int main() {
12000         FILE *fp = fopen("try.c", "r");
12001         char c = getc(fp);
12002         if (
12003                 19 <= FILE_bufsiz(fp) &&
12004                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12005         )
12006                 exit(0);
12007         exit(1);
12008 }
12009 EOP
12010         set try
12011         if eval $compile && $to try.c; then
12012                 if $run ./try; then
12013                         echo "And its _base field acts std."
12014                         val="$define"
12015                 else
12016                         echo "But its _base field isn't std."
12017                 fi
12018         else
12019                 echo "However, it seems to be lacking the _base field."
12020         fi
12021         $rm -f try.c try
12022         ;;
12023 esac
12024 set d_stdiobase
12025 eval $setvar
12026
12027 : see if fast_stdio exists
12028 val="$undef"
12029 case "$d_stdstdio:$d_stdio_ptr_lval" in
12030 "$define:$define")
12031         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12032         *$define*)
12033                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12034                 val="$define"
12035                 ;;
12036         esac
12037         ;;
12038 esac
12039 set d_faststdio
12040 eval $setvar
12041
12042
12043
12044 : see if fchdir exists
12045 set fchdir d_fchdir
12046 eval $inlibc
12047
12048 : see if fchmod exists
12049 set fchmod d_fchmod
12050 eval $inlibc
12051
12052 : see if fchown exists
12053 set fchown d_fchown
12054 eval $inlibc
12055
12056 : see if this is an fcntl system
12057 set fcntl d_fcntl
12058 eval $inlibc
12059
12060 echo " "
12061 : See if fcntl-based locking works.
12062 $cat >try.c <<EOCP
12063 #$i_stdlib I_STDLIB
12064 #ifdef I_STDLIB
12065 #include <stdlib.h>
12066 #endif
12067 #include <unistd.h>
12068 #include <fcntl.h>
12069 #include <signal.h>
12070 $signal_t blech(x) int x; { exit(3); }
12071 int main() {
12072 #if defined(F_SETLK) && defined(F_SETLKW)
12073      struct flock flock;
12074      int retval, fd;
12075      fd = open("try.c", O_RDONLY);
12076      flock.l_type = F_RDLCK;
12077      flock.l_whence = SEEK_SET;
12078      flock.l_start = flock.l_len = 0;
12079      signal(SIGALRM, blech);
12080      alarm(10);
12081      retval = fcntl(fd, F_SETLK, &flock);
12082      close(fd);
12083      (retval < 0 ? exit(2) : exit(0));
12084 #else
12085      exit(2);
12086 #endif
12087 }
12088 EOCP
12089 echo "Checking if fcntl-based file locking works... "
12090 case "$d_fcntl" in
12091 "$define")
12092         set try
12093         if eval $compile_ok; then
12094                 if $run ./try; then
12095                         echo "Yes, it seems to work."
12096                         val="$define"
12097                 else
12098                         echo "Nope, it didn't work."
12099                         val="$undef"
12100                         case "$?" in
12101                         3) $cat >&4 <<EOM
12102 ***
12103 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12104 *** This is (almost) impossible.
12105 *** If your NFS lock daemons are not feeling well, something like
12106 *** this may happen, please investigate.  Cannot continue, aborting.
12107 ***
12108 EOM
12109                                 exit 1
12110                                 ;;
12111                         esac
12112                 fi
12113         else
12114                 echo "I'm unable to compile the test program, so I'll assume not."
12115                 val="$undef"
12116         fi
12117         ;;
12118 *) val="$undef";
12119         echo "Nope, since you don't even have fcntl()."
12120         ;;
12121 esac
12122 set d_fcntl_can_lock
12123 eval $setvar
12124 $rm -f try*
12125
12126
12127 : check for fd_set items
12128 $cat <<EOM
12129
12130 Checking to see how well your C compiler handles fd_set and friends ...
12131 EOM
12132 $cat >try.c <<EOCP
12133 #$i_stdlib I_STDLIB
12134 #ifdef I_STDLIB
12135 #include <stdlib.h>
12136 #endif
12137 #$i_systime I_SYS_TIME
12138 #$i_sysselct I_SYS_SELECT
12139 #$d_socket HAS_SOCKET
12140 #include <sys/types.h>
12141 #ifdef HAS_SOCKET
12142 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12143 #endif
12144 #ifdef I_SYS_TIME
12145 #include <sys/time.h>
12146 #endif
12147 #ifdef I_SYS_SELECT
12148 #include <sys/select.h>
12149 #endif
12150 int main() {
12151         fd_set fds;
12152
12153 #ifdef TRYBITS
12154         if(fds.fds_bits);
12155 #endif
12156
12157 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12158         exit(0);
12159 #else
12160         exit(1);
12161 #endif
12162 }
12163 EOCP
12164 set try -DTRYBITS
12165 if eval $compile; then
12166         d_fds_bits="$define"
12167         d_fd_set="$define"
12168         echo "Well, your system knows about the normal fd_set typedef..." >&4
12169         if $run ./try; then
12170                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12171                 d_fd_macros="$define"
12172         else
12173                 $cat >&4 <<'EOM'
12174 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12175 EOM
12176                 d_fd_macros="$undef"
12177         fi
12178 else
12179         $cat <<'EOM'
12180 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12181 EOM
12182         set try
12183         if eval $compile; then
12184                 d_fds_bits="$undef"
12185                 d_fd_set="$define"
12186                 echo "Well, your system has some sort of fd_set available..." >&4
12187                 if $run ./try; then
12188                         echo "and you have the normal fd_set macros." >&4
12189                         d_fd_macros="$define"
12190                 else
12191                         $cat <<'EOM'
12192 but not the normal fd_set macros!  Gross!  More work for me...
12193 EOM
12194                         d_fd_macros="$undef"
12195                 fi
12196         else
12197         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12198                 d_fd_set="$undef"
12199                 d_fds_bits="$undef"
12200                 d_fd_macros="$undef"
12201         fi
12202 fi
12203 $rm -f try try.*
12204
12205 : see if fgetpos exists
12206 set fgetpos d_fgetpos
12207 eval $inlibc
12208
12209 : see if finite exists
12210 set finite d_finite
12211 eval $inlibc
12212
12213 : see if finitel exists
12214 set finitel d_finitel
12215 eval $inlibc
12216
12217 : see if flock exists
12218 set flock d_flock
12219 eval $inlibc
12220
12221 : see if prototype for flock is available
12222 echo " "
12223 set d_flockproto flock $i_sysfile sys/file.h
12224 eval $hasproto
12225
12226 : see if fork exists
12227 set fork d_fork
12228 eval $inlibc
12229
12230 : see if fp_class exists
12231 set fp_class d_fp_class
12232 eval $inlibc
12233
12234 : see if pathconf exists
12235 set pathconf d_pathconf
12236 eval $inlibc
12237
12238 : see if fpathconf exists
12239 set fpathconf d_fpathconf
12240 eval $inlibc
12241
12242 : see if fpclass exists
12243 set fpclass d_fpclass
12244 eval $inlibc
12245
12246 : see if fpclassify exists
12247 set fpclassify d_fpclassify
12248 eval $inlibc
12249
12250 : see if fpclassl exists
12251 set fpclassl d_fpclassl
12252 eval $inlibc
12253
12254
12255 : check for fpos64_t
12256 echo " "
12257 echo "Checking to see if you have fpos64_t..." >&4
12258 $cat >try.c <<EOCP
12259 #include <stdio.h>
12260 int main() { fpos64_t x = 7; }
12261 EOCP
12262 set try
12263 if eval $compile; then
12264         val="$define"
12265         echo "You have fpos64_t."
12266 else
12267         val="$undef"
12268         echo "You do not have fpos64_t."
12269         case "$fpossize" in
12270         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12271         esac
12272 fi
12273 $rm -f try.* try
12274 set d_fpos64_t
12275 eval $setvar
12276
12277 : see if frexpl exists
12278 set frexpl d_frexpl
12279 eval $inlibc
12280
12281 : see if this is a sys/param system
12282 set sys/param.h i_sysparam
12283 eval $inhdr
12284
12285 : see if this is a sys/mount.h system
12286 set sys/mount.h i_sysmount
12287 eval $inhdr
12288
12289
12290 echo " "
12291 echo "Checking to see if your system supports struct fs_data..." >&4
12292 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12293 eval $hasstruct
12294 case "$d_fs_data_s" in
12295 "$define")      echo "Yes, it does."   ;;
12296 *)              echo "No, it doesn't." ;;
12297 esac
12298
12299 : see if fseeko exists
12300 set fseeko d_fseeko
12301 eval $inlibc
12302 case "$longsize" in
12303 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12304 esac
12305
12306 : see if fsetpos exists
12307 set fsetpos d_fsetpos
12308 eval $inlibc
12309
12310
12311 : see if fstatfs exists
12312 set fstatfs d_fstatfs
12313 eval $inlibc
12314
12315
12316 : see if statvfs exists
12317 set statvfs d_statvfs
12318 eval $inlibc
12319
12320 : see if fstatvfs exists
12321 set fstatvfs d_fstatvfs
12322 eval $inlibc
12323
12324
12325 : see if fsync exists
12326 set fsync d_fsync
12327 eval $inlibc
12328
12329 : see if ftello exists
12330 set ftello d_ftello
12331 eval $inlibc
12332 case "$longsize" in
12333 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12334 esac
12335
12336 : see if getcwd exists
12337 set getcwd d_getcwd
12338 eval $inlibc
12339
12340 : see if getespwnam exists
12341 set getespwnam d_getespwnam
12342 eval $inlibc
12343
12344
12345 : see if getfsstat exists
12346 set getfsstat d_getfsstat
12347 eval $inlibc
12348
12349 : see if getgrent exists
12350 set getgrent d_getgrent
12351 eval $inlibc
12352
12353 : see if getgrent_r exists
12354 set getgrent_r d_getgrent_r
12355 eval $inlibc
12356 case "$d_getgrent_r" in
12357 "$define")
12358         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12359         case "$d_getgrent_r_proto:$usethreads" in
12360         ":define")      d_getgrent_r_proto=define
12361                 set d_getgrent_r_proto getgrent_r $hdrs
12362                 eval $hasproto ;;
12363         *)      ;;
12364         esac
12365         case "$d_getgrent_r_proto" in
12366         define)
12367         case "$getgrent_r_proto" in
12368         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12369         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12370         esac
12371         case "$getgrent_r_proto" in
12372         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12373         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12374         esac
12375         case "$getgrent_r_proto" in
12376         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12377         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12378         esac
12379         case "$getgrent_r_proto" in
12380         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12381         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12382         esac
12383         case "$getgrent_r_proto" in
12384         ''|0) try='int getgrent_r(struct group*, char*, int);'
12385         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12386         esac
12387         case "$getgrent_r_proto" in
12388         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12389         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12390         esac
12391         case "$getgrent_r_proto" in
12392         ''|0)   d_getgrent_r=undef
12393                 getgrent_r_proto=0
12394                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12395         * )     case "$getgrent_r_proto" in
12396                 REENTRANT_PROTO*) ;;
12397                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12398                 esac
12399                 echo "Prototype: $try" ;;
12400         esac
12401         ;;
12402         *)      case "$usethreads" in
12403                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12404                 esac
12405                 d_getgrent_r=undef
12406                 getgrent_r_proto=0
12407                 ;;
12408         esac
12409         ;;
12410 *)      getgrent_r_proto=0
12411         ;;
12412 esac
12413
12414 : see if getgrgid_r exists
12415 set getgrgid_r d_getgrgid_r
12416 eval $inlibc
12417 case "$d_getgrgid_r" in
12418 "$define")
12419         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12420         case "$d_getgrgid_r_proto:$usethreads" in
12421         ":define")      d_getgrgid_r_proto=define
12422                 set d_getgrgid_r_proto getgrgid_r $hdrs
12423                 eval $hasproto ;;
12424         *)      ;;
12425         esac
12426         case "$d_getgrgid_r_proto" in
12427         define)
12428         case "$getgrgid_r_proto" in
12429         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12430         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12431         esac
12432         case "$getgrgid_r_proto" in
12433         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12434         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12435         esac
12436         case "$getgrgid_r_proto" in
12437         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12438         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12439         esac
12440         case "$getgrgid_r_proto" in
12441         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12442         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12443         esac
12444         case "$getgrgid_r_proto" in
12445         ''|0)   d_getgrgid_r=undef
12446                 getgrgid_r_proto=0
12447                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12448         * )     case "$getgrgid_r_proto" in
12449                 REENTRANT_PROTO*) ;;
12450                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12451                 esac
12452                 echo "Prototype: $try" ;;
12453         esac
12454         ;;
12455         *)      case "$usethreads" in
12456                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12457                 esac
12458                 d_getgrgid_r=undef
12459                 getgrgid_r_proto=0
12460                 ;;
12461         esac
12462         ;;
12463 *)      getgrgid_r_proto=0
12464         ;;
12465 esac
12466
12467 : see if getgrnam_r exists
12468 set getgrnam_r d_getgrnam_r
12469 eval $inlibc
12470 case "$d_getgrnam_r" in
12471 "$define")
12472         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12473         case "$d_getgrnam_r_proto:$usethreads" in
12474         ":define")      d_getgrnam_r_proto=define
12475                 set d_getgrnam_r_proto getgrnam_r $hdrs
12476                 eval $hasproto ;;
12477         *)      ;;
12478         esac
12479         case "$d_getgrnam_r_proto" in
12480         define)
12481         case "$getgrnam_r_proto" in
12482         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12483         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12484         esac
12485         case "$getgrnam_r_proto" in
12486         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12487         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12488         esac
12489         case "$getgrnam_r_proto" in
12490         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12491         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12492         esac
12493         case "$getgrnam_r_proto" in
12494         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12495         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12496         esac
12497         case "$getgrnam_r_proto" in
12498         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12499         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12500         esac
12501         case "$getgrnam_r_proto" in
12502         ''|0)   d_getgrnam_r=undef
12503                 getgrnam_r_proto=0
12504                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12505         * )     case "$getgrnam_r_proto" in
12506                 REENTRANT_PROTO*) ;;
12507                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12508                 esac
12509                 echo "Prototype: $try" ;;
12510         esac
12511         ;;
12512         *)      case "$usethreads" in
12513                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12514                 esac
12515                 d_getgrnam_r=undef
12516                 getgrnam_r_proto=0
12517                 ;;
12518         esac
12519         ;;
12520 *)      getgrnam_r_proto=0
12521         ;;
12522 esac
12523
12524 : see if gethostbyaddr exists
12525 set gethostbyaddr d_gethbyaddr
12526 eval $inlibc
12527
12528 : see if gethostbyname exists
12529 set gethostbyname d_gethbyname
12530 eval $inlibc
12531
12532 : see if gethostent exists
12533 set gethostent d_gethent
12534 eval $inlibc
12535
12536 : see how we will look up host name
12537 echo " "
12538 call=''
12539 if set gethostname val -f d_gethname; eval $csym; $val; then
12540         echo 'gethostname() found.' >&4
12541         d_gethname="$define"
12542         call=gethostname
12543 fi
12544 if set uname val -f d_uname; eval $csym; $val; then
12545         if ./xenix; then
12546                 $cat <<'EOM'
12547 uname() was found, but you're running xenix, and older versions of xenix
12548 have a broken uname(). If you don't really know whether your xenix is old
12549 enough to have a broken system call, use the default answer.
12550
12551 EOM
12552                 dflt=y
12553                 case "$d_uname" in
12554                 "$define") dflt=n;;
12555                 esac
12556                 rp='Is your uname() broken?'
12557                 . ./myread
12558                 case "$ans" in
12559                 n*) d_uname="$define"; call=uname;;
12560                 esac
12561         else
12562                 echo 'uname() found.' >&4
12563                 d_uname="$define"
12564                 case "$call" in
12565                 '') call=uname ;;
12566                 esac
12567         fi
12568 fi
12569 case "$d_gethname" in
12570 '') d_gethname="$undef";;
12571 esac
12572 case "$d_uname" in
12573 '') d_uname="$undef";;
12574 esac
12575 case "$d_uname$d_gethname" in
12576 *define*)
12577         dflt=n
12578         cat <<EOM
12579  
12580 Every now and then someone has a $call() that lies about the hostname
12581 but can't be fixed for political or economic reasons.  If you wish, I can
12582 pretend $call() isn't there and maybe compute hostname at run-time
12583 thanks to the '$phostname' command.
12584
12585 EOM
12586         rp="Shall I ignore $call() from now on?"
12587         . ./myread
12588         case "$ans" in
12589         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12590         esac;;
12591 esac
12592 case "$phostname" in
12593 '') aphostname='';;
12594 *) case "$aphostname" in
12595         /*) ;;
12596         *) set X $phostname
12597                 shift
12598                 file=$1
12599                 shift
12600                 file=`./loc $file $file $pth`
12601                 aphostname=`echo $file $*`
12602                 ;;
12603         esac
12604         ;;
12605 esac
12606 case "$d_uname$d_gethname" in
12607 *define*) ;;
12608 *)
12609         case "$phostname" in
12610         '')
12611                 echo "There will be no way for $package to get your hostname." >&4;;
12612         *)
12613         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12614                 ;;
12615         esac;;
12616 esac
12617 case "$d_phostname" in
12618 '') d_phostname="$undef";;
12619 esac
12620
12621 : see if gethostbyaddr_r exists
12622 set gethostbyaddr_r d_gethostbyaddr_r
12623 eval $inlibc
12624 case "$d_gethostbyaddr_r" in
12625 "$define")
12626         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12627         case "$d_gethostbyaddr_r_proto:$usethreads" in
12628         ":define")      d_gethostbyaddr_r_proto=define
12629                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12630                 eval $hasproto ;;
12631         *)      ;;
12632         esac
12633         case "$d_gethostbyaddr_r_proto" in
12634         define)
12635         case "$gethostbyaddr_r_proto" in
12636         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12637         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12638         esac
12639         case "$gethostbyaddr_r_proto" in
12640         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12641         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12642         esac
12643         case "$gethostbyaddr_r_proto" in
12644         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12645         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12646         esac
12647         case "$gethostbyaddr_r_proto" in
12648         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12649         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12650         esac
12651         case "$gethostbyaddr_r_proto" in
12652         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12653         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12654         esac
12655         case "$gethostbyaddr_r_proto" in
12656         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12657         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12658         esac
12659         case "$gethostbyaddr_r_proto" in
12660         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12661         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12662         esac
12663         case "$gethostbyaddr_r_proto" in
12664         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12665         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12666         esac
12667         case "$gethostbyaddr_r_proto" in
12668         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12669         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12670         esac
12671         case "$gethostbyaddr_r_proto" in
12672         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12673         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12674         esac
12675         case "$gethostbyaddr_r_proto" in
12676         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12677         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12678         esac
12679         case "$gethostbyaddr_r_proto" in
12680         ''|0)   d_gethostbyaddr_r=undef
12681                 gethostbyaddr_r_proto=0
12682                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12683         * )     case "$gethostbyaddr_r_proto" in
12684                 REENTRANT_PROTO*) ;;
12685                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12686                 esac
12687                 echo "Prototype: $try" ;;
12688         esac
12689         ;;
12690         *)      case "$usethreads" in
12691                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12692                 esac
12693                 d_gethostbyaddr_r=undef
12694                 gethostbyaddr_r_proto=0
12695                 ;;
12696         esac
12697         ;;
12698 *)      gethostbyaddr_r_proto=0
12699         ;;
12700 esac
12701
12702 : see if gethostbyname_r exists
12703 set gethostbyname_r d_gethostbyname_r
12704 eval $inlibc
12705 case "$d_gethostbyname_r" in
12706 "$define")
12707         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12708         case "$d_gethostbyname_r_proto:$usethreads" in
12709         ":define")      d_gethostbyname_r_proto=define
12710                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12711                 eval $hasproto ;;
12712         *)      ;;
12713         esac
12714         case "$d_gethostbyname_r_proto" in
12715         define)
12716         case "$gethostbyname_r_proto" in
12717         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12718         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12719         esac
12720         case "$gethostbyname_r_proto" in
12721         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12722         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12723         esac
12724         case "$gethostbyname_r_proto" in
12725         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12726         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12727         esac
12728         case "$gethostbyname_r_proto" in
12729         ''|0)   d_gethostbyname_r=undef
12730                 gethostbyname_r_proto=0
12731                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12732         * )     case "$gethostbyname_r_proto" in
12733                 REENTRANT_PROTO*) ;;
12734                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12735                 esac
12736                 echo "Prototype: $try" ;;
12737         esac
12738         ;;
12739         *)      case "$usethreads" in
12740                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12741                 esac
12742                 d_gethostbyname_r=undef
12743                 gethostbyname_r_proto=0
12744                 ;;
12745         esac
12746         ;;
12747 *)      gethostbyname_r_proto=0
12748         ;;
12749 esac
12750
12751 : see if gethostent_r exists
12752 set gethostent_r d_gethostent_r
12753 eval $inlibc
12754 case "$d_gethostent_r" in
12755 "$define")
12756         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12757         case "$d_gethostent_r_proto:$usethreads" in
12758         ":define")      d_gethostent_r_proto=define
12759                 set d_gethostent_r_proto gethostent_r $hdrs
12760                 eval $hasproto ;;
12761         *)      ;;
12762         esac
12763         case "$d_gethostent_r_proto" in
12764         define)
12765         case "$gethostent_r_proto" in
12766         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12767         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12768         esac
12769         case "$gethostent_r_proto" in
12770         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12771         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12772         esac
12773         case "$gethostent_r_proto" in
12774         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12775         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12776         esac
12777         case "$gethostent_r_proto" in
12778         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12779         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12780         esac
12781         case "$gethostent_r_proto" in
12782         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12783         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12784         esac
12785         case "$gethostent_r_proto" in
12786         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12787         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12788         esac
12789         case "$gethostent_r_proto" in
12790         ''|0)   d_gethostent_r=undef
12791                 gethostent_r_proto=0
12792                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12793         * )     case "$gethostent_r_proto" in
12794                 REENTRANT_PROTO*) ;;
12795                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12796                 esac
12797                 echo "Prototype: $try" ;;
12798         esac
12799         ;;
12800         *)      case "$usethreads" in
12801                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12802                 esac
12803                 d_gethostent_r=undef
12804                 gethostent_r_proto=0
12805                 ;;
12806         esac
12807         ;;
12808 *)      gethostent_r_proto=0
12809         ;;
12810 esac
12811
12812 : see if prototypes for various gethostxxx netdb.h functions are available
12813 echo " "
12814 set d_gethostprotos gethostent $i_netdb netdb.h
12815 eval $hasproto
12816
12817 : see if getitimer exists
12818 set getitimer d_getitimer
12819 eval $inlibc
12820
12821 : see if getlogin exists
12822 set getlogin d_getlogin
12823 eval $inlibc
12824
12825 : see if getlogin_r exists
12826 set getlogin_r d_getlogin_r
12827 eval $inlibc
12828 case "$d_getlogin_r" in
12829 "$define")
12830         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12831         case "$d_getlogin_r_proto:$usethreads" in
12832         ":define")      d_getlogin_r_proto=define
12833                 set d_getlogin_r_proto getlogin_r $hdrs
12834                 eval $hasproto ;;
12835         *)      ;;
12836         esac
12837         case "$d_getlogin_r_proto" in
12838         define)
12839         case "$getlogin_r_proto" in
12840         ''|0) try='int getlogin_r(char*, size_t);'
12841         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12842         esac
12843         case "$getlogin_r_proto" in
12844         ''|0) try='int getlogin_r(char*, int);'
12845         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12846         esac
12847         case "$getlogin_r_proto" in
12848         ''|0) try='char* getlogin_r(char*, size_t);'
12849         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12850         esac
12851         case "$getlogin_r_proto" in
12852         ''|0) try='char* getlogin_r(char*, int);'
12853         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12854         esac
12855         case "$getlogin_r_proto" in
12856         ''|0)   d_getlogin_r=undef
12857                 getlogin_r_proto=0
12858                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12859         * )     case "$getlogin_r_proto" in
12860                 REENTRANT_PROTO*) ;;
12861                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12862                 esac
12863                 echo "Prototype: $try" ;;
12864         esac
12865         ;;
12866         *)      case "$usethreads" in
12867                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12868                 esac
12869                 d_getlogin_r=undef
12870                 getlogin_r_proto=0
12871                 ;;
12872         esac
12873         ;;
12874 *)      getlogin_r_proto=0
12875         ;;
12876 esac
12877
12878 : see if getmnt exists
12879 set getmnt d_getmnt
12880 eval $inlibc
12881
12882 : see if getmntent exists
12883 set getmntent d_getmntent
12884 eval $inlibc
12885
12886 : see if getnetbyaddr exists
12887 set getnetbyaddr d_getnbyaddr
12888 eval $inlibc
12889
12890 : see if getnetbyname exists
12891 set getnetbyname d_getnbyname
12892 eval $inlibc
12893
12894 : see if getnetent exists
12895 set getnetent d_getnent
12896 eval $inlibc
12897
12898 : see if getnetbyaddr_r exists
12899 set getnetbyaddr_r d_getnetbyaddr_r
12900 eval $inlibc
12901 case "$d_getnetbyaddr_r" in
12902 "$define")
12903         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12904         case "$d_getnetbyaddr_r_proto:$usethreads" in
12905         ":define")      d_getnetbyaddr_r_proto=define
12906                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12907                 eval $hasproto ;;
12908         *)      ;;
12909         esac
12910         case "$d_getnetbyaddr_r_proto" in
12911         define)
12912         case "$getnetbyaddr_r_proto" in
12913         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12914         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12915         esac
12916         case "$getnetbyaddr_r_proto" in
12917         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12918         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12919         esac
12920         case "$getnetbyaddr_r_proto" in
12921         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12922         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12923         esac
12924         case "$getnetbyaddr_r_proto" in
12925         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12926         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12927         esac
12928         case "$getnetbyaddr_r_proto" in
12929         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12930         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12931         esac
12932         case "$getnetbyaddr_r_proto" in
12933         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12934         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12935         esac
12936         case "$getnetbyaddr_r_proto" in
12937         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12938         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12939         esac
12940         case "$getnetbyaddr_r_proto" in
12941         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12942         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12943         esac
12944         case "$getnetbyaddr_r_proto" in
12945         ''|0)   d_getnetbyaddr_r=undef
12946                 getnetbyaddr_r_proto=0
12947                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12948         * )     case "$getnetbyaddr_r_proto" in
12949                 REENTRANT_PROTO*) ;;
12950                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12951                 esac
12952                 echo "Prototype: $try" ;;
12953         esac
12954         ;;
12955         *)      case "$usethreads" in
12956                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12957                 esac
12958                 d_getnetbyaddr_r=undef
12959                 getnetbyaddr_r_proto=0
12960                 ;;
12961         esac
12962         ;;
12963 *)      getnetbyaddr_r_proto=0
12964         ;;
12965 esac
12966
12967 : see if getnetbyname_r exists
12968 set getnetbyname_r d_getnetbyname_r
12969 eval $inlibc
12970 case "$d_getnetbyname_r" in
12971 "$define")
12972         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12973         case "$d_getnetbyname_r_proto:$usethreads" in
12974         ":define")      d_getnetbyname_r_proto=define
12975                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12976                 eval $hasproto ;;
12977         *)      ;;
12978         esac
12979         case "$d_getnetbyname_r_proto" in
12980         define)
12981         case "$getnetbyname_r_proto" in
12982         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12983         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12984         esac
12985         case "$getnetbyname_r_proto" in
12986         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12987         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12988         esac
12989         case "$getnetbyname_r_proto" in
12990         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12991         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12992         esac
12993         case "$getnetbyname_r_proto" in
12994         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12995         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12996         esac
12997         case "$getnetbyname_r_proto" in
12998         ''|0)   d_getnetbyname_r=undef
12999                 getnetbyname_r_proto=0
13000                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13001         * )     case "$getnetbyname_r_proto" in
13002                 REENTRANT_PROTO*) ;;
13003                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13004                 esac
13005                 echo "Prototype: $try" ;;
13006         esac
13007         ;;
13008         *)      case "$usethreads" in
13009                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13010                 esac
13011                 d_getnetbyname_r=undef
13012                 getnetbyname_r_proto=0
13013                 ;;
13014         esac
13015         ;;
13016 *)      getnetbyname_r_proto=0
13017         ;;
13018 esac
13019
13020 : see if getnetent_r exists
13021 set getnetent_r d_getnetent_r
13022 eval $inlibc
13023 case "$d_getnetent_r" in
13024 "$define")
13025         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13026         case "$d_getnetent_r_proto:$usethreads" in
13027         ":define")      d_getnetent_r_proto=define
13028                 set d_getnetent_r_proto getnetent_r $hdrs
13029                 eval $hasproto ;;
13030         *)      ;;
13031         esac
13032         case "$d_getnetent_r_proto" in
13033         define)
13034         case "$getnetent_r_proto" in
13035         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13036         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13037         esac
13038         case "$getnetent_r_proto" in
13039         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13040         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13041         esac
13042         case "$getnetent_r_proto" in
13043         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13044         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13045         esac
13046         case "$getnetent_r_proto" in
13047         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13048         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13049         esac
13050         case "$getnetent_r_proto" in
13051         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13052         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13053         esac
13054         case "$getnetent_r_proto" in
13055         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13056         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13057         esac
13058         case "$getnetent_r_proto" in
13059         ''|0)   d_getnetent_r=undef
13060                 getnetent_r_proto=0
13061                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13062         * )     case "$getnetent_r_proto" in
13063                 REENTRANT_PROTO*) ;;
13064                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13065                 esac
13066                 echo "Prototype: $try" ;;
13067         esac
13068         ;;
13069         *)      case "$usethreads" in
13070                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13071                 esac
13072                 d_getnetent_r=undef
13073                 getnetent_r_proto=0
13074                 ;;
13075         esac
13076         ;;
13077 *)      getnetent_r_proto=0
13078         ;;
13079 esac
13080
13081 : see if prototypes for various getnetxxx netdb.h functions are available
13082 echo " "
13083 set d_getnetprotos getnetent $i_netdb netdb.h
13084 eval $hasproto
13085
13086 : see if getpagesize exists
13087 set getpagesize d_getpagsz
13088 eval $inlibc
13089
13090
13091 : see if getprotobyname exists
13092 set getprotobyname d_getpbyname
13093 eval $inlibc
13094
13095 : see if getprotobynumber exists
13096 set getprotobynumber d_getpbynumber
13097 eval $inlibc
13098
13099 : see if getprotoent exists
13100 set getprotoent d_getpent
13101 eval $inlibc
13102
13103 : see if getpgid exists
13104 set getpgid d_getpgid
13105 eval $inlibc
13106
13107 : see if getpgrp2 exists
13108 set getpgrp2 d_getpgrp2
13109 eval $inlibc
13110
13111 : see if getppid exists
13112 set getppid d_getppid
13113 eval $inlibc
13114
13115 : see if getpriority exists
13116 set getpriority d_getprior
13117 eval $inlibc
13118
13119 : see if getprotobyname_r exists
13120 set getprotobyname_r d_getprotobyname_r
13121 eval $inlibc
13122 case "$d_getprotobyname_r" in
13123 "$define")
13124         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13125         case "$d_getprotobyname_r_proto:$usethreads" in
13126         ":define")      d_getprotobyname_r_proto=define
13127                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13128                 eval $hasproto ;;
13129         *)      ;;
13130         esac
13131         case "$d_getprotobyname_r_proto" in
13132         define)
13133         case "$getprotobyname_r_proto" in
13134         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13135         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13136         esac
13137         case "$getprotobyname_r_proto" in
13138         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13139         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13140         esac
13141         case "$getprotobyname_r_proto" in
13142         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13143         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13144         esac
13145         case "$getprotobyname_r_proto" in
13146         ''|0)   d_getprotobyname_r=undef
13147                 getprotobyname_r_proto=0
13148                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13149         * )     case "$getprotobyname_r_proto" in
13150                 REENTRANT_PROTO*) ;;
13151                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13152                 esac
13153                 echo "Prototype: $try" ;;
13154         esac
13155         ;;
13156         *)      case "$usethreads" in
13157                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13158                 esac
13159                 d_getprotobyname_r=undef
13160                 getprotobyname_r_proto=0
13161                 ;;
13162         esac
13163         ;;
13164 *)      getprotobyname_r_proto=0
13165         ;;
13166 esac
13167
13168 : see if getprotobynumber_r exists
13169 set getprotobynumber_r d_getprotobynumber_r
13170 eval $inlibc
13171 case "$d_getprotobynumber_r" in
13172 "$define")
13173         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13174         case "$d_getprotobynumber_r_proto:$usethreads" in
13175         ":define")      d_getprotobynumber_r_proto=define
13176                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13177                 eval $hasproto ;;
13178         *)      ;;
13179         esac
13180         case "$d_getprotobynumber_r_proto" in
13181         define)
13182         case "$getprotobynumber_r_proto" in
13183         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13184         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13185         esac
13186         case "$getprotobynumber_r_proto" in
13187         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13188         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13189         esac
13190         case "$getprotobynumber_r_proto" in
13191         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13192         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13193         esac
13194         case "$getprotobynumber_r_proto" in
13195         ''|0)   d_getprotobynumber_r=undef
13196                 getprotobynumber_r_proto=0
13197                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13198         * )     case "$getprotobynumber_r_proto" in
13199                 REENTRANT_PROTO*) ;;
13200                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13201                 esac
13202                 echo "Prototype: $try" ;;
13203         esac
13204         ;;
13205         *)      case "$usethreads" in
13206                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13207                 esac
13208                 d_getprotobynumber_r=undef
13209                 getprotobynumber_r_proto=0
13210                 ;;
13211         esac
13212         ;;
13213 *)      getprotobynumber_r_proto=0
13214         ;;
13215 esac
13216
13217 : see if getprotoent_r exists
13218 set getprotoent_r d_getprotoent_r
13219 eval $inlibc
13220 case "$d_getprotoent_r" in
13221 "$define")
13222         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13223         case "$d_getprotoent_r_proto:$usethreads" in
13224         ":define")      d_getprotoent_r_proto=define
13225                 set d_getprotoent_r_proto getprotoent_r $hdrs
13226                 eval $hasproto ;;
13227         *)      ;;
13228         esac
13229         case "$d_getprotoent_r_proto" in
13230         define)
13231         case "$getprotoent_r_proto" in
13232         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13233         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13234         esac
13235         case "$getprotoent_r_proto" in
13236         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13237         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13238         esac
13239         case "$getprotoent_r_proto" in
13240         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13241         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13242         esac
13243         case "$getprotoent_r_proto" in
13244         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13245         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13246         esac
13247         case "$getprotoent_r_proto" in
13248         ''|0)   d_getprotoent_r=undef
13249                 getprotoent_r_proto=0
13250                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13251         * )     case "$getprotoent_r_proto" in
13252                 REENTRANT_PROTO*) ;;
13253                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13254                 esac
13255                 echo "Prototype: $try" ;;
13256         esac
13257         ;;
13258         *)      case "$usethreads" in
13259                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13260                 esac
13261                 d_getprotoent_r=undef
13262                 getprotoent_r_proto=0
13263                 ;;
13264         esac
13265         ;;
13266 *)      getprotoent_r_proto=0
13267         ;;
13268 esac
13269
13270 : see if prototypes for various getprotoxxx netdb.h functions are available
13271 echo " "
13272 set d_getprotoprotos getprotoent $i_netdb netdb.h
13273 eval $hasproto
13274
13275 : see if getprpwnam exists
13276 set getprpwnam d_getprpwnam
13277 eval $inlibc
13278
13279 : see if getpwent exists
13280 set getpwent d_getpwent
13281 eval $inlibc
13282
13283 : see if getpwent_r exists
13284 set getpwent_r d_getpwent_r
13285 eval $inlibc
13286 case "$d_getpwent_r" in
13287 "$define")
13288         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13289         case "$d_getpwent_r_proto:$usethreads" in
13290         ":define")      d_getpwent_r_proto=define
13291                 set d_getpwent_r_proto getpwent_r $hdrs
13292                 eval $hasproto ;;
13293         *)      ;;
13294         esac
13295         case "$d_getpwent_r_proto" in
13296         define)
13297         case "$getpwent_r_proto" in
13298         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13299         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13300         esac
13301         case "$getpwent_r_proto" in
13302         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13303         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13304         esac
13305         case "$getpwent_r_proto" in
13306         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13307         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13308         esac
13309         case "$getpwent_r_proto" in
13310         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13311         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13312         esac
13313         case "$getpwent_r_proto" in
13314         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13315         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13316         esac
13317         case "$getpwent_r_proto" in
13318         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13319         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13320         esac
13321         case "$getpwent_r_proto" in
13322         ''|0)   d_getpwent_r=undef
13323                 getpwent_r_proto=0
13324                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13325         * )     case "$getpwent_r_proto" in
13326                 REENTRANT_PROTO*) ;;
13327                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13328                 esac
13329                 echo "Prototype: $try" ;;
13330         esac
13331         ;;
13332         *)      case "$usethreads" in
13333                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13334                 esac
13335                 d_getpwent_r=undef
13336                 getpwent_r_proto=0
13337                 ;;
13338         esac
13339         ;;
13340 *)      getpwent_r_proto=0
13341         ;;
13342 esac
13343
13344 : see if getpwnam_r exists
13345 set getpwnam_r d_getpwnam_r
13346 eval $inlibc
13347 case "$d_getpwnam_r" in
13348 "$define")
13349         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13350         case "$d_getpwnam_r_proto:$usethreads" in
13351         ":define")      d_getpwnam_r_proto=define
13352                 set d_getpwnam_r_proto getpwnam_r $hdrs
13353                 eval $hasproto ;;
13354         *)      ;;
13355         esac
13356         case "$d_getpwnam_r_proto" in
13357         define)
13358         case "$getpwnam_r_proto" in
13359         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13360         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13361         esac
13362         case "$getpwnam_r_proto" in
13363         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13364         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13365         esac
13366         case "$getpwnam_r_proto" in
13367         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13368         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13369         esac
13370         case "$getpwnam_r_proto" in
13371         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13372         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13373         esac
13374         case "$getpwnam_r_proto" in
13375         ''|0)   d_getpwnam_r=undef
13376                 getpwnam_r_proto=0
13377                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13378         * )     case "$getpwnam_r_proto" in
13379                 REENTRANT_PROTO*) ;;
13380                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13381                 esac
13382                 echo "Prototype: $try" ;;
13383         esac
13384         ;;
13385         *)      case "$usethreads" in
13386                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13387                 esac
13388                 d_getpwnam_r=undef
13389                 getpwnam_r_proto=0
13390                 ;;
13391         esac
13392         ;;
13393 *)      getpwnam_r_proto=0
13394         ;;
13395 esac
13396
13397 : see if getpwuid_r exists
13398 set getpwuid_r d_getpwuid_r
13399 eval $inlibc
13400 case "$d_getpwuid_r" in
13401 "$define")
13402         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13403         case "$d_getpwuid_r_proto:$usethreads" in
13404         ":define")      d_getpwuid_r_proto=define
13405                 set d_getpwuid_r_proto getpwuid_r $hdrs
13406                 eval $hasproto ;;
13407         *)      ;;
13408         esac
13409         case "$d_getpwuid_r_proto" in
13410         define)
13411         case "$getpwuid_r_proto" in
13412         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13413         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13414         esac
13415         case "$getpwuid_r_proto" in
13416         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13417         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13418         esac
13419         case "$getpwuid_r_proto" in
13420         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13421         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13422         esac
13423         case "$getpwuid_r_proto" in
13424         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13425         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13426         esac
13427         case "$getpwuid_r_proto" in
13428         ''|0)   d_getpwuid_r=undef
13429                 getpwuid_r_proto=0
13430                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13431         * )     case "$getpwuid_r_proto" in
13432                 REENTRANT_PROTO*) ;;
13433                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13434                 esac
13435                 echo "Prototype: $try" ;;
13436         esac
13437         ;;
13438         *)      case "$usethreads" in
13439                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13440                 esac
13441                 d_getpwuid_r=undef
13442                 getpwuid_r_proto=0
13443                 ;;
13444         esac
13445         ;;
13446 *)      getpwuid_r_proto=0
13447         ;;
13448 esac
13449
13450
13451 : see if getservbyname exists
13452 set getservbyname d_getsbyname
13453 eval $inlibc
13454
13455 : see if getservbyport exists
13456 set getservbyport d_getsbyport
13457 eval $inlibc
13458
13459 : see if getservent exists
13460 set getservent d_getsent
13461 eval $inlibc
13462
13463 : see if getservbyname_r exists
13464 set getservbyname_r d_getservbyname_r
13465 eval $inlibc
13466 case "$d_getservbyname_r" in
13467 "$define")
13468         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13469         case "$d_getservbyname_r_proto:$usethreads" in
13470         ":define")      d_getservbyname_r_proto=define
13471                 set d_getservbyname_r_proto getservbyname_r $hdrs
13472                 eval $hasproto ;;
13473         *)      ;;
13474         esac
13475         case "$d_getservbyname_r_proto" in
13476         define)
13477         case "$getservbyname_r_proto" in
13478         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13479         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13480         esac
13481         case "$getservbyname_r_proto" in
13482         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13483         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13484         esac
13485         case "$getservbyname_r_proto" in
13486         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13487         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13488         esac
13489         case "$getservbyname_r_proto" in
13490         ''|0)   d_getservbyname_r=undef
13491                 getservbyname_r_proto=0
13492                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13493         * )     case "$getservbyname_r_proto" in
13494                 REENTRANT_PROTO*) ;;
13495                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13496                 esac
13497                 echo "Prototype: $try" ;;
13498         esac
13499         ;;
13500         *)      case "$usethreads" in
13501                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13502                 esac
13503                 d_getservbyname_r=undef
13504                 getservbyname_r_proto=0
13505                 ;;
13506         esac
13507         ;;
13508 *)      getservbyname_r_proto=0
13509         ;;
13510 esac
13511
13512 : see if getservbyport_r exists
13513 set getservbyport_r d_getservbyport_r
13514 eval $inlibc
13515 case "$d_getservbyport_r" in
13516 "$define")
13517         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13518         case "$d_getservbyport_r_proto:$usethreads" in
13519         ":define")      d_getservbyport_r_proto=define
13520                 set d_getservbyport_r_proto getservbyport_r $hdrs
13521                 eval $hasproto ;;
13522         *)      ;;
13523         esac
13524         case "$d_getservbyport_r_proto" in
13525         define)
13526         case "$getservbyport_r_proto" in
13527         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13528         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13529         esac
13530         case "$getservbyport_r_proto" in
13531         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13532         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13533         esac
13534         case "$getservbyport_r_proto" in
13535         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13536         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13537         esac
13538         case "$getservbyport_r_proto" in
13539         ''|0)   d_getservbyport_r=undef
13540                 getservbyport_r_proto=0
13541                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13542         * )     case "$getservbyport_r_proto" in
13543                 REENTRANT_PROTO*) ;;
13544                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13545                 esac
13546                 echo "Prototype: $try" ;;
13547         esac
13548         ;;
13549         *)      case "$usethreads" in
13550                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13551                 esac
13552                 d_getservbyport_r=undef
13553                 getservbyport_r_proto=0
13554                 ;;
13555         esac
13556         ;;
13557 *)      getservbyport_r_proto=0
13558         ;;
13559 esac
13560
13561 : see if getservent_r exists
13562 set getservent_r d_getservent_r
13563 eval $inlibc
13564 case "$d_getservent_r" in
13565 "$define")
13566         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13567         case "$d_getservent_r_proto:$usethreads" in
13568         ":define")      d_getservent_r_proto=define
13569                 set d_getservent_r_proto getservent_r $hdrs
13570                 eval $hasproto ;;
13571         *)      ;;
13572         esac
13573         case "$d_getservent_r_proto" in
13574         define)
13575         case "$getservent_r_proto" in
13576         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13577         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13578         esac
13579         case "$getservent_r_proto" in
13580         ''|0) try='int getservent_r(struct servent*, char*, int);'
13581         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13582         esac
13583         case "$getservent_r_proto" in
13584         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13585         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13586         esac
13587         case "$getservent_r_proto" in
13588         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13589         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13590         esac
13591         case "$getservent_r_proto" in
13592         ''|0)   d_getservent_r=undef
13593                 getservent_r_proto=0
13594                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13595         * )     case "$getservent_r_proto" in
13596                 REENTRANT_PROTO*) ;;
13597                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13598                 esac
13599                 echo "Prototype: $try" ;;
13600         esac
13601         ;;
13602         *)      case "$usethreads" in
13603                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13604                 esac
13605                 d_getservent_r=undef
13606                 getservent_r_proto=0
13607                 ;;
13608         esac
13609         ;;
13610 *)      getservent_r_proto=0
13611         ;;
13612 esac
13613
13614 : see if prototypes for various getservxxx netdb.h functions are available
13615 echo " "
13616 set d_getservprotos getservent $i_netdb netdb.h
13617 eval $hasproto
13618
13619 : see if getspnam exists
13620 set getspnam d_getspnam
13621 eval $inlibc
13622
13623 : see if this is a shadow.h system
13624 set shadow.h i_shadow
13625 eval $inhdr
13626
13627 : see if getspnam_r exists
13628 set getspnam_r d_getspnam_r
13629 eval $inlibc
13630 case "$d_getspnam_r" in
13631 "$define")
13632         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13633         case "$d_getspnam_r_proto:$usethreads" in
13634         ":define")      d_getspnam_r_proto=define
13635                 set d_getspnam_r_proto getspnam_r $hdrs
13636                 eval $hasproto ;;
13637         *)      ;;
13638         esac
13639         case "$d_getspnam_r_proto" in
13640         define)
13641         case "$getspnam_r_proto" in
13642         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13643         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13644         esac
13645         case "$getspnam_r_proto" in
13646         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13647         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13648         esac
13649         case "$getspnam_r_proto" in
13650         ''|0)   d_getspnam_r=undef
13651                 getspnam_r_proto=0
13652                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13653         * )     case "$getspnam_r_proto" in
13654                 REENTRANT_PROTO*) ;;
13655                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13656                 esac
13657                 echo "Prototype: $try" ;;
13658         esac
13659         ;;
13660         *)      case "$usethreads" in
13661                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13662                 esac
13663                 d_getspnam_r=undef
13664                 getspnam_r_proto=0
13665                 ;;
13666         esac
13667         ;;
13668 *)      getspnam_r_proto=0
13669         ;;
13670 esac
13671
13672 : see if gettimeofday or ftime exists
13673 set gettimeofday d_gettimeod
13674 eval $inlibc
13675 case "$d_gettimeod" in
13676 "$undef")
13677         set ftime d_ftime 
13678         eval $inlibc
13679         ;;
13680 *)
13681         val="$undef"; set d_ftime; eval $setvar
13682         ;;
13683 esac
13684 case "$d_gettimeod$d_ftime" in
13685 "$undef$undef")
13686         echo " "
13687         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13688         ;;
13689 esac
13690
13691 : see if gmtime_r exists
13692 set gmtime_r d_gmtime_r
13693 eval $inlibc
13694 case "$d_gmtime_r" in
13695 "$define")
13696         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13697         case "$d_gmtime_r_proto:$usethreads" in
13698         ":define")      d_gmtime_r_proto=define
13699                 set d_gmtime_r_proto gmtime_r $hdrs
13700                 eval $hasproto ;;
13701         *)      ;;
13702         esac
13703         case "$d_gmtime_r_proto" in
13704         define)
13705         case "$gmtime_r_proto" in
13706         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13707         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13708         esac
13709         case "$gmtime_r_proto" in
13710         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13711         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13712         esac
13713         case "$gmtime_r_proto" in
13714         ''|0)   d_gmtime_r=undef
13715                 gmtime_r_proto=0
13716                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13717         * )     case "$gmtime_r_proto" in
13718                 REENTRANT_PROTO*) ;;
13719                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13720                 esac
13721                 echo "Prototype: $try" ;;
13722         esac
13723         ;;
13724         *)      case "$usethreads" in
13725                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13726                 esac
13727                 d_gmtime_r=undef
13728                 gmtime_r_proto=0
13729                 ;;
13730         esac
13731         ;;
13732 *)      gmtime_r_proto=0
13733         ;;
13734 esac
13735
13736 : see if hasmntopt exists
13737 set hasmntopt d_hasmntopt
13738 eval $inlibc
13739
13740 : see if this is a netinet/in.h or sys/in.h system
13741 set netinet/in.h i_niin sys/in.h i_sysin
13742 eval $inhdr
13743
13744 : see if arpa/inet.h has to be included
13745 set arpa/inet.h i_arpainet
13746 eval $inhdr
13747
13748 : see if htonl --and friends-- exists
13749 val=''
13750 set htonl val
13751 eval $inlibc
13752
13753 : Maybe they are macros.
13754 case "$val" in
13755 $undef)
13756         $cat >htonl.c <<EOM
13757 #include <stdio.h>
13758 #include <sys/types.h>
13759 #$i_niin I_NETINET_IN
13760 #$i_sysin I_SYS_IN
13761 #$i_arpainet I_ARPA_INET
13762 #ifdef I_NETINET_IN
13763 #include <netinet/in.h>
13764 #endif
13765 #ifdef I_SYS_IN
13766 #include <sys/in.h>
13767 #endif
13768 #ifdef I_ARPA_INET
13769 #include <arpa/inet.h>
13770 #endif
13771 #ifdef htonl
13772 printf("Defined as a macro.");
13773 #endif
13774 EOM
13775         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13776         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13777                 val="$define"
13778                 echo "But it seems to be defined as a macro." >&4
13779         fi
13780         $rm -f htonl.?
13781         ;;
13782 esac
13783 set d_htonl
13784 eval $setvar
13785
13786 : see if ilogbl exists
13787 set ilogbl d_ilogbl
13788 eval $inlibc
13789
13790 : index or strchr
13791 echo " "
13792 if set index val -f; eval $csym; $val; then
13793         if set strchr val -f d_strchr; eval $csym; $val; then
13794                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13795                         val="$define"
13796                         vali="$undef"
13797                         echo "strchr() found." >&4
13798                 else
13799                         val="$undef"
13800                         vali="$define"
13801                         echo "index() found." >&4
13802                 fi
13803         else
13804                 val="$undef"
13805                 vali="$define"
13806                 echo "index() found." >&4
13807         fi
13808 else
13809         if set strchr val -f d_strchr; eval $csym; $val; then
13810                 val="$define"
13811                 vali="$undef"
13812                 echo "strchr() found." >&4
13813         else
13814                 echo "No index() or strchr() found!" >&4
13815                 val="$undef"
13816                 vali="$undef"
13817         fi
13818 fi
13819 set d_strchr; eval $setvar
13820 val="$vali"
13821 set d_index; eval $setvar
13822
13823 : check whether inet_aton exists
13824 set inet_aton d_inetaton
13825 eval $inlibc
13826
13827 : Look for isascii
13828 echo " "
13829 $cat >isascii.c <<EOCP
13830 #include <stdio.h>
13831 #include <ctype.h>
13832 #$i_stdlib I_STDLIB
13833 #ifdef I_STDLIB
13834 #include <stdlib.h>
13835 #endif
13836 int main() {
13837         int c = 'A';
13838         if (isascii(c))
13839                 exit(0);
13840         else
13841                 exit(1);
13842 }
13843 EOCP
13844 set isascii
13845 if eval $compile; then
13846         echo "isascii() found." >&4
13847         val="$define"
13848 else
13849         echo "isascii() NOT found." >&4
13850         val="$undef"
13851 fi
13852 set d_isascii
13853 eval $setvar
13854 $rm -f isascii*
13855
13856 : see if isfinite exists
13857 set isfinite d_isfinite
13858 eval $inlibc
13859
13860 : see if isinf exists
13861 set isinf d_isinf
13862 eval $inlibc
13863
13864 : see if isnan exists
13865 set isnan d_isnan
13866 eval $inlibc
13867
13868 : see if isnanl exists
13869 set isnanl d_isnanl
13870 eval $inlibc
13871
13872 : see if killpg exists
13873 set killpg d_killpg
13874 eval $inlibc
13875
13876 : see if lchown exists
13877 echo " "
13878 $cat > try.c <<'EOCP'
13879 /* System header to define __stub macros and hopefully few prototypes,
13880     which can conflict with char lchown(); below.  */
13881 #include <assert.h>
13882 /* Override any gcc2 internal prototype to avoid an error.  */
13883 /* We use char because int might match the return type of a gcc2
13884    builtin and then its argument prototype would still apply.  */
13885 char lchown();
13886 int main() {
13887     /*  The GNU C library defines this for functions which it implements
13888         to always fail with ENOSYS.  Some functions are actually named
13889         something starting with __ and the normal name is an alias.  */
13890 #if defined (__stub_lchown) || defined (__stub___lchown)
13891 choke me
13892 #else
13893 lchown();
13894 #endif
13895 ; return 0; }
13896 EOCP
13897 set try
13898 if eval $compile; then
13899     $echo "lchown() found." >&4
13900     val="$define"
13901 else
13902     $echo "lchown() NOT found." >&4
13903     val="$undef"
13904 fi
13905 set d_lchown
13906 eval $setvar
13907
13908 : See if number of significant digits in a double precision number is known
13909 echo " "
13910 $cat >ldbl_dig.c <<EOM
13911 #$i_limits I_LIMITS
13912 #$i_float I_FLOAT
13913 #ifdef I_LIMITS
13914 #include <limits.h>
13915 #endif
13916 #ifdef I_FLOAT
13917 #include <float.h>
13918 #endif
13919 #ifdef LDBL_DIG
13920 printf("Contains LDBL_DIG");
13921 #endif
13922 EOM
13923 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13924 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13925         echo "LDBL_DIG found." >&4
13926         val="$define"
13927 else
13928         echo "LDBL_DIG NOT found." >&4
13929         val="$undef"
13930 fi
13931 $rm -f ldbl_dig.?
13932 set d_ldbl_dig
13933 eval $setvar
13934
13935 : see if link exists
13936 set link d_link
13937 eval $inlibc
13938
13939 : see if localtime_r exists
13940 set localtime_r d_localtime_r
13941 eval $inlibc
13942 case "$d_localtime_r" in
13943 "$define")
13944         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13945         case "$d_localtime_r_proto:$usethreads" in
13946         ":define")      d_localtime_r_proto=define
13947                 set d_localtime_r_proto localtime_r $hdrs
13948                 eval $hasproto ;;
13949         *)      ;;
13950         esac
13951         case "$d_localtime_r_proto" in
13952         define)
13953         case "$localtime_r_proto" in
13954         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13955         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13956         esac
13957         case "$localtime_r_proto" in
13958         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13959         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13960         esac
13961         case "$localtime_r_proto" in
13962         ''|0)   d_localtime_r=undef
13963                 localtime_r_proto=0
13964                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13965         * )     case "$localtime_r_proto" in
13966                 REENTRANT_PROTO*) ;;
13967                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13968                 esac
13969                 echo "Prototype: $try" ;;
13970         esac
13971         ;;
13972         *)      case "$usethreads" in
13973                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13974                 esac
13975                 d_localtime_r=undef
13976                 localtime_r_proto=0
13977                 ;;
13978         esac
13979         ;;
13980 *)      localtime_r_proto=0
13981         ;;
13982 esac
13983
13984 : see if localeconv exists
13985 set localeconv d_locconv
13986 eval $inlibc
13987
13988 : see if lockf exists
13989 set lockf d_lockf
13990 eval $inlibc
13991
13992 : see if prototype for lseek is available
13993 echo " "
13994 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13995 eval $hasproto
13996
13997 : see if lstat exists
13998 set lstat d_lstat
13999 eval $inlibc
14000
14001 : see if madvise exists
14002 set madvise d_madvise
14003 eval $inlibc
14004
14005 : see if mblen exists
14006 set mblen d_mblen
14007 eval $inlibc
14008
14009 : see if mbstowcs exists
14010 set mbstowcs d_mbstowcs
14011 eval $inlibc
14012
14013 : see if mbtowc exists
14014 set mbtowc d_mbtowc
14015 eval $inlibc
14016
14017 : see if memchr exists
14018 set memchr d_memchr
14019 eval $inlibc
14020
14021 : see if memcmp exists
14022 set memcmp d_memcmp
14023 eval $inlibc
14024
14025 : see if memcpy exists
14026 set memcpy d_memcpy
14027 eval $inlibc
14028
14029 : see if memmove exists
14030 set memmove d_memmove
14031 eval $inlibc
14032
14033 : see if memset exists
14034 set memset d_memset
14035 eval $inlibc
14036
14037 : see if mkdir exists
14038 set mkdir d_mkdir
14039 eval $inlibc
14040
14041 : see if mkdtemp exists
14042 set mkdtemp d_mkdtemp
14043 eval $inlibc
14044
14045 : see if mkfifo exists
14046 set mkfifo d_mkfifo
14047 eval $inlibc
14048
14049 : see if mkstemp exists
14050 set mkstemp d_mkstemp
14051 eval $inlibc
14052
14053 : see if mkstemps exists
14054 set mkstemps d_mkstemps
14055 eval $inlibc
14056
14057 : see if mktime exists
14058 set mktime d_mktime
14059 eval $inlibc
14060
14061 : see if this is a sys/mman.h system
14062 set sys/mman.h i_sysmman
14063 eval $inhdr
14064
14065 : see if mmap exists
14066 set mmap d_mmap
14067 eval $inlibc
14068 : see what shmat returns
14069 : default to something harmless
14070 mmaptype='void *'
14071 case "$i_sysmman$d_mmap" in
14072 "$define$define")
14073         $cat >mmap.c <<'END'
14074 #include <sys/mman.h>
14075 void *mmap();
14076 END
14077         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14078                 mmaptype='void *'
14079         else
14080                 mmaptype='caddr_t'
14081         fi
14082         echo "and it returns ($mmaptype)." >&4
14083         ;;
14084 esac
14085
14086
14087
14088 : see if sqrtl exists
14089 set sqrtl d_sqrtl
14090 eval $inlibc
14091
14092 : see if scalbnl exists
14093 set scalbnl d_scalbnl
14094 eval $inlibc
14095
14096 : see if modfl exists
14097 set modfl d_modfl
14098 eval $inlibc
14099
14100 : see if prototype for modfl is available
14101 echo " "
14102 set d_modflproto modfl math.h
14103 eval $hasproto
14104
14105 d_modfl_pow32_bug="$undef"
14106
14107 case "$d_longdbl$d_modfl" in
14108 $define$define)
14109         $cat <<EOM
14110 Checking to see whether your modfl() is okay for large values...
14111 EOM
14112 $cat >try.c <<EOCP
14113 #include <math.h> 
14114 #include <stdio.h>
14115 EOCP
14116 if $test "X$d_modflproto" != "X$define"; then
14117         $cat >>try.c <<EOCP
14118 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14119 long double modfl (long double, long double *);
14120 EOCP
14121 fi
14122 $cat >>try.c <<EOCP
14123 int main() {
14124     long double nv = 4294967303.15;
14125     long double v, w;
14126     v = modfl(nv, &w);         
14127 #ifdef __GLIBC__
14128     printf("glibc");
14129 #endif
14130     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14131     return 0;
14132 }
14133 EOCP
14134         case "$osname:$gccversion" in
14135         aix:)   saveccflags="$ccflags"
14136                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14137         esac
14138         set try
14139         if eval $compile; then
14140                 foo=`$run ./try`
14141                 case "$foo" in
14142                 *" 4294967303.150000 1.150000 4294967302.000000")
14143                         echo >&4 "Your modfl() is broken for large values."
14144                         d_modfl_pow32_bug="$define"
14145                         case "$foo" in
14146                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14147                         ;;
14148                         esac
14149                         ;;
14150                 *" 4294967303.150000 0.150000 4294967303.000000")
14151                         echo >&4 "Your modfl() seems okay for large values."
14152                         ;;
14153                 *)      echo >&4 "I don't understand your modfl() at all."
14154                         d_modfl="$undef"
14155                         ;;
14156                 esac
14157                 $rm -f try.* try core core.try.*
14158         else
14159                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14160                 d_modfl="$undef"
14161         fi
14162         case "$osname:$gccversion" in
14163         aix:)   ccflags="$saveccflags" ;; # restore
14164         esac
14165         ;;
14166 esac
14167
14168 if $test "$uselongdouble" = "$define"; then
14169     message=""
14170     if $test "$d_sqrtl" != "$define"; then
14171         message="$message sqrtl"
14172     fi
14173     if $test "$d_modfl" != "$define"; then
14174         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14175             echo "You have both aintl and copysignl, so I can emulate modfl."
14176         else
14177             message="$message modfl"
14178         fi
14179     fi
14180     if $test "$d_frexpl" != "$define"; then
14181         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14182             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14183         else
14184             message="$message frexpl"
14185         fi
14186     fi
14187
14188     if $test "$message" != ""; then
14189         $cat <<EOM >&4
14190
14191 *** You requested the use of long doubles but you do not seem to have
14192 *** the following mathematical functions needed for long double support:
14193 ***    $message
14194 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14195 *** Cannot continue, aborting.
14196
14197 EOM
14198
14199         exit 1
14200     fi
14201 fi
14202
14203 : see if mprotect exists
14204 set mprotect d_mprotect
14205 eval $inlibc
14206
14207 : see if msgctl exists
14208 set msgctl d_msgctl
14209 eval $inlibc
14210
14211 : see if msgget exists
14212 set msgget d_msgget
14213 eval $inlibc
14214
14215 : see if msgsnd exists
14216 set msgsnd d_msgsnd
14217 eval $inlibc
14218
14219 : see if msgrcv exists
14220 set msgrcv d_msgrcv
14221 eval $inlibc
14222
14223 : see how much of the 'msg*(2)' library is present.
14224 h_msg=true
14225 echo " "
14226 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14227 *"$undef"*) h_msg=false;;
14228 esac
14229 case "$osname" in
14230 freebsd)
14231     case "`ipcs 2>&1`" in
14232     "SVID messages"*"not configured"*)
14233         echo "Your $osname does not have the msg*(2) configured." >&4
14234         h_msg=false
14235         val="$undef"
14236         set msgctl d_msgctl
14237         eval $setvar
14238         set msgget d_msgget
14239         eval $setvar
14240         set msgsnd d_msgsnd
14241         eval $setvar
14242         set msgrcv d_msgrcv
14243         eval $setvar
14244         ;;
14245     esac
14246     ;;
14247 esac
14248 : we could also check for sys/ipc.h ...
14249 if $h_msg && $test `./findhdr sys/msg.h`; then
14250         echo "You have the full msg*(2) library." >&4
14251         val="$define"
14252 else
14253         echo "You don't have the full msg*(2) library." >&4
14254         val="$undef"
14255 fi
14256 set d_msg
14257 eval $setvar
14258
14259
14260 echo " "
14261 echo "Checking to see if your system supports struct msghdr..." >&4
14262 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14263 eval $hasstruct
14264 case "$d_msghdr_s" in
14265 "$define")      echo "Yes, it does."   ;;
14266 *)              echo "No, it doesn't." ;;
14267 esac
14268
14269
14270 : see if msync exists
14271 set msync d_msync
14272 eval $inlibc
14273
14274 : see if munmap exists
14275 set munmap d_munmap
14276 eval $inlibc
14277
14278 : see if nice exists
14279 set nice d_nice
14280 eval $inlibc
14281
14282 : see if this is a langinfo.h system
14283 set langinfo.h i_langinfo
14284 eval $inhdr
14285
14286 : see if nl_langinfo exists
14287 set nl_langinfo d_nl_langinfo
14288 eval $inlibc
14289
14290 : check for length of character
14291 echo " "
14292 case "$charsize" in
14293 '')
14294         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14295         $cat >try.c <<EOCP
14296 #include <stdio.h>
14297 #$i_stdlib I_STDLIB
14298 #ifdef I_STDLIB
14299 #include <stdlib.h>
14300 #endif
14301 int main()
14302 {
14303     printf("%d\n", (int)sizeof(char));
14304     exit(0);
14305 }
14306 EOCP
14307         set try
14308         if eval $compile_ok; then
14309                 dflt=`$run ./try`
14310         else
14311                 dflt='1'
14312                 echo "(I can't seem to compile the test program.  Guessing...)"
14313         fi
14314         ;;
14315 *)
14316         dflt="$charsize"
14317         ;;
14318 esac
14319 rp="What is the size of a character (in bytes)?"
14320 . ./myread
14321 charsize="$ans"
14322 $rm -f try.c try
14323
14324 : check for volatile keyword
14325 echo " "
14326 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14327 $cat >try.c <<'EOCP'
14328 int main()
14329 {
14330         typedef struct _goo_struct goo_struct;
14331         goo_struct * volatile goo = ((goo_struct *)0);
14332         struct _goo_struct {
14333                 long long_int;
14334                 int reg_int;
14335                 char char_var;
14336         };
14337         typedef unsigned short foo_t;
14338         char *volatile foo;
14339         volatile int bar;
14340         volatile foo_t blech;
14341         foo = foo;
14342 }
14343 EOCP
14344 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14345         val="$define"
14346         echo "Yup, it does."
14347 else
14348         val="$undef"
14349         echo "Nope, it doesn't."
14350 fi
14351 set d_volatile
14352 eval $setvar
14353 $rm -f try.*
14354
14355
14356 echo " "
14357 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14358
14359 case "$use64bitint:$d_quad:$quadtype" in
14360 define:define:?*)
14361         ivtype="$quadtype"
14362         uvtype="$uquadtype"
14363         ivsize=8
14364         uvsize=8
14365         ;;
14366 *)      ivtype="long"
14367         uvtype="unsigned long"
14368         ivsize=$longsize
14369         uvsize=$longsize
14370         ;;
14371 esac
14372
14373 case "$uselongdouble:$d_longdbl" in
14374 define:define)
14375         nvtype="long double"
14376         nvsize=$longdblsize
14377         ;;
14378 *)      nvtype=double
14379         nvsize=$doublesize
14380         ;;
14381 esac
14382
14383 $echo "(IV will be "$ivtype", $ivsize bytes)"
14384 $echo "(UV will be "$uvtype", $uvsize bytes)"
14385 $echo "(NV will be "$nvtype", $nvsize bytes)"
14386
14387 $cat >try.c <<EOCP
14388 #$i_inttypes I_INTTYPES
14389 #ifdef I_INTTYPES
14390 #include <inttypes.h>
14391 #endif
14392 #include <stdio.h>
14393 int main() {
14394 #ifdef INT8
14395    int8_t i =  INT8_MAX;
14396   uint8_t u = UINT8_MAX;
14397   printf("int8_t\n");
14398 #endif
14399 #ifdef INT16
14400    int16_t i =  INT16_MAX;
14401   uint16_t i = UINT16_MAX;
14402   printf("int16_t\n");
14403 #endif
14404 #ifdef INT32
14405    int32_t i =  INT32_MAX;
14406   uint32_t u = UINT32_MAX;
14407   printf("int32_t\n");
14408 #endif
14409 }
14410 EOCP
14411
14412 case "$i8type" in
14413 '')     case "$charsize" in
14414         1)      i8type=char
14415                 u8type="unsigned char"
14416                 i8size=$charsize
14417                 u8size=$charsize
14418                 ;;
14419         esac
14420         ;;
14421 esac
14422 case "$i8type" in
14423 '')     set try -DINT8
14424         if eval $compile; then
14425                 case "`$run ./try`" in
14426                 int8_t) i8type=int8_t
14427                         u8type=uint8_t
14428                         i8size=1
14429                         u8size=1
14430                         ;;
14431                 esac
14432         fi
14433         ;;
14434 esac
14435 case "$i8type" in
14436 '')     if $test $charsize -ge 1; then
14437                 i8type=char
14438                 u8type="unsigned char"
14439                 i8size=$charsize
14440                 u8size=$charsize
14441         fi
14442         ;;
14443 esac
14444
14445 case "$i16type" in
14446 '')     case "$shortsize" in
14447         2)      i16type=short
14448                 u16type="unsigned short"
14449                 i16size=$shortsize
14450                 u16size=$shortsize
14451                 ;;
14452         esac
14453         ;;
14454 esac
14455 case "$i16type" in
14456 '')     set try -DINT16
14457         if eval $compile; then
14458                 case "`$run ./try`" in
14459                 int16_t)
14460                         i16type=int16_t
14461                         u16type=uint16_t
14462                         i16size=2
14463                         u16size=2
14464                         ;;
14465                 esac
14466         fi
14467         ;;
14468 esac
14469 case "$i16type" in
14470 '')     if $test $shortsize -ge 2; then
14471                 i16type=short
14472                 u16type="unsigned short"
14473                 i16size=$shortsize
14474                 u16size=$shortsize
14475         fi
14476         ;;
14477 esac
14478
14479 case "$i32type" in
14480 '')     case "$longsize" in
14481         4)      i32type=long
14482                 u32type="unsigned long"
14483                 i32size=$longsize
14484                 u32size=$longsize
14485                 ;;
14486         *)      case "$intsize" in
14487                 4)      i32type=int
14488                         u32type="unsigned int"
14489                         i32size=$intsize
14490                         u32size=$intsize
14491                         ;;
14492                 esac
14493                 ;;
14494         esac
14495         ;;
14496 esac
14497 case "$i32type" in
14498 '')     set try -DINT32
14499         if eval $compile; then
14500                 case "`$run ./try`" in
14501                 int32_t)
14502                         i32type=int32_t
14503                         u32type=uint32_t
14504                         i32size=4
14505                         u32size=4
14506                         ;;
14507                 esac
14508         fi
14509         ;;
14510 esac
14511 case "$i32type" in
14512 '')     if $test $intsize -ge 4; then
14513                 i32type=int
14514                 u32type="unsigned int"
14515                 i32size=$intsize
14516                 u32size=$intsize
14517         fi
14518         ;;
14519 esac
14520
14521 case "$i64type" in
14522 '')     case "$d_quad:$quadtype" in
14523         define:?*)
14524                 i64type="$quadtype"
14525                 u64type="$uquadtype"
14526                 i64size=8
14527                 u64size=8
14528                 ;;
14529         esac
14530         ;;
14531 esac
14532
14533 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14534 : volatile so that the compiler has to store it out to memory.
14535 if test X"$d_volatile" = X"$define"; then
14536         volatile=volatile
14537 fi
14538 $cat <<EOP >try.c
14539 #include <stdio.h>
14540 #$i_stdlib I_STDLIB
14541 #ifdef I_STDLIB
14542 #include <stdlib.h>
14543 #endif
14544 #include <sys/types.h>
14545 #include <signal.h>
14546 #ifdef SIGFPE
14547 $volatile int bletched = 0;
14548 $signal_t blech(s) int s; { bletched = 1; }
14549 #endif
14550 int main() {
14551     $uvtype u = 0;
14552     $nvtype d;
14553     int     n = 8 * $uvsize;
14554     int     i;
14555 #ifdef SIGFPE
14556     signal(SIGFPE, blech);
14557 #endif
14558
14559     for (i = 0; i < n; i++) {
14560       u = u << 1 | ($uvtype)1;
14561       d = ($nvtype)u;
14562       if (($uvtype)d != u)
14563         break;
14564       if (d <= 0)
14565         break;
14566       d = ($nvtype)(u - 1);
14567       if (($uvtype)d != (u - 1))
14568         break;
14569 #ifdef SIGFPE
14570       if (bletched) {
14571         break;
14572 #endif
14573       } 
14574     }
14575     printf("%d\n", ((i == n) ? -n : i));
14576     exit(0);
14577 }
14578 EOP
14579 set try
14580
14581 d_nv_preserves_uv="$undef"
14582 if eval $compile; then
14583         nv_preserves_uv_bits="`$run ./try`"
14584 fi
14585 case "$nv_preserves_uv_bits" in
14586 \-[1-9]*)       
14587         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14588         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14589         d_nv_preserves_uv="$define"
14590         ;;
14591 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14592         d_nv_preserves_uv="$undef" ;;
14593 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14594         nv_preserves_uv_bits="$undef" ;;
14595 esac
14596
14597 $rm -f try.* try
14598
14599
14600 : check for off64_t
14601 echo " "
14602 echo "Checking to see if you have off64_t..." >&4
14603 $cat >try.c <<EOCP
14604 #include <sys/types.h>
14605 #include <unistd.h>
14606 int main() { off64_t x = 7; }
14607 EOCP
14608 set try
14609 if eval $compile; then
14610         val="$define"
14611         echo "You have off64_t."
14612 else
14613         val="$undef"
14614         echo "You do not have off64_t."
14615         case "$lseeksize" in
14616         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14617         esac
14618 fi
14619 $rm -f try.* try
14620 set d_off64_t
14621 eval $setvar
14622
14623 : how to create joinable pthreads
14624 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14625         echo " "
14626         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14627         $cat >try.c <<'EOCP'
14628 #include <pthread.h>
14629 int main() {
14630     int detachstate = JOINABLE;
14631 }
14632 EOCP
14633         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14634         if eval $compile; then
14635                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14636                 val="$undef" # Yes, undef.
14637                 set d_old_pthread_create_joinable
14638                 eval $setvar
14639                 val=""
14640                 set old_pthread_create_joinable
14641                 eval $setvar
14642         else
14643                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14644                 if eval $compile; then
14645                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14646                         val="$define"
14647                         set d_old_pthread_create_joinable
14648                         eval $setvar
14649                         val=PTHREAD_CREATE_UNDETACHED
14650                         set old_pthread_create_joinable
14651                         eval $setvar
14652                 else            
14653                         set try -DJOINABLE=__UNDETACHED
14654                         if eval $compile; then
14655                                 echo "You seem to use __UNDETACHED." >&4
14656                                 val="$define"
14657                                 set d_old_pthread_create_joinable
14658                                 eval $setvar
14659                                 val=__UNDETACHED
14660                                 set old_pthread_create_joinable
14661                                 eval $setvar
14662                         else
14663                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14664                                 val="$define"
14665                                 set d_old_pthread_create_joinable
14666                                 eval $setvar
14667                                 val=0
14668                                 set old_pthread_create_joinable
14669                                 eval $setvar
14670                         fi
14671                 fi
14672         fi
14673         $rm -f try try.*
14674 else
14675     d_old_pthread_create_joinable="$undef"
14676     old_pthread_create_joinable=""
14677 fi
14678
14679 : see if pause exists
14680 set pause d_pause
14681 eval $inlibc
14682
14683 : see if pipe exists
14684 set pipe d_pipe
14685 eval $inlibc
14686
14687 : see if poll exists
14688 set poll d_poll
14689 eval $inlibc
14690
14691 : see if readlink exists
14692 set readlink d_readlink
14693 eval $inlibc
14694
14695 echo " "
14696 procselfexe=''
14697 val="$undef"
14698 case "$d_readlink" in
14699 "$define")
14700         if $issymlink /proc/self/exe ; then
14701                 $ls -l /proc/self/exe > reflect
14702                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14703                         echo "You have Linux-like /proc/self/exe."
14704                         procselfexe='"/proc/self/exe"'
14705                         val="$define"
14706                 fi
14707         fi
14708         if $issymlink /proc/curproc/file ; then
14709                 $ls -l /proc/curproc/file > reflect
14710                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14711                         echo "You have BSD-like /proc/curproc/file."
14712                         procselfexe='"/proc/curproc/file"'
14713                         val="$define"
14714                 fi
14715         fi
14716         ;;
14717 esac
14718 $rm -f reflect
14719 set d_procselfexe
14720 eval $setvar
14721
14722 : see whether the pthread_atfork exists
14723 $cat >try.c <<EOP
14724 #include <pthread.h>
14725 #include <stdio.h>
14726 int main() {
14727 #ifdef  PTHREAD_ATFORK
14728         pthread_atfork(NULL,NULL,NULL);
14729 #endif
14730 }
14731 EOP
14732
14733 : see if pthread_atfork exists
14734 set try -DPTHREAD_ATFORK
14735 if eval $compile; then
14736     val="$define"
14737 else
14738     val="$undef"
14739 fi
14740 case "$usethreads" in
14741 $define)
14742         case "$val" in
14743         $define) echo 'pthread_atfork found.' >&4        ;;
14744         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14745         esac
14746 esac
14747 set d_pthread_atfork
14748 eval $setvar
14749
14750 : see if pthread_attr_setscope exists
14751 set pthread_attr_setscope d_pthread_attr_setscope
14752 eval $inlibc
14753
14754
14755 : see whether the various POSIXish _yields exist
14756 $cat >try.c <<EOP
14757 #include <pthread.h>
14758 #include <stdio.h>
14759 int main() {
14760 #ifdef SCHED_YIELD
14761         sched_yield();
14762 #else
14763 #ifdef PTHREAD_YIELD
14764         pthread_yield();
14765 #else
14766 #ifdef PTHREAD_YIELD_NULL
14767         pthread_yield(NULL);
14768 #endif
14769 #endif
14770 #endif
14771 }
14772 EOP
14773 : see if sched_yield exists
14774 set try -DSCHED_YIELD
14775 if eval $compile; then
14776     val="$define"
14777     sched_yield='sched_yield()'
14778 else
14779     val="$undef"
14780 fi
14781 case "$usethreads" in
14782 $define)
14783         case "$val" in
14784         $define) echo 'sched_yield() found.' >&4        ;;
14785         *)       echo 'sched_yield() NOT found.' >&4    ;;
14786         esac
14787 esac
14788 set d_sched_yield
14789 eval $setvar
14790
14791 : see if pthread_yield exists
14792 set try -DPTHREAD_YIELD
14793 if eval $compile; then
14794     val="$define"
14795     case "$sched_yield" in
14796     '') sched_yield='pthread_yield()' ;;
14797     esac
14798 else
14799     set try -DPTHREAD_YIELD_NULL
14800     if eval $compile; then
14801         val="$define"
14802         case "$sched_yield" in
14803         '') sched_yield='pthread_yield(NULL)' ;;
14804         esac
14805     else
14806         val="$undef"
14807     fi
14808 fi
14809 case "$usethreads" in
14810 $define)
14811         case "$val" in
14812         $define) echo 'pthread_yield() found.' >&4      ;;
14813         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14814         esac
14815         ;;
14816 esac
14817 set d_pthread_yield
14818 eval $setvar
14819
14820 case "$sched_yield" in
14821 '') sched_yield=undef ;;
14822 esac
14823
14824 $rm -f try try.*
14825
14826 : see if random_r exists
14827 set random_r d_random_r
14828 eval $inlibc
14829 case "$d_random_r" in
14830 "$define")
14831         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14832         case "$d_random_r_proto:$usethreads" in
14833         ":define")      d_random_r_proto=define
14834                 set d_random_r_proto random_r $hdrs
14835                 eval $hasproto ;;
14836         *)      ;;
14837         esac
14838         case "$d_random_r_proto" in
14839         define)
14840         case "$random_r_proto" in
14841         ''|0) try='int random_r(int*, struct random_data*);'
14842         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14843         esac
14844         case "$random_r_proto" in
14845         ''|0) try='int random_r(long*, struct random_data*);'
14846         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14847         esac
14848         case "$random_r_proto" in
14849         ''|0) try='int random_r(struct random_data*, int32_t*);'
14850         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14851         esac
14852         case "$random_r_proto" in
14853         ''|0)   d_random_r=undef
14854                 random_r_proto=0
14855                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14856         * )     case "$random_r_proto" in
14857                 REENTRANT_PROTO*) ;;
14858                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14859                 esac
14860                 echo "Prototype: $try" ;;
14861         esac
14862         ;;
14863         *)      case "$usethreads" in
14864                 define) echo "random_r has no prototype, not using it." >&4 ;;
14865                 esac
14866                 d_random_r=undef
14867                 random_r_proto=0
14868                 ;;
14869         esac
14870         ;;
14871 *)      random_r_proto=0
14872         ;;
14873 esac
14874
14875 : see if readdir and friends exist
14876 set readdir d_readdir
14877 eval $inlibc
14878 set seekdir d_seekdir
14879 eval $inlibc
14880 set telldir d_telldir
14881 eval $inlibc
14882 set rewinddir d_rewinddir
14883 eval $inlibc
14884
14885 : see if readdir64_r exists
14886 set readdir64_r d_readdir64_r
14887 eval $inlibc
14888 case "$d_readdir64_r" in
14889 "$define")
14890         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14891         case "$d_readdir64_r_proto:$usethreads" in
14892         ":define")      d_readdir64_r_proto=define
14893                 set d_readdir64_r_proto readdir64_r $hdrs
14894                 eval $hasproto ;;
14895         *)      ;;
14896         esac
14897         case "$d_readdir64_r_proto" in
14898         define)
14899         case "$readdir64_r_proto" in
14900         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14901         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14902         esac
14903         case "$readdir64_r_proto" in
14904         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14905         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14906         esac
14907         case "$readdir64_r_proto" in
14908         ''|0)   d_readdir64_r=undef
14909                 readdir64_r_proto=0
14910                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14911         * )     case "$readdir64_r_proto" in
14912                 REENTRANT_PROTO*) ;;
14913                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14914                 esac
14915                 echo "Prototype: $try" ;;
14916         esac
14917         ;;
14918         *)      case "$usethreads" in
14919                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14920                 esac
14921                 d_readdir64_r=undef
14922                 readdir64_r_proto=0
14923                 ;;
14924         esac
14925         ;;
14926 *)      readdir64_r_proto=0
14927         ;;
14928 esac
14929
14930 : see if readdir_r exists
14931 set readdir_r d_readdir_r
14932 eval $inlibc
14933 case "$d_readdir_r" in
14934 "$define")
14935         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14936         case "$d_readdir_r_proto:$usethreads" in
14937         ":define")      d_readdir_r_proto=define
14938                 set d_readdir_r_proto readdir_r $hdrs
14939                 eval $hasproto ;;
14940         *)      ;;
14941         esac
14942         case "$d_readdir_r_proto" in
14943         define)
14944         case "$readdir_r_proto" in
14945         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14946         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14947         esac
14948         case "$readdir_r_proto" in
14949         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14950         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14951         esac
14952         case "$readdir_r_proto" in
14953         ''|0)   d_readdir_r=undef
14954                 readdir_r_proto=0
14955                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14956         * )     case "$readdir_r_proto" in
14957                 REENTRANT_PROTO*) ;;
14958                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14959                 esac
14960                 echo "Prototype: $try" ;;
14961         esac
14962         ;;
14963         *)      case "$usethreads" in
14964                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14965                 esac
14966                 d_readdir_r=undef
14967                 readdir_r_proto=0
14968                 ;;
14969         esac
14970         ;;
14971 *)      readdir_r_proto=0
14972         ;;
14973 esac
14974
14975 : see if readv exists
14976 set readv d_readv
14977 eval $inlibc
14978
14979 : see if recvmsg exists
14980 set recvmsg d_recvmsg
14981 eval $inlibc
14982
14983 : see if rename exists
14984 set rename d_rename
14985 eval $inlibc
14986
14987 : see if rmdir exists
14988 set rmdir d_rmdir
14989 eval $inlibc
14990
14991 : see if memory.h is available.
14992 val=''
14993 set memory.h val
14994 eval $inhdr
14995
14996 : See if it conflicts with string.h
14997 case "$val" in
14998 $define)
14999         case "$strings" in
15000         '') ;;
15001         *)
15002                 $cppstdin $cppflags $cppminus < $strings > mem.h
15003                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15004                         echo " "
15005                         echo "We won't be including <memory.h>."
15006                         val="$undef"
15007                 fi
15008                 $rm -f mem.h
15009                 ;;
15010         esac
15011 esac
15012 set i_memory
15013 eval $setvar
15014
15015 : can bcopy handle overlapping blocks?
15016 echo " "
15017 val="$undef"
15018 case "$d_memmove" in
15019 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15020 *)      case "$d_bcopy" in
15021         "$define")
15022                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15023                 $cat >try.c <<EOCP
15024 #$i_memory I_MEMORY
15025 #$i_stdlib I_STDLIB
15026 #$i_string I_STRING
15027 #$i_unistd I_UNISTD
15028 EOCP
15029         $cat >>try.c <<'EOCP'
15030 #include <stdio.h>
15031 #ifdef I_MEMORY
15032 #  include <memory.h>
15033 #endif
15034 #ifdef I_STDLIB
15035 #  include <stdlib.h>
15036 #endif
15037 #ifdef I_STRING
15038 #  include <string.h>
15039 #else
15040 #  include <strings.h>
15041 #endif
15042 #ifdef I_UNISTD
15043 #  include <unistd.h>  /* Needed for NetBSD */
15044 #endif
15045 int main()
15046 {
15047 char buf[128], abc[128];
15048 char *b;
15049 int len;
15050 int off;
15051 int align;
15052
15053 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15054    try to store the string in read-only memory. */
15055 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15056
15057 for (align = 7; align >= 0; align--) {
15058         for (len = 36; len; len--) {
15059                 b = buf+align;
15060                 bcopy(abc, b, len);
15061                 for (off = 1; off <= len; off++) {
15062                         bcopy(b, b+off, len);
15063                         bcopy(b+off, b, len);
15064                         if (bcmp(b, abc, len))
15065                                 exit(1);
15066                 }
15067         }
15068 }
15069 exit(0);
15070 }
15071 EOCP
15072                 set try
15073                 if eval $compile_ok; then
15074                         if ./try 2>/dev/null; then
15075                                 echo "Yes, it can."
15076                                 val="$define"
15077                         else
15078                                 echo "It can't, sorry."
15079                         fi
15080                 else
15081                         echo "(I can't compile the test program, so we'll assume not...)"
15082                 fi
15083                 ;;
15084         esac
15085         $rm -f try.* try core
15086         ;;
15087 esac
15088 set d_safebcpy
15089 eval $setvar
15090
15091 : can memcpy handle overlapping blocks?
15092 echo " "
15093 val="$undef"
15094 case "$d_memmove" in
15095 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15096 *)      case "$d_memcpy" in
15097         "$define")
15098                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15099                 $cat >try.c <<EOCP
15100 #$i_memory I_MEMORY
15101 #$i_stdlib I_STDLIB
15102 #$i_string I_STRING
15103 #$i_unistd I_UNISTD
15104 EOCP
15105         $cat >>try.c <<'EOCP'
15106 #include <stdio.h>
15107 #ifdef I_MEMORY
15108 #  include <memory.h>
15109 #endif
15110 #ifdef I_STDLIB
15111 #  include <stdlib.h>
15112 #endif
15113 #ifdef I_STRING
15114 #  include <string.h>
15115 #else
15116 #  include <strings.h>
15117 #endif
15118 #ifdef I_UNISTD
15119 #  include <unistd.h>  /* Needed for NetBSD */
15120 #endif
15121 int main()
15122 {
15123 char buf[128], abc[128];
15124 char *b;
15125 int len;
15126 int off;
15127 int align;
15128
15129 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15130    try to store the string in read-only memory. */
15131 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15132
15133 for (align = 7; align >= 0; align--) {
15134         for (len = 36; len; len--) {
15135                 b = buf+align;
15136                 memcpy(b, abc, len);
15137                 for (off = 1; off <= len; off++) {
15138                         memcpy(b+off, b, len);
15139                         memcpy(b, b+off, len);
15140                         if (memcmp(b, abc, len))
15141                                 exit(1);
15142                 }
15143         }
15144 }
15145 exit(0);
15146 }
15147 EOCP
15148                 set try
15149                 if eval $compile_ok; then
15150                         if ./try 2>/dev/null; then
15151                                 echo "Yes, it can."
15152                                 val="$define"
15153                         else
15154                                 echo "It can't, sorry."
15155                         fi
15156                 else
15157                         echo "(I can't compile the test program, so we'll assume not...)"
15158                 fi
15159                 ;;
15160         esac
15161         $rm -f try.* try core
15162         ;;
15163 esac
15164 set d_safemcpy
15165 eval $setvar
15166
15167 : can memcmp be trusted to compare relative magnitude?
15168 val="$undef"
15169 case "$d_memcmp" in
15170 "$define")
15171         echo " "
15172         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15173         $cat >try.c <<EOCP
15174 #$i_memory I_MEMORY
15175 #$i_stdlib I_STDLIB
15176 #$i_string I_STRING
15177 #$i_unistd I_UNISTD
15178 EOCP
15179         $cat >>try.c <<'EOCP'
15180 #include <stdio.h>
15181 #ifdef I_MEMORY
15182 #  include <memory.h>
15183 #endif
15184 #ifdef I_STDLIB
15185 #  include <stdlib.h>
15186 #endif
15187 #ifdef I_STRING
15188 #  include <string.h>
15189 #else
15190 #  include <strings.h>
15191 #endif
15192 #ifdef I_UNISTD
15193 #  include <unistd.h>  /* Needed for NetBSD */
15194 #endif
15195 int main()
15196 {
15197 char a = -1;
15198 char b = 0;
15199 if ((a < b) && memcmp(&a, &b, 1) < 0)
15200         exit(1);
15201 exit(0);
15202 }
15203 EOCP
15204         set try
15205         if eval $compile_ok; then
15206                 if $run ./try 2>/dev/null; then
15207                         echo "Yes, it can."
15208                         val="$define"
15209                 else
15210                         echo "No, it can't (it uses signed chars)."
15211                 fi
15212         else
15213                 echo "(I can't compile the test program, so we'll assume not...)"
15214         fi
15215         ;;
15216 esac
15217 $rm -f try.* try core
15218 set d_sanemcmp
15219 eval $setvar
15220
15221 : see if prototype for sbrk is available
15222 echo " "
15223 set d_sbrkproto sbrk $i_unistd unistd.h
15224 eval $hasproto
15225
15226 : see if select exists
15227 set select d_select
15228 eval $inlibc
15229
15230 : see if semctl exists
15231 set semctl d_semctl
15232 eval $inlibc
15233
15234 : see if semget exists
15235 set semget d_semget
15236 eval $inlibc
15237
15238 : see if semop exists
15239 set semop d_semop
15240 eval $inlibc
15241
15242 : see how much of the 'sem*(2)' library is present.
15243 h_sem=true
15244 echo " "
15245 case "$d_semctl$d_semget$d_semop" in
15246 *"$undef"*) h_sem=false;;
15247 esac
15248 case "$osname" in
15249 freebsd)
15250     case "`ipcs 2>&1`" in
15251     "SVID messages"*"not configured"*)
15252         echo "Your $osname does not have the sem*(2) configured." >&4
15253         h_sem=false
15254         val="$undef"
15255         set semctl d_semctl
15256         eval $setvar
15257         set semget d_semget
15258         eval $setvar
15259         set semop d_semop
15260         eval $setvar
15261         ;;
15262     esac
15263     ;;
15264 esac
15265 : we could also check for sys/ipc.h ...
15266 if $h_sem && $test `./findhdr sys/sem.h`; then
15267         echo "You have the full sem*(2) library." >&4
15268         val="$define"
15269 else
15270         echo "You don't have the full sem*(2) library." >&4
15271         val="$undef"
15272 fi
15273 set d_sem
15274 eval $setvar
15275
15276 : see whether sys/sem.h defines union semun
15277 echo " "
15278 $cat > try.c <<'END'
15279 #include <sys/types.h>
15280 #include <sys/ipc.h>
15281 #include <sys/sem.h>
15282 int main () { union semun semun; semun.buf = 0; }
15283 END
15284 set try
15285 if eval $compile; then
15286     echo "You have union semun in <sys/sem.h>." >&4
15287     val="$define"
15288 else
15289     echo "You do not have union semun in <sys/sem.h>." >&4
15290     val="$undef"
15291 fi
15292 $rm -f try try.c
15293 set d_union_semun
15294 eval $setvar
15295
15296 : see how to do semctl IPC_STAT
15297 case "$d_sem" in
15298 $define)
15299     echo " "
15300     $cat > try.h <<END
15301 #ifndef S_IRUSR
15302 #   ifdef S_IREAD
15303 #       define S_IRUSR S_IREAD
15304 #       define S_IWUSR S_IWRITE
15305 #       define S_IXUSR S_IEXEC
15306 #   else
15307 #       define S_IRUSR 0400
15308 #       define S_IWUSR 0200
15309 #       define S_IXUSR 0100
15310 #   endif
15311 #   define S_IRGRP (S_IRUSR>>3)
15312 #   define S_IWGRP (S_IWUSR>>3)
15313 #   define S_IXGRP (S_IXUSR>>3)
15314 #   define S_IROTH (S_IRUSR>>6)
15315 #   define S_IWOTH (S_IWUSR>>6)
15316 #   define S_IXOTH (S_IXUSR>>6)
15317 #endif
15318 #ifndef S_IRWXU
15319 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15320 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15321 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15322 #endif
15323 END
15324     : see whether semctl IPC_STAT can use union semun
15325     val="$undef"
15326     case "$d_semctl_semun" in
15327     '')
15328       $cat > try.c <<END
15329 #include <sys/types.h>
15330 #include <sys/ipc.h>
15331 #include <sys/sem.h>
15332 #include <sys/stat.h>
15333 #include <stdio.h>
15334 #include <errno.h>
15335 #include "try.h"
15336 #ifndef errno
15337 extern int errno;
15338 #endif
15339 #$d_union_semun HAS_UNION_SEMUN
15340 int main() {
15341     union semun
15342 #ifndef HAS_UNION_SEMUN
15343     {
15344         int val;
15345         struct semid_ds *buf;
15346         unsigned short *array;
15347     }
15348 #endif
15349     arg;
15350     int sem, st;
15351
15352 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15353     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15354     if (sem > -1) {
15355         struct semid_ds argbuf;
15356         arg.buf = &argbuf;
15357 #       ifdef IPC_STAT
15358         st = semctl(sem, 0, IPC_STAT, arg);
15359         if (st == 0)
15360             printf("semun\n");
15361         else
15362 #       endif /* IPC_STAT */
15363             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15364 #       ifdef IPC_RMID
15365         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15366 #       endif /* IPC_RMID */
15367             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15368     } else
15369 #endif /* IPC_PRIVATE && ... */
15370         printf("semget failed: errno = %d\n", errno);
15371   return 0;
15372 }
15373 END
15374       set try
15375       if eval $compile; then
15376           xxx=`$run ./try`
15377           case "$xxx" in
15378           semun) val="$define" ;;
15379           esac
15380       fi
15381       $rm -f try try.c
15382       ;;
15383     esac
15384     set d_semctl_semun
15385     eval $setvar
15386     case "$d_semctl_semun" in
15387     $define)
15388         echo "You can use union semun for semctl IPC_STAT." >&4
15389         also='also'
15390         ;;
15391     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15392         also=''
15393         ;;
15394     esac
15395
15396     : see whether semctl IPC_STAT can use struct semid_ds pointer
15397     val="$undef"
15398     case "$d_semctl_semid_ds" in
15399     '')
15400       $cat > try.c <<'END'
15401 #include <sys/types.h>
15402 #include <sys/ipc.h>
15403 #include <sys/sem.h>
15404 #include <sys/stat.h>
15405 #include "try.h"
15406 #include <stdio.h>
15407 #include <errno.h>
15408 #ifndef errno
15409 extern int errno;
15410 #endif
15411 int main() {
15412     struct semid_ds arg;
15413     int sem, st;
15414
15415 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15416     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15417     if (sem > -1) {
15418 #       ifdef IPC_STAT
15419         st = semctl(sem, 0, IPC_STAT, &arg);
15420         if (st == 0)
15421             printf("semid_ds\n");
15422         else
15423 #       endif /* IPC_STAT */
15424             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15425 #       ifdef IPC_RMID
15426         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15427 #       endif /* IPC_RMID */
15428             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15429     } else
15430 #endif /* IPC_PRIVATE && ... */
15431         printf("semget failed: errno = %d\n", errno);
15432
15433     return 0;
15434 }
15435 END
15436       set try
15437       if eval $compile; then
15438           xxx=`$run ./try`
15439           case "$xxx" in
15440           semid_ds) val="$define" ;;
15441           esac
15442       fi
15443       $rm -f try try.c
15444       ;;
15445     esac
15446     set d_semctl_semid_ds
15447     eval $setvar
15448     case "$d_semctl_semid_ds" in
15449     $define)
15450         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15451         ;;
15452     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15453         ;;
15454     esac
15455     $rm -f try.h
15456     ;;
15457 *)  val="$undef"
15458
15459     # We do not have the full sem*(2) library, so assume we can not
15460     # use either.
15461
15462     set d_semctl_semun
15463     eval $setvar
15464
15465     set d_semctl_semid_ds
15466     eval $setvar
15467     ;;
15468 esac
15469
15470 : see if sendmsg exists
15471 set sendmsg d_sendmsg
15472 eval $inlibc
15473
15474 : see if setegid exists
15475 set setegid d_setegid
15476 eval $inlibc
15477
15478 : see if seteuid exists
15479 set seteuid d_seteuid
15480 eval $inlibc
15481
15482 : see if setgrent exists
15483 set setgrent d_setgrent
15484 eval $inlibc
15485
15486 : see if setgrent_r exists
15487 set setgrent_r d_setgrent_r
15488 eval $inlibc
15489 case "$d_setgrent_r" in
15490 "$define")
15491         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15492         case "$d_setgrent_r_proto:$usethreads" in
15493         ":define")      d_setgrent_r_proto=define
15494                 set d_setgrent_r_proto setgrent_r $hdrs
15495                 eval $hasproto ;;
15496         *)      ;;
15497         esac
15498         case "$d_setgrent_r_proto" in
15499         define)
15500         case "$setgrent_r_proto" in
15501         ''|0) try='int setgrent_r(FILE**);'
15502         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15503         esac
15504         case "$setgrent_r_proto" in
15505         ''|0) try='void setgrent_r(FILE**);'
15506         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15507         esac
15508         case "$setgrent_r_proto" in
15509         ''|0)   d_setgrent_r=undef
15510                 setgrent_r_proto=0
15511                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15512         * )     case "$setgrent_r_proto" in
15513                 REENTRANT_PROTO*) ;;
15514                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15515                 esac
15516                 echo "Prototype: $try" ;;
15517         esac
15518         ;;
15519         *)      case "$usethreads" in
15520                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15521                 esac
15522                 d_setgrent_r=undef
15523                 setgrent_r_proto=0
15524                 ;;
15525         esac
15526         ;;
15527 *)      setgrent_r_proto=0
15528         ;;
15529 esac
15530
15531 : see if sethostent exists
15532 set sethostent d_sethent
15533 eval $inlibc
15534
15535 : see if sethostent_r exists
15536 set sethostent_r d_sethostent_r
15537 eval $inlibc
15538 case "$d_sethostent_r" in
15539 "$define")
15540         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15541         case "$d_sethostent_r_proto:$usethreads" in
15542         ":define")      d_sethostent_r_proto=define
15543                 set d_sethostent_r_proto sethostent_r $hdrs
15544                 eval $hasproto ;;
15545         *)      ;;
15546         esac
15547         case "$d_sethostent_r_proto" in
15548         define)
15549         case "$sethostent_r_proto" in
15550         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15551         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15552         esac
15553         case "$sethostent_r_proto" in
15554         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15555         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15556         esac
15557         case "$sethostent_r_proto" in
15558         ''|0)   d_sethostent_r=undef
15559                 sethostent_r_proto=0
15560                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15561         * )     case "$sethostent_r_proto" in
15562                 REENTRANT_PROTO*) ;;
15563                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15564                 esac
15565                 echo "Prototype: $try" ;;
15566         esac
15567         ;;
15568         *)      case "$usethreads" in
15569                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15570                 esac
15571                 d_sethostent_r=undef
15572                 sethostent_r_proto=0
15573                 ;;
15574         esac
15575         ;;
15576 *)      sethostent_r_proto=0
15577         ;;
15578 esac
15579
15580 : see if setitimer exists
15581 set setitimer d_setitimer
15582 eval $inlibc
15583
15584 : see if setlinebuf exists
15585 set setlinebuf d_setlinebuf
15586 eval $inlibc
15587
15588 : see if setlocale exists
15589 set setlocale d_setlocale
15590 eval $inlibc
15591
15592 : see if locale.h is available
15593 set locale.h i_locale
15594 eval $inhdr
15595
15596 : see if setlocale_r exists
15597 set setlocale_r d_setlocale_r
15598 eval $inlibc
15599 case "$d_setlocale_r" in
15600 "$define")
15601         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15602         case "$d_setlocale_r_proto:$usethreads" in
15603         ":define")      d_setlocale_r_proto=define
15604                 set d_setlocale_r_proto setlocale_r $hdrs
15605                 eval $hasproto ;;
15606         *)      ;;
15607         esac
15608         case "$d_setlocale_r_proto" in
15609         define)
15610         case "$setlocale_r_proto" in
15611         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15612         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15613         esac
15614         case "$setlocale_r_proto" in
15615         ''|0)   d_setlocale_r=undef
15616                 setlocale_r_proto=0
15617                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15618         * )     case "$setlocale_r_proto" in
15619                 REENTRANT_PROTO*) ;;
15620                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15621                 esac
15622                 echo "Prototype: $try" ;;
15623         esac
15624         ;;
15625         *)      case "$usethreads" in
15626                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15627                 esac
15628                 d_setlocale_r=undef
15629                 setlocale_r_proto=0
15630                 ;;
15631         esac
15632         ;;
15633 *)      setlocale_r_proto=0
15634         ;;
15635 esac
15636
15637 : see if setnetent exists
15638 set setnetent d_setnent
15639 eval $inlibc
15640
15641 : see if setnetent_r exists
15642 set setnetent_r d_setnetent_r
15643 eval $inlibc
15644 case "$d_setnetent_r" in
15645 "$define")
15646         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15647         case "$d_setnetent_r_proto:$usethreads" in
15648         ":define")      d_setnetent_r_proto=define
15649                 set d_setnetent_r_proto setnetent_r $hdrs
15650                 eval $hasproto ;;
15651         *)      ;;
15652         esac
15653         case "$d_setnetent_r_proto" in
15654         define)
15655         case "$setnetent_r_proto" in
15656         ''|0) try='int setnetent_r(int, struct netent_data*);'
15657         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15658         esac
15659         case "$setnetent_r_proto" in
15660         ''|0) try='void setnetent_r(int, struct netent_data*);'
15661         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15662         esac
15663         case "$setnetent_r_proto" in
15664         ''|0)   d_setnetent_r=undef
15665                 setnetent_r_proto=0
15666                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15667         * )     case "$setnetent_r_proto" in
15668                 REENTRANT_PROTO*) ;;
15669                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15670                 esac
15671                 echo "Prototype: $try" ;;
15672         esac
15673         ;;
15674         *)      case "$usethreads" in
15675                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15676                 esac
15677                 d_setnetent_r=undef
15678                 setnetent_r_proto=0
15679                 ;;
15680         esac
15681         ;;
15682 *)      setnetent_r_proto=0
15683         ;;
15684 esac
15685
15686 : see if setprotoent exists
15687 set setprotoent d_setpent
15688 eval $inlibc
15689
15690 : see if setpgid exists
15691 set setpgid d_setpgid
15692 eval $inlibc
15693
15694 : see if setpgrp2 exists
15695 set setpgrp2 d_setpgrp2
15696 eval $inlibc
15697
15698 : see if setpriority exists
15699 set setpriority d_setprior
15700 eval $inlibc
15701
15702 : see if setproctitle exists
15703 set setproctitle d_setproctitle
15704 eval $inlibc
15705
15706 : see if setprotoent_r exists
15707 set setprotoent_r d_setprotoent_r
15708 eval $inlibc
15709 case "$d_setprotoent_r" in
15710 "$define")
15711         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15712         case "$d_setprotoent_r_proto:$usethreads" in
15713         ":define")      d_setprotoent_r_proto=define
15714                 set d_setprotoent_r_proto setprotoent_r $hdrs
15715                 eval $hasproto ;;
15716         *)      ;;
15717         esac
15718         case "$d_setprotoent_r_proto" in
15719         define)
15720         case "$setprotoent_r_proto" in
15721         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15722         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15723         esac
15724         case "$setprotoent_r_proto" in
15725         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15726         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15727         esac
15728         case "$setprotoent_r_proto" in
15729         ''|0)   d_setprotoent_r=undef
15730                 setprotoent_r_proto=0
15731                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15732         * )     case "$setprotoent_r_proto" in
15733                 REENTRANT_PROTO*) ;;
15734                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15735                 esac
15736                 echo "Prototype: $try" ;;
15737         esac
15738         ;;
15739         *)      case "$usethreads" in
15740                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15741                 esac
15742                 d_setprotoent_r=undef
15743                 setprotoent_r_proto=0
15744                 ;;
15745         esac
15746         ;;
15747 *)      setprotoent_r_proto=0
15748         ;;
15749 esac
15750
15751 : see if setpwent exists
15752 set setpwent d_setpwent
15753 eval $inlibc
15754
15755 : see if setpwent_r exists
15756 set setpwent_r d_setpwent_r
15757 eval $inlibc
15758 case "$d_setpwent_r" in
15759 "$define")
15760         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15761         case "$d_setpwent_r_proto:$usethreads" in
15762         ":define")      d_setpwent_r_proto=define
15763                 set d_setpwent_r_proto setpwent_r $hdrs
15764                 eval $hasproto ;;
15765         *)      ;;
15766         esac
15767         case "$d_setpwent_r_proto" in
15768         define)
15769         case "$setpwent_r_proto" in
15770         ''|0) try='int setpwent_r(FILE**);'
15771         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15772         esac
15773         case "$setpwent_r_proto" in
15774         ''|0) try='void setpwent_r(FILE**);'
15775         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15776         esac
15777         case "$setpwent_r_proto" in
15778         ''|0)   d_setpwent_r=undef
15779                 setpwent_r_proto=0
15780                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15781         * )     case "$setpwent_r_proto" in
15782                 REENTRANT_PROTO*) ;;
15783                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15784                 esac
15785                 echo "Prototype: $try" ;;
15786         esac
15787         ;;
15788         *)      case "$usethreads" in
15789                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15790                 esac
15791                 d_setpwent_r=undef
15792                 setpwent_r_proto=0
15793                 ;;
15794         esac
15795         ;;
15796 *)      setpwent_r_proto=0
15797         ;;
15798 esac
15799
15800 : see if setregid exists
15801 set setregid d_setregid
15802 eval $inlibc
15803 set setresgid d_setresgid
15804 eval $inlibc
15805
15806 : see if setreuid exists
15807 set setreuid d_setreuid
15808 eval $inlibc
15809 set setresuid d_setresuid
15810 eval $inlibc
15811
15812 : see if setrgid exists
15813 set setrgid d_setrgid
15814 eval $inlibc
15815
15816 : see if setruid exists
15817 set setruid d_setruid
15818 eval $inlibc
15819
15820 : see if setservent exists
15821 set setservent d_setsent
15822 eval $inlibc
15823
15824 : see if setservent_r exists
15825 set setservent_r d_setservent_r
15826 eval $inlibc
15827 case "$d_setservent_r" in
15828 "$define")
15829         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15830         case "$d_setservent_r_proto:$usethreads" in
15831         ":define")      d_setservent_r_proto=define
15832                 set d_setservent_r_proto setservent_r $hdrs
15833                 eval $hasproto ;;
15834         *)      ;;
15835         esac
15836         case "$d_setservent_r_proto" in
15837         define)
15838         case "$setservent_r_proto" in
15839         ''|0) try='int setservent_r(int, struct servent_data*);'
15840         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15841         esac
15842         case "$setservent_r_proto" in
15843         ''|0) try='void setservent_r(int, struct servent_data*);'
15844         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15845         esac
15846         case "$setservent_r_proto" in
15847         ''|0)   d_setservent_r=undef
15848                 setservent_r_proto=0
15849                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15850         * )     case "$setservent_r_proto" in
15851                 REENTRANT_PROTO*) ;;
15852                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15853                 esac
15854                 echo "Prototype: $try" ;;
15855         esac
15856         ;;
15857         *)      case "$usethreads" in
15858                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15859                 esac
15860                 d_setservent_r=undef
15861                 setservent_r_proto=0
15862                 ;;
15863         esac
15864         ;;
15865 *)      setservent_r_proto=0
15866         ;;
15867 esac
15868
15869 : see if setsid exists
15870 set setsid d_setsid
15871 eval $inlibc
15872
15873 : see if setvbuf exists
15874 set setvbuf d_setvbuf
15875 eval $inlibc
15876
15877 : see if sfio.h is available
15878 set sfio.h i_sfio
15879 eval $inhdr
15880
15881
15882 : see if sfio library is available
15883 case "$i_sfio" in
15884 $define)
15885         val=''
15886         set sfreserve val
15887         eval $inlibc
15888         ;;
15889 *)
15890         val="$undef"
15891         ;;
15892 esac
15893 : Ok, but do we want to use it.
15894 case "$val" in
15895 $define)
15896         case "$usesfio" in
15897         true|$define|[yY]*) dflt='y';;
15898         *) dflt='n';;
15899         esac
15900         echo "$package can use the sfio library, but it is experimental."
15901         case "$useperlio" in
15902         "$undef")
15903             echo "For sfio also the PerlIO abstraction layer is needed."
15904             echo "Earlier you said you wouldn't want that."
15905             ;;
15906         esac
15907         rp="You seem to have sfio available, do you want to try using it?"
15908         . ./myread
15909         case "$ans" in
15910         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15911                 useperlio="$define"
15912                 val="$define"
15913                 ;;
15914         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15915                 val="$undef"
15916                 ;;
15917         esac
15918         ;;
15919 *)      case "$usesfio" in
15920         true|$define|[yY]*)
15921                 echo "Sorry, cannot find sfio on this machine." >&4
15922                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15923                 val="$undef"
15924                 ;;
15925         esac
15926         ;;
15927 esac
15928 set d_sfio
15929 eval $setvar
15930 case "$d_sfio" in
15931 $define) usesfio='true';;
15932 *) usesfio='false';;
15933 esac
15934 case "$d_sfio" in
15935 $define) ;;
15936 *)      : Remove sfio from list of libraries to use
15937         case "$libs" in
15938         *-lsfio*)
15939                 echo "Removing unneeded -lsfio from library list" >&4
15940                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15941                 shift
15942                 libs="$*"
15943                 echo "libs = $libs" >&4
15944                 ;;
15945         esac
15946 ;;
15947 esac
15948
15949
15950 : see if shmctl exists
15951 set shmctl d_shmctl
15952 eval $inlibc
15953
15954 : see if shmget exists
15955 set shmget d_shmget
15956 eval $inlibc
15957
15958 : see if shmat exists
15959 set shmat d_shmat
15960 eval $inlibc
15961 : see what shmat returns
15962 case "$d_shmat" in
15963 "$define")
15964         $cat >shmat.c <<'END'
15965 #include <sys/shm.h>
15966 void *shmat();
15967 END
15968         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15969                 shmattype='void *'
15970         else
15971                 shmattype='char *'
15972         fi
15973         echo "and it returns ($shmattype)." >&4
15974         : see if a prototype for shmat is available
15975         xxx=`./findhdr sys/shm.h`
15976         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15977         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15978                 val="$define"
15979         else
15980                 val="$undef"
15981         fi
15982         $rm -f shmat.[co]
15983         ;;
15984 *)
15985         val="$undef"
15986         ;;
15987 esac
15988 set d_shmatprototype
15989 eval $setvar
15990
15991 : see if shmdt exists
15992 set shmdt d_shmdt
15993 eval $inlibc
15994
15995 : see how much of the 'shm*(2)' library is present.
15996 h_shm=true
15997 echo " "
15998 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15999 *"$undef"*) h_shm=false;;
16000 esac
16001 case "$osname" in
16002 freebsd)
16003     case "`ipcs 2>&1`" in
16004     "SVID shared memory"*"not configured"*)
16005         echo "Your $osname does not have the shm*(2) configured." >&4
16006         h_shm=false
16007         val="$undef"
16008         set shmctl d_shmctl
16009         evat $setvar
16010         set shmget d_shmget
16011         evat $setvar
16012         set shmat d_shmat
16013         evat $setvar
16014         set shmdt d_shmdt
16015         evat $setvar
16016         ;;
16017     esac
16018     ;;
16019 esac
16020 : we could also check for sys/ipc.h ...
16021 if $h_shm && $test `./findhdr sys/shm.h`; then
16022         echo "You have the full shm*(2) library." >&4
16023         val="$define"
16024 else
16025         echo "You don't have the full shm*(2) library." >&4
16026         val="$undef"
16027 fi
16028 set d_shm
16029 eval $setvar
16030
16031 echo " "
16032 : see if we have sigaction
16033 if set sigaction val -f d_sigaction; eval $csym; $val; then
16034         echo 'sigaction() found.' >&4
16035         $cat > try.c <<EOP
16036 #include <stdio.h>
16037 #include <sys/types.h>
16038 #include <signal.h>
16039 #$i_stdlib I_STDLIB
16040 #ifdef I_STDLIB
16041 #include <stdlib.h>
16042 #endif
16043 int main()
16044 {
16045     struct sigaction act, oact;
16046     act.sa_flags = 0;
16047     oact.sa_handler = 0;
16048     /* so that act and oact are used */
16049     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16050 }
16051 EOP
16052         set try
16053         if eval $compile_ok; then
16054                 val="$define"
16055         else
16056                 echo "But you don't seem to have a useable struct sigaction." >&4
16057                 val="$undef"
16058         fi
16059 else
16060         echo 'sigaction NOT found.' >&4
16061         val="$undef"
16062 fi
16063 set d_sigaction; eval $setvar
16064 $rm -f try try$_o try.c
16065
16066 : see if sigprocmask exists
16067 set sigprocmask d_sigprocmask
16068 eval $inlibc
16069
16070 : see if sigsetjmp exists
16071 echo " "
16072 case "$d_sigsetjmp" in
16073 '')
16074         $cat >try.c <<EOP
16075 #include <setjmp.h>
16076 #$i_stdlib I_STDLIB
16077 #ifdef I_STDLIB
16078 #include <stdlib.h>
16079 #endif
16080 sigjmp_buf env;
16081 int set = 1;
16082 int main()
16083 {
16084         if (sigsetjmp(env,1))
16085                 exit(set);
16086         set = 0;
16087         siglongjmp(env, 1);
16088         exit(1);
16089 }
16090 EOP
16091         set try
16092         if eval $compile; then
16093                 if $run ./try >/dev/null 2>&1; then
16094                         echo "POSIX sigsetjmp found." >&4
16095                         val="$define"
16096                 else
16097                         $cat >&4 <<EOM
16098 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16099 I'll ignore them.
16100 EOM
16101                         val="$undef"
16102                 fi
16103         else
16104                 echo "sigsetjmp not found." >&4
16105                 val="$undef"
16106         fi
16107         ;;
16108 *) val="$d_sigsetjmp"
16109         case "$d_sigsetjmp" in
16110         $define) echo "POSIX sigsetjmp found." >&4;;
16111         $undef) echo "sigsetjmp not found." >&4;;
16112         esac
16113         ;;
16114 esac
16115 set d_sigsetjmp
16116 eval $setvar
16117 $rm -f try.c try
16118
16119 : see if sockatmark exists
16120 set sockatmark d_sockatmark
16121 eval $inlibc
16122
16123 : see if prototype for sockatmark is available
16124 echo " "
16125 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16126 eval $hasproto
16127
16128 : see if socks5_init exists
16129 set socks5_init d_socks5_init
16130 eval $inlibc
16131
16132 : see if srand48_r exists
16133 set srand48_r d_srand48_r
16134 eval $inlibc
16135 case "$d_srand48_r" in
16136 "$define")
16137         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16138         case "$d_srand48_r_proto:$usethreads" in
16139         ":define")      d_srand48_r_proto=define
16140                 set d_srand48_r_proto srand48_r $hdrs
16141                 eval $hasproto ;;
16142         *)      ;;
16143         esac
16144         case "$d_srand48_r_proto" in
16145         define)
16146         case "$srand48_r_proto" in
16147         ''|0) try='int srand48_r(long, struct drand48_data*);'
16148         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16149         esac
16150         case "$srand48_r_proto" in
16151         ''|0)   d_srand48_r=undef
16152                 srand48_r_proto=0
16153                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16154         * )     case "$srand48_r_proto" in
16155                 REENTRANT_PROTO*) ;;
16156                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16157                 esac
16158                 echo "Prototype: $try" ;;
16159         esac
16160         ;;
16161         *)      case "$usethreads" in
16162                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16163                 esac
16164                 d_srand48_r=undef
16165                 srand48_r_proto=0
16166                 ;;
16167         esac
16168         ;;
16169 *)      srand48_r_proto=0
16170         ;;
16171 esac
16172
16173 : see if srandom_r exists
16174 set srandom_r d_srandom_r
16175 eval $inlibc
16176 case "$d_srandom_r" in
16177 "$define")
16178         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16179         case "$d_srandom_r_proto:$usethreads" in
16180         ":define")      d_srandom_r_proto=define
16181                 set d_srandom_r_proto srandom_r $hdrs
16182                 eval $hasproto ;;
16183         *)      ;;
16184         esac
16185         case "$d_srandom_r_proto" in
16186         define)
16187         case "$srandom_r_proto" in
16188         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16189         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16190         esac
16191         case "$srandom_r_proto" in
16192         ''|0)   d_srandom_r=undef
16193                 srandom_r_proto=0
16194                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16195         * )     case "$srandom_r_proto" in
16196                 REENTRANT_PROTO*) ;;
16197                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16198                 esac
16199                 echo "Prototype: $try" ;;
16200         esac
16201         ;;
16202         *)      case "$usethreads" in
16203                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16204                 esac
16205                 d_srandom_r=undef
16206                 srandom_r_proto=0
16207                 ;;
16208         esac
16209         ;;
16210 *)      srandom_r_proto=0
16211         ;;
16212 esac
16213
16214 : see if prototype for setresgid is available
16215 echo " "
16216 set d_sresgproto setresgid $i_unistd unistd.h
16217 eval $hasproto
16218
16219 : see if prototype for setresuid is available
16220 echo " "
16221 set d_sresuproto setresuid $i_unistd unistd.h
16222 eval $hasproto
16223
16224 : see if sys/stat.h is available
16225 set sys/stat.h i_sysstat
16226 eval $inhdr
16227
16228
16229 : see if stat knows about block sizes
16230 echo " "
16231 echo "Checking to see if your struct stat has st_blocks field..." >&4
16232 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16233 eval $hasfield
16234
16235
16236 : see if this is a sys/vfs.h system
16237 set sys/vfs.h i_sysvfs
16238 eval $inhdr
16239
16240
16241 : see if this is a sys/statfs.h system
16242 set sys/statfs.h i_sysstatfs
16243 eval $inhdr
16244
16245
16246 echo " "
16247 echo "Checking to see if your system supports struct statfs..." >&4
16248 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
16249 eval $hasstruct
16250 case "$d_statfs_s" in
16251 "$define")      echo "Yes, it does."   ;;
16252 *)              echo "No, it doesn't." ;;
16253 esac
16254
16255
16256
16257 : see if struct statfs knows about f_flags
16258 case "$d_statfs_s" in
16259 define) 
16260         echo " "
16261         echo "Checking to see if your struct statfs has f_flags field..." >&4
16262         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
16263         eval $hasfield
16264         ;;
16265 *)      val="$undef"
16266         set d_statfs_f_flags
16267         eval $setvar
16268         ;;
16269 esac
16270 case "$d_statfs_f_flags" in
16271 "$define")      echo "Yes, it does."   ;;
16272 *)              echo "No, it doesn't." ;;
16273 esac
16274
16275 $cat >&4 <<EOM
16276 Checking how to access stdio streams by file descriptor number...
16277 EOM
16278 case "$stdio_stream_array" in
16279 '')     $cat >try.c <<EOCP
16280 #include <stdio.h>
16281 int main() {
16282   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16283     printf("yes\n");
16284 }
16285 EOCP
16286         for s in _iob __iob __sF
16287         do
16288                 set try -DSTDIO_STREAM_ARRAY=$s
16289                 if eval $compile; then
16290                         case "`$run ./try`" in
16291                         yes)    stdio_stream_array=$s; break ;;
16292                         esac
16293                 fi
16294         done
16295         $rm -f try.* try$exe_ext
16296 esac
16297 case "$stdio_stream_array" in
16298 '')     $cat >&4 <<EOM
16299 I can't figure out how to access stdio streams by file descriptor number.
16300 EOM
16301         d_stdio_stream_array="$undef"
16302         ;;
16303 *)      $cat >&4 <<EOM
16304 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16305 EOM
16306         d_stdio_stream_array="$define"
16307         ;;
16308 esac
16309
16310 : see if strcoll exists
16311 set strcoll d_strcoll
16312 eval $inlibc
16313
16314 : check for structure copying
16315 echo " "
16316 echo "Checking to see if your C compiler can copy structs..." >&4
16317 $cat >try.c <<'EOCP'
16318 int main()
16319 {
16320         struct blurfl {
16321                 int dyick;
16322         } foo, bar;
16323
16324         foo = bar;
16325 }
16326 EOCP
16327 if $cc -c try.c >/dev/null 2>&1 ; then
16328         val="$define"
16329         echo "Yup, it can."
16330 else
16331         val="$undef"
16332         echo "Nope, it can't."
16333 fi
16334 set d_strctcpy
16335 eval $setvar
16336 $rm -f try.*
16337
16338 : see if strerror and/or sys_errlist[] exist
16339 echo " "
16340 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16341     if set strerror val -f d_strerror; eval $csym; $val; then
16342                 echo 'strerror() found.' >&4
16343                 d_strerror="$define"
16344                 d_strerrm='strerror(e)'
16345                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16346                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16347                         d_syserrlst="$define"
16348                 else
16349                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16350                         d_syserrlst="$undef"
16351                 fi
16352     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16353                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16354                 echo 'strerror() found in string header.' >&4
16355                 d_strerror="$define"
16356                 d_strerrm='strerror(e)'
16357                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16358                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16359                                 d_syserrlst="$define"
16360                 else
16361                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16362                         d_syserrlst="$undef"
16363                 fi
16364     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16365                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16366                 d_strerror="$undef"
16367                 d_syserrlst="$define"
16368                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16369     else
16370                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16371                 d_strerror="$undef"
16372                 d_syserrlst="$undef"
16373                 d_strerrm='"unknown"'
16374     fi
16375 fi
16376
16377 : see if strerror_r exists
16378 set strerror_r d_strerror_r
16379 eval $inlibc
16380 case "$d_strerror_r" in
16381 "$define")
16382         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16383         case "$d_strerror_r_proto:$usethreads" in
16384         ":define")      d_strerror_r_proto=define
16385                 set d_strerror_r_proto strerror_r $hdrs
16386                 eval $hasproto ;;
16387         *)      ;;
16388         esac
16389         case "$d_strerror_r_proto" in
16390         define)
16391         case "$strerror_r_proto" in
16392         ''|0) try='int strerror_r(int, char*, size_t);'
16393         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16394         esac
16395         case "$strerror_r_proto" in
16396         ''|0) try='int strerror_r(int, char*, int);'
16397         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16398         esac
16399         case "$strerror_r_proto" in
16400         ''|0) try='char* strerror_r(int, char*, size_t);'
16401         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16402         esac
16403         case "$strerror_r_proto" in
16404         ''|0)   d_strerror_r=undef
16405                 strerror_r_proto=0
16406                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16407         * )     case "$strerror_r_proto" in
16408                 REENTRANT_PROTO*) ;;
16409                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16410                 esac
16411                 echo "Prototype: $try" ;;
16412         esac
16413         ;;
16414         *)      case "$usethreads" in
16415                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16416                 esac
16417                 d_strerror_r=undef
16418                 strerror_r_proto=0
16419                 ;;
16420         esac
16421         ;;
16422 *)      strerror_r_proto=0
16423         ;;
16424 esac
16425
16426 : see if strftime exists
16427 set strftime d_strftime
16428 eval $inlibc
16429
16430 : see if strtod exists
16431 set strtod d_strtod
16432 eval $inlibc
16433
16434 : see if strtol exists
16435 set strtol d_strtol
16436 eval $inlibc
16437
16438 : see if strtold exists
16439 set strtold d_strtold
16440 eval $inlibc
16441
16442 : see if strtoll exists
16443 set strtoll d_strtoll
16444 eval $inlibc
16445
16446 case "$d_longlong-$d_strtoll" in
16447 "$define-$define")
16448         $cat <<EOM
16449 Checking whether your strtoll() works okay...
16450 EOM
16451         $cat >try.c <<'EOCP'
16452 #include <errno.h>
16453 #ifdef __hpux
16454 #define strtoll __strtoll
16455 #endif
16456 #ifdef __EMX__
16457 #define strtoll _strtoll
16458 #endif
16459 #include <stdio.h>
16460 extern long long int strtoll(char *s, char **, int); 
16461 static int bad = 0;
16462 int check(char *s, long long ell, int een) {
16463         long long gll;
16464         errno = 0;
16465         gll = strtoll(s, 0, 10);
16466         if (!((gll == ell) && (errno == een)))
16467                 bad++;
16468 }
16469 int main() {
16470         check(" 1",                                      1LL, 0);
16471         check(" 0",                                      0LL, 0);
16472         check("-1",                                     -1LL, 0);
16473         check("-9223372036854775808", -9223372036854775808LL, 0);
16474         check("-9223372036854775808", -9223372036854775808LL, 0);
16475         check(" 9223372036854775807",  9223372036854775807LL, 0);
16476         check("-9223372036854775808", -9223372036854775808LL, 0);
16477         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16478         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16479         if (!bad)
16480                 printf("ok\n");
16481 }
16482 EOCP
16483         set try
16484         if eval $compile; then
16485                 yyy=`$run ./try`
16486                 case "$yyy" in
16487                 ok) echo "Your strtoll() seems to be working okay." ;;
16488                 *) cat <<EOM >&4
16489 Your strtoll() doesn't seem to be working okay.
16490 EOM
16491                    d_strtoll="$undef"
16492                    ;;
16493                 esac
16494         else
16495                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16496                 d_strtoll="$undef"
16497         fi
16498         ;;
16499 esac
16500
16501 : see if strtoq exists
16502 set strtoq d_strtoq
16503 eval $inlibc
16504
16505 : see if strtoul exists
16506 set strtoul d_strtoul
16507 eval $inlibc
16508
16509 case "$d_strtoul" in
16510 "$define")
16511         $cat <<EOM
16512 Checking whether your strtoul() works okay...
16513 EOM
16514         $cat >try.c <<'EOCP'
16515 #include <errno.h>
16516 #include <stdio.h>
16517 extern unsigned long int strtoul(char *s, char **, int); 
16518 static int bad = 0;
16519 void check(char *s, unsigned long eul, int een) {
16520         unsigned long gul;
16521         errno = 0;
16522         gul = strtoul(s, 0, 10);
16523         if (!((gul == eul) && (errno == een)))
16524                 bad++;
16525 }
16526 int main() {
16527         check(" 1", 1L, 0);
16528         check(" 0", 0L, 0);
16529 EOCP
16530         case "$longsize" in
16531         8)
16532             $cat >>try.c <<'EOCP'
16533         check("18446744073709551615", 18446744073709551615UL, 0);
16534         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16535 #if 0 /* strtoul() for /^-/ strings is undefined. */
16536         check("-1", 18446744073709551615UL, 0);
16537         check("-18446744073709551614", 2, 0);
16538         check("-18446744073709551615", 1, 0);
16539         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16540         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16541 #endif
16542 EOCP
16543                 ;;
16544         4)
16545                     $cat >>try.c <<'EOCP'
16546         check("4294967295", 4294967295UL, 0);
16547         check("4294967296", 4294967295UL, ERANGE);
16548 #if 0 /* strtoul() for /^-/ strings is undefined. */
16549         check("-1", 4294967295UL, 0);
16550         check("-4294967294", 2, 0);
16551         check("-4294967295", 1, 0);
16552         check("-4294967296", 4294967295UL, ERANGE);
16553         check("-4294967297", 4294967295UL, ERANGE);
16554 #endif
16555 EOCP
16556                 ;;
16557         *)
16558 : Should we write these tests to be more portable by sprintf-ing
16559 : ~0 and then manipulating that char string as input for strtol?
16560                 ;;
16561         esac
16562         $cat >>try.c <<'EOCP'
16563         if (!bad)
16564                 printf("ok\n");
16565         return 0;
16566 }
16567 EOCP
16568         set try
16569         if eval $compile; then
16570                 case "`$run ./try`" in
16571                 ok) echo "Your strtoul() seems to be working okay." ;;
16572                 *) cat <<EOM >&4
16573 Your strtoul() doesn't seem to be working okay.
16574 EOM
16575                    d_strtoul="$undef"
16576                    ;;
16577                 esac
16578         fi
16579         ;;
16580 esac
16581
16582 : see if strtoull exists
16583 set strtoull d_strtoull
16584 eval $inlibc
16585
16586 case "$d_longlong-$d_strtoull" in
16587 "$define-$define")
16588         $cat <<EOM
16589 Checking whether your strtoull() works okay...
16590 EOM
16591         $cat >try.c <<'EOCP'
16592 #include <errno.h>
16593 #ifdef __hpux
16594 #define strtoull __strtoull
16595 #endif
16596 #include <stdio.h>
16597 extern unsigned long long int strtoull(char *s, char **, int); 
16598 static int bad = 0;
16599 int check(char *s, long long eull, int een) {
16600         long long gull;
16601         errno = 0;
16602         gull = strtoull(s, 0, 10);
16603         if (!((gull == eull) && (errno == een)))
16604                 bad++;
16605 }
16606 int main() {
16607         check(" 1",                                        1LL, 0);
16608         check(" 0",                                        0LL, 0);
16609         check("18446744073709551615",  18446744073709551615ULL, 0);
16610         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16611 #if 0 /* strtoull() for /^-/ strings is undefined. */
16612         check("-1",                    18446744073709551615ULL, 0);
16613         check("-18446744073709551614",                     2LL, 0);
16614         check("-18446744073709551615",                     1LL, 0);
16615         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16616         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16617 #endif
16618         if (!bad)
16619                 printf("ok\n");
16620 }
16621 EOCP
16622         set try
16623         if eval $compile; then
16624                 case "`$run ./try`" in
16625                 ok) echo "Your strtoull() seems to be working okay." ;;
16626                 *) cat <<EOM >&4
16627 Your strtoull() doesn't seem to be working okay.
16628 EOM
16629                    d_strtoull="$undef"
16630                    ;;
16631                 esac
16632         fi
16633         ;;
16634 esac
16635
16636 : see if strtouq exists
16637 set strtouq d_strtouq
16638 eval $inlibc
16639
16640 case "$d_strtouq" in
16641 "$define")
16642         $cat <<EOM
16643 Checking whether your strtouq() works okay...
16644 EOM
16645         $cat >try.c <<'EOCP'
16646 #include <errno.h>
16647 #include <stdio.h>
16648 extern unsigned long long int strtouq(char *s, char **, int); 
16649 static int bad = 0;
16650 void check(char *s, unsigned long long eull, int een) {
16651         unsigned long long gull;
16652         errno = 0;
16653         gull = strtouq(s, 0, 10);
16654         if (!((gull == eull) && (errno == een)))
16655                 bad++;
16656 }
16657 int main() {
16658         check(" 1",                                        1LL, 0);
16659         check(" 0",                                        0LL, 0);
16660         check("18446744073709551615",  18446744073709551615ULL, 0);
16661         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16662 #if 0 /* strtouq() for /^-/ strings is undefined. */
16663         check("-1",                    18446744073709551615ULL, 0);
16664         check("-18446744073709551614",                     2LL, 0);
16665         check("-18446744073709551615",                     1LL, 0);
16666         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16667         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16668 #endif
16669         if (!bad)
16670                 printf("ok\n");
16671         return 0;
16672 }
16673 EOCP
16674         set try
16675         if eval $compile; then
16676                 case "`$run ./try`" in
16677                 ok) echo "Your strtouq() seems to be working okay." ;;
16678                 *) cat <<EOM >&4
16679 Your strtouq() doesn't seem to be working okay.
16680 EOM
16681                    d_strtouq="$undef"
16682                    ;;
16683                 esac
16684         fi
16685         ;;
16686 esac
16687
16688 : see if strxfrm exists
16689 set strxfrm d_strxfrm
16690 eval $inlibc
16691
16692 : see if symlink exists
16693 set symlink d_symlink
16694 eval $inlibc
16695
16696 : see if syscall exists
16697 set syscall d_syscall
16698 eval $inlibc
16699
16700 : see if prototype for syscall is available
16701 echo " "
16702 set d_syscallproto syscall $i_unistd unistd.h
16703 eval $hasproto
16704
16705 : see if sysconf exists
16706 set sysconf d_sysconf
16707 eval $inlibc
16708
16709 : see if system exists
16710 set system d_system
16711 eval $inlibc
16712
16713 : see if tcgetpgrp exists
16714 set tcgetpgrp d_tcgetpgrp
16715 eval $inlibc
16716
16717 : see if tcsetpgrp exists
16718 set tcsetpgrp d_tcsetpgrp
16719 eval $inlibc
16720
16721 : see if prototype for telldir is available
16722 echo " "
16723 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16724 eval $hasproto
16725
16726 : see if time exists
16727 echo " "
16728 if test "X$d_time" = X -o X"$timetype" = X; then
16729     if set time val -f d_time; eval $csym; $val; then
16730                 echo 'time() found.' >&4
16731                 val="$define"
16732                 rp="What is the type returned by time() on this system?"
16733                 set time_t timetype long stdio.h sys/types.h
16734                 eval $typedef_ask
16735     else
16736                 echo 'time() not found, hope that will do.' >&4
16737                 val="$undef"
16738                 timetype='int';
16739     fi
16740     set d_time
16741     eval $setvar
16742 fi
16743
16744 : see if this is a sys/times.h system
16745 set sys/times.h i_systimes
16746 eval $inhdr
16747
16748 : see if times exists
16749 echo " "
16750 if set times val -f d_times; eval $csym; $val; then
16751         echo 'times() found.' >&4
16752         d_times="$define"
16753         inc=''
16754         case "$i_systimes" in
16755         "$define") inc='sys/times.h';;
16756         esac
16757         rp="What is the type returned by times() on this system?"
16758         set clock_t clocktype long stdio.h sys/types.h $inc
16759         eval $typedef_ask
16760 else
16761         echo 'times() NOT found, hope that will do.' >&4
16762         d_times="$undef"
16763         clocktype='int'
16764 fi
16765
16766 : see if tmpnam_r exists
16767 set tmpnam_r d_tmpnam_r
16768 eval $inlibc
16769 case "$d_tmpnam_r" in
16770 "$define")
16771         hdrs="$i_systypes sys/types.h define stdio.h "
16772         case "$d_tmpnam_r_proto:$usethreads" in
16773         ":define")      d_tmpnam_r_proto=define
16774                 set d_tmpnam_r_proto tmpnam_r $hdrs
16775                 eval $hasproto ;;
16776         *)      ;;
16777         esac
16778         case "$d_tmpnam_r_proto" in
16779         define)
16780         case "$tmpnam_r_proto" in
16781         ''|0) try='char* tmpnam_r(char*);'
16782         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16783         esac
16784         case "$tmpnam_r_proto" in
16785         ''|0)   d_tmpnam_r=undef
16786                 tmpnam_r_proto=0
16787                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16788         * )     case "$tmpnam_r_proto" in
16789                 REENTRANT_PROTO*) ;;
16790                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16791                 esac
16792                 echo "Prototype: $try" ;;
16793         esac
16794         ;;
16795         *)      case "$usethreads" in
16796                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16797                 esac
16798                 d_tmpnam_r=undef
16799                 tmpnam_r_proto=0
16800                 ;;
16801         esac
16802         ;;
16803 *)      tmpnam_r_proto=0
16804         ;;
16805 esac
16806
16807 : see if truncate exists
16808 set truncate d_truncate
16809 eval $inlibc
16810
16811 : see if ttyname_r exists
16812 set ttyname_r d_ttyname_r
16813 eval $inlibc
16814 case "$d_ttyname_r" in
16815 "$define")
16816         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16817         case "$d_ttyname_r_proto:$usethreads" in
16818         ":define")      d_ttyname_r_proto=define
16819                 set d_ttyname_r_proto ttyname_r $hdrs
16820                 eval $hasproto ;;
16821         *)      ;;
16822         esac
16823         case "$d_ttyname_r_proto" in
16824         define)
16825         case "$ttyname_r_proto" in
16826         ''|0) try='int ttyname_r(int, char*, size_t);'
16827         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16828         esac
16829         case "$ttyname_r_proto" in
16830         ''|0) try='int ttyname_r(int, char*, int);'
16831         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16832         esac
16833         case "$ttyname_r_proto" in
16834         ''|0) try='char* ttyname_r(int, char*, int);'
16835         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16836         esac
16837         case "$ttyname_r_proto" in
16838         ''|0)   d_ttyname_r=undef
16839                 ttyname_r_proto=0
16840                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16841         * )     case "$ttyname_r_proto" in
16842                 REENTRANT_PROTO*) ;;
16843                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16844                 esac
16845                 echo "Prototype: $try" ;;
16846         esac
16847         ;;
16848         *)      case "$usethreads" in
16849                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16850                 esac
16851                 d_ttyname_r=undef
16852                 ttyname_r_proto=0
16853                 ;;
16854         esac
16855         ;;
16856 *)      ttyname_r_proto=0
16857         ;;
16858 esac
16859
16860 : see if tzname[] exists
16861 echo " "
16862 if set tzname val -a d_tzname; eval $csym; $val; then
16863         val="$define"
16864         echo 'tzname[] found.' >&4
16865 else
16866         val="$undef"
16867         echo 'tzname[] NOT found.' >&4
16868 fi
16869 set d_tzname
16870 eval $setvar
16871
16872 case "$osname" in
16873 next|rhapsody|darwin) multiarch="$define" ;;
16874 esac
16875 case "$multiarch" in
16876 ''|[nN]*) multiarch="$undef" ;;
16877 esac
16878
16879 : check for ordering of bytes in a UV
16880 echo " "
16881 case "$usecrosscompile$multiarch" in
16882 *$define*)
16883         $cat <<EOM
16884 You seem to be either cross-compiling or doing a multiarchitecture build,
16885 skipping the byteorder check.
16886
16887 EOM
16888         byteorder='ffff'
16889         ;;
16890 *)
16891         case "$byteorder" in
16892         '')
16893                 $cat <<'EOM'
16894 In the following, larger digits indicate more significance.  A big-endian
16895 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16896 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16897 machines may have weird orders like 3412.  A Cray will report 87654321,
16898 an Alpha will report 12345678. If the test program works the default is
16899 probably right.
16900 I'm now running the test program...
16901 EOM
16902                 $cat >try.c <<EOCP
16903 #include <stdio.h>
16904 #$i_stdlib I_STDLIB
16905 #ifdef I_STDLIB
16906 #include <stdlib.h>
16907 #endif
16908 #include <sys/types.h>
16909 typedef $uvtype UV;
16910 int main()
16911 {
16912         int i;
16913         union {
16914                 UV l;
16915                 char c[$uvsize];
16916         } u;
16917
16918         if ($uvsize > 4)
16919                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16920         else
16921                 u.l = (UV)0x04030201;
16922         for (i = 0; i < $uvsize; i++)
16923                 printf("%c", u.c[i]+'0');
16924         printf("\n");
16925         exit(0);
16926 }
16927 EOCP
16928                 xxx_prompt=y
16929                 set try
16930                 if eval $compile && ./try > /dev/null; then
16931                         dflt=`$run ./try`
16932                         case "$dflt" in
16933                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16934                                 echo "(The test program ran ok.)"
16935                                 echo "byteorder=$dflt"
16936                                 xxx_prompt=n
16937                         ;;
16938                         ????|????????) echo "(The test program ran ok.)" ;;
16939                         *) echo "(The test program didn't run right for some reason.)" ;;
16940                         esac
16941                 else
16942                         dflt='4321'
16943                         cat <<'EOM'
16944 (I can't seem to compile the test program.  Guessing big-endian...)
16945 EOM
16946                 fi
16947                 case "$xxx_prompt" in
16948                 y)
16949                         rp="What is the order of bytes in $uvtype?"
16950                         . ./myread
16951                         byteorder="$ans"
16952                         ;;
16953                 *)      byteorder=$dflt
16954                         ;;
16955                 esac
16956                 ;;
16957         esac
16958         $rm -f try.c try
16959         ;;
16960 esac
16961
16962
16963 $cat <<EOM
16964
16965 Checking to see whether you can access character data unalignedly...
16966 EOM
16967 case "$d_u32align" in
16968 '')   $cat >try.c <<EOCP
16969 #include <stdio.h>
16970 #$i_stdlib I_STDLIB
16971 #ifdef I_STDLIB
16972 #include <stdlib.h>
16973 #endif
16974 #define U32 $u32type
16975 #define BYTEORDER 0x$byteorder
16976 #define U8 $u8type
16977 #include <signal.h>
16978 #ifdef SIGBUS
16979 $signal_t bletch(s) int s; { exit(4); }
16980 #endif
16981 int main() {
16982 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16983     U8 buf[8];
16984     U32 *up;
16985     int i;
16986
16987     if (sizeof(U32) != 4) {
16988         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16989         exit(1);
16990     }
16991
16992     fflush(stdout);
16993
16994 #ifdef SIGBUS
16995     signal(SIGBUS, bletch);
16996 #endif
16997
16998     buf[0] = 0;
16999     buf[1] = 0;
17000     buf[2] = 0;
17001     buf[3] = 1;
17002     buf[4] = 0;
17003     buf[5] = 0;
17004     buf[6] = 0;
17005     buf[7] = 1;
17006
17007     for (i = 0; i < 4; i++) {
17008         up = (U32*)(buf + i);
17009         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
17010                (*up == 1 << (8*(3-i)))  /* little-endian */
17011               )
17012            )
17013         {
17014             printf("read failed (%x)\n", *up);
17015             exit(2);
17016         }
17017     }
17018
17019     /* write test */
17020     for (i = 0; i < 4; i++) {
17021         up = (U32*)(buf + i);
17022         *up = 0xBeef;
17023         if (*up != 0xBeef) {
17024             printf("write failed (%x)\n", *up);
17025             exit(3);
17026         }
17027     }
17028
17029     exit(0);
17030 #else
17031     printf("1\n");
17032     exit(1);
17033 #endif
17034     return 0;
17035 }
17036 EOCP
17037 set try
17038 if eval $compile_ok; then
17039         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17040         $run ./try 2>&1 >/dev/null
17041         case "$?" in
17042         0)      cat >&4 <<EOM
17043 You can access character data pretty unalignedly.
17044 EOM
17045                 d_u32align="$undef"
17046                 ;;
17047         *)      cat >&4 <<EOM
17048 It seems that you must access character data in an aligned manner.
17049 EOM
17050                 d_u32align="$define"
17051                 ;;
17052         esac
17053 else
17054         rp='Can you access character data at unaligned addresses?'
17055         dflt='n'
17056         . ./myread
17057         case "$ans" in
17058         [yY]*)  d_u32align="$undef"  ;;
17059         *)      d_u32align="$define" ;;
17060         esac
17061 fi
17062 $rm -f core core.try.* try.core
17063 ;;
17064 esac
17065
17066 : see if ualarm exists
17067 set ualarm d_ualarm
17068 eval $inlibc
17069
17070 : see if umask exists
17071 set umask d_umask
17072 eval $inlibc
17073
17074 : see if unordered exists
17075 set unordered d_unordered
17076 eval $inlibc
17077
17078 : see if usleep exists
17079 set usleep d_usleep
17080 eval $inlibc
17081
17082 : see if prototype for usleep is available
17083 echo " "
17084 set d_usleepproto usleep $i_unistd unistd.h
17085 eval $hasproto
17086
17087 : see if ustat exists
17088 set ustat d_ustat
17089 eval $inlibc
17090
17091 : backward compatibility for d_hvfork
17092 if test X$d_hvfork != X; then
17093         d_vfork="$d_hvfork"
17094         d_hvfork=''
17095 fi
17096 : see if there is a vfork
17097 val=''
17098 set vfork val
17099 eval $inlibc
17100
17101 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17102 : perl on Solaris 2.x, and probably elsewhere.
17103 case "$val" in
17104 $define)
17105         echo " "
17106         case "$usevfork" in
17107         false) dflt='n';;
17108         *) dflt='y';;
17109         esac
17110         cat <<'EOM'
17111  
17112 Perl can only use a vfork() that doesn't suffer from strict
17113 restrictions on calling functions or modifying global data in
17114 the child.  For example, glibc-2.1 contains such a vfork()
17115 that is unsuitable.  If your system provides a proper fork()
17116 call, chances are that you do NOT want perl to use vfork().
17117
17118 EOM
17119         rp="Do you still want to use vfork()?"
17120         . ./myread
17121         case "$ans" in
17122         y|Y) ;;
17123         *)
17124                 echo "Ok, we won't use vfork()."
17125                 val="$undef"
17126                 ;;
17127         esac
17128         ;;
17129 esac
17130 set d_vfork
17131 eval $setvar
17132 case "$d_vfork" in
17133 $define) usevfork='true';;
17134 *) usevfork='false';;
17135 esac
17136
17137 : see if closedir exists
17138 set closedir d_closedir
17139 eval $inlibc
17140
17141 case "$d_closedir" in
17142 "$define")
17143         echo " "
17144         echo "Checking whether closedir() returns a status..." >&4
17145         cat > try.c <<EOM
17146 #$i_dirent I_DIRENT             /**/
17147 #$i_sysdir I_SYS_DIR            /**/
17148 #$i_sysndir I_SYS_NDIR          /**/
17149 #$i_systypes I_SYS_TYPES        /**/
17150
17151 #if defined(I_SYS_TYPES)
17152 #include <sys/types.h>
17153 #endif
17154 #if defined(I_DIRENT)
17155 #include <dirent.h>
17156 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17157 #include <sys/dir.h>
17158 #endif
17159 #else
17160 #ifdef I_SYS_NDIR
17161 #include <sys/ndir.h>
17162 #else
17163 #ifdef I_SYS_DIR
17164 #ifdef hp9000s500
17165 #include <ndir.h>       /* may be wrong in the future */
17166 #else
17167 #include <sys/dir.h>
17168 #endif
17169 #endif
17170 #endif
17171 #endif 
17172 int main() { return closedir(opendir(".")); }
17173 EOM
17174         set try
17175         if eval $compile_ok; then
17176                 if $run ./try > /dev/null 2>&1 ; then
17177                         echo "Yes, it does."
17178                         val="$undef"
17179                 else
17180                         echo "No, it doesn't."
17181                         val="$define"
17182                 fi
17183         else
17184                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17185                 val="$define"
17186         fi
17187         ;;
17188 *)
17189         val="$undef";
17190         ;;
17191 esac
17192 set d_void_closedir
17193 eval $setvar
17194 $rm -f try try.*
17195 : see if there is a wait4
17196 set wait4 d_wait4
17197 eval $inlibc
17198
17199 : see if waitpid exists
17200 set waitpid d_waitpid
17201 eval $inlibc
17202
17203 : see if wcstombs exists
17204 set wcstombs d_wcstombs
17205 eval $inlibc
17206
17207 : see if wctomb exists
17208 set wctomb d_wctomb
17209 eval $inlibc
17210
17211 : see if writev exists
17212 set writev d_writev
17213 eval $inlibc
17214
17215 : preserve RCS keywords in files with variable substitution, grrr
17216 Date='$Date'
17217 Id='$Id'
17218 Log='$Log'
17219 RCSfile='$RCSfile'
17220 Revision='$Revision'
17221
17222 : check for alignment requirements
17223 echo " "
17224 case "$usecrosscompile$multiarch" in
17225 *$define*)
17226         $cat <<EOM
17227 You seem to be either cross-compiling or doing a multiarchitecture build,
17228 skipping the memory alignment check.
17229
17230 EOM
17231         case "$alignbytes" in
17232         '') alignbytes=8 ;;
17233         esac
17234         ;;
17235 *)
17236         case "$alignbytes" in
17237         '') echo "Checking alignment constraints..." >&4
17238                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17239                         $cat >try.c <<'EOCP'
17240 typedef long double NV;
17241 EOCP
17242                 else
17243                         $cat >try.c <<'EOCP'
17244 typedef double NV;
17245 EOCP
17246                 fi
17247                 $cat >>try.c <<'EOCP'
17248 #include <stdio.h>
17249 struct foobar {
17250         char foo;
17251         NV bar;
17252 } try_algn;
17253 int main()
17254 {
17255     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17256     return(0);
17257 }
17258 EOCP
17259                 set try
17260                 if eval $compile_ok; then
17261                         dflt=`$run ./try`
17262                 else
17263                         dflt='8'
17264                         echo "(I can't seem to compile the test program...)"
17265                 fi
17266                 ;;
17267         *) dflt="$alignbytes"
17268                 ;;
17269         esac
17270         rp="Doubles must be aligned on a how-many-byte boundary?"
17271         . ./myread
17272         alignbytes="$ans"
17273         $rm -f try.c try
17274         ;;
17275 esac
17276
17277
17278 : set the base revision
17279 baserev=5.0
17280
17281 : how do we concatenate cpp tokens here?
17282 echo " "
17283 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17284 $cat >cpp_stuff.c <<'EOCP'
17285 #define RCAT(a,b)a/**/b
17286 #define ACAT(a,b)a ## b
17287 RCAT(Rei,ser)
17288 ACAT(Cir,cus)
17289 EOCP
17290 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17291 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17292         echo "Oh!  Smells like ANSI's been here." >&4
17293         echo "We can catify or stringify, separately or together!"
17294         cpp_stuff=42
17295 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17296         echo "Ah, yes!  The good old days!" >&4
17297         echo "However, in the good old days we don't know how to stringify and"
17298         echo "catify at the same time."
17299         cpp_stuff=1
17300 else
17301         $cat >&4 <<EOM
17302 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17303 You're going to have to edit the values of CAT[2-5] in config.h...
17304 EOM
17305         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17306 fi
17307 $rm -f cpp_stuff.*
17308
17309 : see if this is a db.h system
17310 set db.h i_db
17311 eval $inhdr
17312
17313 case "$i_db" in
17314 $define)
17315         : Check db version.
17316         echo " "
17317         echo "Checking Berkeley DB version ..." >&4
17318         $cat >try.c <<EOCP
17319 #$d_const HASCONST
17320 #ifndef HASCONST
17321 #define const
17322 #endif
17323 #include <sys/types.h>
17324 #include <stdio.h>
17325 #$i_stdlib I_STDLIB
17326 #ifdef I_STDLIB
17327 #include <stdlib.h>
17328 #endif
17329 #include <db.h>
17330 int main(int argc, char *argv[])
17331 {
17332 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17333     int Major, Minor, Patch ;
17334     unsigned long Version ;
17335     (void)db_version(&Major, &Minor, &Patch) ;
17336     if (argc == 2) {
17337         printf("%d %d %d %d %d %d\n",
17338                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17339                Major, Minor, Patch);
17340         exit(0);
17341     }
17342     printf("You have Berkeley DB Version 2 or greater.\n");
17343
17344     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17345                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17346     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17347                 Major, Minor, Patch) ;
17348
17349     /* check that db.h & libdb are compatible */
17350     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17351         printf("db.h and libdb are incompatible.\n") ;
17352         exit(3);        
17353     }
17354
17355     printf("db.h and libdb are compatible.\n") ;
17356
17357     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17358                 + DB_VERSION_PATCH ;
17359
17360     /* needs to be >= 2.3.4 */
17361     if (Version < 2003004) {
17362     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17363         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17364         exit(2);        
17365     }
17366
17367     exit(0);
17368 #else
17369 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17370     if (argc == 2) {
17371         printf("1 0 0\n");
17372         exit(0);
17373     }
17374     printf("You have Berkeley DB Version 1.\n");
17375     exit(0);    /* DB version < 2: the coast is clear. */
17376 #else
17377     exit(1);    /* <db.h> not Berkeley DB? */
17378 #endif
17379 #endif
17380 }
17381 EOCP
17382         set try
17383         if eval $compile_ok && $run ./try; then
17384                 echo 'Looks OK.' >&4
17385                 set `$run ./try 1`
17386                 db_version_major=$1
17387                 db_version_minor=$2
17388                 db_version_patch=$3
17389         else
17390                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17391                 i_db=$undef
17392                 case " $libs " in
17393                 *"-ldb "*)
17394                         : Remove db from list of libraries to use
17395                         echo "Removing unusable -ldb from library list" >&4
17396                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17397                         shift
17398                         libs="$*"
17399                         echo "libs = $libs" >&4
17400                         ;;
17401                 esac
17402         fi
17403         $rm -f try.*
17404         ;;
17405 esac
17406
17407 case "$i_db" in
17408 define)
17409         : Check the return type needed for hash 
17410         echo " "
17411         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17412         $cat >try.c <<EOCP
17413 #$d_const HASCONST
17414 #ifndef HASCONST
17415 #define const
17416 #endif
17417 #include <sys/types.h>
17418 #include <db.h>
17419
17420 #ifndef DB_VERSION_MAJOR
17421 u_int32_t hash_cb (ptr, size)
17422 const void *ptr;
17423 size_t size;
17424 {
17425 }
17426 HASHINFO info;
17427 int main()
17428 {
17429         info.hash = hash_cb;
17430 }
17431 #endif
17432 EOCP
17433         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17434                 if $contains warning try.out >>/dev/null 2>&1 ; then
17435                         db_hashtype='int'
17436                 else
17437                         db_hashtype='u_int32_t'
17438                 fi
17439         else
17440                 : XXX Maybe we should just give up here.
17441                 db_hashtype=u_int32_t
17442                 $cat try.out >&4
17443                 echo "Help:  I can't seem to compile the db test program." >&4
17444                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17445         fi
17446         $rm -f try.*
17447         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17448         ;;
17449 *)      db_hashtype=u_int32_t
17450         ;;
17451 esac
17452 case "$i_db" in
17453 define)
17454         : Check the return type needed for prefix 
17455         echo " "
17456         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17457         cat >try.c <<EOCP
17458 #$d_const HASCONST
17459 #ifndef HASCONST
17460 #define const
17461 #endif
17462 #include <sys/types.h>
17463 #include <db.h>
17464
17465 #ifndef DB_VERSION_MAJOR
17466 size_t prefix_cb (key1, key2)
17467 const DBT *key1;
17468 const DBT *key2;
17469 {
17470 }
17471 BTREEINFO info;
17472 int main()
17473 {
17474         info.prefix = prefix_cb;
17475 }
17476 #endif
17477 EOCP
17478         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17479                 if $contains warning try.out >>/dev/null 2>&1 ; then
17480                         db_prefixtype='int'
17481                 else
17482                         db_prefixtype='size_t'
17483                 fi
17484         else
17485                 db_prefixtype='size_t'
17486                 : XXX Maybe we should just give up here.
17487                 $cat try.out >&4
17488                 echo "Help:  I can't seem to compile the db test program." >&4
17489                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17490         fi
17491         $rm -f try.*
17492         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17493         ;;
17494 *)      db_prefixtype='size_t'
17495         ;;
17496 esac
17497
17498
17499 : How can we generate normalized random numbers ?
17500 echo " "
17501 echo "Looking for a random number function..." >&4
17502 case "$randfunc" in
17503 '')
17504         if set drand48 val -f; eval $csym; $val; then
17505                 dflt="drand48"
17506                 echo "Good, found drand48()." >&4
17507         elif set random val -f; eval $csym; $val; then
17508                 dflt="random"
17509                 echo "OK, found random()." >&4
17510         else
17511                 dflt="rand"
17512                 echo "Yick, looks like I have to use rand()." >&4
17513         fi
17514         echo " "
17515         ;;
17516 *)
17517         dflt="$randfunc"
17518         ;;
17519 esac
17520 cont=true
17521
17522 case "$ccflags" in
17523 *-Dmy_rand=*|*-Dmy_srand=*)
17524         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17525         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17526         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17527         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17528         ;;
17529 esac
17530
17531 while $test "$cont"; do
17532         rp="Use which function to generate random numbers?"
17533         . ./myread
17534         if $test "$ans" = "$dflt"; then
17535                 : null
17536         else
17537                 randbits=''
17538         fi
17539         randfunc="$ans"
17540         if set $ans val -f; eval $csym; $val; then
17541                 cont=''
17542         else
17543                 dflt=y
17544                 rp="I cannot find function $ans. Use that name anyway?"
17545                 . ./myread
17546                 dflt=rand
17547                 case "$ans" in
17548                         [yY]*) cont='';;
17549                 esac
17550         fi
17551         case "$cont" in
17552         '')
17553                 case "$randfunc" in
17554                 drand48)
17555                         drand01="drand48()"
17556                         seedfunc="srand48"
17557                         randbits=48
17558                         randseedtype=long
17559                         ;;
17560                 rand|random)
17561                         case "$randbits" in
17562                         '')
17563 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17564                                 $cat >try.c <<EOCP
17565 #$i_unistd I_UNISTD
17566 #$i_stdlib I_STDLIB
17567 #include <stdio.h>
17568 #ifdef I_UNISTD
17569 #  include <unistd.h>
17570 #endif
17571 #ifdef I_STDLIB
17572 #  include <stdlib.h>
17573 #endif
17574 int main()
17575 {
17576         register int i;
17577         register unsigned long tmp;
17578         register unsigned long max = 0L;
17579
17580         for (i = 1000; i; i--) {
17581                 tmp = (unsigned long) $randfunc();
17582                 if (tmp > max) max = tmp;
17583         }
17584         for (i = 0; max; i++)
17585                 max /= 2;
17586         printf("%d\n",i);
17587 }
17588 EOCP
17589                                 set try
17590                                 if eval $compile_ok; then
17591                                         dflt=`try`
17592                                 else
17593                                         dflt='?'
17594                                         echo "(I can't seem to compile the test program...)"
17595                                 fi
17596                                 ;;
17597                         *)
17598                                 dflt="$randbits"
17599                                 ;;
17600                         esac
17601                         rp="How many bits does your $randfunc() function produce?"
17602                         . ./myread
17603                         randbits="$ans"
17604                         $rm -f try.c try
17605                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17606                         seedfunc="s$randfunc"
17607                         randseedtype=unsigned
17608                         ;;
17609                 *)
17610                         dflt="31"
17611                         rp="How many bits does your $randfunc() function produce?"
17612                         . ./myread
17613                         randbits="$ans"
17614                         seedfunc="s$randfunc"
17615                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17616                         if set $seedfunc val -f; eval $csym; $val; then
17617                                 echo "(Using $seedfunc() to seed random generator)"
17618                         else
17619                                 echo "(Warning: no $seedfunc() to seed random generator)"
17620                                 seedfunc=rand
17621                         fi
17622                         randseedtype=unsigned
17623                         ;;
17624                 esac
17625                 ;;
17626         esac
17627 done
17628
17629 echo " "
17630 echo "Determining whether or not we are on an EBCDIC system..." >&4
17631 $cat >try.c <<'EOM'
17632 int main()
17633 {
17634   if ('M'==0xd4) return 0;
17635   return 1;
17636 }
17637 EOM
17638
17639 val=$undef
17640 set try
17641 if eval $compile_ok; then
17642         if $run ./try; then
17643                 echo "You seem to speak EBCDIC." >&4
17644                 val="$define"
17645         else
17646                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17647         fi
17648 else
17649         echo "I'm unable to compile the test program." >&4
17650         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17651 fi
17652 $rm -f try try.*
17653 set ebcdic
17654 eval $setvar
17655
17656 echo " "
17657 $cat >&4 <<EOM
17658 Checking how to flush all pending stdio output...
17659 EOM
17660 # I only know how to find the first 32 possibly open files on SunOS.
17661 # See also hints/sunos_4_1.sh and util.c  --AD
17662 case "$osname" in
17663 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17664 esac
17665 $cat >>try.c <<EOCP
17666 #include <stdio.h>
17667 #$i_stdlib I_STDLIB
17668 #ifdef I_STDLIB
17669 #include <stdlib.h>
17670 #endif
17671 #$i_unistd I_UNISTD
17672 #ifdef I_UNISTD
17673 # include <unistd.h>
17674 #endif
17675 #$d_sysconf HAS_SYSCONF
17676 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17677 #ifdef HAS_STDIO_STREAM_ARRAY
17678 # define STDIO_STREAM_ARRAY $stdio_stream_array
17679 #endif
17680 int main() {
17681   FILE* p;
17682   unlink("try.out");
17683   p = fopen("try.out", "w");
17684 #ifdef TRY_FPUTC
17685   fputc('x', p);
17686 #else
17687 # ifdef TRY_FPRINTF
17688   fprintf(p, "x");
17689 # endif
17690 #endif
17691 #ifdef TRY_FFLUSH_NULL
17692   fflush(NULL);
17693 #endif
17694 #ifdef TRY_FFLUSH_ALL
17695   {
17696     long open_max = -1;
17697 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17698     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17699 # else
17700 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17701     open_max = sysconf(_SC_OPEN_MAX);
17702 #  else
17703 #   ifdef FOPEN_MAX
17704     open_max = FOPEN_MAX;
17705 #   else
17706 #    ifdef OPEN_MAX
17707     open_max = OPEN_MAX;
17708 #    else
17709 #     ifdef _NFILE
17710     open_max = _NFILE;
17711 #     endif
17712 #    endif
17713 #   endif
17714 #  endif
17715 # endif 
17716 # ifdef HAS_STDIO_STREAM_ARRAY
17717     if (open_max > 0) {
17718       long i;
17719       for (i = 0; i < open_max; i++)
17720             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17721                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17722                 STDIO_STREAM_ARRAY[i]._flag)
17723                 fflush(&STDIO_STREAM_ARRAY[i]);
17724     }   
17725   }
17726 # endif
17727 #endif
17728   _exit(42);
17729 }
17730 EOCP
17731 : first we have to find out how _not_ to flush
17732 $to try.c
17733 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17734     output=''
17735     set try -DTRY_FPUTC
17736     if eval $compile; then
17737             $run ./try 2>/dev/null
17738             code="$?"
17739             $from try.out
17740             if $test ! -s try.out -a "X$code" = X42; then
17741                 output=-DTRY_FPUTC
17742             fi
17743     fi
17744     case "$output" in
17745     '')
17746             set try -DTRY_FPRINTF
17747             if eval $compile; then
17748                     $run ./try 2>/dev/null
17749                     code="$?"
17750                     $from try.out
17751                     if $test ! -s try.out -a "X$code" = X42; then
17752                         output=-DTRY_FPRINTF
17753                     fi
17754             fi
17755         ;;
17756     esac
17757 fi
17758 : check for fflush NULL behaviour
17759 case "$fflushNULL" in
17760 '')     set try -DTRY_FFLUSH_NULL $output
17761         if eval $compile; then
17762                 $run ./try 2>/dev/null
17763                 code="$?"
17764                 $from try.out
17765                 if $test -s try.out -a "X$code" = X42; then
17766                         fflushNULL="`$cat try.out`"
17767                 else
17768                         if $test "X$code" != X42; then
17769                                 $cat >&4 <<EOM
17770 (If this test failed, don't worry, we'll try another method shortly.)
17771 EOM
17772                         fi
17773                 fi
17774         fi
17775         $rm -f core try.core core.try.*
17776         case "$fflushNULL" in
17777         x)      $cat >&4 <<EOM
17778 Your fflush(NULL) works okay for output streams.
17779 Let's see if it clobbers input pipes...
17780 EOM
17781 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17782 # bug that improperly flushes the input end of pipes.  So we avoid the
17783 # autoflush on fork/system/exec support for now. :-(
17784 $cat >tryp.c <<EOCP
17785 #include <stdio.h>
17786 int
17787 main(int argc, char **argv)
17788 {
17789     char buf[1024];
17790     int i;
17791     char *bp = buf;
17792     while (1) {
17793         while ((i = getc(stdin)) != -1
17794                && (*bp++ = i) != '\n'
17795                && bp < &buf[1024])
17796         /* DO NOTHING */ ;
17797         *bp = '\0';
17798         fprintf(stdout, "%s", buf);
17799         fflush(NULL);
17800         if (i == -1)
17801             return 0;
17802         bp = buf;
17803     }
17804 }
17805 EOCP
17806                 fflushNULL="$define"
17807                 set tryp
17808                 if eval $compile; then
17809                     $rm -f tryp.out
17810                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17811                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17812                        $cat >&4 <<EOM
17813 fflush(NULL) seems to behave okay with input streams.
17814 EOM
17815                         fflushNULL="$define"
17816                     else
17817                         $cat >&4 <<EOM
17818 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17819 EOM
17820                         fflushNULL="$undef"
17821                     fi
17822                 fi
17823                 $rm -f core tryp.c tryp.core core.tryp.*
17824                 ;;
17825         '')     $cat >&4 <<EOM
17826 Your fflush(NULL) isn't working (contrary to ANSI C).
17827 EOM
17828                 fflushNULL="$undef"
17829                 ;;
17830         *)      $cat >&4 <<EOM
17831 Cannot figure out whether your fflush(NULL) works or not.
17832 I'm assuming it doesn't (contrary to ANSI C).
17833 EOM
17834                 fflushNULL="$undef"
17835                 ;;
17836         esac
17837         ;;
17838 $define|true|[yY]*)
17839         fflushNULL="$define"
17840         ;;
17841 *)
17842         fflushNULL="$undef"
17843         ;;
17844 esac
17845 : check explicit looping only if NULL did not work, and if the pipe
17846 : bug does not show up on an explicit flush too
17847 case "$fflushNULL" in
17848 "$undef")
17849         $cat >tryp.c <<EOCP
17850 #include <stdio.h>
17851 int
17852 main(int argc, char **argv)
17853 {
17854     char buf[1024];
17855     int i;
17856     char *bp = buf;
17857     while (1) {
17858         while ((i = getc(stdin)) != -1
17859                && (*bp++ = i) != '\n'
17860                && bp < &buf[1024])
17861         /* DO NOTHING */ ;
17862         *bp = '\0';
17863         fprintf(stdout, "%s", buf);
17864         fflush(stdin);
17865         if (i == -1)
17866             return 0;
17867         bp = buf;
17868     }
17869 }
17870 EOCP
17871         set tryp
17872         if eval $compile; then
17873             $rm -f tryp.out
17874             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17875             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17876                $cat >&4 <<EOM
17877 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17878 EOM
17879                 : now check for fflushall behaviour
17880                 case "$fflushall" in
17881                 '')     set try -DTRY_FFLUSH_ALL $output
17882                         if eval $compile; then
17883                                 $cat >&4 <<EOM
17884 (Now testing the other method--but note that this also may fail.)
17885 EOM
17886                                 $run ./try 2>/dev/null
17887                                 code=$?
17888                                 $from try.out
17889                                 if $test -s try.out -a "X$code" = X42; then
17890                                         fflushall="`$cat try.out`"
17891                                 fi
17892                         fi
17893                         $rm -f core try.core core.try.*
17894                         case "$fflushall" in
17895                         x)      $cat >&4 <<EOM
17896 Whew. Flushing explicitly all the stdio streams works.
17897 EOM
17898                                 fflushall="$define"
17899                                 ;;
17900                         '')     $cat >&4 <<EOM
17901 Sigh. Flushing explicitly all the stdio streams doesn't work.
17902 EOM
17903                                 fflushall="$undef"
17904                                 ;;
17905                         *)      $cat >&4 <<EOM
17906 Cannot figure out whether flushing stdio streams explicitly works or not.
17907 I'm assuming it doesn't.
17908 EOM
17909                                 fflushall="$undef"
17910                                 ;;
17911                         esac
17912                         ;;
17913                 "$define"|true|[yY]*)
17914                         fflushall="$define"
17915                         ;;
17916                 *)
17917                         fflushall="$undef"
17918                         ;;
17919                 esac
17920             else
17921                 $cat >&4 <<EOM
17922 All is futile.  Even fflush(stdin) clobbers input pipes!
17923 EOM
17924                 fflushall="$undef"
17925             fi
17926         else
17927             fflushall="$undef"
17928         fi
17929         $rm -f core tryp.c tryp.core core.tryp.*
17930         ;;
17931 *)      fflushall="$undef"
17932         ;;
17933 esac
17934
17935 case "$fflushNULL$fflushall" in
17936 undefundef)
17937         $cat <<EOM
17938 OK, I give up.  I cannot figure out how to flush pending stdio output.
17939 We won't be flushing handles at all before fork/exec/popen.
17940 EOM
17941         ;;
17942 esac
17943 $rm -f try.* try$exe_ext
17944
17945 : Store the full pathname to the ar program for use in the C program
17946 : Respect a hint or command line value for full_ar.
17947 case "$full_ar" in
17948 '') full_ar=$ar ;;
17949 esac
17950
17951 : Store the full pathname to the sed program for use in the C program
17952 full_sed=$sed
17953
17954 : see what type gids are declared as in the kernel
17955 echo " "
17956 echo "Looking for the type for group ids returned by getgid()."
17957 set gid_t gidtype xxx stdio.h sys/types.h
17958 eval $typedef
17959 case "$gidtype" in
17960 xxx)
17961         xxx=`./findhdr sys/user.h`
17962         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17963         case $1 in
17964         unsigned) dflt="$1 $2" ;;
17965         *) dflt="$1" ;;
17966         esac
17967         ;;
17968 *) dflt="$gidtype";;
17969 esac
17970 case "$gidtype" in
17971 gid_t) echo "gid_t found." ;;
17972 *)      rp="What is the type for group ids returned by getgid()?"
17973         . ./myread
17974         gidtype="$ans"
17975         ;;
17976 esac
17977
17978 echo " "
17979 case "$gidtype" in
17980 *_t) zzz="$gidtype"     ;;
17981 *)   zzz="gid"          ;;
17982 esac
17983 echo "Checking the size of $zzz..." >&4 
17984 cat > try.c <<EOCP
17985 #include <sys/types.h>
17986 #include <stdio.h>
17987 #$i_stdlib I_STDLIB
17988 #ifdef I_STDLIB
17989 #include <stdlib.h>
17990 #endif
17991 int main() {
17992     printf("%d\n", (int)sizeof($gidtype));
17993     exit(0);
17994 }
17995 EOCP
17996 set try
17997 if eval $compile_ok; then
17998         yyy=`$run ./try`
17999         case "$yyy" in
18000         '')     gidsize=4
18001                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18002                 ;;
18003         *)      gidsize=$yyy
18004                 echo "Your $zzz is $gidsize bytes long."
18005                 ;;
18006         esac
18007 else
18008         gidsize=4
18009         echo "(I can't compile the test program--guessing $gidsize.)" >&4
18010 fi
18011
18012
18013 echo " "
18014 case "$gidtype" in
18015 *_t) zzz="$gidtype"     ;;
18016 *)   zzz="gid"          ;;
18017 esac
18018 echo "Checking the sign of $zzz..." >&4 
18019 cat > try.c <<EOCP
18020 #include <sys/types.h>
18021 #include <stdio.h>
18022 int main() {
18023         $gidtype foo = -1;
18024         if (foo < 0)
18025                 printf("-1\n");
18026         else
18027                 printf("1\n");
18028 }
18029 EOCP
18030 set try
18031 if eval $compile; then
18032         yyy=`$run ./try`
18033         case "$yyy" in
18034         '')     gidsign=1
18035                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18036                 ;;
18037         *)      gidsign=$yyy
18038                 case "$gidsign" in
18039                  1) echo "Your $zzz is unsigned." ;;
18040                 -1) echo "Your $zzz is signed."   ;;
18041                 esac
18042                 ;;
18043         esac
18044 else
18045         gidsign=1
18046         echo "(I can't compile the test program--guessing unsigned.)" >&4
18047 fi
18048
18049
18050 echo " "
18051
18052 if $test X"$quadtype" != X; then
18053
18054 echo "Checking how to print 64-bit integers..." >&4
18055
18056 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18057         $cat >try.c <<'EOCP'
18058 #include <sys/types.h>
18059 #include <stdio.h>
18060 int main() {
18061   int q = 12345678901;
18062   printf("%ld\n", q);
18063 }
18064 EOCP
18065         set try
18066         if eval $compile; then
18067                 yyy=`$run ./try`
18068                 case "$yyy" in
18069                 12345678901)
18070                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18071                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18072                         echo "We will use %d."
18073                         ;;
18074                 esac
18075         fi
18076 fi
18077
18078 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18079         $cat >try.c <<'EOCP'
18080 #include <sys/types.h>
18081 #include <stdio.h>
18082 int main() {
18083   long q = 12345678901;
18084   printf("%ld\n", q);
18085 }
18086 EOCP
18087         set try
18088         if eval $compile; then
18089                 yyy=`$run ./try`
18090                 case "$yyy" in
18091                 12345678901)
18092                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18093                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18094                         echo "We will use %ld."
18095                         ;;
18096                 esac
18097         fi
18098 fi
18099
18100 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18101         $cat >try.c <<'EOCP'
18102 #include <sys/types.h>
18103 #include <inttypes.h>
18104 #include <stdio.h>
18105 int main() {
18106   int64_t q = 12345678901;
18107   printf("%" PRId64 "\n", q);
18108 }
18109 EOCP
18110         set try
18111         if eval $compile; then
18112                 yyy=`$run ./try`
18113                 case "$yyy" in
18114                 12345678901)
18115                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18116                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18117                         echo "We will use the C9X style."
18118                         ;;
18119                 esac
18120         fi
18121 fi
18122
18123 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18124         $cat >try.c <<EOCP
18125 #include <sys/types.h>
18126 #include <stdio.h>
18127 int main() {
18128   $quadtype q = 12345678901;
18129   printf("%Ld\n", q);
18130 }
18131 EOCP
18132         set try
18133         if eval $compile; then
18134                 yyy=`$run ./try`
18135                 case "$yyy" in
18136                 12345678901)
18137                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18138                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18139                         echo "We will use %Ld."
18140                         ;;
18141                 esac
18142         fi
18143 fi
18144
18145 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18146         $cat >try.c <<'EOCP'
18147 #include <sys/types.h>
18148 #include <stdio.h>
18149 int main() {
18150   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18151   printf("%lld\n", q);
18152 }
18153 EOCP
18154         set try
18155         if eval $compile; then
18156                 yyy=`$run ./try`
18157                 case "$yyy" in
18158                 12345678901)
18159                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18160                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18161                         echo "We will use the %lld style."
18162                         ;;
18163                 esac
18164         fi
18165 fi
18166
18167 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18168         $cat >try.c <<EOCP
18169 #include <sys/types.h>
18170 #include <stdio.h>
18171 int main() {
18172   $quadtype q = 12345678901;
18173   printf("%qd\n", q);
18174 }
18175 EOCP
18176         set try
18177         if eval $compile; then
18178                 yyy=`$run ./try`
18179                 case "$yyy" in
18180                 12345678901)
18181                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18182                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18183                         echo "We will use %qd."
18184                         ;;
18185                 esac
18186         fi
18187 fi
18188
18189 if $test X"$sPRId64" = X; then
18190         echo "Cannot figure out how to print 64-bit integers." >&4
18191 fi
18192
18193 $rm -f try try.*
18194
18195 fi
18196
18197 case "$sPRId64" in
18198 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18199         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18200         ;;
18201 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18202         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18203         ;;
18204 esac
18205
18206
18207 echo " "
18208 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18209
18210 if $test X"$ivsize" = X8; then
18211         ivdformat="$sPRId64"
18212         uvuformat="$sPRIu64"
18213         uvoformat="$sPRIo64"
18214         uvxformat="$sPRIx64"
18215         uvXUformat="$sPRIXU64"
18216 else
18217         if $test X"$ivsize" = X"$longsize"; then
18218                 ivdformat='"ld"'
18219                 uvuformat='"lu"'
18220                 uvoformat='"lo"'
18221                 uvxformat='"lx"'
18222                 uvXUformat='"lX"'
18223         else
18224                 if $test X"$ivsize" = X"$intsize"; then
18225                         ivdformat='"d"'
18226                         uvuformat='"u"'
18227                         uvoformat='"o"'
18228                         uvxformat='"x"'
18229                         uvXUformat='"X"'
18230                 else
18231                         : far out
18232                         if $test X"$ivsize" = X"$shortsize"; then
18233                                 ivdformat='"hd"'
18234                                 uvuformat='"hu"'
18235                                 uvoformat='"ho"'
18236                                 uvxformat='"hx"'
18237                                 uvXUformat='"hX"'
18238                         fi
18239                 fi
18240         fi
18241 fi
18242
18243 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18244         nveformat="$sPRIeldbl"
18245         nvfformat="$sPRIfldbl"
18246         nvgformat="$sPRIgldbl"
18247         nvEUformat="$sPRIEUldbl"
18248         nvFUformat="$sPRIFUldbl"
18249         nvGUformat="$sPRIGUldbl"
18250 else
18251         nveformat='"e"'
18252         nvfformat='"f"'
18253         nvgformat='"g"'
18254         nvEUformat='"E"'
18255         nvFUformat='"F"'
18256         nvGUformat='"G"'
18257 fi
18258
18259 case "$ivdformat" in
18260 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18261     exit 1
18262     ;;
18263 esac
18264
18265
18266 echo " "
18267 $echo "Checking the format string to be used for gids..." >&4
18268
18269 case "$gidsign" in
18270 -1)     if $test X"$gidsize" = X"$ivsize"; then
18271                 gidformat="$ivdformat"
18272         else
18273                 if $test X"$gidsize" = X"$longsize"; then
18274                         gidformat='"ld"'
18275                 else
18276                         if $test X"$gidsize" = X"$intsize"; then
18277                                 gidformat='"d"'
18278                         else
18279                                 if $test X"$gidsize" = X"$shortsize"; then
18280                                         gidformat='"hd"'
18281                                 fi
18282                         fi
18283                 fi
18284         fi
18285         ;;
18286 *)      if $test X"$gidsize" = X"$uvsize"; then
18287                 gidformat="$uvuformat"
18288         else
18289                 if $test X"$gidsize" = X"$longsize"; then
18290                         gidformat='"lu"'
18291                 else
18292                         if $test X"$gidsize" = X"$intsize"; then
18293                                 gidformat='"u"'
18294                         else
18295                                 if $test X"$gidsize" = X"$shortsize"; then
18296                                         gidformat='"hu"'
18297                                 fi
18298                         fi
18299                 fi
18300         fi
18301         ;;
18302 esac
18303
18304 : see if getgroups exists
18305 set getgroups d_getgrps
18306 eval $inlibc
18307
18308 : see if setgroups exists
18309 set setgroups d_setgrps
18310 eval $inlibc
18311
18312
18313 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18314 echo " "
18315 case "$d_getgrps$d_setgrps" in
18316 *define*)
18317         case "$groupstype" in
18318         '') dflt="$gidtype" ;;
18319         *)  dflt="$groupstype" ;;
18320         esac
18321         $cat <<EOM
18322 What type of pointer is the second argument to getgroups() and setgroups()?
18323 Usually this is the same as group ids, $gidtype, but not always.
18324
18325 EOM
18326         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18327         . ./myread
18328         groupstype="$ans"
18329         ;;
18330 *)  groupstype="$gidtype";;
18331 esac
18332
18333 echo " "
18334 echo "Checking if your $make program sets \$(MAKE)..." >&4
18335 case "$make_set_make" in
18336 '')
18337         $sed 's/^X //' > testmake.mak << 'EOF'
18338 Xall:
18339 X       @echo 'maketemp="$(MAKE)"'
18340 EOF
18341         case "`$make -f testmake.mak 2>/dev/null`" in
18342         *maketemp=*) make_set_make='#' ;;
18343         *)      make_set_make="MAKE=$make" ;;
18344         esac
18345         $rm -f testmake.mak
18346         ;;
18347 esac
18348 case "$make_set_make" in
18349 '#') echo "Yup, it does.";;
18350 *) echo "Nope, it doesn't.";;
18351 esac
18352
18353 : see what type is used for mode_t
18354 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18355 set mode_t modetype int stdio.h sys/types.h
18356 eval $typedef_ask
18357
18358 : see if stdarg is available
18359 echo " "
18360 if $test `./findhdr stdarg.h`; then
18361         echo "<stdarg.h> found." >&4
18362         valstd="$define"
18363 else
18364         echo "<stdarg.h> NOT found." >&4
18365         valstd="$undef"
18366 fi
18367
18368 : see if varags is available
18369 echo " "
18370 if $test `./findhdr varargs.h`; then
18371         echo "<varargs.h> found." >&4
18372 else
18373         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18374 fi
18375
18376 : set up the varargs testing programs
18377 $cat > varargs.c <<EOP
18378 #ifdef I_STDARG
18379 #include <stdarg.h>
18380 #endif
18381 #ifdef I_VARARGS
18382 #include <varargs.h>
18383 #endif
18384
18385 #ifdef I_STDARG
18386 int f(char *p, ...)
18387 #else
18388 int f(va_alist)
18389 va_dcl
18390 #endif
18391 {
18392         va_list ap;
18393 #ifndef I_STDARG
18394         char *p;
18395 #endif
18396 #ifdef I_STDARG
18397         va_start(ap,p);
18398 #else
18399         va_start(ap);
18400         p = va_arg(ap, char *);
18401 #endif
18402         va_end(ap);
18403 }
18404 EOP
18405 $cat > varargs <<EOP
18406 $startsh
18407 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18408         echo "true"
18409 else
18410         echo "false"
18411 fi
18412 $rm -f varargs$_o
18413 EOP
18414 chmod +x varargs
18415
18416 : now check which varargs header should be included
18417 echo " "
18418 i_varhdr=''
18419 case "$valstd" in
18420 "$define")
18421         if `./varargs I_STDARG`; then
18422                 val='stdarg.h'
18423         elif `./varargs I_VARARGS`; then
18424                 val='varargs.h'
18425         fi
18426         ;;
18427 *)
18428         if `./varargs I_VARARGS`; then
18429                 val='varargs.h'
18430         fi
18431         ;;
18432 esac
18433 case "$val" in
18434 '')
18435 echo "I could not find the definition for va_dcl... You have problems..." >&4
18436         val="$undef"; set i_stdarg; eval $setvar
18437         val="$undef"; set i_varargs; eval $setvar
18438         ;;
18439 *) 
18440         set i_varhdr
18441         eval $setvar
18442         case "$i_varhdr" in
18443         stdarg.h)
18444                 val="$define"; set i_stdarg; eval $setvar
18445                 val="$undef"; set i_varargs; eval $setvar
18446                 ;;
18447         varargs.h)
18448                 val="$undef"; set i_stdarg; eval $setvar
18449                 val="$define"; set i_varargs; eval $setvar
18450                 ;;
18451         esac
18452         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18453 esac
18454 $rm -f varargs*
18455
18456 : see if we need va_copy
18457 echo " "
18458 case "$i_stdarg" in
18459 "$define")
18460         $cat >try.c <<EOCP
18461 #include <stdarg.h>
18462 #include <stdio.h>
18463 #$i_stdlib I_STDLIB
18464 #ifdef I_STDLIB
18465 #include <stdlib.h>
18466 #endif
18467 #include <signal.h>
18468
18469 int
18470 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18471 {
18472   return vfprintf(f, fmt, *valp);
18473 }
18474  
18475 int    
18476 myvfprintf(FILE *f, const  char *fmt, va_list val)
18477 {
18478   return ivfprintf(f, fmt, &val);
18479 }
18480       
18481 int
18482 myprintf(char *fmt, ...) 
18483 {
18484   va_list val;
18485   va_start(val, fmt);
18486   return myvfprintf(stdout, fmt, val); 
18487 }         
18488
18489 int
18490 main(int ac, char **av)
18491 {
18492   signal(SIGSEGV, exit);
18493
18494   myprintf("%s%cs all right, then\n", "that", '\'');                            
18495   exit(0);      
18496 }
18497 EOCP
18498         set try
18499         if eval $compile && $run ./try 2>&1 >/dev/null; then
18500                 case "`$run ./try`" in
18501                 "that's all right, then")
18502                         okay=yes
18503                         ;;
18504                 esac
18505         fi
18506         case "$okay" in
18507         yes)    echo "It seems that you don't need va_copy()." >&4
18508                 need_va_copy="$undef"
18509                 ;;
18510         *)      echo "It seems that va_copy() or similar will be needed." >&4
18511                 need_va_copy="$define"
18512                 ;;
18513         esac
18514         $rm -f try.* core core.* *.core *.core.*
18515         ;;
18516 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18517         ;;
18518 esac
18519
18520 : see what type is used for size_t
18521 rp="What is the type used for the length parameter for string functions?"
18522 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18523 eval $typedef_ask
18524
18525 : check for type of arguments to gethostbyaddr. 
18526 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18527         case "$d_gethbyaddr" in
18528         $define)
18529                 $cat <<EOM
18530
18531 Checking to see what type of arguments are accepted by gethostbyaddr().
18532 EOM
18533                 hdrs="$define sys/types.h
18534                         $d_socket sys/socket.h 
18535                         $i_niin netinet/in.h 
18536                         $i_netdb netdb.h
18537                         $i_unistd unistd.h"
18538                 : The first arg can 'char *' or 'void *'
18539                 : The second arg is some of integral type
18540                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18541                         for yyy in size_t long int; do
18542                                 case "$netdb_host_type" in
18543                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18544                                         if ./protochk "$try" $hdrs; then
18545                                                 echo "Your system accepts $xxx for the first arg."
18546                                                 echo "...and $yyy for the second arg."
18547                                                 netdb_host_type="$xxx"
18548                                                 netdb_hlen_type="$yyy"
18549                                         fi
18550                                         ;;
18551                                 esac
18552                         done
18553                 done
18554                 : In case none of those worked, prompt the user.
18555                 case "$netdb_host_type" in
18556                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18557                         dflt='char *'
18558                         . ./myread
18559                         netdb_host_type=$ans
18560                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18561                         dflt="$sizetype"
18562                         . ./myread
18563                         netdb_hlen_type=$ans
18564                         ;;
18565                 esac
18566                 ;;
18567         *)      : no gethostbyaddr, so pick harmless defaults
18568                 netdb_host_type='char *'
18569                 netdb_hlen_type="$sizetype"
18570                 ;;
18571         esac
18572         # Remove the "const" if needed. -- but then we'll have a 
18573         # prototype clash!
18574         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18575 fi
18576
18577 : check for type of argument to gethostbyname. 
18578 if test "X$netdb_name_type" = X ; then
18579         case "$d_gethbyname" in
18580         $define)
18581                 $cat <<EOM
18582
18583 Checking to see what type of argument is accepted by gethostbyname().
18584 EOM
18585                 hdrs="$define sys/types.h
18586                         $d_socket sys/socket.h 
18587                         $i_niin netinet/in.h 
18588                         $i_netdb netdb.h
18589                         $i_unistd unistd.h"
18590                 for xxx in "const char *" "char *"; do
18591                         case "$netdb_name_type" in
18592                         '')     try="extern struct hostent *gethostbyname($xxx);"
18593                                 if ./protochk "$try" $hdrs; then
18594                                         echo "Your system accepts $xxx."
18595                                         netdb_name_type="$xxx"
18596                                 fi
18597                                 ;;
18598                         esac
18599                 done
18600                 : In case none of those worked, prompt the user.
18601                 case "$netdb_name_type" in
18602                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18603                         dflt='char *'
18604                         . ./myread
18605                         netdb_name_type=$ans
18606                         ;;
18607                 esac
18608                 ;;
18609         *)      : no gethostbyname, so pick harmless default
18610                 netdb_name_type='char *'
18611                 ;;
18612         esac
18613 fi
18614
18615 : check for type of 1st argument to getnetbyaddr. 
18616 if test "X$netdb_net_type" = X ; then
18617         case "$d_getnbyaddr" in
18618         $define)
18619                 $cat <<EOM
18620
18621 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18622 EOM
18623                 hdrs="$define sys/types.h
18624                         $d_socket sys/socket.h 
18625                         $i_niin netinet/in.h 
18626                         $i_netdb netdb.h
18627                         $i_unistd unistd.h"
18628                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18629                         case "$netdb_net_type" in
18630                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18631                                 if ./protochk "$try" $hdrs; then
18632                                         echo "Your system accepts $xxx."
18633                                         netdb_net_type="$xxx"
18634                                 fi
18635                                 ;;
18636                         esac
18637                 done
18638                 : In case none of those worked, prompt the user.
18639                 case "$netdb_net_type" in
18640                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18641                         dflt='long'
18642                         . ./myread
18643                         netdb_net_type=$ans
18644                         ;;
18645                 esac
18646                 ;;
18647         *)      : no getnetbyaddr, so pick harmless default
18648                 netdb_net_type='long'
18649                 ;;
18650         esac
18651 fi
18652 : locate the preferred pager for this system
18653 fn=f/
18654 case "$pager" in
18655 '')
18656         dflt=''
18657         case "$pg" in
18658         /*) dflt=$pg;;
18659         [a-zA-Z]:/*) dflt=$pg;;
18660         esac
18661         case "$more" in
18662         /*) dflt=$more;;
18663         [a-zA-Z]:/*) dflt=$more;;
18664         esac
18665         case "$less" in
18666         /*) dflt=$less;;
18667         [a-zA-Z]:/*) dflt=$less;;
18668         esac
18669         case "$dflt" in
18670         '') dflt=/usr/ucb/more;;
18671         esac
18672         ;;
18673 *)      dflt="$pager"
18674         : Instruct ./getfile to trust the hinted or previous pager value,
18675         : even if it does not begin with a slash.  For example, on os2,
18676         : pager might be cmd /c more.  See comments in UU/getfile.
18677         fn="f/($pager)"
18678         ;;
18679 esac
18680 echo " "
18681 rp='What pager is used on your system?'
18682 . ./getfile
18683 pager="$ans"
18684
18685 : see what type pids are declared as in the kernel
18686 rp="What is the type of process ids on this system?"
18687 set pid_t pidtype int stdio.h sys/types.h
18688 eval $typedef_ask
18689
18690 : see if ar generates random libraries by itself
18691 echo " "
18692 echo "Checking how to generate random libraries on your machine..." >&4
18693 echo 'int bar1() { return bar2(); }' > bar1.c
18694 echo 'int bar2() { return 2; }' > bar2.c
18695 $cat > foo.c <<EOP
18696 #$i_stdlib I_STDLIB
18697 #ifdef I_STDLIB
18698 #include <stdlib.h>
18699 #endif
18700 int main() { printf("%d\n", bar1()); exit(0); }
18701 EOP
18702 $cc $ccflags -c bar1.c >/dev/null 2>&1
18703 $cc $ccflags -c bar2.c >/dev/null 2>&1
18704 $cc $ccflags -c foo.c >/dev/null 2>&1
18705 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18706 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18707         $run ./foobar >/dev/null 2>&1; then
18708         echo "$ar appears to generate random libraries itself."
18709         orderlib=false
18710         ranlib=":"
18711 elif $ar ts bar$_a >/dev/null 2>&1 &&
18712         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18713         $run ./foobar >/dev/null 2>&1; then
18714                 echo "a table of contents needs to be added with '$ar ts'."
18715                 orderlib=false
18716                 ranlib="$ar ts"
18717 else
18718         case "$ranlib" in
18719         :) ranlib='';;
18720         '')
18721                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18722                 $test -f $ranlib || ranlib=''
18723                 ;;
18724         esac
18725         if $test -n "$ranlib"; then
18726                 echo "your system has '$ranlib'; we'll use that."
18727                 orderlib=false
18728         else
18729                 echo "your system doesn't seem to support random libraries"
18730                 echo "so we'll use lorder and tsort to order the libraries."
18731                 orderlib=true
18732                 ranlib=":"
18733         fi
18734 fi
18735 $rm -f foo* bar* 
18736
18737 : check for type of arguments to select. 
18738 case "$selecttype" in
18739 '') case "$d_select" in
18740         $define)
18741                 echo " "
18742                 $cat <<EOM
18743 Checking to see what type of arguments are accepted by select().
18744 EOM
18745                 hdrs="$define sys/types.h
18746                         $i_systime sys/time.h 
18747                         $i_sysselct sys/select.h
18748                         $d_socket sys/socket.h"
18749                 : The first arg can be int, unsigned, or size_t
18750                 : The last arg may or may not be 'const'
18751                 val=''
18752                 : void pointer has been seen but using that
18753                 : breaks the selectminbits test
18754                 for xxx in 'fd_set *' 'int *'; do
18755                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18756                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18757                                         case "$val" in
18758                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18759                                                 if ./protochk "$try" $hdrs; then
18760                                                         echo "Your system accepts $xxx."
18761                                                         val="$xxx"
18762                                                 fi
18763                                                 ;;
18764                                         esac
18765                                 done
18766                         done
18767                 done
18768                 case "$val" in
18769                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18770                         case "$d_fd_set" in
18771                                 $define) dflt="fd_set *" ;;
18772                                 *)              dflt="int *" ;;
18773                         esac
18774                         . ./myread
18775                         val=$ans
18776                         ;;
18777                 esac
18778                 selecttype="$val"
18779                 ;;
18780         *)      : no select, so pick a harmless default
18781                 selecttype='int *'
18782                 ;;
18783         esac
18784         ;;
18785 esac
18786
18787 : check for the select 'width'
18788 case "$selectminbits" in
18789 '') safebits=`expr $ptrsize \* 8`
18790     case "$d_select" in
18791         $define)
18792                 $cat <<EOM
18793
18794 Checking to see on how many bits at a time your select() operates...
18795 EOM
18796                 $cat >try.c <<EOCP
18797 #include <sys/types.h>
18798 #$i_time I_TIME
18799 #$i_systime I_SYS_TIME
18800 #$i_systimek I_SYS_TIME_KERNEL
18801 #ifdef I_TIME
18802 #   include <time.h>
18803 #endif
18804 #ifdef I_SYS_TIME
18805 #   ifdef I_SYS_TIME_KERNEL
18806 #       define KERNEL
18807 #   endif
18808 #   include <sys/time.h>
18809 #   ifdef I_SYS_TIME_KERNEL
18810 #       undef KERNEL
18811 #   endif
18812 #endif
18813 #$i_sysselct I_SYS_SELECT
18814 #ifdef I_SYS_SELECT
18815 #include <sys/select.h>
18816 #endif
18817 #$d_socket HAS_SOCKET
18818 #ifdef HAS_SOCKET
18819 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18820 #endif
18821 #include <stdio.h>
18822 #$i_stdlib I_STDLIB
18823 #ifdef I_STDLIB
18824 #include <stdlib.h>
18825 #endif
18826 $selecttype b;
18827 #define S sizeof(*(b))
18828 #define MINBITS 64
18829 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18830 #define NBITS  (NBYTES * 8)
18831 int main() {
18832     char *s = malloc(NBYTES);
18833     struct timeval t;
18834     int i;
18835     FILE* fp;
18836     int fd;
18837
18838     if (!s)
18839         exit(1);
18840     fclose(stdin);
18841     fp = fopen("try.c", "r");
18842     if (fp == 0)
18843       exit(2);
18844     fd = fileno(fp);
18845     if (fd < 0)
18846       exit(3);
18847     b = ($selecttype)s;
18848     for (i = 0; i < NBITS; i++)
18849         FD_SET(i, b);
18850     t.tv_sec  = 0;
18851     t.tv_usec = 0;
18852     select(fd + 1, b, 0, 0, &t);
18853     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18854     free(s);
18855     printf("%d\n", i + 1);
18856     return 0;
18857 }
18858 EOCP
18859                 set try
18860                 if eval $compile_ok; then
18861                         selectminbits=`$run ./try`
18862                         case "$selectminbits" in
18863                         '')     cat >&4 <<EOM
18864 Cannot figure out on how many bits at a time your select() operates.
18865 I'll play safe and guess it is $safebits bits.
18866 EOM
18867                                 selectminbits=$safebits
18868                                 bits="$safebits bits"
18869                                 ;;
18870                         1)      bits="1 bit" ;;
18871                         *)      bits="$selectminbits bits" ;;
18872                         esac
18873                         echo "Your select() operates on $bits at a time." >&4
18874                 else
18875                         rp='What is the minimum number of bits your select() operates on?'
18876                         case "$byteorder" in
18877                         12345678)       dflt=64 ;;
18878                         1234)           dflt=32 ;;
18879                         *)              dflt=1  ;;
18880                         esac
18881                         . ./myread
18882                         val=$ans
18883                         selectminbits="$val"
18884                 fi
18885                 $rm -f try.* try
18886                 ;;
18887         *)      : no select, so pick a harmless default
18888                 selectminbits=$safebits
18889                 ;;
18890         esac
18891         ;;
18892 esac
18893
18894 : Trace out the files included by signal.h, then look for SIGxxx names.
18895 : Remove SIGARRAYSIZE used by HPUX.
18896 : Remove SIGSTKSIZE used by Linux.
18897 : Remove SIGSTKSZ used by Posix.
18898 : Remove SIGTYP void lines used by OS2.
18899 : Some cpps, like os390, dont give the file name anywhere
18900 if [ "X$fieldn" = X ]; then
18901         : Just make some guesses.  We check them later.
18902         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18903 else
18904         xxx=`echo '#include <signal.h>' |
18905         $cppstdin $cppminus $cppflags 2>/dev/null |
18906         $grep '^[       ]*#.*include' | 
18907         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18908 fi
18909 : Check this list of files to be sure we have parsed the cpp output ok.
18910 : This will also avoid potentially non-existent files, such 
18911 : as ../foo/bar.h
18912 xxxfiles=''
18913 for xx in $xxx /dev/null ; do
18914         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18915 done
18916 : If we have found no files, at least try signal.h
18917 case "$xxxfiles" in
18918 '')     xxxfiles=`./findhdr signal.h` ;;
18919 esac
18920 xxx=`awk '
18921 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18922         print substr($2, 4, 20)
18923 }
18924 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18925         print substr($3, 4, 20)
18926 }' $xxxfiles`
18927 : Append some common names just in case the awk scan failed.
18928 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18929 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18930 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18931 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18932 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18933
18934 : generate a few handy files for later
18935 $cat > signal.c <<EOCP
18936 #include <sys/types.h>
18937 #include <signal.h>
18938 #$i_stdlib I_STDLIB
18939 #ifdef I_STDLIB
18940 #include <stdlib.h>
18941 #endif
18942 #include <stdio.h>
18943 int main() {
18944
18945 /* Strange style to avoid deeply-nested #if/#else/#endif */
18946 #ifndef NSIG
18947 #  ifdef _NSIG
18948 #    define NSIG (_NSIG)
18949 #  endif
18950 #endif
18951
18952 #ifndef NSIG
18953 #  ifdef SIGMAX
18954 #    define NSIG (SIGMAX+1)
18955 #  endif
18956 #endif
18957
18958 #ifndef NSIG
18959 #  ifdef SIG_MAX
18960 #    define NSIG (SIG_MAX+1)
18961 #  endif
18962 #endif
18963
18964 #ifndef NSIG
18965 #  ifdef MAXSIG
18966 #    define NSIG (MAXSIG+1)
18967 #  endif
18968 #endif
18969
18970 #ifndef NSIG
18971 #  ifdef MAX_SIG
18972 #    define NSIG (MAX_SIG+1)
18973 #  endif
18974 #endif
18975
18976 #ifndef NSIG
18977 #  ifdef SIGARRAYSIZE
18978 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18979 #  endif
18980 #endif
18981
18982 #ifndef NSIG
18983 #  ifdef _sys_nsig
18984 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18985 #  endif
18986 #endif
18987
18988 /* Default to some arbitrary number that's big enough to get most
18989    of the common signals.
18990 */
18991 #ifndef NSIG
18992 #    define NSIG 50
18993 #endif
18994
18995 printf("NSIG %d\n", NSIG);
18996
18997 #ifndef JUST_NSIG
18998
18999 EOCP
19000
19001 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19002 {
19003         printf "#ifdef SIG"; printf $1; printf "\n"
19004         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19005         printf $1; printf ");\n"
19006         printf "#endif\n"
19007 }
19008 END {
19009         printf "#endif /* JUST_NSIG */\n";
19010         printf "exit(0);\n}\n";
19011 }
19012 ' >>signal.c
19013 $cat >signal.awk <<'EOP'
19014 BEGIN { ndups = 0 }
19015 $1 ~ /^NSIG$/ { nsig = $2 }
19016 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19017     if ($2 > maxsig) { maxsig = $2 }
19018     if (sig_name[$2]) {
19019         dup_name[ndups] = $1
19020         dup_num[ndups] = $2
19021         ndups++ 
19022     }
19023     else {
19024         sig_name[$2] = $1
19025         sig_num[$2] = $2
19026     }
19027 }
19028 END { 
19029     if (nsig == 0) {
19030         nsig = maxsig + 1
19031     }
19032     printf("NSIG %d\n", nsig);
19033     for (n = 1; n < nsig; n++) {
19034         if (sig_name[n]) {
19035             printf("%s %d\n", sig_name[n], sig_num[n])
19036         }
19037         else {
19038             printf("NUM%d %d\n", n, n) 
19039         }
19040     }
19041     for (n = 0; n < ndups; n++) {
19042         printf("%s %d\n", dup_name[n], dup_num[n])
19043     }
19044 }
19045 EOP
19046 $cat >signal_cmd <<EOS
19047 $startsh
19048 if $test -s signal.lst; then
19049     echo "Using your existing signal.lst file"
19050         exit 0
19051 fi
19052 xxx="$xxx"
19053 EOS
19054 $cat >>signal_cmd <<'EOS'
19055
19056 set signal
19057 if eval $compile_ok; then
19058         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19059 else
19060         echo "(I can't seem be able to compile the whole test program)" >&4
19061         echo "(I'll try it in little pieces.)" >&4
19062         set signal -DJUST_NSIG
19063         if eval $compile_ok; then
19064                 $run ./signal$_exe > signal.nsg
19065                 $cat signal.nsg
19066         else
19067                 echo "I can't seem to figure out how many signals you have." >&4
19068                 echo "Guessing 50." >&4
19069                 echo 'NSIG 50' > signal.nsg
19070         fi
19071         : Now look at all the signal names, one at a time.
19072         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19073                 $cat > signal.c <<EOCP
19074 #include <sys/types.h>
19075 #include <signal.h>
19076 #include <stdio.h>
19077 int main() {
19078 printf("$xx %d\n", SIG${xx});
19079 return 0;
19080 }
19081 EOCP
19082                 set signal
19083                 if eval $compile; then
19084                         echo "SIG${xx} found."
19085                         $run ./signal$_exe  >> signal.ls1
19086                 else
19087                         echo "SIG${xx} NOT found."
19088                 fi
19089         done
19090         if $test -s signal.ls1; then
19091                 $cat signal.nsg signal.ls1 |
19092                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19093         fi
19094
19095 fi
19096 if $test -s signal.lst; then
19097         :
19098 else
19099         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19100         echo 'kill -l' >signal
19101         set X `csh -f <signal`
19102         $rm -f signal
19103         shift
19104         case $# in
19105         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19106         esac
19107         echo $@ | $tr ' ' $trnl | \
19108             $awk '{ printf "%s %d\n", $1, ++s; }
19109                   END { printf "NSIG %d\n", ++s }' >signal.lst
19110 fi
19111 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19112 EOS
19113 chmod a+x signal_cmd
19114 $eunicefix signal_cmd
19115
19116 : generate list of signal names
19117 echo " "
19118 case "$sig_name_init" in
19119 '') doinit=yes ;;
19120 *)  case "$sig_num_init" in
19121     ''|*,*) doinit=yes ;;
19122     esac ;;
19123 esac
19124 case "$doinit" in
19125 yes)
19126         echo "Generating a list of signal names and numbers..." >&4
19127         . ./signal_cmd
19128         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19129         sig_name=`$awk 'BEGIN { printf "ZERO " }
19130                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19131         sig_num=`$awk  'BEGIN { printf "0 " }
19132                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19133         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19134                              !/^NSIG/   { printf "\"%s\", ", $1 }
19135                              END        { printf "0\n" }' signal.lst`
19136         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19137                              !/^NSIG/   { printf "%d, ", $2}
19138                              END        { printf "0\n"}' signal.lst`
19139         ;;
19140 esac
19141 echo "The following $sig_count signals are available:"
19142 echo " "
19143 echo $sig_name | $awk \
19144 'BEGIN { linelen = 0 }
19145 {
19146         for (i = 1; i <= NF; i++) {
19147                 name = "SIG" $i " "
19148                 linelen = linelen + length(name)
19149                 if (linelen > 70) {
19150                         printf "\n"
19151                         linelen = length(name)
19152                 }
19153                 printf "%s", name
19154         }
19155         printf "\n"
19156 }'
19157 sig_size=`echo $sig_name | awk '{print NF}'`
19158 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19159
19160 echo " "
19161 case "$sizetype" in
19162 *_t) zzz="$sizetype"    ;;
19163 *)   zzz="filesize"     ;;
19164 esac
19165 echo "Checking the size of $zzz..." >&4 
19166 cat > try.c <<EOCP
19167 #include <sys/types.h>
19168 #include <stdio.h>
19169 #$i_stdlib I_STDLIB
19170 #ifdef I_STDLIB
19171 #include <stdlib.h>
19172 #endif
19173 int main() {
19174     printf("%d\n", (int)sizeof($sizetype));
19175     exit(0);
19176 }
19177 EOCP
19178 set try
19179 if eval $compile_ok; then
19180         yyy=`$run ./try`
19181         case "$yyy" in
19182         '')     sizesize=4
19183                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19184                 ;;
19185         *)      sizesize=$yyy
19186                 echo "Your $zzz size is $sizesize bytes."
19187                 ;;
19188         esac
19189 else
19190         sizesize=4
19191         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19192 fi
19193
19194
19195 : check for socklen_t
19196 echo " "
19197 echo "Checking to see if you have socklen_t..." >&4
19198 $cat >try.c <<EOCP
19199 #include <sys/types.h>
19200 #$d_socket HAS_SOCKET
19201 #ifdef HAS_SOCKET
19202 #include <sys/socket.h>
19203 #endif
19204 int main() { socklen_t x = 16; }
19205 EOCP
19206 set try
19207 if eval $compile; then
19208         val="$define"
19209         echo "You have socklen_t."
19210 else
19211         val="$undef"
19212         echo "You do not have socklen_t."
19213         case "$sizetype" in
19214         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19215         esac
19216 fi
19217 $rm -f try try.*
19218 set d_socklen_t
19219 eval $setvar
19220
19221 : see if this is a socks.h system
19222 set socks.h i_socks
19223 eval $inhdr
19224
19225 : check for type of the size argument to socket calls
19226 case "$d_socket" in
19227 "$define")
19228         $cat <<EOM
19229
19230 Checking to see what type is the last argument of accept().
19231 EOM
19232         yyy=''
19233         case "$d_socklen_t" in
19234         "$define") yyy="$yyy socklen_t"
19235         esac
19236         yyy="$yyy $sizetype int long unsigned"
19237         for xxx in $yyy; do
19238                 case "$socksizetype" in
19239                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19240                         case "$usesocks" in
19241                         "$define")
19242                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19243                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19244                                         socksizetype="$xxx"
19245                                 fi
19246                                 ;;
19247                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19248                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19249                                         socksizetype="$xxx"
19250                                 fi
19251                                 ;;
19252                         esac
19253                         ;;
19254                 esac
19255         done
19256 : In case none of those worked, prompt the user.
19257         case "$socksizetype" in
19258         '')     rp='What is the type for socket address structure sizes?'
19259                 dflt='int'
19260                 . ./myread
19261                 socksizetype=$ans
19262                 ;;
19263         esac
19264         ;;
19265 *)      : no sockets, so pick relatively harmless default
19266         socksizetype='int'
19267         ;;
19268 esac
19269
19270 : see what type is used for signed size_t
19271 set ssize_t ssizetype int stdio.h sys/types.h
19272 eval $typedef
19273 dflt="$ssizetype"
19274 $cat > try.c <<EOM
19275 #include <stdio.h>
19276 #$i_stdlib I_STDLIB
19277 #ifdef I_STDLIB
19278 #include <stdlib.h>
19279 #endif
19280 #include <sys/types.h>
19281 #define Size_t $sizetype
19282 #define SSize_t $dflt
19283 int main()
19284 {
19285         if (sizeof(Size_t) == sizeof(SSize_t))
19286                 printf("$dflt\n");
19287         else if (sizeof(Size_t) == sizeof(int))
19288                 printf("int\n");
19289         else 
19290                 printf("long\n");
19291         exit(0);
19292 }
19293 EOM
19294 echo " "
19295 set try
19296 if eval $compile_ok && $run ./try > /dev/null; then
19297         ssizetype=`$run ./try`
19298         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19299 else
19300         $cat >&4 <<EOM
19301 Help! I can't compile and run the ssize_t test program: please enlighten me!
19302 (This is probably a misconfiguration in your system or libraries, and
19303 you really ought to fix it.  Still, I'll try anyway.)
19304
19305 I need a type that is the same size as $sizetype, but is guaranteed to
19306 be signed.  Common values are ssize_t, int and long.
19307
19308 EOM
19309         rp="What signed type is the same size as $sizetype?"
19310         . ./myread
19311         ssizetype="$ans"
19312 fi
19313 $rm -f try try.*
19314
19315 : see what type of char stdio uses.
19316 echo " "
19317 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19318 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19319         echo "Your stdio uses unsigned chars." >&4
19320         stdchar="unsigned char"
19321 else
19322         echo "Your stdio uses signed chars." >&4
19323         stdchar="char"
19324 fi
19325 $rm -f stdioh
19326
19327
19328
19329 : see what type uids are declared as in the kernel
19330 echo " "
19331 echo "Looking for the type for user ids returned by getuid()."
19332 set uid_t uidtype xxx stdio.h sys/types.h
19333 eval $typedef
19334 case "$uidtype" in
19335 xxx)
19336         xxx=`./findhdr sys/user.h`
19337         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19338         case $1 in
19339         unsigned) dflt="$1 $2" ;;
19340         *) dflt="$1" ;;
19341         esac
19342         ;;
19343 *) dflt="$uidtype";;
19344 esac
19345 case "$uidtype" in
19346 uid_t)  echo "uid_t found." ;;
19347 *)      rp="What is the type for user ids returned by getuid()?"
19348         . ./myread
19349         uidtype="$ans"
19350         ;;
19351 esac
19352
19353 echo " "
19354 case "$uidtype" in
19355 *_t) zzz="$uidtype"     ;;
19356 *)   zzz="uid"          ;;
19357 esac
19358 echo "Checking the size of $zzz..." >&4 
19359 cat > try.c <<EOCP
19360 #include <sys/types.h>
19361 #include <stdio.h>
19362 #$i_stdlib I_STDLIB
19363 #ifdef I_STDLIB
19364 #include <stdlib.h>
19365 #endif
19366 int main() {
19367     printf("%d\n", (int)sizeof($uidtype));
19368     exit(0);
19369 }
19370 EOCP
19371 set try
19372 if eval $compile_ok; then
19373         yyy=`$run ./try`
19374         case "$yyy" in
19375         '')     uidsize=4
19376                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19377                 ;;
19378         *)      uidsize=$yyy
19379                 echo "Your $zzz is $uidsize bytes long."
19380                 ;;
19381         esac
19382 else
19383         uidsize=4
19384         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19385 fi
19386
19387 echo " "
19388 case "$uidtype" in
19389 *_t) zzz="$uidtype"     ;;
19390 *)   zzz="uid"          ;;
19391 esac
19392 echo "Checking the sign of $zzz..." >&4
19393 cat > try.c <<EOCP
19394 #include <sys/types.h>
19395 #include <stdio.h>
19396 int main() {
19397         $uidtype foo = -1;
19398         if (foo < 0)
19399                 printf("-1\n");
19400         else
19401                 printf("1\n");
19402 }
19403 EOCP
19404 set try
19405 if eval $compile; then
19406         yyy=`$run ./try`
19407         case "$yyy" in
19408         '')     uidsign=1
19409                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19410                 ;;
19411         *)      uidsign=$yyy
19412                 case "$uidsign" in
19413                  1) echo "Your $zzz is unsigned." ;;
19414                 -1) echo "Your $zzz is signed."   ;;
19415                 esac
19416                 ;;
19417         esac
19418 else
19419         uidsign=1
19420         echo "(I can't compile the test program--guessing unsigned.)" >&4
19421 fi
19422
19423
19424
19425 echo " "
19426 $echo "Checking the format string to be used for uids..." >&4
19427
19428 case "$uidsign" in
19429 -1)     if $test X"$uidsize" = X"$ivsize"; then
19430                 uidformat="$ivdformat"
19431         else
19432                 if $test X"$uidsize" = X"$longsize"; then
19433                         uidformat='"ld"'
19434                 else
19435                         if $test X"$uidsize" = X"$intsize"; then
19436                                 uidformat='"d"'
19437                         else
19438                                 if $test X"$uidsize" = X"$shortsize"; then
19439                                         uidformat='"hd"'
19440                                 fi
19441                         fi
19442                 fi
19443         fi
19444         ;;
19445 *)      if $test X"$uidsize" = X"$uvsize"; then
19446                 uidformat="$uvuformat"
19447         else
19448                 if $test X"$uidsize" = X"$longsize"; then
19449                         uidformat='"lu"'
19450                 else
19451                         if $test X"$uidsize" = X"$intsize"; then
19452                                 uidformat='"u"'
19453                         else
19454                                 if $test X"$uidsize" = X"$shortsize"; then
19455                                         uidformat='"hu"'
19456                                 fi
19457                         fi
19458                 fi
19459         fi
19460         ;;
19461 esac
19462
19463 : determine compiler compiler
19464 case "$yacc" in
19465 '')
19466         dflt=yacc;;
19467 *)
19468         dflt="$yacc";;
19469 esac
19470 echo " "
19471 comp='yacc'
19472 if $test -f "$byacc$_exe"; then
19473         dflt="$byacc"
19474         comp="byacc or $comp"
19475 fi
19476 if $test -f "$bison$_exe"; then
19477         comp="$comp or bison -y"
19478 fi
19479 rp="Which compiler compiler ($comp) shall I use?"
19480 . ./myread
19481 yacc="$ans"
19482 case "$yacc" in
19483 *bis*)
19484         case "$yacc" in
19485         *-y*) ;;
19486         *)
19487                 yacc="$yacc -y"
19488                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19489                 ;;
19490         esac
19491         ;;
19492 esac
19493
19494 : see if this is a fp.h system
19495 set fp.h i_fp
19496 eval $inhdr
19497
19498 : see if this is a fp_class.h system
19499 set fp_class.h i_fp_class
19500 eval $inhdr
19501
19502 : see if this is a ieeefp.h system
19503 case "$i_ieeefp" in
19504 '' ) set ieeefp.h i_ieeefp
19505      eval $inhdr
19506      ;;
19507 esac
19508
19509 : see if this is a libutil.h system
19510 set libutil.h i_libutil
19511 eval $inhdr
19512
19513 : see if mach cthreads are available
19514 if test "X$usethreads" = "X$define"; then
19515         set mach/cthreads.h i_machcthr
19516         eval $inhdr
19517 else
19518         i_machcthr="$undef"
19519 fi
19520
19521
19522
19523 : see if this is a math.h system
19524 set math.h i_math
19525 eval $inhdr
19526
19527 : see if this is a mntent.h system
19528 set mntent.h i_mntent
19529 eval $inhdr
19530
19531 : see if ndbm.h is available
19532 set ndbm.h t_ndbm
19533 eval $inhdr
19534
19535 case "$t_ndbm" in
19536 $undef)
19537     # Some Linux distributions such as RedHat 7.1 put the
19538     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19539     if $test -f /usr/include/gdbm/ndbm.h; then
19540         echo '<gdbm/ndbm.h> found.'
19541         ccflags="$ccflags -I/usr/include/gdbm"
19542         cppflags="$cppflags -I/usr/include/gdbm"
19543         t_ndbm=$define
19544     fi
19545     ;;
19546 esac
19547
19548 case "$t_ndbm" in
19549 $define)
19550         : see if dbm_open exists
19551         set dbm_open d_dbm_open
19552         eval $inlibc
19553         case "$d_dbm_open" in
19554         $undef)
19555                 t_ndbm="$undef"
19556                 echo "We won't be including <ndbm.h>"
19557                 ;;
19558         esac
19559         ;;
19560 esac
19561 val="$t_ndbm"
19562 set i_ndbm
19563 eval $setvar
19564
19565 : see if net/errno.h is available
19566 val=''
19567 set net/errno.h val
19568 eval $inhdr
19569
19570 : Unfortunately, it causes problems on some systems.  Arrgh.
19571 case "$val" in
19572 $define)
19573         cat > try.c <<'EOM'
19574 #include <stdio.h>
19575 #include <errno.h>
19576 #include <net/errno.h>
19577 int func()
19578 {
19579         return ENOTSOCK;
19580 }
19581 EOM
19582         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19583                 echo "We'll be including <net/errno.h>." >&4
19584         else
19585                 echo "We won't be including <net/errno.h>." >&4
19586                 val="$undef"
19587         fi
19588         $rm -f try.* try
19589         ;;
19590 esac
19591 set i_neterrno
19592 eval $setvar
19593
19594 : see if netinet/tcp.h is available
19595 set netinet/tcp.h i_netinettcp
19596 eval $inhdr
19597
19598 : see if this is a poll.h system
19599 set poll.h i_poll
19600 eval $inhdr
19601
19602 : see if this is a prot.h system
19603 set prot.h i_prot
19604 eval $inhdr
19605
19606 echo " "
19607 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19608 $cat <<'EOSH' > Cppsym.know
19609 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19610 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19611 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19612 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19613 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19614 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19615 bull c cadmus clipper CMU COFF COMPILER_VERSION
19616 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19617 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19618 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19619 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19620 GLIBC GLIBC_MINOR
19621 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19622 H3050R H3050RX hbullx20 hcx host_mips
19623 hp200 hp300 hp700 HP700 hp800 hp9000
19624 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19625 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19626 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19627 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19628 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19629 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19630 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19631 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19632 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19633 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19634 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19635 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19636 MATH_HAS_NO_SIDE_EFFECTS
19637 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19638 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19639 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19640 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19641 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19642 NetBSD news1500 news1700 news1800 news1900 news3700
19643 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19644 ns32016 ns32332 ns32k nsc32000
19645 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19646 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19647 pc532 pdp11 PGC PIC plexus PORTAR posix
19648 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19649 POSIX_C_SOURCE POSIX_SOURCE POWER
19650 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19651 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19652 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19653 sony sony_news sonyrisc sparc sparclite spectrum
19654 stardent stdc STDC_EXT stratos sun sun3 sun386
19655 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19656 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19657 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19658 sysV68 sysV88 Tek4132 Tek4300 titan
19659 TM3200 TM5400 TM5600
19660 tower tower32 tower32_200 tower32_600 tower32_700
19661 tower32_800 tower32_850 tss
19662 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19663 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19664 unix UNIX95 UNIX99 unixpc unos
19665 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19666 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19667 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19668 USGr4 USGr4_2
19669 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19670 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19671 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19672 z8000
19673 EOSH
19674 # Maybe put other stuff here too.
19675 cat <<EOSH >>Cppsym.know
19676 $osname
19677 EOSH
19678 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19679 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19680 $cat Cppsym.know > Cppsym.c
19681 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19682 $rm -f Cppsym.a Cppsym.b Cppsym.c
19683 cat <<EOSH > Cppsym
19684 $startsh
19685 if $test \$# -gt 0; then
19686     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19687     if $test -s Cppsym.got; then
19688         $rm -f Cppsym.got
19689         exit 0
19690     fi
19691     $rm -f Cppsym.got
19692     exit 1
19693 else
19694     $tr " " "$trnl" | ./Cppsym.try
19695     exit 0
19696 fi
19697 EOSH
19698 chmod +x Cppsym
19699 $eunicefix Cppsym
19700 cat <<EOSH > Cppsym.try
19701 $startsh
19702 cat <<'EOCP' > try.c
19703 #include <stdio.h>
19704 int main() {
19705 EOCP
19706 $awk \\
19707 EOSH
19708 cat <<'EOSH' >> Cppsym.try
19709 'length($1) > 0 {
19710     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
19711     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
19712     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
19713     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
19714 }'       >> try.c
19715 echo 'return 0;}' >> try.c
19716 EOSH
19717 cat <<EOSH >> Cppsym.try
19718 ccflags="$ccflags"
19719 case "$osname-$gccversion" in
19720 irix-) ccflags="\$ccflags -woff 1178" ;;
19721 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19722 esac
19723 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19724 EOSH
19725 chmod +x Cppsym.try
19726 $eunicefix Cppsym.try
19727 ./Cppsym < Cppsym.know > Cppsym.true
19728 : now check the C compiler for additional symbols
19729 postprocess_cc_v=''
19730 case "$osname" in
19731 aix) postprocess_cc_v="|$tr , ' '" ;;
19732 esac
19733 $cat >ccsym <<EOS
19734 $startsh
19735 $cat >tmp.c <<EOF
19736 extern int foo;
19737 EOF
19738 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19739 do
19740         case "\$i" in
19741         -D*) echo "\$i" | $sed 's/^-D//';;
19742         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19743         esac
19744 done
19745 $rm -f try.c
19746 EOS
19747 postprocess_cc_v=''
19748 chmod +x ccsym
19749 $eunicefix ccsym
19750 ./ccsym > ccsym1.raw
19751 if $test -s ccsym1.raw; then
19752        $sort ccsym1.raw | $uniq >ccsym.raw
19753 else
19754        mv ccsym1.raw ccsym.raw
19755 fi
19756
19757 $awk '/\=/ { print $0; next }
19758         { print $0"=1" }' ccsym.raw >ccsym.list
19759 $awk '/\=/ { print $0; next }
19760         { print $0"=1" }' Cppsym.true >ccsym.true
19761 $comm -13 ccsym.true ccsym.list >ccsym.own
19762 $comm -12 ccsym.true ccsym.list >ccsym.com
19763 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19764 also=''
19765 if $test -z ccsym.raw; then
19766         echo "Your C compiler doesn't seem to define any symbols!" >&4
19767         echo " "
19768         echo "However, your C preprocessor defines the following symbols:"
19769         $cat Cppsym.true
19770         ccsymbols=''
19771         cppsymbols=`$cat Cppsym.true`
19772         cppsymbols=`echo $cppsymbols`
19773         cppccsymbols="$cppsymbols"
19774 else
19775         if $test -s ccsym.com; then
19776                 echo "Your C compiler and pre-processor define these symbols:"
19777                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19778                 also='also '
19779                 symbols='ones'
19780                 cppccsymbols=`$cat ccsym.com`
19781                 cppccsymbols=`echo $cppccsymbols`
19782                 $test "$silent" || sleep 1
19783         fi
19784         if $test -s ccsym.cpp; then
19785                 $test "$also" && echo " "
19786                 echo "Your C pre-processor ${also}defines the following symbols:"
19787                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19788                 also='further '
19789                 cppsymbols=`$cat ccsym.cpp`
19790                 cppsymbols=`echo $cppsymbols`
19791                 $test "$silent" || sleep 1
19792         fi
19793         if $test -s ccsym.own; then
19794                 $test "$also" && echo " "
19795                 echo "Your C compiler ${also}defines the following cpp symbols:"
19796                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19797                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19798                 ccsymbols=`$cat ccsym.own`
19799                 ccsymbols=`echo $ccsymbols`
19800                 $test "$silent" || sleep 1
19801         fi
19802 fi
19803
19804 : see if this is a termio system
19805 val="$undef"
19806 val2="$undef"
19807 val3="$undef"
19808 if $test `./findhdr termios.h`; then
19809         set tcsetattr i_termios
19810         eval $inlibc
19811         val3="$i_termios"
19812 fi
19813 echo " "
19814 case "$val3" in
19815 "$define") echo "You have POSIX termios.h... good!" >&4;;
19816 *) if ./Cppsym pyr; then
19817                 case "`/bin/universe`" in
19818                 ucb) if $test `./findhdr sgtty.h`; then
19819                                 val2="$define"
19820                                 echo "<sgtty.h> found." >&4
19821                         else
19822                                 echo "System is pyramid with BSD universe."
19823                                 echo "<sgtty.h> not found--you could have problems." >&4
19824                         fi;;
19825                 *) if $test `./findhdr termio.h`; then
19826                                 val="$define"
19827                                 echo "<termio.h> found." >&4
19828                         else
19829                                 echo "System is pyramid with USG universe."
19830                                 echo "<termio.h> not found--you could have problems." >&4
19831                         fi;;
19832                 esac
19833         elif ./usg; then
19834                 if $test `./findhdr termio.h`; then
19835                         echo "<termio.h> found." >&4
19836                         val="$define"
19837                 elif $test `./findhdr sgtty.h`; then
19838                         echo "<sgtty.h> found." >&4
19839                         val2="$define"
19840                 else
19841 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19842                 fi
19843         else
19844                 if $test `./findhdr sgtty.h`; then
19845                         echo "<sgtty.h> found." >&4
19846                         val2="$define"
19847                 elif $test `./findhdr termio.h`; then
19848                         echo "<termio.h> found." >&4
19849                         val="$define"
19850                 else
19851 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19852                 fi
19853         fi;;
19854 esac
19855 set i_termio; eval $setvar
19856 val=$val2; set i_sgtty; eval $setvar
19857 val=$val3; set i_termios; eval $setvar
19858
19859 : see if stddef is available
19860 set stddef.h i_stddef
19861 eval $inhdr
19862
19863 : see if this is a sunmath.h system
19864 set sunmath.h i_sunmath
19865 eval $inhdr
19866
19867 : see if sys/access.h is available
19868 set sys/access.h i_sysaccess
19869 eval $inhdr
19870
19871 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19872 set sys/filio.h i_sysfilio
19873 eval $inhdr
19874 echo " "
19875 if $test `./findhdr sys/ioctl.h`; then
19876         val="$define"
19877         echo '<sys/ioctl.h> found.' >&4
19878 else
19879         val="$undef"
19880         if $test $i_sysfilio = "$define"; then
19881             echo '<sys/ioctl.h> NOT found.' >&4
19882         else
19883                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19884                 $test $i_termio = "$define" && xxx="termio.h"
19885                 $test $i_termios = "$define" && xxx="termios.h"
19886 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19887         fi
19888 fi
19889 set i_sysioctl
19890 eval $setvar
19891
19892 : see if socket ioctl defs are in sys/sockio.h
19893 echo " "
19894 xxx=`./findhdr sys/sockio.h`
19895 if $test "$xxx"; then
19896         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19897                 val="$define"
19898                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19899         else
19900                 val="$undef"
19901                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19902         fi
19903 else
19904         val="$undef"
19905         $cat <<EOM
19906 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19907 EOM
19908 fi
19909 set i_syssockio
19910 eval $setvar
19911
19912
19913 : see if this is a syslog.h system
19914 set syslog.h i_syslog
19915 eval $inhdr
19916
19917
19918 : see if this is a sys/mode.h system
19919 set sys/mode.h i_sysmode
19920 eval $inhdr
19921
19922 : see if sys/resource.h has to be included
19923 set sys/resource.h i_sysresrc
19924 eval $inhdr
19925
19926 : see if sys/security.h is available
19927 set sys/security.h i_syssecrt
19928 eval $inhdr
19929
19930 : see if this is a sys/statvfs.h system
19931 set sys/statvfs.h i_sysstatvfs
19932 eval $inhdr
19933
19934 : see if this is a sys/un.h system
19935 set sys/un.h i_sysun
19936 eval $inhdr
19937
19938
19939 : see if this is a sys/utsname.h system
19940 set sys/utsname.h i_sysutsname
19941 eval $inhdr
19942
19943 : see if this is a syswait system
19944 set sys/wait.h i_syswait
19945 eval $inhdr
19946
19947 : see if this is a ustat.h system
19948 set ustat.h i_ustat
19949 eval $inhdr
19950
19951 : see if this is an utime system
19952 set utime.h i_utime
19953 eval $inhdr
19954
19955 : see if this is a values.h system
19956 set values.h i_values
19957 eval $inhdr
19958
19959 : see if this is a vfork system
19960 case "$d_vfork" in
19961 "$define")
19962         set vfork.h i_vfork
19963         eval $inhdr
19964         ;;
19965 *)
19966         i_vfork="$undef"
19967         ;;
19968 esac
19969
19970 : see if gdbm.h is available
19971 set gdbm.h t_gdbm
19972 eval $inhdr
19973 case "$t_gdbm" in
19974 $define)
19975         : see if gdbm_open exists
19976         set gdbm_open d_gdbm_open
19977         eval $inlibc
19978         case "$d_gdbm_open" in
19979         $undef)
19980                 t_gdbm="$undef"
19981                 echo "We won't be including <gdbm.h>"
19982                 ;;
19983         esac
19984         ;;
19985 esac
19986 val="$t_gdbm"
19987 set i_gdbm
19988 eval $setvar
19989
19990 echo " "
19991 echo "Looking for extensions..." >&4
19992 : If we are using the old config.sh, known_extensions may contain
19993 : old or inaccurate or duplicate values.
19994 known_extensions=''
19995 nonxs_extensions=''
19996 : We do not use find because it might not be available.
19997 : We do not just use MANIFEST because the user may have dropped
19998 : some additional extensions into the source tree and expect them
19999 : to be built.
20000
20001 : Function to recursively find available extensions, ignoring DynaLoader
20002 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20003 find_extensions='
20004     for xxx in *; do
20005        case "$xxx" in
20006            DynaLoader|dynaload) ;;
20007            *)
20008            if $test -f $xxx/$xxx.xs; then
20009                known_extensions="$known_extensions $1$xxx";
20010            elif $test -f $xxx/Makefile.PL; then
20011                nonxs_extensions="$nonxs_extensions $1$xxx";
20012            else
20013                if $test -d $xxx -a $# -lt 10; then
20014                    set $1$xxx/ $*;
20015                    cd "$xxx";
20016                    eval $find_extensions;
20017                    cd ..;
20018                    shift;
20019                fi;
20020            fi
20021            ;;
20022        esac;
20023     done'
20024 tdir=`pwd`
20025 cd "$rsrc/ext"
20026 set X
20027 shift
20028 eval $find_extensions
20029 # Special case:  Add in threads/shared since it is not picked up by the
20030 # recursive find above (and adding in general recursive finding breaks
20031 # SDBM_File/sdbm).  A.D.  10/25/2001.
20032 known_extensions="$known_extensions threads/shared"
20033 set X $nonxs_extensions
20034 shift
20035 nonxs_extensions="$*"
20036 set X $known_extensions
20037 shift
20038 known_extensions="$*"
20039 cd "$tdir"
20040
20041 : Now see which are supported on this system.
20042 avail_ext=''
20043 for xxx in $known_extensions ; do
20044         case "$xxx" in
20045         DB_File|db_file)
20046                 case "$i_db" in
20047                 $define) avail_ext="$avail_ext $xxx" ;;
20048                 esac
20049                 ;;
20050         GDBM_File|gdbm_fil)
20051                 case "$i_gdbm" in 
20052                 $define) avail_ext="$avail_ext $xxx" ;;
20053                 esac
20054                 ;;
20055         I18N/Langinfo|i18n_lan)
20056                 case "$i_langinfo$d_nl_langinfo" in 
20057                 $define$define) avail_ext="$avail_ext $xxx" ;;
20058                 esac
20059                 ;;
20060         NDBM_File|ndbm_fil)
20061                 case "$i_ndbm" in
20062                 $define)
20063                     case "$osname-$use64bitint" in
20064                     hpux-define)
20065                         case "$libs" in
20066                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20067                         esac
20068                         ;;
20069                     *) avail_ext="$avail_ext $xxx" ;;
20070                     esac
20071                     ;;
20072                 esac
20073                 ;;
20074         ODBM_File|odbm_fil) 
20075                 case "${i_dbm}${i_rpcsvcdbm}" in
20076                 *"${define}"*)
20077                     case "$osname-$use64bitint" in
20078                     hpux-define)
20079                         case "$libs" in
20080                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20081                         esac
20082                         ;;
20083                     *) avail_ext="$avail_ext $xxx" ;;
20084                     esac
20085                     ;;
20086                 esac
20087                 ;;
20088         POSIX|posix)
20089                 case "$useposix" in
20090                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20091                 esac
20092                 ;;
20093         Opcode|opcode)
20094                 case "$useopcode" in
20095                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20096                 esac
20097                 ;;
20098         Socket|socket)
20099                 case "$d_socket" in 
20100                 true|$define|y)
20101                     case "$osname" in
20102                     beos) ;; # not unless BONE
20103                     *) avail_ext="$avail_ext $xxx" ;;
20104                     esac
20105                     ;;
20106                 esac
20107                 ;;
20108         Sys/Syslog|sys/syslog)
20109                 : XXX syslog requires socket
20110                 case "$d_socket" in 
20111                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20112                 esac
20113                 ;;
20114         Thread|thread)
20115                 case "$usethreads" in
20116                 true|$define|y)
20117                         case "$useithreads" in
20118                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20119                         esac
20120                 esac
20121                 ;;
20122         XS/APItest|xs/apitest)
20123                 # This is just for testing.  Skip it unless we have dynamic loading.
20124
20125                 case "$usedl" in
20126                 $define) avail_ext="$avail_ext $xxx" ;;
20127                 esac
20128                 ;;
20129         XS/Typemap|xs/typemap)
20130                 # This is just for testing.  Skip it unless we have dynamic loading.
20131                 case "$usedl" in
20132                 $define) avail_ext="$avail_ext $xxx" ;;
20133                 esac
20134                 ;;
20135         threads|threads/shared)
20136                 # threads and threads::shared are special cases.
20137                 # To stop people from asking "Perl 5.8.0 was supposed
20138                 # to have this new fancy threads implementation but my
20139                 # perl doesn't have it" and from people trying to
20140                 # (re)install the threads module using CPAN.pm and
20141                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20142                 # the threads.pm and threads/shared.pm will always be
20143                 # there, croaking informatively ("you need to rebuild
20144                 # all of Perl with threads, sorry") when threads haven't
20145                 # been compiled in.
20146                 # --jhi
20147                 avail_ext="$avail_ext $xxx"
20148                 ;;
20149         IPC/SysV|ipc/sysv)
20150                 : XXX Do we need a useipcsysv variable here
20151                 case "${d_msg}${d_sem}${d_shm}" in 
20152                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20153                 esac
20154                 ;;
20155         *)      avail_ext="$avail_ext $xxx"
20156                 ;;
20157         esac
20158 done
20159
20160 set X $avail_ext
20161 shift
20162 avail_ext="$*"
20163
20164 case "$onlyextensions" in
20165 '') ;;
20166 *)  keepextensions=''
20167     echo "You have requested that only certains extensions be included..." >&4
20168     for i in $onlyextensions; do
20169         case " $avail_ext " in
20170         *" $i "*)
20171             echo "Keeping extension $i."
20172             keepextensions="$keepextensions $i"
20173             ;;
20174         *) echo "Ignoring extension $i." ;;
20175         esac
20176     done
20177     avail_ext="$keepextensions"
20178     ;;
20179 esac
20180
20181 case "$noextensions" in
20182 '') ;;
20183 *)  keepextensions=''
20184     echo "You have requested that certain extensions be ignored..." >&4
20185     for i in $avail_ext; do
20186         case " $noextensions " in
20187         *" $i "*) echo "Ignoring extension $i." ;;
20188         *) echo "Keeping extension $i.";
20189            keepextensions="$keepextensions $i"
20190            ;;
20191         esac
20192     done
20193     avail_ext="$keepextensions"
20194     ;;
20195 esac
20196
20197 : Now see which nonxs extensions are supported on this system.
20198 : For now assume all are.
20199 nonxs_ext=''
20200 for xxx in $nonxs_extensions ; do
20201         case "$xxx" in
20202         *)      nonxs_ext="$nonxs_ext $xxx"
20203                 ;;
20204         esac
20205 done
20206
20207 set X $nonxs_ext
20208 shift
20209 nonxs_ext="$*"
20210
20211 case $usedl in
20212 $define)
20213         $cat <<EOM
20214 A number of extensions are supplied with $package.  You may choose to
20215 compile these extensions for dynamic loading (the default), compile
20216 them into the $package executable (static loading), or not include
20217 them at all.  Answer "none" to include no extensions.
20218 Note that DynaLoader is always built and need not be mentioned here.
20219
20220 EOM
20221         case "$dynamic_ext" in
20222         '')
20223                 : Exclude those listed in static_ext
20224                 dflt=''
20225                 for xxx in $avail_ext; do
20226                         case " $static_ext " in
20227                         *" $xxx "*) ;;
20228                         *) dflt="$dflt $xxx" ;;
20229                         esac
20230                 done
20231                 set X $dflt
20232                 shift
20233                 dflt="$*"
20234                 ;;
20235         *)      dflt="$dynamic_ext"
20236                 # Perhaps we are reusing an old out-of-date config.sh.
20237                 case "$hint" in
20238                 previous)
20239                         if test X"$dynamic_ext" != X"$avail_ext"; then
20240                                 $cat <<EOM
20241 NOTICE:  Your previous config.sh list may be incorrect. 
20242 The extensions now available to you are 
20243         ${avail_ext}
20244 but the default list from your previous config.sh is
20245         ${dynamic_ext} 
20246
20247 EOM
20248                         fi
20249                         ;;
20250                 esac
20251                 ;;
20252         esac
20253         case "$dflt" in
20254         '')     dflt=none;;
20255         esac
20256         rp="What extensions do you wish to load dynamically?"
20257         . ./myread
20258         case "$ans" in
20259         none) dynamic_ext=' ' ;;
20260         *) dynamic_ext="$ans" ;;
20261         esac
20262
20263         case "$static_ext" in
20264         '')
20265                 : Exclude those already listed in dynamic linking
20266                 dflt=''
20267                 for xxx in $avail_ext; do
20268                         case " $dynamic_ext " in
20269                         *" $xxx "*) ;;
20270                         *) dflt="$dflt $xxx" ;;
20271                         esac
20272                 done
20273                 set X $dflt
20274                 shift
20275                 dflt="$*"
20276                 ;;
20277         *)  dflt="$static_ext" 
20278                 ;;
20279         esac
20280
20281         case "$dflt" in
20282         '')     dflt=none;;
20283         esac
20284         rp="What extensions do you wish to load statically?"
20285         . ./myread
20286         case "$ans" in
20287         none) static_ext=' ' ;;
20288         *) static_ext="$ans" ;;
20289         esac
20290         ;;
20291 *)
20292         $cat <<EOM
20293 A number of extensions are supplied with $package.  Answer "none" 
20294 to include no extensions. 
20295 Note that DynaLoader is always built and need not be mentioned here.
20296
20297 EOM
20298         case "$static_ext" in
20299         '') dflt="$avail_ext" ;;
20300         *)      dflt="$static_ext"
20301                 # Perhaps we are reusing an old out-of-date config.sh.
20302                 case "$hint" in
20303                 previous)
20304                         if test X"$static_ext" != X"$avail_ext"; then
20305                                 $cat <<EOM
20306 NOTICE:  Your previous config.sh list may be incorrect. 
20307 The extensions now available to you are 
20308         ${avail_ext}
20309 but the default list from your previous config.sh is
20310         ${static_ext} 
20311
20312 EOM
20313                         fi
20314                         ;;
20315                 esac
20316                 ;;
20317         esac
20318         : Exclude those that are not xs extensions
20319         case "$dflt" in
20320         '')     dflt=none;;
20321         esac
20322         rp="What extensions do you wish to include?"
20323         . ./myread
20324         case "$ans" in
20325         none) static_ext=' ' ;;
20326         *) static_ext="$ans" ;;
20327         esac
20328         ;;
20329 esac
20330 #        
20331 # Encode is a special case.  If we are building Encode as a static
20332 # extension, we need to explicitly list its subextensions as well.
20333 # For other nested extensions, this is handled automatically by
20334 # the appropriate Makefile.PL.
20335 case " $static_ext " in
20336         *" Encode "*) # Add the subextensions of Encode
20337         cd "$rsrc/ext"
20338         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20339                 static_ext="$static_ext Encode/$xxx"
20340         done
20341         cd "$tdir"
20342         ;;
20343 esac
20344
20345 set X $dynamic_ext $static_ext $nonxs_ext
20346 shift
20347 extensions="$*"
20348
20349 # Sanity check:  We require an extension suitable for use with
20350 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20351 # should show up as failures in the test suite, but it's helpful to
20352 # catch them now.) The 'extensions' list is normally sorted
20353 # alphabetically, so we need to accept either
20354 #    DB_File ... Fcntl ... IO  ....
20355 # or something like
20356 #    Fcntl ... NDBM_File ... IO  ....
20357 case " $extensions"  in
20358 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20359 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20360 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20361 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20362    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20363    ;;
20364 esac
20365
20366 : Remove libraries needed only for extensions
20367 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20368 : The exception is SunOS 4.x, which needs them.
20369 case "${osname}X${osvers}" in
20370 sunos*X4*)
20371     perllibs="$libs"
20372     ;;
20373 *) case "$usedl" in
20374     $define|true|[yY]*)
20375             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20376             shift
20377             perllibs="$*"
20378             ;;
20379     *)  perllibs="$libs"
20380             ;;
20381     esac
20382     ;;
20383 esac
20384
20385 : Remove build directory name from cppstdin so it can be used from
20386 : either the present location or the final installed location.
20387 echo " "
20388 : Get out of the UU directory to get correct path name.
20389 cd ..
20390 case "$cppstdin" in
20391 `pwd`/cppstdin)
20392         echo "Stripping down cppstdin path name"
20393         cppstdin=cppstdin
20394         ;;
20395 esac
20396 cd UU
20397
20398 : end of configuration questions
20399 echo " "
20400 echo "End of configuration questions."
20401 echo " "
20402
20403 : back to where it started
20404 if test -d ../UU; then
20405         cd ..
20406 fi
20407
20408 : configuration may be patched via a 'config.arch' file
20409 if $test -f config.arch; then
20410         echo "I see a config.arch file, loading it."
20411         . ./config.arch
20412 fi
20413
20414 : configuration may be patched via a 'config.over' file
20415 if $test -f config.over; then
20416         echo " "
20417         dflt=y
20418         rp='I see a config.over file.  Do you wish to load it?'
20419         . UU/myread
20420         case "$ans" in
20421         n*) echo "OK, I'll ignore it.";;
20422         *)      . ./config.over
20423                 echo "Configuration override changes have been loaded."
20424                 ;;
20425         esac
20426 fi
20427
20428 : in case they want portability, strip down executable paths
20429 case "$d_portable" in
20430 "$define")
20431         echo " "
20432         echo "Stripping down executable paths..." >&4
20433         for file in $loclist $trylist; do
20434                 eval temp=\$$file
20435                 eval $file=`basename $temp`
20436         done
20437         ;;
20438 esac
20439
20440 : create config.sh file
20441 echo " "
20442 echo "Creating config.sh..." >&4
20443 $spitshell <<EOT >config.sh
20444 $startsh
20445 #
20446 # This file was produced by running the Configure script. It holds all the
20447 # definitions figured out by Configure. Should you modify one of these values,
20448 # do not forget to propagate your changes by running "Configure -der". You may
20449 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20450 #
20451
20452 # Package name      : $package
20453 # Source directory  : $src
20454 # Configuration time: $cf_time
20455 # Configured by     : $cf_by
20456 # Target system     : $myuname
20457
20458 Author='$Author'
20459 Date='$Date'
20460 Header='$Header'
20461 Id='$Id'
20462 Locker='$Locker'
20463 Log='$Log'
20464 Mcc='$Mcc'
20465 RCSfile='$RCSfile'
20466 Revision='$Revision'
20467 Source='$Source'
20468 State='$State'
20469 _a='$_a'
20470 _exe='$_exe'
20471 _o='$_o'
20472 afs='$afs'
20473 afsroot='$afsroot'
20474 alignbytes='$alignbytes'
20475 ansi2knr='$ansi2knr'
20476 aphostname='$aphostname'
20477 api_revision='$api_revision'
20478 api_subversion='$api_subversion'
20479 api_version='$api_version'
20480 api_versionstring='$api_versionstring'
20481 ar='$ar'
20482 archlib='$archlib'
20483 archlibexp='$archlibexp'
20484 archname64='$archname64'
20485 archname='$archname'
20486 archobjs='$archobjs'
20487 asctime_r_proto='$asctime_r_proto'
20488 awk='$awk'
20489 baserev='$baserev'
20490 bash='$bash'
20491 bin='$bin'
20492 binexp='$binexp'
20493 bison='$bison'
20494 byacc='$byacc'
20495 byteorder='$byteorder'
20496 c='$c'
20497 castflags='$castflags'
20498 cat='$cat'
20499 cc='$cc'
20500 cccdlflags='$cccdlflags'
20501 ccdlflags='$ccdlflags'
20502 ccflags='$ccflags'
20503 ccflags_uselargefiles='$ccflags_uselargefiles'
20504 ccname='$ccname'
20505 ccsymbols='$ccsymbols'
20506 ccversion='$ccversion'
20507 cf_by='$cf_by'
20508 cf_email='$cf_email'
20509 cf_time='$cf_time'
20510 charsize='$charsize'
20511 chgrp='$chgrp'
20512 chmod='$chmod'
20513 chown='$chown'
20514 clocktype='$clocktype'
20515 comm='$comm'
20516 compress='$compress'
20517 contains='$contains'
20518 cp='$cp'
20519 cpio='$cpio'
20520 cpp='$cpp'
20521 cpp_stuff='$cpp_stuff'
20522 cppccsymbols='$cppccsymbols'
20523 cppflags='$cppflags'
20524 cpplast='$cpplast'
20525 cppminus='$cppminus'
20526 cpprun='$cpprun'
20527 cppstdin='$cppstdin'
20528 cppsymbols='$cppsymbols'
20529 crypt_r_proto='$crypt_r_proto'
20530 cryptlib='$cryptlib'
20531 csh='$csh'
20532 ctermid_r_proto='$ctermid_r_proto'
20533 ctime_r_proto='$ctime_r_proto'
20534 d_Gconvert='$d_Gconvert'
20535 d_PRIEUldbl='$d_PRIEUldbl'
20536 d_PRIFUldbl='$d_PRIFUldbl'
20537 d_PRIGUldbl='$d_PRIGUldbl'
20538 d_PRIXU64='$d_PRIXU64'
20539 d_PRId64='$d_PRId64'
20540 d_PRIeldbl='$d_PRIeldbl'
20541 d_PRIfldbl='$d_PRIfldbl'
20542 d_PRIgldbl='$d_PRIgldbl'
20543 d_PRIi64='$d_PRIi64'
20544 d_PRIo64='$d_PRIo64'
20545 d_PRIu64='$d_PRIu64'
20546 d_PRIx64='$d_PRIx64'
20547 d_SCNfldbl='$d_SCNfldbl'
20548 d__fwalk='$d__fwalk'
20549 d_access='$d_access'
20550 d_accessx='$d_accessx'
20551 d_aintl='$d_aintl'
20552 d_alarm='$d_alarm'
20553 d_archlib='$d_archlib'
20554 d_asctime_r='$d_asctime_r'
20555 d_atolf='$d_atolf'
20556 d_atoll='$d_atoll'
20557 d_attribut='$d_attribut'
20558 d_bcmp='$d_bcmp'
20559 d_bcopy='$d_bcopy'
20560 d_bsd='$d_bsd'
20561 d_bsdgetpgrp='$d_bsdgetpgrp'
20562 d_bsdsetpgrp='$d_bsdsetpgrp'
20563 d_bzero='$d_bzero'
20564 d_casti32='$d_casti32'
20565 d_castneg='$d_castneg'
20566 d_charvspr='$d_charvspr'
20567 d_chown='$d_chown'
20568 d_chroot='$d_chroot'
20569 d_chsize='$d_chsize'
20570 d_class='$d_class'
20571 d_closedir='$d_closedir'
20572 d_cmsghdr_s='$d_cmsghdr_s'
20573 d_const='$d_const'
20574 d_copysignl='$d_copysignl'
20575 d_crypt='$d_crypt'
20576 d_crypt_r='$d_crypt_r'
20577 d_csh='$d_csh'
20578 d_ctermid_r='$d_ctermid_r'
20579 d_ctime_r='$d_ctime_r'
20580 d_cuserid='$d_cuserid'
20581 d_dbl_dig='$d_dbl_dig'
20582 d_dbminitproto='$d_dbminitproto'
20583 d_difftime='$d_difftime'
20584 d_dirfd='$d_dirfd'
20585 d_dirnamlen='$d_dirnamlen'
20586 d_dlerror='$d_dlerror'
20587 d_dlopen='$d_dlopen'
20588 d_dlsymun='$d_dlsymun'
20589 d_dosuid='$d_dosuid'
20590 d_drand48_r='$d_drand48_r'
20591 d_drand48proto='$d_drand48proto'
20592 d_dup2='$d_dup2'
20593 d_eaccess='$d_eaccess'
20594 d_endgrent='$d_endgrent'
20595 d_endgrent_r='$d_endgrent_r'
20596 d_endhent='$d_endhent'
20597 d_endhostent_r='$d_endhostent_r'
20598 d_endnent='$d_endnent'
20599 d_endnetent_r='$d_endnetent_r'
20600 d_endpent='$d_endpent'
20601 d_endprotoent_r='$d_endprotoent_r'
20602 d_endpwent='$d_endpwent'
20603 d_endpwent_r='$d_endpwent_r'
20604 d_endsent='$d_endsent'
20605 d_endservent_r='$d_endservent_r'
20606 d_eofnblk='$d_eofnblk'
20607 d_eunice='$d_eunice'
20608 d_faststdio='$d_faststdio'
20609 d_fchdir='$d_fchdir'
20610 d_fchmod='$d_fchmod'
20611 d_fchown='$d_fchown'
20612 d_fcntl='$d_fcntl'
20613 d_fcntl_can_lock='$d_fcntl_can_lock'
20614 d_fd_macros='$d_fd_macros'
20615 d_fd_set='$d_fd_set'
20616 d_fds_bits='$d_fds_bits'
20617 d_fgetpos='$d_fgetpos'
20618 d_finite='$d_finite'
20619 d_finitel='$d_finitel'
20620 d_flexfnam='$d_flexfnam'
20621 d_flock='$d_flock'
20622 d_flockproto='$d_flockproto'
20623 d_fork='$d_fork'
20624 d_fp_class='$d_fp_class'
20625 d_fpathconf='$d_fpathconf'
20626 d_fpclass='$d_fpclass'
20627 d_fpclassify='$d_fpclassify'
20628 d_fpclassl='$d_fpclassl'
20629 d_fpos64_t='$d_fpos64_t'
20630 d_frexpl='$d_frexpl'
20631 d_fs_data_s='$d_fs_data_s'
20632 d_fseeko='$d_fseeko'
20633 d_fsetpos='$d_fsetpos'
20634 d_fstatfs='$d_fstatfs'
20635 d_fstatvfs='$d_fstatvfs'
20636 d_fsync='$d_fsync'
20637 d_ftello='$d_ftello'
20638 d_ftime='$d_ftime'
20639 d_getcwd='$d_getcwd'
20640 d_getespwnam='$d_getespwnam'
20641 d_getfsstat='$d_getfsstat'
20642 d_getgrent='$d_getgrent'
20643 d_getgrent_r='$d_getgrent_r'
20644 d_getgrgid_r='$d_getgrgid_r'
20645 d_getgrnam_r='$d_getgrnam_r'
20646 d_getgrps='$d_getgrps'
20647 d_gethbyaddr='$d_gethbyaddr'
20648 d_gethbyname='$d_gethbyname'
20649 d_gethent='$d_gethent'
20650 d_gethname='$d_gethname'
20651 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20652 d_gethostbyname_r='$d_gethostbyname_r'
20653 d_gethostent_r='$d_gethostent_r'
20654 d_gethostprotos='$d_gethostprotos'
20655 d_getitimer='$d_getitimer'
20656 d_getlogin='$d_getlogin'
20657 d_getlogin_r='$d_getlogin_r'
20658 d_getmnt='$d_getmnt'
20659 d_getmntent='$d_getmntent'
20660 d_getnbyaddr='$d_getnbyaddr'
20661 d_getnbyname='$d_getnbyname'
20662 d_getnent='$d_getnent'
20663 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20664 d_getnetbyname_r='$d_getnetbyname_r'
20665 d_getnetent_r='$d_getnetent_r'
20666 d_getnetprotos='$d_getnetprotos'
20667 d_getpagsz='$d_getpagsz'
20668 d_getpbyname='$d_getpbyname'
20669 d_getpbynumber='$d_getpbynumber'
20670 d_getpent='$d_getpent'
20671 d_getpgid='$d_getpgid'
20672 d_getpgrp2='$d_getpgrp2'
20673 d_getpgrp='$d_getpgrp'
20674 d_getppid='$d_getppid'
20675 d_getprior='$d_getprior'
20676 d_getprotobyname_r='$d_getprotobyname_r'
20677 d_getprotobynumber_r='$d_getprotobynumber_r'
20678 d_getprotoent_r='$d_getprotoent_r'
20679 d_getprotoprotos='$d_getprotoprotos'
20680 d_getprpwnam='$d_getprpwnam'
20681 d_getpwent='$d_getpwent'
20682 d_getpwent_r='$d_getpwent_r'
20683 d_getpwnam_r='$d_getpwnam_r'
20684 d_getpwuid_r='$d_getpwuid_r'
20685 d_getsbyname='$d_getsbyname'
20686 d_getsbyport='$d_getsbyport'
20687 d_getsent='$d_getsent'
20688 d_getservbyname_r='$d_getservbyname_r'
20689 d_getservbyport_r='$d_getservbyport_r'
20690 d_getservent_r='$d_getservent_r'
20691 d_getservprotos='$d_getservprotos'
20692 d_getspnam='$d_getspnam'
20693 d_getspnam_r='$d_getspnam_r'
20694 d_gettimeod='$d_gettimeod'
20695 d_gmtime_r='$d_gmtime_r'
20696 d_gnulibc='$d_gnulibc'
20697 d_grpasswd='$d_grpasswd'
20698 d_hasmntopt='$d_hasmntopt'
20699 d_htonl='$d_htonl'
20700 d_ilogbl='$d_ilogbl'
20701 d_index='$d_index'
20702 d_inetaton='$d_inetaton'
20703 d_int64_t='$d_int64_t'
20704 d_isascii='$d_isascii'
20705 d_isfinite='$d_isfinite'
20706 d_isinf='$d_isinf'
20707 d_isnan='$d_isnan'
20708 d_isnanl='$d_isnanl'
20709 d_killpg='$d_killpg'
20710 d_lchown='$d_lchown'
20711 d_ldbl_dig='$d_ldbl_dig'
20712 d_link='$d_link'
20713 d_localtime_r='$d_localtime_r'
20714 d_locconv='$d_locconv'
20715 d_lockf='$d_lockf'
20716 d_longdbl='$d_longdbl'
20717 d_longlong='$d_longlong'
20718 d_lseekproto='$d_lseekproto'
20719 d_lstat='$d_lstat'
20720 d_madvise='$d_madvise'
20721 d_mblen='$d_mblen'
20722 d_mbstowcs='$d_mbstowcs'
20723 d_mbtowc='$d_mbtowc'
20724 d_memchr='$d_memchr'
20725 d_memcmp='$d_memcmp'
20726 d_memcpy='$d_memcpy'
20727 d_memmove='$d_memmove'
20728 d_memset='$d_memset'
20729 d_mkdir='$d_mkdir'
20730 d_mkdtemp='$d_mkdtemp'
20731 d_mkfifo='$d_mkfifo'
20732 d_mkstemp='$d_mkstemp'
20733 d_mkstemps='$d_mkstemps'
20734 d_mktime='$d_mktime'
20735 d_mmap='$d_mmap'
20736 d_modfl='$d_modfl'
20737 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20738 d_modflproto='$d_modflproto'
20739 d_mprotect='$d_mprotect'
20740 d_msg='$d_msg'
20741 d_msg_ctrunc='$d_msg_ctrunc'
20742 d_msg_dontroute='$d_msg_dontroute'
20743 d_msg_oob='$d_msg_oob'
20744 d_msg_peek='$d_msg_peek'
20745 d_msg_proxy='$d_msg_proxy'
20746 d_msgctl='$d_msgctl'
20747 d_msgget='$d_msgget'
20748 d_msghdr_s='$d_msghdr_s'
20749 d_msgrcv='$d_msgrcv'
20750 d_msgsnd='$d_msgsnd'
20751 d_msync='$d_msync'
20752 d_munmap='$d_munmap'
20753 d_mymalloc='$d_mymalloc'
20754 d_nice='$d_nice'
20755 d_nl_langinfo='$d_nl_langinfo'
20756 d_nv_preserves_uv='$d_nv_preserves_uv'
20757 d_off64_t='$d_off64_t'
20758 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20759 d_oldpthreads='$d_oldpthreads'
20760 d_oldsock='$d_oldsock'
20761 d_open3='$d_open3'
20762 d_pathconf='$d_pathconf'
20763 d_pause='$d_pause'
20764 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20765 d_phostname='$d_phostname'
20766 d_pipe='$d_pipe'
20767 d_poll='$d_poll'
20768 d_portable='$d_portable'
20769 d_procselfexe='$d_procselfexe'
20770 d_pthread_atfork='$d_pthread_atfork'
20771 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20772 d_pthread_yield='$d_pthread_yield'
20773 d_pwage='$d_pwage'
20774 d_pwchange='$d_pwchange'
20775 d_pwclass='$d_pwclass'
20776 d_pwcomment='$d_pwcomment'
20777 d_pwexpire='$d_pwexpire'
20778 d_pwgecos='$d_pwgecos'
20779 d_pwpasswd='$d_pwpasswd'
20780 d_pwquota='$d_pwquota'
20781 d_qgcvt='$d_qgcvt'
20782 d_quad='$d_quad'
20783 d_random_r='$d_random_r'
20784 d_readdir64_r='$d_readdir64_r'
20785 d_readdir='$d_readdir'
20786 d_readdir_r='$d_readdir_r'
20787 d_readlink='$d_readlink'
20788 d_readv='$d_readv'
20789 d_recvmsg='$d_recvmsg'
20790 d_rename='$d_rename'
20791 d_rewinddir='$d_rewinddir'
20792 d_rmdir='$d_rmdir'
20793 d_safebcpy='$d_safebcpy'
20794 d_safemcpy='$d_safemcpy'
20795 d_sanemcmp='$d_sanemcmp'
20796 d_sbrkproto='$d_sbrkproto'
20797 d_scalbnl='$d_scalbnl'
20798 d_sched_yield='$d_sched_yield'
20799 d_scm_rights='$d_scm_rights'
20800 d_seekdir='$d_seekdir'
20801 d_select='$d_select'
20802 d_sem='$d_sem'
20803 d_semctl='$d_semctl'
20804 d_semctl_semid_ds='$d_semctl_semid_ds'
20805 d_semctl_semun='$d_semctl_semun'
20806 d_semget='$d_semget'
20807 d_semop='$d_semop'
20808 d_sendmsg='$d_sendmsg'
20809 d_setegid='$d_setegid'
20810 d_seteuid='$d_seteuid'
20811 d_setgrent='$d_setgrent'
20812 d_setgrent_r='$d_setgrent_r'
20813 d_setgrps='$d_setgrps'
20814 d_sethent='$d_sethent'
20815 d_sethostent_r='$d_sethostent_r'
20816 d_setitimer='$d_setitimer'
20817 d_setlinebuf='$d_setlinebuf'
20818 d_setlocale='$d_setlocale'
20819 d_setlocale_r='$d_setlocale_r'
20820 d_setnent='$d_setnent'
20821 d_setnetent_r='$d_setnetent_r'
20822 d_setpent='$d_setpent'
20823 d_setpgid='$d_setpgid'
20824 d_setpgrp2='$d_setpgrp2'
20825 d_setpgrp='$d_setpgrp'
20826 d_setprior='$d_setprior'
20827 d_setproctitle='$d_setproctitle'
20828 d_setprotoent_r='$d_setprotoent_r'
20829 d_setpwent='$d_setpwent'
20830 d_setpwent_r='$d_setpwent_r'
20831 d_setregid='$d_setregid'
20832 d_setresgid='$d_setresgid'
20833 d_setresuid='$d_setresuid'
20834 d_setreuid='$d_setreuid'
20835 d_setrgid='$d_setrgid'
20836 d_setruid='$d_setruid'
20837 d_setsent='$d_setsent'
20838 d_setservent_r='$d_setservent_r'
20839 d_setsid='$d_setsid'
20840 d_setvbuf='$d_setvbuf'
20841 d_sfio='$d_sfio'
20842 d_shm='$d_shm'
20843 d_shmat='$d_shmat'
20844 d_shmatprototype='$d_shmatprototype'
20845 d_shmctl='$d_shmctl'
20846 d_shmdt='$d_shmdt'
20847 d_shmget='$d_shmget'
20848 d_sigaction='$d_sigaction'
20849 d_sigprocmask='$d_sigprocmask'
20850 d_sigsetjmp='$d_sigsetjmp'
20851 d_sockatmark='$d_sockatmark'
20852 d_sockatmarkproto='$d_sockatmarkproto'
20853 d_socket='$d_socket'
20854 d_socklen_t='$d_socklen_t'
20855 d_sockpair='$d_sockpair'
20856 d_socks5_init='$d_socks5_init'
20857 d_sqrtl='$d_sqrtl'
20858 d_srand48_r='$d_srand48_r'
20859 d_srandom_r='$d_srandom_r'
20860 d_sresgproto='$d_sresgproto'
20861 d_sresuproto='$d_sresuproto'
20862 d_statblks='$d_statblks'
20863 d_statfs_f_flags='$d_statfs_f_flags'
20864 d_statfs_s='$d_statfs_s'
20865 d_statvfs='$d_statvfs'
20866 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20867 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20868 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20869 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20870 d_stdio_stream_array='$d_stdio_stream_array'
20871 d_stdiobase='$d_stdiobase'
20872 d_stdstdio='$d_stdstdio'
20873 d_strchr='$d_strchr'
20874 d_strcoll='$d_strcoll'
20875 d_strctcpy='$d_strctcpy'
20876 d_strerrm='$d_strerrm'
20877 d_strerror='$d_strerror'
20878 d_strerror_r='$d_strerror_r'
20879 d_strftime='$d_strftime'
20880 d_strtod='$d_strtod'
20881 d_strtol='$d_strtol'
20882 d_strtold='$d_strtold'
20883 d_strtoll='$d_strtoll'
20884 d_strtoq='$d_strtoq'
20885 d_strtoul='$d_strtoul'
20886 d_strtoull='$d_strtoull'
20887 d_strtouq='$d_strtouq'
20888 d_strxfrm='$d_strxfrm'
20889 d_suidsafe='$d_suidsafe'
20890 d_symlink='$d_symlink'
20891 d_syscall='$d_syscall'
20892 d_syscallproto='$d_syscallproto'
20893 d_sysconf='$d_sysconf'
20894 d_sysernlst='$d_sysernlst'
20895 d_syserrlst='$d_syserrlst'
20896 d_system='$d_system'
20897 d_tcgetpgrp='$d_tcgetpgrp'
20898 d_tcsetpgrp='$d_tcsetpgrp'
20899 d_telldir='$d_telldir'
20900 d_telldirproto='$d_telldirproto'
20901 d_time='$d_time'
20902 d_times='$d_times'
20903 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20904 d_tm_tm_zone='$d_tm_tm_zone'
20905 d_tmpnam_r='$d_tmpnam_r'
20906 d_truncate='$d_truncate'
20907 d_ttyname_r='$d_ttyname_r'
20908 d_tzname='$d_tzname'
20909 d_u32align='$d_u32align'
20910 d_ualarm='$d_ualarm'
20911 d_umask='$d_umask'
20912 d_uname='$d_uname'
20913 d_union_semun='$d_union_semun'
20914 d_unordered='$d_unordered'
20915 d_usleep='$d_usleep'
20916 d_usleepproto='$d_usleepproto'
20917 d_ustat='$d_ustat'
20918 d_vendorarch='$d_vendorarch'
20919 d_vendorbin='$d_vendorbin'
20920 d_vendorlib='$d_vendorlib'
20921 d_vendorscript='$d_vendorscript'
20922 d_vfork='$d_vfork'
20923 d_void_closedir='$d_void_closedir'
20924 d_voidsig='$d_voidsig'
20925 d_voidtty='$d_voidtty'
20926 d_volatile='$d_volatile'
20927 d_vprintf='$d_vprintf'
20928 d_wait4='$d_wait4'
20929 d_waitpid='$d_waitpid'
20930 d_wcstombs='$d_wcstombs'
20931 d_wctomb='$d_wctomb'
20932 d_writev='$d_writev'
20933 d_xenix='$d_xenix'
20934 date='$date'
20935 db_hashtype='$db_hashtype'
20936 db_prefixtype='$db_prefixtype'
20937 db_version_major='$db_version_major'
20938 db_version_minor='$db_version_minor'
20939 db_version_patch='$db_version_patch'
20940 defvoidused='$defvoidused'
20941 direntrytype='$direntrytype'
20942 dlext='$dlext'
20943 dlsrc='$dlsrc'
20944 doublesize='$doublesize'
20945 drand01='$drand01'
20946 drand48_r_proto='$drand48_r_proto'
20947 dynamic_ext='$dynamic_ext'
20948 eagain='$eagain'
20949 ebcdic='$ebcdic'
20950 echo='$echo'
20951 egrep='$egrep'
20952 emacs='$emacs'
20953 endgrent_r_proto='$endgrent_r_proto'
20954 endhostent_r_proto='$endhostent_r_proto'
20955 endnetent_r_proto='$endnetent_r_proto'
20956 endprotoent_r_proto='$endprotoent_r_proto'
20957 endpwent_r_proto='$endpwent_r_proto'
20958 endservent_r_proto='$endservent_r_proto'
20959 eunicefix='$eunicefix'
20960 exe_ext='$exe_ext'
20961 expr='$expr'
20962 extensions='$extensions'
20963 extras='$extras'
20964 fflushNULL='$fflushNULL'
20965 fflushall='$fflushall'
20966 find='$find'
20967 firstmakefile='$firstmakefile'
20968 flex='$flex'
20969 fpossize='$fpossize'
20970 fpostype='$fpostype'
20971 freetype='$freetype'
20972 from='$from'
20973 full_ar='$full_ar'
20974 full_csh='$full_csh'
20975 full_sed='$full_sed'
20976 gccansipedantic='$gccansipedantic'
20977 gccosandvers='$gccosandvers'
20978 gccversion='$gccversion'
20979 getgrent_r_proto='$getgrent_r_proto'
20980 getgrgid_r_proto='$getgrgid_r_proto'
20981 getgrnam_r_proto='$getgrnam_r_proto'
20982 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20983 gethostbyname_r_proto='$gethostbyname_r_proto'
20984 gethostent_r_proto='$gethostent_r_proto'
20985 getlogin_r_proto='$getlogin_r_proto'
20986 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20987 getnetbyname_r_proto='$getnetbyname_r_proto'
20988 getnetent_r_proto='$getnetent_r_proto'
20989 getprotobyname_r_proto='$getprotobyname_r_proto'
20990 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20991 getprotoent_r_proto='$getprotoent_r_proto'
20992 getpwent_r_proto='$getpwent_r_proto'
20993 getpwnam_r_proto='$getpwnam_r_proto'
20994 getpwuid_r_proto='$getpwuid_r_proto'
20995 getservbyname_r_proto='$getservbyname_r_proto'
20996 getservbyport_r_proto='$getservbyport_r_proto'
20997 getservent_r_proto='$getservent_r_proto'
20998 getspnam_r_proto='$getspnam_r_proto'
20999 gidformat='$gidformat'
21000 gidsign='$gidsign'
21001 gidsize='$gidsize'
21002 gidtype='$gidtype'
21003 glibpth='$glibpth'
21004 gmake='$gmake'
21005 gmtime_r_proto='$gmtime_r_proto'
21006 gnulibc_version='$gnulibc_version'
21007 grep='$grep'
21008 groupcat='$groupcat'
21009 groupstype='$groupstype'
21010 gzip='$gzip'
21011 h_fcntl='$h_fcntl'
21012 h_sysfile='$h_sysfile'
21013 hint='$hint'
21014 hostcat='$hostcat'
21015 html1dir='$html1dir'
21016 html1direxp='$html1direxp'
21017 html3dir='$html3dir'
21018 html3direxp='$html3direxp'
21019 i16size='$i16size'
21020 i16type='$i16type'
21021 i32size='$i32size'
21022 i32type='$i32type'
21023 i64size='$i64size'
21024 i64type='$i64type'
21025 i8size='$i8size'
21026 i8type='$i8type'
21027 i_arpainet='$i_arpainet'
21028 i_bsdioctl='$i_bsdioctl'
21029 i_crypt='$i_crypt'
21030 i_db='$i_db'
21031 i_dbm='$i_dbm'
21032 i_dirent='$i_dirent'
21033 i_dld='$i_dld'
21034 i_dlfcn='$i_dlfcn'
21035 i_fcntl='$i_fcntl'
21036 i_float='$i_float'
21037 i_fp='$i_fp'
21038 i_fp_class='$i_fp_class'
21039 i_gdbm='$i_gdbm'
21040 i_grp='$i_grp'
21041 i_ieeefp='$i_ieeefp'
21042 i_inttypes='$i_inttypes'
21043 i_langinfo='$i_langinfo'
21044 i_libutil='$i_libutil'
21045 i_limits='$i_limits'
21046 i_locale='$i_locale'
21047 i_machcthr='$i_machcthr'
21048 i_malloc='$i_malloc'
21049 i_math='$i_math'
21050 i_memory='$i_memory'
21051 i_mntent='$i_mntent'
21052 i_ndbm='$i_ndbm'
21053 i_netdb='$i_netdb'
21054 i_neterrno='$i_neterrno'
21055 i_netinettcp='$i_netinettcp'
21056 i_niin='$i_niin'
21057 i_poll='$i_poll'
21058 i_prot='$i_prot'
21059 i_pthread='$i_pthread'
21060 i_pwd='$i_pwd'
21061 i_rpcsvcdbm='$i_rpcsvcdbm'
21062 i_sfio='$i_sfio'
21063 i_sgtty='$i_sgtty'
21064 i_shadow='$i_shadow'
21065 i_socks='$i_socks'
21066 i_stdarg='$i_stdarg'
21067 i_stddef='$i_stddef'
21068 i_stdlib='$i_stdlib'
21069 i_string='$i_string'
21070 i_sunmath='$i_sunmath'
21071 i_sysaccess='$i_sysaccess'
21072 i_sysdir='$i_sysdir'
21073 i_sysfile='$i_sysfile'
21074 i_sysfilio='$i_sysfilio'
21075 i_sysin='$i_sysin'
21076 i_sysioctl='$i_sysioctl'
21077 i_syslog='$i_syslog'
21078 i_sysmman='$i_sysmman'
21079 i_sysmode='$i_sysmode'
21080 i_sysmount='$i_sysmount'
21081 i_sysndir='$i_sysndir'
21082 i_sysparam='$i_sysparam'
21083 i_sysresrc='$i_sysresrc'
21084 i_syssecrt='$i_syssecrt'
21085 i_sysselct='$i_sysselct'
21086 i_syssockio='$i_syssockio'
21087 i_sysstat='$i_sysstat'
21088 i_sysstatfs='$i_sysstatfs'
21089 i_sysstatvfs='$i_sysstatvfs'
21090 i_systime='$i_systime'
21091 i_systimek='$i_systimek'
21092 i_systimes='$i_systimes'
21093 i_systypes='$i_systypes'
21094 i_sysuio='$i_sysuio'
21095 i_sysun='$i_sysun'
21096 i_sysutsname='$i_sysutsname'
21097 i_sysvfs='$i_sysvfs'
21098 i_syswait='$i_syswait'
21099 i_termio='$i_termio'
21100 i_termios='$i_termios'
21101 i_time='$i_time'
21102 i_unistd='$i_unistd'
21103 i_ustat='$i_ustat'
21104 i_utime='$i_utime'
21105 i_values='$i_values'
21106 i_varargs='$i_varargs'
21107 i_varhdr='$i_varhdr'
21108 i_vfork='$i_vfork'
21109 ignore_versioned_solibs='$ignore_versioned_solibs'
21110 inc_version_list='$inc_version_list'
21111 inc_version_list_init='$inc_version_list_init'
21112 incpath='$incpath'
21113 inews='$inews'
21114 installarchlib='$installarchlib'
21115 installbin='$installbin'
21116 installhtml1dir='$installhtml1dir'
21117 installhtml3dir='$installhtml3dir'
21118 installman1dir='$installman1dir'
21119 installman3dir='$installman3dir'
21120 installprefix='$installprefix'
21121 installprefixexp='$installprefixexp'
21122 installprivlib='$installprivlib'
21123 installscript='$installscript'
21124 installsitearch='$installsitearch'
21125 installsitebin='$installsitebin'
21126 installsitehtml1dir='$installsitehtml1dir'
21127 installsitehtml3dir='$installsitehtml3dir'
21128 installsitelib='$installsitelib'
21129 installsiteman1dir='$installsiteman1dir'
21130 installsiteman3dir='$installsiteman3dir'
21131 installsitescript='$installsitescript'
21132 installstyle='$installstyle'
21133 installusrbinperl='$installusrbinperl'
21134 installvendorarch='$installvendorarch'
21135 installvendorbin='$installvendorbin'
21136 installvendorhtml1dir='$installvendorhtml1dir'
21137 installvendorhtml3dir='$installvendorhtml3dir'
21138 installvendorlib='$installvendorlib'
21139 installvendorman1dir='$installvendorman1dir'
21140 installvendorman3dir='$installvendorman3dir'
21141 installvendorscript='$installvendorscript'
21142 intsize='$intsize'
21143 issymlink='$issymlink'
21144 ivdformat='$ivdformat'
21145 ivsize='$ivsize'
21146 ivtype='$ivtype'
21147 known_extensions='$known_extensions'
21148 ksh='$ksh'
21149 ld='$ld'
21150 lddlflags='$lddlflags'
21151 ldflags='$ldflags'
21152 ldflags_uselargefiles='$ldflags_uselargefiles'
21153 ldlibpthname='$ldlibpthname'
21154 less='$less'
21155 lib_ext='$lib_ext'
21156 libc='$libc'
21157 libperl='$libperl'
21158 libpth='$libpth'
21159 libs='$libs'
21160 libsdirs='$libsdirs'
21161 libsfiles='$libsfiles'
21162 libsfound='$libsfound'
21163 libspath='$libspath'
21164 libswanted='$libswanted'
21165 libswanted_uselargefiles='$libswanted_uselargefiles'
21166 line='$line'
21167 lint='$lint'
21168 lkflags='$lkflags'
21169 ln='$ln'
21170 lns='$lns'
21171 localtime_r_proto='$localtime_r_proto'
21172 locincpth='$locincpth'
21173 loclibpth='$loclibpth'
21174 longdblsize='$longdblsize'
21175 longlongsize='$longlongsize'
21176 longsize='$longsize'
21177 lp='$lp'
21178 lpr='$lpr'
21179 ls='$ls'
21180 lseeksize='$lseeksize'
21181 lseektype='$lseektype'
21182 mail='$mail'
21183 mailx='$mailx'
21184 make='$make'
21185 make_set_make='$make_set_make'
21186 mallocobj='$mallocobj'
21187 mallocsrc='$mallocsrc'
21188 malloctype='$malloctype'
21189 man1dir='$man1dir'
21190 man1direxp='$man1direxp'
21191 man1ext='$man1ext'
21192 man3dir='$man3dir'
21193 man3direxp='$man3direxp'
21194 man3ext='$man3ext'
21195 mips_type='$mips_type'
21196 mistrustnm='$mistrustnm'
21197 mkdir='$mkdir'
21198 mmaptype='$mmaptype'
21199 modetype='$modetype'
21200 more='$more'
21201 multiarch='$multiarch'
21202 mv='$mv'
21203 myarchname='$myarchname'
21204 mydomain='$mydomain'
21205 myhostname='$myhostname'
21206 myuname='$myuname'
21207 n='$n'
21208 need_va_copy='$need_va_copy'
21209 netdb_hlen_type='$netdb_hlen_type'
21210 netdb_host_type='$netdb_host_type'
21211 netdb_name_type='$netdb_name_type'
21212 netdb_net_type='$netdb_net_type'
21213 nm='$nm'
21214 nm_opt='$nm_opt'
21215 nm_so_opt='$nm_so_opt'
21216 nonxs_ext='$nonxs_ext'
21217 nroff='$nroff'
21218 nvEUformat='$nvEUformat'
21219 nvFUformat='$nvFUformat'
21220 nvGUformat='$nvGUformat'
21221 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21222 nveformat='$nveformat'
21223 nvfformat='$nvfformat'
21224 nvgformat='$nvgformat'
21225 nvsize='$nvsize'
21226 nvtype='$nvtype'
21227 o_nonblock='$o_nonblock'
21228 obj_ext='$obj_ext'
21229 old_pthread_create_joinable='$old_pthread_create_joinable'
21230 optimize='$optimize'
21231 orderlib='$orderlib'
21232 osname='$osname'
21233 osvers='$osvers'
21234 otherlibdirs='$otherlibdirs'
21235 package='$package'
21236 pager='$pager'
21237 passcat='$passcat'
21238 patchlevel='$patchlevel'
21239 path_sep='$path_sep'
21240 perl5='$perl5'
21241 perl='$perl'
21242 perl_patchlevel='$perl_patchlevel'
21243 perladmin='$perladmin'
21244 perllibs='$perllibs'
21245 perlpath='$perlpath'
21246 pg='$pg'
21247 phostname='$phostname'
21248 pidtype='$pidtype'
21249 plibpth='$plibpth'
21250 pmake='$pmake'
21251 pr='$pr'
21252 prefix='$prefix'
21253 prefixexp='$prefixexp'
21254 privlib='$privlib'
21255 privlibexp='$privlibexp'
21256 procselfexe='$procselfexe'
21257 prototype='$prototype'
21258 ptrsize='$ptrsize'
21259 quadkind='$quadkind'
21260 quadtype='$quadtype'
21261 randbits='$randbits'
21262 randfunc='$randfunc'
21263 random_r_proto='$random_r_proto'
21264 randseedtype='$randseedtype'
21265 ranlib='$ranlib'
21266 rd_nodata='$rd_nodata'
21267 readdir64_r_proto='$readdir64_r_proto'
21268 readdir_r_proto='$readdir_r_proto'
21269 revision='$revision'
21270 rm='$rm'
21271 rmail='$rmail'
21272 run='$run'
21273 runnm='$runnm'
21274 sPRIEUldbl='$sPRIEUldbl'
21275 sPRIFUldbl='$sPRIFUldbl'
21276 sPRIGUldbl='$sPRIGUldbl'
21277 sPRIXU64='$sPRIXU64'
21278 sPRId64='$sPRId64'
21279 sPRIeldbl='$sPRIeldbl'
21280 sPRIfldbl='$sPRIfldbl'
21281 sPRIgldbl='$sPRIgldbl'
21282 sPRIi64='$sPRIi64'
21283 sPRIo64='$sPRIo64'
21284 sPRIu64='$sPRIu64'
21285 sPRIx64='$sPRIx64'
21286 sSCNfldbl='$sSCNfldbl'
21287 sched_yield='$sched_yield'
21288 scriptdir='$scriptdir'
21289 scriptdirexp='$scriptdirexp'
21290 sed='$sed'
21291 seedfunc='$seedfunc'
21292 selectminbits='$selectminbits'
21293 selecttype='$selecttype'
21294 sendmail='$sendmail'
21295 setgrent_r_proto='$setgrent_r_proto'
21296 sethostent_r_proto='$sethostent_r_proto'
21297 setlocale_r_proto='$setlocale_r_proto'
21298 setnetent_r_proto='$setnetent_r_proto'
21299 setprotoent_r_proto='$setprotoent_r_proto'
21300 setpwent_r_proto='$setpwent_r_proto'
21301 setservent_r_proto='$setservent_r_proto'
21302 sh='$sh'
21303 shar='$shar'
21304 sharpbang='$sharpbang'
21305 shmattype='$shmattype'
21306 shortsize='$shortsize'
21307 shrpenv='$shrpenv'
21308 shsharp='$shsharp'
21309 sig_count='$sig_count'
21310 sig_name='$sig_name'
21311 sig_name_init='$sig_name_init'
21312 sig_num='$sig_num'
21313 sig_num_init='$sig_num_init'
21314 sig_size='$sig_size'
21315 signal_t='$signal_t'
21316 sitearch='$sitearch'
21317 sitearchexp='$sitearchexp'
21318 sitebin='$sitebin'
21319 sitebinexp='$sitebinexp'
21320 sitehtml1dir='$sitehtml1dir'
21321 sitehtml1direxp='$sitehtml1direxp'
21322 sitehtml3dir='$sitehtml3dir'
21323 sitehtml3direxp='$sitehtml3direxp'
21324 sitelib='$sitelib'
21325 sitelib_stem='$sitelib_stem'
21326 sitelibexp='$sitelibexp'
21327 siteman1dir='$siteman1dir'
21328 siteman1direxp='$siteman1direxp'
21329 siteman3dir='$siteman3dir'
21330 siteman3direxp='$siteman3direxp'
21331 siteprefix='$siteprefix'
21332 siteprefixexp='$siteprefixexp'
21333 sitescript='$sitescript'
21334 sitescriptexp='$sitescriptexp'
21335 sizesize='$sizesize'
21336 sizetype='$sizetype'
21337 sleep='$sleep'
21338 smail='$smail'
21339 so='$so'
21340 sockethdr='$sockethdr'
21341 socketlib='$socketlib'
21342 socksizetype='$socksizetype'
21343 sort='$sort'
21344 spackage='$spackage'
21345 spitshell='$spitshell'
21346 srand48_r_proto='$srand48_r_proto'
21347 srandom_r_proto='$srandom_r_proto'
21348 src='$src'
21349 ssizetype='$ssizetype'
21350 startperl='$startperl'
21351 startsh='$startsh'
21352 static_ext='$static_ext'
21353 stdchar='$stdchar'
21354 stdio_base='$stdio_base'
21355 stdio_bufsiz='$stdio_bufsiz'
21356 stdio_cnt='$stdio_cnt'
21357 stdio_filbuf='$stdio_filbuf'
21358 stdio_ptr='$stdio_ptr'
21359 stdio_stream_array='$stdio_stream_array'
21360 strerror_r_proto='$strerror_r_proto'
21361 strings='$strings'
21362 submit='$submit'
21363 subversion='$subversion'
21364 sysman='$sysman'
21365 tail='$tail'
21366 tar='$tar'
21367 targetarch='$targetarch'
21368 tbl='$tbl'
21369 tee='$tee'
21370 test='$test'
21371 timeincl='$timeincl'
21372 timetype='$timetype'
21373 tmpnam_r_proto='$tmpnam_r_proto'
21374 to='$to'
21375 touch='$touch'
21376 tr='$tr'
21377 trnl='$trnl'
21378 troff='$troff'
21379 ttyname_r_proto='$ttyname_r_proto'
21380 u16size='$u16size'
21381 u16type='$u16type'
21382 u32size='$u32size'
21383 u32type='$u32type'
21384 u64size='$u64size'
21385 u64type='$u64type'
21386 u8size='$u8size'
21387 u8type='$u8type'
21388 uidformat='$uidformat'
21389 uidsign='$uidsign'
21390 uidsize='$uidsize'
21391 uidtype='$uidtype'
21392 uname='$uname'
21393 uniq='$uniq'
21394 uquadtype='$uquadtype'
21395 use5005threads='$use5005threads'
21396 use64bitall='$use64bitall'
21397 use64bitint='$use64bitint'
21398 usecrosscompile='$usecrosscompile'
21399 usedl='$usedl'
21400 usefaststdio='$usefaststdio'
21401 useithreads='$useithreads'
21402 uselargefiles='$uselargefiles'
21403 uselongdouble='$uselongdouble'
21404 usemallocwrap='$usemallocwrap'
21405 usemorebits='$usemorebits'
21406 usemultiplicity='$usemultiplicity'
21407 usemymalloc='$usemymalloc'
21408 usenm='$usenm'
21409 useopcode='$useopcode'
21410 useperlio='$useperlio'
21411 useposix='$useposix'
21412 usereentrant='$usereentrant'
21413 usesfio='$usesfio'
21414 useshrplib='$useshrplib'
21415 usesocks='$usesocks'
21416 usethreads='$usethreads'
21417 usevendorprefix='$usevendorprefix'
21418 usevfork='$usevfork'
21419 usrinc='$usrinc'
21420 uuname='$uuname'
21421 uvXUformat='$uvXUformat'
21422 uvoformat='$uvoformat'
21423 uvsize='$uvsize'
21424 uvtype='$uvtype'
21425 uvuformat='$uvuformat'
21426 uvxformat='$uvxformat'
21427 vendorarch='$vendorarch'
21428 vendorarchexp='$vendorarchexp'
21429 vendorbin='$vendorbin'
21430 vendorbinexp='$vendorbinexp'
21431 vendorhtml1dir='$vendorhtml1dir'
21432 vendorhtml1direxp='$vendorhtml1direxp'
21433 vendorhtml3dir='$vendorhtml3dir'
21434 vendorhtml3direxp='$vendorhtml3direxp'
21435 vendorlib='$vendorlib'
21436 vendorlib_stem='$vendorlib_stem'
21437 vendorlibexp='$vendorlibexp'
21438 vendorman1dir='$vendorman1dir'
21439 vendorman1direxp='$vendorman1direxp'
21440 vendorman3dir='$vendorman3dir'
21441 vendorman3direxp='$vendorman3direxp'
21442 vendorprefix='$vendorprefix'
21443 vendorprefixexp='$vendorprefixexp'
21444 vendorscript='$vendorscript'
21445 vendorscriptexp='$vendorscriptexp'
21446 version='$version'
21447 version_patchlevel_string='$version_patchlevel_string'
21448 versiononly='$versiononly'
21449 vi='$vi'
21450 voidflags='$voidflags'
21451 xlibpth='$xlibpth'
21452 yacc='$yacc'
21453 yaccflags='$yaccflags'
21454 zcat='$zcat'
21455 zip='$zip'
21456 EOT
21457
21458 : Add in command line options if available
21459 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21460
21461 : add special variables
21462 $test -f $src/patchlevel.h && \
21463 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21464 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21465 echo "PERL_CONFIG_SH=true" >>config.sh
21466
21467 : propagate old symbols
21468 if $test -f UU/config.sh; then
21469         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21470         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21471         $sort | $uniq -u >UU/oldsyms
21472         set X `cat UU/oldsyms`
21473         shift
21474         case $# in
21475         0) ;;
21476         *)
21477                 cat <<EOM
21478 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21479 EOM
21480                 echo "# Variables propagated from previous config.sh file." >>config.sh
21481                 for sym in `cat UU/oldsyms`; do
21482                         echo "    Propagating $hint variable "'$'"$sym..."
21483                         eval 'tmp="$'"${sym}"'"'
21484                         echo "$tmp" | \
21485                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21486                 done
21487                 ;;
21488         esac
21489 fi
21490
21491 : Finish up by extracting the .SH files
21492 case "$alldone" in
21493 exit)
21494         $rm -rf UU
21495         echo "Extraction done."
21496         exit 0
21497         ;;
21498 cont)
21499         ;;
21500 '')
21501         dflt=''
21502         nostick=true
21503         $cat <<EOM
21504
21505 If you'd like to make any changes to the config.sh file before I begin
21506 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21507
21508 EOM
21509         rp="Press return or use a shell escape to edit config.sh:"
21510         . UU/myread
21511         nostick=''
21512         case "$ans" in
21513         '') ;;
21514         *) : in case they cannot read
21515                 sh 1>&4 -c "$ans";;
21516         esac
21517         ;;
21518 esac
21519
21520 : if this fails, just run all the .SH files by hand
21521 . ./config.sh
21522
21523 echo " "
21524 exec 1>&4
21525 pwd=`pwd`
21526 . ./UU/extract
21527 cd "$pwd"
21528
21529 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21530         dflt=y
21531         case "$silent" in
21532         true) ;;
21533         *)
21534                 $cat <<EOM
21535
21536 Now you need to generate make dependencies by running "$make depend".
21537 You might prefer to run it in background: "$make depend > makedepend.out &"
21538 It can take a while, so you might not want to run it right now.
21539
21540 EOM
21541                 ;;
21542         esac
21543         rp="Run $make depend now?"
21544         . UU/myread
21545         case "$ans" in
21546         y*)
21547                 $make depend && echo "Now you must run '$make'."
21548                 ;;
21549         *)
21550                 echo "You must run '$make depend' then '$make'."
21551                 ;;
21552         esac
21553 elif test -f [Mm]akefile; then
21554         echo " "
21555         echo "Now you must run a $make."
21556 else
21557         echo "Configure done."
21558 fi
21559
21560 if $test -f Policy.sh; then
21561     $cat <<EOM
21562
21563 If you compile $package on a different machine or from a different object
21564 directory, copy the Policy.sh file from this object directory to the
21565 new one before you run Configure -- this will help you with most of
21566 the policy defaults.
21567
21568 EOM
21569 fi
21570 if $test -f config.msg; then
21571     echo "Hmm.  I also noted the following information while running:"
21572     echo " "
21573     $cat config.msg >&4
21574     $rm -f config.msg
21575 fi
21576 $rm -f kit*isdone ark*isdone
21577 $rm -rf UU
21578
21579 : End of Configure
21580